diff --git a/global.org b/global.org index 0947f72..d742486 100644 --- a/global.org +++ b/global.org @@ -4,6 +4,7 @@ #+EMAIL: jacopods@math.utoronto.ca #+OPTIONS: *:t ::t +* TODO Uniformize indentation * TODO Look at tangling at [http://thewanderingcoder.com/2015/02/literate-emacs-configuration/] @@ -347,8 +348,8 @@ ;; Use system proxy (setq url-proxy-services '(("http" . "127.0.0.1:8118"))) #+END_SRC -* Settings for important major modes -** org-mode +* Main major modes +** TODO org-mode #+BEGIN_SRC emacs-lisp (require 'org-install) @@ -479,13 +480,307 @@ If the :tangle header arg is a list of files. Handle all files" (advice-add 'org-babel-tangle-collect-blocks :override #'org-babel-tangle-collect-blocks-handle-tangle-list) (advice-add 'org-babel-tangle-single-block :around #'org-babel-tangle-single-block-handle-tangle-list) #+END_SRC -** TODO split these up and incorporate them in the main file +** TODO split --- LaTeX + #+BEGIN_SRC emacs-lisp - (load "init-latex.el") - (load "init-c++.el") + (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-") + (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 and not RET. If we + ;; unbind RET then C-m won't work either. + (define-key LaTeX-mode-map (kbd "") (lambda() (interactive) (insert "\\"))) + (define-key LaTeX-mode-map (kbd "S-") (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 "") (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 "") (lambda() (interactive) (message "Command disabled"))) + (define-key LaTeX-mode-map (kbd "") (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") + #+END_SRC +** TODO C and C++ +*** Hooks + #+BEGIN_SRC emacs-lisp + (require 'doxymacs) + + (add-hook 'c-mode-hook (lambda () + (linum-mode) + (subword-mode) + (doxymacs-mode) + (define-key c-mode-map (kbd "C-c C-c") 'make) + (define-key c++-mode-map (kbd "C-c C-c") 'make))) #+END_SRC -** KDE integration -*** TODO These entries should be added to the subtree once it is split +** TODO KDE integration +*** TODO cleanup and split #+BEGIN_SRC emacs-lisp (defun kde-current-activity () "Returns the current KDE activity" @@ -526,6 +821,7 @@ If the :tangle header arg is a list of files. Handle all files" #+END_SRC This function is used to raise the frame associated to the current activity +*** TODO These entries should be added to the subtree once it is split #+BEGIN_SRC emacs-lisp (defun select-frame-on-current-activity () (select-frame-on-activity (kde-current-activity))) @@ -535,8 +831,8 @@ If the :tangle header arg is a list of files. Handle all files" #+BEGIN_SRC emacs-lisp (setq server-name (kde-current-activity-name)) #+END_SRC -** elisp -*** hooks +** TODO elisp +*** Hooks #+BEGIN_SRC emacs-lisp (add-hook 'emacs-lisp-mode-hook (lambda () @@ -553,7 +849,7 @@ If the :tangle header arg is a list of files. Handle all files" (insert (format "%S" value)))) (global-set-key (kbd "C-c C-x C-e") 'replace-last-sexp) #+END_SRC -** qml +** TODO qml Load ~qml-mode~ #+BEGIN_SRC emacs-lisp (load "qml-mode.el" nil t t) diff --git a/init/init-latex.el b/init/init-latex.el index 776a64d..e69de29 100644 --- a/init/init-latex.el +++ b/init/init-latex.el @@ -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-") - (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 and not RET. If we - ;; unbind RET then C-m won't work either. - (define-key LaTeX-mode-map (kbd "") (lambda() (interactive) (insert "\\"))) - (define-key LaTeX-mode-map (kbd "S-") (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 "") (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 "") (lambda() (interactive) (message "Command disabled"))) - (define-key LaTeX-mode-map (kbd "") (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")