parent
edc5b64e93
commit
1ac7bd150a
2 changed files with 306 additions and 293 deletions
@ -1,283 +0,0 @@ |
||||
(load "auctex.el" nil t t) |
||||
(setq TeX-auto-save t |
||||
TeX-parse-self t |
||||
TeX-insert-braces nil) |
||||
(setq-default TeX-master nil) |
||||
(setq font-latex-fontify-script nil) |
||||
(setq LaTeX-equation-label "e_") |
||||
(setq LaTeX-section-label "s_") |
||||
(setq LaTeX-figure-label "f_") |
||||
(setq TeX-fold-ellipsis " …") |
||||
(require 'reftex) |
||||
(defun my-LaTeX-mode-dollars () |
||||
(font-lock-add-keywords |
||||
nil |
||||
`((,(rx "$") (0 'success t))) |
||||
t)) |
||||
(add-hook 'LaTeX-mode-hook 'my-LaTeX-mode-dollars) |
||||
(add-hook 'LaTeX-mode-hook 'turn-on-reftex) |
||||
|
||||
;; * Do not spell-check inside the following commands |
||||
;; see [https://tex.stackexchange.com/questions/117204/skip-spelling-in-emacs-for-the-content-of-a-user-macro] |
||||
(setq ispell-tex-skip-alists |
||||
(list |
||||
(append |
||||
(car ispell-tex-skip-alists) ;tell ispell to ignore content of this: |
||||
'(("\\\\eqref" ispell-tex-arg-end) |
||||
("\\\\cite" ispell-tex-arg-end) |
||||
("\\\\author" ispell-tex-arg-end) |
||||
("\\\\address" ispell-tex-arg-end) |
||||
)) |
||||
(cadr ispell-tex-skip-alists))) |
||||
|
||||
(defun dabbrev-expand-helper () |
||||
(interactive) |
||||
(call-interactively 'dabbrev-expand)) |
||||
|
||||
|
||||
(defun add-delimiter (delim-begin delim-end r-begin r-end) |
||||
"Add the pair of delimiters given in delim at the ends of the region if it is activated" |
||||
(interactive "cBegin delimiter: \ncEnd delimiter: \nr") |
||||
(if (use-region-p) |
||||
(progn |
||||
(save-excursion |
||||
(goto-char r-end) (insert delim-end) |
||||
(goto-char r-begin) (insert delim-begin))) |
||||
(progn |
||||
(save-excursion |
||||
(insert delim-end)) |
||||
(insert delim-begin)))) |
||||
|
||||
(add-hook 'LaTeX-mode-hook |
||||
(lambda () |
||||
(turn-on-auto-fill) |
||||
(subword-mode) |
||||
(TeX-fold-mode 1) |
||||
(outline-minor-mode) |
||||
;; Move around commands in the Right Way™ |
||||
(modify-syntax-entry ?\\ "w" LaTeX-mode-syntax-table) |
||||
(setq subword-forward-regexp "\\W*\\(\\([\\\\[:upper:]]*\\W?\\)[[:lower:][:digit:]]*\\)") |
||||
(setq subword-backward-regexp "\\(\\(\\W\\|[[:lower:][:digit:]]\\)\\([\\\\[:upper:]]+\\W*\\)\\|\\W\\w+\\)") |
||||
;; ;; FIXME: this breaks sourcepair for other modes. |
||||
;; (setq sourcepair-source-extensions '(".tex")) |
||||
;; (setq sourcepair-header-extensions '(".p.tex")) |
||||
|
||||
(define-key LaTeX-mode-map (kbd "C-c C-v") |
||||
(lambda (arg) |
||||
(interactive "P") |
||||
(insert "~") |
||||
(if arg (TeX-insert-macro "eqref") |
||||
(TeX-insert-macro "ref")))) |
||||
(define-key LaTeX-mode-map (kbd "C-M-<return>") |
||||
(lambda (arg) |
||||
(interactive "P") |
||||
(if arg (LaTeX-insert-environment "align") |
||||
(LaTeX-insert-environment "align*")))) |
||||
|
||||
;; EXPERIMENTAL: try C-RETURN → DEL |
||||
;; (define-key LaTeX-mode-map (kbd "S-SPC") 'backward-delete-char-untabify) ;;(lambda() (interactive) (flash-hline)));;(message "Use C-SPC")));;'backward-delete-char-untabify) |
||||
|
||||
;; EXPERIMENTAL: unbind return - NOTE it is important to unbind <return> and not RET. If we |
||||
;; unbind RET then C-m won't work either. |
||||
(define-key LaTeX-mode-map (kbd "<return>") (lambda() (interactive) (insert "\\"))) |
||||
(define-key LaTeX-mode-map (kbd "S-<return>") (lambda() (interactive) (insert "|"))) |
||||
;;(define-key LaTeX-mode-map (kbd "C-SPC") (lambda() (interactive) (insert "\\"))) |
||||
(define-key LaTeX-mode-map (kbd "M-S-SPC") 'TeX-insert-braces) |
||||
(define-key LaTeX-mode-map (kbd "s-SPC") (lambda() (interactive) (insert "~"))) |
||||
|
||||
;; why this got dropped? |
||||
(define-key LaTeX-mode-map (kbd "C-c C-.") 'LaTeX-mark-environment) |
||||
|
||||
;; Go with strict mode |
||||
; (define-key LaTeX-mode-map (kbd "_") (lambda() (interactive) (flash-hline) (message "Use C-c C-k"))) |
||||
(define-key LaTeX-mode-map (kbd "M-_") (lambda() (interactive) (flash-hline) (message "Use C-c C-k"))) |
||||
(define-key LaTeX-mode-map (kbd "C-c C-k") (lambda (r-begin r-end) (interactive "r") (add-delimiter "_{" "}" r-begin r-end))) |
||||
; (define-key LaTeX-mode-map (kbd "^") (lambda() (interactive) (flash-hline) (message "Use C-c C-i"))) |
||||
(define-key LaTeX-mode-map (kbd "M-^") (lambda() (interactive) (flash-hline) (message "Use C-c C-i"))) |
||||
(define-key LaTeX-mode-map (kbd "C-c C-i") (lambda (r-begin r-end) (interactive "r") (add-delimiter "^{" "}" r-begin r-end))) |
||||
|
||||
(define-key LaTeX-mode-map (kbd "M-|") (lambda (r-begin r-end) (interactive "r") (add-delimiter "|" "|" r-begin r-end))) |
||||
(define-key LaTeX-mode-map (kbd "M-,") (lambda (r-begin r-end) (interactive "r") (add-delimiter ", " ", " r-begin r-end))) |
||||
(define-key LaTeX-mode-map (kbd "M-\"") (lambda (r-begin r-end) (interactive "r") (add-delimiter "“" "”" r-begin r-end))) |
||||
|
||||
;; This is the rationale: C-M-SPC starts inline math C-M-RET starts display math |
||||
(define-key LaTeX-mode-map (kbd "C-M-SPC") (lambda (r-begin r-end) (interactive "r") (add-delimiter "$" "$" r-begin r-end))) |
||||
(define-key LaTeX-mode-map (kbd "C-c C-d") |
||||
(lambda (arg r-begin r-end) (interactive "P\nr") |
||||
(if arg |
||||
(add-delimiter "\\todo[inline]{" "}{}" r-begin r-end) |
||||
(add-delimiter "\\todo{" "}{}" r-begin r-end)))) |
||||
(define-key LaTeX-mode-map (kbd "C-M-d") 'kill-sexp) |
||||
(define-key LaTeX-mode-map (kbd "C-M-i") 'down-list) ;; -i stands for /in/ |
||||
(define-key LaTeX-mode-map (kbd "C-M-o") 'up-list) ;; -o stands for /out/ |
||||
|
||||
(define-key LaTeX-mode-map (kbd "<f4>") (lambda() (interactive) (message "Use C-c C-c"))) |
||||
(define-key LaTeX-mode-map (kbd "C-c C-c") (lambda() (interactive) (compile "make -k")) );;'make) |
||||
|
||||
(define-key LaTeX-mode-map (kbd "=") 'insert-char-with-padding) |
||||
(define-key LaTeX-mode-map (kbd "≠") 'insert-char-with-padding) |
||||
(define-key LaTeX-mode-map (kbd ">") 'insert-char-with-padding) |
||||
(define-key LaTeX-mode-map (kbd "<") 'insert-char-with-padding) |
||||
(define-key LaTeX-mode-map (kbd "≥") 'insert-char-with-padding) |
||||
(define-key LaTeX-mode-map (kbd "≤") 'insert-char-with-padding) |
||||
(define-key LaTeX-mode-map (kbd "⇒") 'insert-char-with-padding) |
||||
(define-key LaTeX-mode-map (kbd "∩") 'insert-char-with-padding) |
||||
(define-key LaTeX-mode-map (kbd "∪") 'insert-char-with-padding) |
||||
(define-key LaTeX-mode-map (kbd "∨") 'insert-char-with-padding) |
||||
(define-key LaTeX-mode-map (kbd "∧") 'insert-char-with-padding) |
||||
(define-key LaTeX-mode-map (kbd "×") 'insert-char-with-padding) |
||||
(define-key LaTeX-mode-map (kbd "⊂") 'insert-char-with-padding) |
||||
(define-key LaTeX-mode-map (kbd "⊃") 'insert-char-with-padding) |
||||
|
||||
;; Force moves around to be more “semantic” |
||||
(define-key LaTeX-mode-map (kbd "C-v") 'forward-paragraph);(lambda() (interactive) (message "Command disabled"))) |
||||
(define-key LaTeX-mode-map (kbd "M-v") 'backward-paragraph) |
||||
(define-key LaTeX-mode-map (kbd "C-S-v") 'backward-paragraph) |
||||
; (lambda() (interactive) (message "Command disabled"))) |
||||
(define-key LaTeX-mode-map (kbd "<next>") (lambda() (interactive) (message "Command disabled"))) |
||||
(define-key LaTeX-mode-map (kbd "<prior>") (lambda() (interactive) (message "Command disabled"))) |
||||
)) |
||||
|
||||
;; this reimplements TeX-insert-braces to work with negative argument |
||||
(defun TeX-insert-braces (arg) |
||||
"Make a pair of braces around next ARG sexps and leave point inside. |
||||
No argument is equivalent to zero: just insert braces and leave point |
||||
between. |
||||
|
||||
If there is an active region, ARG will be ignored, braces will be |
||||
inserted around the region, and point will be left after the |
||||
closing brace." |
||||
(interactive "P") |
||||
(if (TeX-active-mark) |
||||
(progn |
||||
(if (< (point) (mark)) |
||||
(exchange-point-and-mark)) |
||||
(insert TeX-grcl) |
||||
(save-excursion |
||||
(goto-char (mark)) |
||||
(insert TeX-grop))) |
||||
(if (and arg (< arg 0)) |
||||
(progn |
||||
(save-excursion |
||||
(backward-sexp (prefix-numeric-value (- 0 arg))) |
||||
(insert TeX-grop)) |
||||
(insert TeX-grcl)) |
||||
(insert TeX-grop) |
||||
(save-excursion |
||||
(if arg (forward-sexp (prefix-numeric-value arg))) |
||||
(insert TeX-grcl))))) |
||||
|
||||
(defun TeX-back-insert-braces (arg) |
||||
(interactive "P") |
||||
(if arg (TeX-insert-braces (- 0 arg)) |
||||
(insert TeX-grcl))) |
||||
|
||||
(defun insert-char-with-padding (arg) |
||||
(interactive "*P") |
||||
(if (string= (string (preceding-char)) " ") () |
||||
(if (string= (string (preceding-char)) "\&") () (insert " "))) |
||||
(self-insert-command (prefix-numeric-value arg)) |
||||
(if (string= (string (following-char)) " ") () (insert " ")) ;; decide what to do with the point |
||||
) |
||||
|
||||
|
||||
;; this reimplements LaTeX-insert-environment to my taste |
||||
;; |
||||
(defun LaTeX-insert-environment (environment &optional extra) |
||||
"Insert LaTeX ENVIRONMENT with optional argument EXTRA." |
||||
(let ((active-mark (and (TeX-active-mark) (not (eq (mark) (point))))) |
||||
prefix content-start env-start env-end) |
||||
(when (and active-mark (< (mark) (point))) (exchange-point-and-mark)) |
||||
;; Compute the prefix. |
||||
(when (and LaTeX-insert-into-comments (TeX-in-commented-line)) |
||||
(save-excursion |
||||
(beginning-of-line) |
||||
(looking-at |
||||
(concat "^\\([ \t]*" TeX-comment-start-regexp "+\\)+[ \t]*")) |
||||
(setq prefix (match-string 0)))) |
||||
;; What to do with the line containing point. |
||||
(cond |
||||
;; if the line is made of blanks, erase them and start on the same line |
||||
((save-excursion (beginning-of-line) |
||||
(looking-at (concat prefix "[ \t]*$"))) |
||||
(delete-region (match-beginning 0) (match-end 0))) |
||||
;; if after the point there are only blanks, erase them and dont add extra newline |
||||
((looking-at "[ \t]*$") |
||||
(delete-horizontal-space) |
||||
(newline)) |
||||
((TeX-looking-at-backward (concat "^" prefix "[ \t]*") |
||||
(line-beginning-position)) |
||||
(beginning-of-line) |
||||
(newline) |
||||
(beginning-of-line 0));; if we are at the beginning of the line (maybe with some spaces |
||||
((bolp) |
||||
(delete-horizontal-space) |
||||
(newline) |
||||
(beginning-of-line 0)) |
||||
((eolp) |
||||
(delete-horizontal-space) |
||||
(newline) |
||||
) |
||||
(t |
||||
(delete-horizontal-space) |
||||
(newline 2) |
||||
(when prefix (insert prefix)) |
||||
(beginning-of-line 0))) |
||||
;; What to do with the line containing mark. |
||||
(when active-mark |
||||
(save-excursion |
||||
(goto-char (mark)) |
||||
(cond ((save-excursion (beginning-of-line) |
||||
(or (looking-at (concat prefix "[ \t]*$")) |
||||
(looking-at "[ \t]*$"))) |
||||
(delete-region (match-beginning 0) (match-end 0))) |
||||
((TeX-looking-at-backward (concat "^" prefix "[ \t]*") |
||||
(line-beginning-position)) |
||||
(beginning-of-line) |
||||
(newline) |
||||
(beginning-of-line 0)) |
||||
(t |
||||
(delete-horizontal-space) |
||||
(insert-before-markers "\n") |
||||
(newline) |
||||
(when prefix (insert prefix)))))) |
||||
;; Now insert the environment. |
||||
(when prefix (insert prefix)) |
||||
(setq env-start (point)) |
||||
(insert TeX-esc "begin" TeX-grop environment TeX-grcl) |
||||
(indent-according-to-mode) |
||||
(when extra (insert extra)) |
||||
(setq content-start (line-beginning-position 2)) |
||||
(unless active-mark |
||||
(newline) |
||||
(when prefix (insert prefix)) |
||||
(newline)) |
||||
(when active-mark (goto-char (mark))) |
||||
(when prefix (insert prefix)) |
||||
(insert TeX-esc "end" TeX-grop environment TeX-grcl "%") |
||||
(end-of-line 0) |
||||
(if active-mark |
||||
(progn |
||||
(or (assoc environment LaTeX-indent-environment-list) |
||||
(LaTeX-fill-region content-start (line-beginning-position 2))) |
||||
(set-mark content-start)) |
||||
(indent-according-to-mode)) |
||||
(save-excursion (beginning-of-line 2) (indent-according-to-mode)) |
||||
(TeX-math-input-method-off) |
||||
(setq env-end (save-excursion |
||||
(search-forward |
||||
(concat TeX-esc "end" TeX-grop |
||||
environment TeX-grcl)) |
||||
(match-beginning 0))) |
||||
;; The following apparently does not work. |
||||
;; (indent-region env-start env-end) |
||||
(fill-paragraph) |
||||
(run-hook-with-args 'LaTeX-after-insert-env-hooks |
||||
environment env-start env-end))) |
||||
|
||||
|
||||
(load "latex-compile-filters.el") |
||||
|
||||
;; * add bibretrieve |
||||
(byte-recompile-directory "~/.emacs.d/bibretrieve" 0) |
||||
(load "bibretrieve") |
||||
Loading…
Reference in new issue