diff options
Diffstat (limited to 'elpa/auctex-13.1.3/style/changes.el')
-rw-r--r-- | elpa/auctex-13.1.3/style/changes.el | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/elpa/auctex-13.1.3/style/changes.el b/elpa/auctex-13.1.3/style/changes.el new file mode 100644 index 0000000..9c3bff5 --- /dev/null +++ b/elpa/auctex-13.1.3/style/changes.el @@ -0,0 +1,242 @@ +;;; changes.el --- AUCTeX style for `changes.sty' -*- lexical-binding: t; -*- + +;; Copyright (C) 2021 Free Software Foundation, Inc. + +;; Author: Arash Esbati <arash@gnu.org> +;; Maintainer: auctex-devel@gnu.org +;; Created: 2021-01-31 +;; Keywords: tex + +;; This file is part of AUCTeX. + +;; AUCTeX is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. + +;; AUCTeX is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with AUCTeX; see the file COPYING. If not, write to the Free +;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +;; MA 02110-1301 USA. + +;;; Commentary: + +;; This file adds support for `changes.sty' v4.0.0. from 2021/01/28. + +;;; Code: + +(require 'tex) +(require 'latex) + +;; Silence the compiler: +(declare-function font-latex-add-keywords + "font-latex" + (keywords class)) +(defvar LaTeX-xcolor-base-colors) +(defvar LaTeX-truncate-package-options) +(defvar LaTeX-ulem-package-options) +(defvar LaTeX-xcolor-package-options) + +(TeX-auto-add-type "changes-definechangesauthor" "LaTeX") + +(defvar LaTeX-changes-definechangesauthor-regexp + `(,(concat "\\\\definechangesauthor" + "[ \t\n\r%]*" + "\\(?:\\[[^]]*\\]\\)?" + "[ \t\n\r%]*" + "{\\([^}]+\\)}") + 1 LaTeX-auto-changes-definechangesauthor) + "Matches the id defined by \\definechangesauthor.") + +(defun LaTeX-changes-auto-prepare () + "Reset `LaTeX-auto-changes-definechangesauthor'." + (setq LaTeX-auto-changes-definechangesauthor nil)) + +(add-hook 'TeX-auto-prepare-hook #'LaTeX-changes-auto-prepare t) +(add-hook 'TeX-update-style-hook #'TeX-auto-parse t) + +(defun LaTeX-arg-changes-definechangesauthor (optional) + "Prompt for the arguments of \\definechangesauthor macro. +While reading the first optional argument, remove space from +`crm-local-completion-map' and `minibuffer-local-completion-map'. +Insert the argument in brackets if OPTIONAL is non-nil." + (let* ((crm-local-completion-map + (remove (assoc 32 crm-local-completion-map) + crm-local-completion-map)) + (minibuffer-local-completion-map + (remove (assoc 32 minibuffer-local-completion-map) + minibuffer-local-completion-map)) + (TeX-last-optional-rejected nil) + (keyval (LaTeX-check-insert-macro-default-style + (TeX-read-key-val + t + `(("name") + ("color" + ,(cond + ((and (member "xcolor" (TeX-style-list)) + (fboundp 'LaTeX-xcolor-definecolor-list)) + (mapcar #'car (LaTeX-xcolor-definecolor-list))) + ((and (member "color" (TeX-style-list)) + (fboundp 'LaTeX-color-definecolor-list)) + (mapcar #'car (LaTeX-color-definecolor-list))) + (t nil))))))) + (TeX-arg-opening-brace LaTeX-optop) + (TeX-arg-closing-brace LaTeX-optcl)) + (when keyval (TeX-argument-insert keyval t))) + (let ((id (TeX-read-string + (TeX-argument-prompt optional nil "Author ID")))) + (LaTeX-add-changes-definechangesauthors id) + (TeX-argument-insert id optional))) + +(defun LaTeX-arg-changes-markup (optional) + "Prompt for the argument of various markup commands. +Remove space from `crm-local-completion-map' and +`minibuffer-local-completion-map' while reading user input. +Insert the argument in brackets if OPTIONAL is non-nil." + (let* ((crm-local-completion-map + (remove (assoc 32 crm-local-completion-map) + crm-local-completion-map)) + (minibuffer-local-completion-map + (remove (assoc 32 minibuffer-local-completion-map) + minibuffer-local-completion-map)) + (keyval (TeX-read-key-val + optional + `(("id" ,(mapcar #'car + (LaTeX-changes-definechangesauthor-list))) + ("comment"))))) + (TeX-argument-insert keyval optional))) + +(TeX-add-style-hook + "changes" + (lambda () + + ;; Add changes to the parser + (TeX-auto-add-regexp LaTeX-changes-definechangesauthor-regexp) + + ;; Run AUCTeX style hooks based on given package options: This is + ;; more complicated since we're only looking after "ulem" or + ;; "xcolor" and don't really care about the given options to them: + (when (assoc "changes" LaTeX-provided-package-options) + (dolist (pkg '("ulem" "xcolor")) + (let ((opts (cdr (assoc "changes" + LaTeX-provided-package-options)))) + (when (string-match (concat "\\<" pkg "\\>") + (mapconcat #'identity opts "|")) + (TeX-run-style-hooks pkg))))) + + ;; truncate.sty is always loaded: + (TeX-run-style-hooks "truncate") + + (TeX-add-symbols + ;; 4.2 Change management + '("added" [ LaTeX-arg-changes-markup ] 1) + '("deleted" [ LaTeX-arg-changes-markup ] 1) + '("replaced" [ LaTeX-arg-changes-markup ] 2) + + ;; 4.3 Highlighting and Comments + '("highlight" [ LaTeX-arg-changes-markup ] 1) + '("comment" + [TeX-arg-eval + TeX-read-key-val t `(("id" + ,(mapcar #'car + (LaTeX-changes-definechangesauthor-list))))] + 1) + + ;; 4.4 Overview of changes + '("listofchanges" + [TeX-arg-key-val (("style" ("list" "summary" "compactsummary")) + ("title") + ("show" ("all" "added" "deleted" + "replaced" "highlight" "comment")))]) + + ;; 4.5 Author management \definechangesauthor + '("definechangesauthor" LaTeX-arg-changes-definechangesauthor) + + ;; 4.6 Adaption of the output: + '("setaddedmarkup" "Definition") + '("setdeletedmarkup" "Definition") + '("sethighlightmarkup" "Definition") + '("setcommentmarkup" "Definition") + '("setauthormarkup" "Definition") + '("setauthormarkupposition" + (TeX-arg-eval completing-read + (TeX-argument-prompt optional nil "Position") + '("left" "right"))) + '("setauthormarktext" + (TeX-arg-eval completing-read + (TeX-argument-prompt optional nil "Markup") + '("id" "name"))) + '("settruncatewidth" (TeX-arg-length "Width")) + '("setsummarywidth" (TeX-arg-length "Width")) + '("setsummarytowidth" "Text") + '("setlocextension" "Extension") + '("setsocextension" "Extension")) + + ;; Fontification + (when (and (featurep 'font-latex) + (eq TeX-install-font-lock 'font-latex-setup)) + (font-latex-add-keywords '(("definechangesauthor" "[{") + ("setaddedmarkup" "{") + ("setdeletedmarkup" "{") + ("sethighlightmarkup" "{") + ("setcommentmarkup" "{") + ("setauthormarkup" "{") + ("setauthormarkupposition" "{") + ("setauthormarktext" "{") + ("settruncatewidth" "{") + ("setsummarywidth" "{") + ("setsummarytowidth" "{") + ("setlocextension" "{") + ("setsocextension" "{")) + 'function) + (font-latex-add-keywords '(("added" "[{") + ("deleted" "[{") + ("replaced" "[{{") + ("highlight" "[{") + ("comment" "[{")) + 'textual) + (font-latex-add-keywords '(("listofchanges" "[")) + 'reference))) + TeX-dialect) + +(defun LaTeX-changes-package-options () + "Prompt for package options for the changes package." + (TeX-load-style "xcolor") + (TeX-load-style "truncate") + (TeX-load-style "ulem") + (TeX-read-key-val + t + (append + `(("defaultcolor" + ,(if (and (fboundp 'LaTeX-xcolor-definecolor-list) + (LaTeX-xcolor-definecolor-list)) + (mapcar #'car (LaTeX-xcolor-definecolor-list)) + LaTeX-xcolor-base-colors))) + `(("draft") + ("final") + ("commandnameprefix" ("none" "ifneeded" "always")) + ("markup" ("default" "underlined" "bfit" "nocolor")) + ("addedmarkup" ("colored" "uline" "uuline" "uwave" + "dashuline" "dotuline" + "bf" "it" "sl" "em")) + ("deletedmarkup" ("sout" "xout" "colored" + "uline" "uuline" "uwave" + "dashuline" "dotuline" + "bf" "it" "sl" "em")) + ("highlightmarkup" ("background" "uuline" "uwave")) + ("commentmarkup" ("todo" "margin" "footnote" "uwave")) + ("authormarkup" ("superscript" "subscript" "brackets" + "footnote" "none")) + ("authormarkupposition" ("right" "left")) + ("authormarkuptext" ("id" "name")) + ("todonotes") + ("truncate" ,LaTeX-truncate-package-options) + ("ulem" ,LaTeX-ulem-package-options) + ("xcolor" ,LaTeX-xcolor-package-options))))) + +;;; changes.el ends here |