diff --git a/global.org b/global.org index 6f26054..cef2c16 100644 --- a/global.org +++ b/global.org @@ -197,6 +197,7 @@ (hi-lock-mode . "") (python-mode . "Py") (emacs-lisp-mode . "EL") + (TeX-latex-mode . "LaTeχ") (org-mode . "Ω") (org-agenda-mode . "Ω:Agenda")) "Alist for `clean-mode-line'. @@ -456,17 +457,22 @@ *** Cosmetics Change the default ellipsis ~...~ to the unicode ellipsis ~…~ #+BEGIN_SRC emacs-lisp - (setq org-ellipsis "…") + ; (setq org-ellipsis "…") #+END_SRC *** Ligatures - These require a patched ~hackminus~ font + These require a patched ~hackminus~ font. Too bad it does not work + for some reason #+BEGIN_SRC emacs-lisp - (add-hook 'org-mode-hook - (lambda () - (prettify-symbols-mode 1) - (add-to-list 'prettify-symbols-alist '("**" . (? (Br . Bl) ?))) - (add-to-list 'prettify-symbols-alist '("***" . (? (Br . Bl) ? (Br . Bl) ?))) - (add-to-list 'prettify-symbols-alist '("****" . (? (Br . Bl) ? (Br . Bl) ? (Br . Bl) ?))))) + ;; (defun delayed-org-prettify () + ;; (prettify-symbols-mode 0) + ;; (run-with-idle-timer 0 nil + ;; (lambda () + ;; (prettify-symbols-mode 1) + ;; (add-to-list 'prettify-symbols-alist '("**" . (? (Br . Bl) ?))) + ;; (add-to-list 'prettify-symbols-alist '("***" . (? (Br . Bl) ? (Br . Bl) ?))) + ;; (add-to-list 'prettify-symbols-alist '("****" . (? (Br . Bl) ? (Br . Bl) ? (Br . Bl) ?)))))) + ;;(add-hook 'org-mode-hook 'delayed-org-prettify) + #+END_SRC *** Agenda Set the canonical binding for the agenda @@ -770,112 +776,36 @@ (if (string= (string (following-char)) " ") () (insert " ")) ;; decide what to do with the point ) #+END_SRC -*** TODO Leftovers + This inserts a plain reference (or a reference to an equation with + prefix arg) #+BEGIN_SRC emacs-lisp - (setq TeX-fold-ellipsis " …") - - (add-hook 'LaTeX-mode-hook - (lambda () - (turn-on-reftex) - (setq prettify-symbols-alist nil) - (add-to-list 'prettify-symbols-alist '(" ⊂ " . (? (Br . Bl) ? (Br . Bl) ?))) - - (font-lock-add-keywords 'latex-mode `((,(rx "$") 0 'success t)) t) - - (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) + (defun wilder/TeX-insert-reference (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: 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 "M-S-SPC") 'TeX-insert-braces) - ;; (define-key LaTeX-mode-map (kbd "s-SPC") (lambda() (interactive) (insert "~"))) - - ;; why did this get dropped? - (define-key LaTeX-mode-map (kbd "C-c C-.") 'LaTeX-mark-environment) - #+END_SRC - Dealing with bad habits and sub|superscripts. Previous - bindings were ~M-_~ and ~M-^~ but they turned out to be too - typo-prone. - #+BEGIN_SRC emacs-lisp - (define-key LaTeX-mode-map (kbd "M-_") (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-i"))) - (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 "C-c C-i") (lambda (r-begin r-end) (interactive "r") (add-delimiter "^{" "}" r-begin r-end))) - #+END_SRC - - #+BEGIN_SRC emacs-lisp - (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 "/home/jacopods/scripts/latex-mk")) ) - - (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) - - (define-key LaTeX-mode-map (kbd "") (lambda() (interactive) (message "Command disabled"))) - (define-key LaTeX-mode-map (kbd "") (lambda() (interactive) (message "Command disabled"))) - )) - - ;; this reimplements LaTeX-insert-environment to my taste - ;; - (defun LaTeX-insert-environment (environment &optional extra) + (TeX-insert-macro "ref"))) + #+END_SRC + This inserts an ~align~ environment (or an ~align*~ with prefix arg) + #+BEGIN_SRC emacs-lisp + (defun wilder/TeX-insert-align (arg) + (interactive "P") + (if arg + (LaTeX-insert-environment "align") + (LaTeX-insert-environment "align*"))) + #+END_SRC + Insert a todonote at point or wrap the region in a todonote. + #+BEGIN_SRC emacs-lisp + (defun wilder/TeX-insert-todonote (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))) + #+END_SRC + This re-implements LaTeX-insert-environment to my taste + TODO Figure out what are the differences with the original version + and explain! + #+BEGIN_SRC emacs-lisp + (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) @@ -961,13 +891,108 @@ (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))) + #+END_SRC +*** TODO Leftovers + #+BEGIN_SRC emacs-lisp + (setq TeX-fold-ellipsis " …") + + (add-hook 'LaTeX-mode-hook + (lambda () + (turn-on-reftex) + (setq prettify-symbols-alist nil) + (add-to-list 'prettify-symbols-alist '(" ⊂ " . (? (Br . Bl) ? (Br . Bl) ?))) + + (font-lock-add-keywords 'latex-mode `((,(rx "$") 0 'success t)) t) - (load "latex-compile-filters.el") + (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 "M-S-SPC") 'TeX-insert-braces) + + (define-key LaTeX-mode-map (kbd "C-c C-v") 'wilder/TeX-insert-reference) + (define-key LaTeX-mode-map (kbd "C-M-") 'wilder/TeX-insert-align) + + ;; 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-c C-.") 'LaTeX-mark-environment) + #+END_SRC + Dealing with bad habits and sub|superscripts. Previous + bindings were ~M-_~ and ~M-^~ but they turned out to be too + typo-prone. + #+BEGIN_SRC emacs-lisp + (define-key LaTeX-mode-map (kbd "M-_") + (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-i"))) + (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 "C-c C-i") + (lambda (r-begin r-end) (interactive "r") (add-delimiter "^{" "}" r-begin r-end))) + #+END_SRC + + #+BEGIN_SRC emacs-lisp + (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") 'wilder/TeX-insert-todonote) + + (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 "/home/jacopods/scripts/latex-mk")) ) + + ;; Turn this into a list + (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) + (define-key LaTeX-mode-map (kbd "M-v") 'backward-paragraph) + (define-key LaTeX-mode-map (kbd "C-S-v") 'backward-paragraph) + + (define-key LaTeX-mode-map (kbd "") (lambda() (interactive) (message "Command disabled"))) + (define-key LaTeX-mode-map (kbd "") (lambda() (interactive) (message "Command disabled"))) + )) + + (load "latex-compile-filters.el") #+END_SRC Finally load ~bibretrieve~ #+BEGIN_SRC emacs-lisp @@ -1101,7 +1126,9 @@ (fill-paragraph nil region))) #+END_SRC ** kill-word - dwim manage space after kill-word. This has been pasted from [[https://www.reddit.com/r/emacs/comments/3nlws0/automanage_spaces_post_word_kills/][this reddit post]]. + dwim manage space after kill-word. This has been morally pasted from + [[https://www.reddit.com/r/emacs/comments/3nlws0/automanage_spaces_post_word_kills/][this reddit post]]. The original version does not allow for double + spaces after a period. #+BEGIN_SRC emacs-lisp (defun modi/just-one-space-post-kill-word (&rest _) "Function to manage white space after `kill-word' operations. @@ -1123,6 +1150,8 @@ (cond ((looking-back "^ *") ; remove extra space at beginning of line (just-one-space 0) (indent-according-to-mode)) + ((looking-back "\\. *") + (just-one-space 2)) ((or (looking-at " ") (looking-back " ")) ; adjust space only if it exists (just-one-space 1))