@ -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-<return >")
(lambda (arg)
(interactive "P")
(if arg
(LaTeX-insert-environment "align")
(LaTeX-insert-environment "align*"))))
;; 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 "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 "<f4 >") (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 "<next >") (lambda() (interactive) (message "Command disabled")))
(define-key LaTeX-mode-map (kbd "<prior >") (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-<return >") 'wilder/TeX-insert-align)
;; 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-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 "<f4 >") (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 "<next >") (lambda() (interactive) (message "Command disabled")))
(define-key LaTeX-mode-map (kbd "<prior >") (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))