diff --git a/README.org b/README.org index 406d906..2d52477 100644 --- a/README.org +++ b/README.org @@ -590,9 +590,14 @@ defined in this Org file. (with-eval-after-load 'shortdoc ;; Ensure defining the functions before documenting them. (define-short-documentation-group init + "Advice" + (toggle-advice :no-manual t) "Face" (invert-default-face :no-manual t) (set-default-face-height :no-manual t) + "LaTeX" + (TeX-brace-count-line-override :no-manual t) + (toggle-TeX-brace-count-line-override :no-manual t) "Org" (by-backend :no-manual t) (by-backend-kbd-org-macro :no-manual t) @@ -1226,7 +1231,10 @@ Loading =tex.el= immediately instead of lazily ensures proper initialization of elisp library file has no autoload cookie. Without prior loading of =tex.el=, Emacs will complain that ~TeX-master~ is no safe local variable in case it reads a LaTeX file that sets ~TeX-master~. Listing [[lst:require-auctex]] initializes -[[https://en.wikipedia.org/wiki/AUCTeX][AUCTeX]] properly for LuaTeX or LuaLaTeX. +[[https://en.wikipedia.org/wiki/AUCTeX][AUCTeX]] properly for LuaTeX or LuaLaTeX. Finally, out of the box, [[https://en.wikipedia.org/wiki/AUCTeX][AUCTeX]] does +not indent text between square brackets. The code in listing [[lst:configure-auctex]] +corrects this by advising to override ~TeX-brace-count-line~ with +~TeX-brace-count-line-advice~. #+caption[Require =AUCTeX=]: #+caption: Require =AUCTeX=. @@ -1238,61 +1246,19 @@ a LaTeX file that sets ~TeX-master~. Listing [[lst:require-auctex]] initializes '(TeX-auto-save t) '(TeX-engine 'luatex) '(TeX-install-font-lock #'font-latex-setup) - '(TeX-parse-self t))) -#+end_src - -Listing [[lst:configure-bibtex]] configures the Emacs =bibtex= library to use the -LaTeX =BiBTeX= dialect for backwards compatibility. - -#+caption[Configure =bibtex=]: -#+caption: Configure =bibtex=. -#+name: lst:configure-bibtex -#+begin_src emacs-lisp - (with-eval-after-load 'bibtex - (custom-set-variables '(bibtex-dialect 'BibTeX))) -#+end_src - -Listing [[lst:configure-font-latex]] disables font scaling of section titles. - -#+caption[Configure =font-latex=]: -#+caption: Configure =font-latex=. -#+name: lst:configure-font-latex -#+begin_src emacs-lisp - (with-eval-after-load 'font-latex - (custom-set-variables - '(font-latex-fontify-sectioning 1.0))) -#+end_src - -Listing [[lst:configure-latex]] configures =latex= for a full featured -=LaTeX-section-command=. Finally, out of the box, [[https://en.wikipedia.org/wiki/AUCTeX][AUCTeX]] does not indent text -between square brackets. The code in listing [[lst:configure-tex]] corrects this by -advising to override ~TeX-brace-count-line~ with ~my-TeX-brace-count-line~. - -#+caption[Configure =latex=]: -#+caption: Configure =latex=. -#+name: lst:configure-latex -#+begin_src emacs-lisp - (with-eval-after-load 'latex - (custom-set-variables - '(LaTeX-section-hook '(LaTeX-section-heading - LaTeX-section-title - LaTeX-section-toc - LaTeX-section-section - LaTeX-section-label)))) -#+end_src - -#+caption[Configure =TeX=]: -#+caption: Configure =TeX=. -#+name: lst:configure-tex -#+begin_src emacs-lisp - (with-eval-after-load 'tex - (custom-set-variables + '(TeX-parse-self t) ;; Disable `TeX-electric-math' to prevent collisions with `smartparens'. - '(TeX-electric-math nil)) + '(TeX-electric-math nil))) +#+end_src - ;; https://emacs.stackexchange.com/questions/17396/ - ;; indentation-in-square-brackets - (defun my-TeX-brace-count-line () +#+caption[Configure =AUCTeX=]: +#+caption: Configure =AUCTeX=. +#+name: lst:configure-auctex +#+begin_src emacs-lisp + (when (require 'tex nil 'noerror) + ;; https://emacs.stackexchange.com/a/35507 answers: + ;; How to indent between square brackets? + (defun TeX-brace-count-line-override () "Count number of open/closed braces." (save-excursion (let ((count 0) (limit (line-end-position)) char) @@ -1314,7 +1280,58 @@ advising to override ~TeX-brace-count-line~ with ~my-TeX-brace-count-line~. (forward-char) t)))))) count))) - (advice-add 'TeX-brace-count-line :override #'my-TeX-brace-count-line)) + (defun toggle-advice (symbol where function &optional props) + "Toggle between states after `advice-remove' and `advice-add'." + (let ((how "%s `%s' advice `%s' %s `%s'")) + (if (advice-member-p function symbol) + (progn + (message how "Removal of" where function "from" symbol) + (advice-remove symbol function)) + (message how "Addition of" where function "to" symbol) + (advice-add symbol where function props)))) + + (defun toggle-TeX-brace-count-line-override () + "Toggle `TeX-brace-count-line-override' advice." + (interactive) + (toggle-advice #'TeX-brace-count-line-advice :override 'TeX-brace-count-line)) + + (toggle-TeX-brace-count-line-override)) +#+end_src + +Listing [[lst:configure-bibtex]] configures the Emacs =bibtex= library to use the +LaTeX =BiBTeX= dialect for backwards compatibility. Listing +[[lst:configure-font-latex]] disables font scaling of section titles. Listing +[[lst:configure-latex]] configures =latex= for a full featured +=LaTeX-section-command=. + +#+caption[Configure =bibtex=]: +#+caption: Configure =bibtex=. +#+name: lst:configure-bibtex +#+begin_src emacs-lisp + (with-eval-after-load 'bibtex + (custom-set-variables '(bibtex-dialect 'BibTeX))) +#+end_src + +#+caption[Configure =font-latex=]: +#+caption: Configure =font-latex=. +#+name: lst:configure-font-latex +#+begin_src emacs-lisp + (with-eval-after-load 'font-latex + (custom-set-variables + '(font-latex-fontify-sectioning 1.0))) +#+end_src + +#+caption[Configure =latex=]: +#+caption: Configure =latex=. +#+name: lst:configure-latex +#+begin_src emacs-lisp + (with-eval-after-load 'latex + (custom-set-variables + '(LaTeX-section-hook '(LaTeX-section-heading + LaTeX-section-title + LaTeX-section-toc + LaTeX-section-section + LaTeX-section-label)))) #+end_src *** [[https://gitlab.com/matsievskiysv/math-preview/-/blob/master/README.md][Math-preview]]