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

(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")