diff --git a/global.org b/global.org index 052014c..6334438 100644 --- a/global.org +++ b/global.org @@ -1449,6 +1449,66 @@ (run-hook-with-args 'LaTeX-after-insert-env-hooks environment env-start env-end))) #+END_SRC +*** Patch auctex + I don't particularly like the way that the prefix arguments works + with font selection. The function below patches the annoying + behavior, by defaulting to the default behavior if the prefix + argument is 0 +#+BEGIN_SRC emacs-lisp + (defun wilder/TeX-font (replace what) + "Insert template for font change command. + If REPLACE is not nil, replace current font. WHAT determines the font + to use, as specified by `TeX-font-list'." + (interactive "*P\nc") + (TeX-update-style) + (let* ((entry (assoc what TeX-font-list)) + (in-math (texmathp)) + (before (nth 1 entry)) + (after (nth 2 entry))) + (setq replace (or replace (eq t (nth 3 entry)) (eq t (nth 5 entry)))) + (if (and in-math (stringp (nth 3 entry))) + (setq before (nth 3 entry) + after (nth 4 entry))) + (setq arg (prefix-numeric-value replace)) + (cond + ((null entry) + (let ((help (concat + "Font list: " + "KEY TEXTFONT MATHFONT\n\n" + (mapconcat 'TeX-describe-font-entry + TeX-font-list "\n")))) + (with-output-to-temp-buffer "*Help*" + (set-buffer "*Help*") + (insert help)))) + ((and replace (eq 0 arg)) + (funcall TeX-font-replace-function before after)) + ((and replace (< arg 0) ) + (progn + (save-excursion + (backward-sexp (- 0 arg)) + (insert before)) + (insert after))) + ((and replace (> arg 0)) + (insert before) + (save-excursion + (forward-sexp arg) + (insert after))) + ((TeX-active-mark) + (save-excursion + (cond ((> (mark) (point)) + (insert before) + (goto-char (mark)) + (insert after)) + (t + (insert after) + (goto-char (mark)) + (insert before))))) + (t + (insert before) + (save-excursion + (insert after)))))) + (advice-add 'TeX-font :override #'wilder/TeX-font) +#+END_SRC *** The hook #+BEGIN_SRC emacs-lisp (add-hook 'LaTeX-mode-hook