You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
6.7 KiB
151 lines
6.7 KiB
(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) |
|
(add-hook 'LaTeX-mode-hook 'turn-on-reftex) |
|
|
|
|
|
(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) |
|
;; 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*")))) |
|
|
|
(define-key LaTeX-mode-map (kbd "S-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 "~"))) |
|
(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))) |
|
(define-key LaTeX-mode-map (kbd "M-$") (lambda (r-begin r-end) (interactive "r") (message "deprecated") (add-delimiter "$" "$" r-begin r-end))) ;; This overlaps with the spell-checker; not that I ever remember that key |
|
|
|
;; 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 "=") '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) |
|
|
|
|
|
;; ;; Unicode shortcuts… |
|
;; (define-key LaTeX-mode-map (kbd "α") (lambda() (interactive) (insert "\\alpha"))) |
|
;; (define-key LaTeX-mode-map (kbd "β") (lambda() (interactive) (insert "\\beta"))) |
|
;; (define-key LaTeX-mode-map (kbd "δ") (lambda() (interactive) (insert "\\delta"))) |
|
;; (define-key LaTeX-mode-map (kbd "Δ") (lambda() (interactive) (insert "\\Delta"))) |
|
;; (define-key LaTeX-mode-map (kbd "θ") (lambda() (interactive) (insert "\\theta"))) |
|
;; (define-key LaTeX-mode-map (kbd "Θ") (lambda() (interactive) (insert "\\Theta"))) |
|
;; (define-key LaTeX-mode-map (kbd "λ") (lambda() (interactive) (insert "\\lambda"))) |
|
;; (define-key LaTeX-mode-map (kbd "Λ") (lambda() (interactive) (insert "\\Lambda"))) |
|
;; (define-key LaTeX-mode-map (kbd "ω") (lambda() (interactive) (insert "\\omega"))) |
|
;; (define-key LaTeX-mode-map (kbd "Ω") (lambda() (interactive) (insert "\\Omega"))) |
|
|
|
;; (define-key LaTeX-mode-map (kbd "∈") (lambda() (interactive) (insert "\\in"))) |
|
;; (define-key LaTeX-mode-map (kbd "ℓ") (lambda() (interactive) (insert "\\ell"))) |
|
|
|
|
|
)) |
|
|
|
;; 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 |
|
) |
|
|
|
(load "latex-compile-filters.el")
|
|
|