summaryrefslogtreecommitdiff
path: root/elpa/auctex-13.1.3/style/fancyvrb.el
diff options
context:
space:
mode:
authormattkae <mattkae@protonmail.com>2022-06-07 08:23:47 -0400
committermattkae <mattkae@protonmail.com>2022-06-07 08:23:47 -0400
commitbd18a38c2898548a3664a9ddab9f79c84f2caf4a (patch)
tree95b9933376770381bd8859782ae763be81c2d72b /elpa/auctex-13.1.3/style/fancyvrb.el
parentb07628dddf418d4f47b858e6c35fd3520fbaeed2 (diff)
parentef160dea332af4b4fe5e2717b962936c67e5fe9e (diff)
Merge conflict
Diffstat (limited to 'elpa/auctex-13.1.3/style/fancyvrb.el')
-rw-r--r--elpa/auctex-13.1.3/style/fancyvrb.el772
1 files changed, 0 insertions, 772 deletions
diff --git a/elpa/auctex-13.1.3/style/fancyvrb.el b/elpa/auctex-13.1.3/style/fancyvrb.el
deleted file mode 100644
index 22e52c2..0000000
--- a/elpa/auctex-13.1.3/style/fancyvrb.el
+++ /dev/null
@@ -1,772 +0,0 @@
-;;; fancyvrb.el --- AUCTeX style for `fancyvrb.sty' version 3.6. -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2013, 2014, 2016-2021 Free Software Foundation, Inc.
-
-;; Maintainer: auctex-devel@gnu.org
-;; Author: Mosè Giordano <mose@gnu.org>
-;; 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 St, Fifth Floor, Boston, MA
-;; 02110-1301, USA.
-
-;;; Commentary:
-
-;; This file adds support for `fancyvrb.sty' version 3.6.
-
-;; This style has some capabilities to parse user defined macros,
-;; environments and saved blocks with `SaveVerbatim' environments and
-;; offer them for completion. After defining a new macro or
-;; environment, hit `C-c C-n' to parse the document. In case of
-;; `SaveVerbatim', a second `C-c C-n' might be necessary.
-
-;; The command `\CustomVerbatimEnvironment' is not mentioned in the
-;; documenation; hence this command is removed from this style. Use
-;; `\DefineVerbatimEnvironment' for new environments and customize the
-;; standard ones with `\RecustomVerbatimEnvironment'.
-
-;; The entries in `LaTeX-fancyvrb-key-val-options' cover also some
-;; keys which are not mentioned in the manual of the package.
-
-;; Starting with version 3.6, fancyvrb.sty provides a `reflabel' key
-;; in the optional arguments which acts like a `\label' macro. This
-;; key makes mostly sense for `\pageref'; referencing number of
-;; missing \caption's with `\ref' in a fancyvrb environment isn't
-;; useful. This style provides support for AUCTeX and RefTeX in order
-;; to add and reference these labels. When inserting an environment
-;; with `C-c C-e', choose `reflabel' key during the completion. If
-;; you're using RefTeX and want to pass the label insertion job to it,
-;; simply leave the key value-less and proceed. Otherwise enter the
-;; label value by yourself. AUCTeX and RefTeX will parse the value
-;; and offer it for completion once a referencing macros is used.
-
-;;; Code:
-
-;; Needed for auto-parsing:
-(require 'tex)
-(require 'latex)
-
-;; Silence the compiler:
-(declare-function font-latex-add-keywords
- "font-latex"
- (keywords class))
-
-(declare-function font-latex-set-syntactic-keywords
- "font-latex")
-
-(declare-function LaTeX-color-definecolor-list "color" ())
-(declare-function LaTeX-xcolor-definecolor-list "xcolor" ())
-(defvar LaTeX-fvextra-key-val-options)
-
-(defvar LaTeX-fancyvrb-key-val-options
- `(("commentchar" ("none"))
- ("gobble")
- ("formatcom")
- ("formatcom*") ; Undocumented key
- ("fontfamily" ("tt" "courier" "helvetica"))
- ("fontsize" ("auto" "\\tiny" "\\scriptsize"
- "\\footnotesize" "\\small" "\\normalsize"
- "\\large" "\\Large" "\\LARGE" "\\huge" "\\Huge"))
- ("fontshape" ("auto" "n" "it" "sl" "sc" "scit"))
- ("fontseries" ("auto" "m" "b" "bx" "sb" "c" "l" "lc"))
- ("frame" ("none" "leftline" "topline" "bottomline" "lines" "single"))
- ("framerule")
- ("framesep")
- ("rulecolor" ("none"))
- ("fillcolor" ("none"))
- ("label" ("none"))
- ("labelposition" ("none" "topline" "bottomline" "all"))
- ("numbers" ("none" "left" "right"))
- ("numbersep")
- ("firstnumber" ("auto" "last" "integer"))
- ("stepnumber")
- ("numberblanklines" ("true" "false"))
- ("firstline")
- ("lastline")
- ("showspaces" ("true" "false"))
- ("showtabs" ("true" "false"))
- ("obeytabs" ("true" "false"))
- ("tabsize")
- ("baselinestretch" ("auto" "dimension"))
- ("commandchars" ("none"))
- ("xleftmargin")
- ("xrightmargin")
- ("resetmargins" ("true" "false"))
- ("hfuzz")
- ("samepage" ("true" "false"))
- ("codes")
- ("codes*") ; Undocumented key
- ("defineactive")
- ("defineactive*") ; Undocumented key
- ("reflabel")
- ;; Undocumented key and introduced in version 2.81 2011/04/06
- ("vspace" ,(mapcar (lambda (x)
- (concat TeX-esc (car x)))
- (LaTeX-length-list)))
- ;; Actually, the following options are used only by the `BVerbatim'
- ;; environment.
- ("boxwidth" ("auto" "dimension"))
- ("baseline" ("b" "c" "t"))
- ;; The next key applies only to `\SaveVerb' macro.
- ("aftersave"))
- "Key=value options for fancyvrb macros and environments.")
-
-(defun LaTeX-fancyvrb-key-val-options ()
- "Return an updated list of key=vals from fancyvrb package.
-This function also checks if the package fvextra is used and
-takes its key=vals into account."
- (append
- ;; Check if fvextra is loaded in combination with x?color:
- (when (and (member "fvextra" (TeX-style-list))
- (or (member "xcolor" TeX-active-styles)
- (member "color" TeX-active-styles)))
- (let* ((colorcmd (if (member "xcolor" TeX-active-styles)
- #'LaTeX-xcolor-definecolor-list
- #'LaTeX-color-definecolor-list))
- (keys '("highlightcolor"
- "rulecolor"
- "fillcolor"
- "tabcolor"
- "spacecolor"))
- (colors (mapcar #'car (funcall colorcmd)))
- result)
- (dolist (key keys result)
- (if (string= key "highlightcolor")
- (push (list key colors) result)
- (push (list key (cons "none" colors)) result)))))
-
- ;; Check if fvextra is loaded:
- (when (member "fvextra" TeX-active-styles)
- LaTeX-fvextra-key-val-options)
-
- ;; Check if fancyvrb is loaded in combination with x?color:
- (when (and (not (member "fvextra" TeX-active-styles))
- (or (member "xcolor" TeX-active-styles)
- (member "color" TeX-active-styles)))
- (let* ((colorcmd (if (member "xcolor" TeX-active-styles)
- #'LaTeX-xcolor-definecolor-list
- #'LaTeX-color-definecolor-list))
- (colors (mapcar (lambda (x)
- (concat TeX-esc "color" TeX-grop x TeX-grcl))
- (mapcar #'car (funcall colorcmd))))
- (keys '("rulecolor" "fillcolor"))
- val result)
- (dolist (key keys result)
- (setq val (cadr (assoc key LaTeX-fancyvrb-key-val-options)))
- (push (list key (append val colors)) result))))
-
- ;; Plain fancyvrb:
- LaTeX-fancyvrb-key-val-options))
-
-(defvar LaTeX-fancyvrb-base-macros
- '("VerbatimInput" "BVerbatimInput" "LVerbatimInput"
- "SaveVerb" "UseVerb" "Verb")
- "List of base macros available with fancyvrb package.
-Starred versions are not included in this list.")
-
-(defvar LaTeX-fancyvrb-base-environments
- '("Verbatim" "BVerbatim" "LVerbatim" "SaveVerbatim" "VerbatimOut")
- "List of base environments available with fancyvrb package.
-Starred versions are not included in this list.")
-
-(defvar LaTeX-fancyvrb-key-val-skip-regexp
- (concat "\\(?:" (LaTeX-extract-key-value-label 'none) "\\)?")
- "Helper regexp to skip over an optional argument.")
-
-;; Setup for defining new Verbatim commands:
-
-(TeX-auto-add-type "fancyvrb-macro" "LaTeX")
-
-(defvar LaTeX-fancyvrb-macro-regexp
- `(,(concat "\\\\\\(Rec\\|C\\)ustomVerbatimCommand"
- "[ \t\n\r]*{?[ \t\n\r]*\\\\\\([A-Za-z]+\\)[ \t\n\r]*}?"
- "[ \t\n\r]*{[ \t\n\r]*\\([A-Za-z]+\\)[ \t\n\r]*}")
- (2 3 1) LaTeX-auto-fancyvrb-macro)
- "Matches macros by fancyvrb package.")
-
-;; Setup for defining new Verbatim environments:
-
-(TeX-auto-add-type "fancyvrb-environment" "LaTeX")
-
-(defvar LaTeX-fancyvrb-environment-regexp
- `(,(concat "\\\\DefineVerbatimEnvironment"
- "[ \t\n\r]*{[ \t\n\r]*\\([A-Za-z0-9]+\\)[ \t\n\r]*}"
- "[ \t\n\r]*{[ \t\n\r]*\\([A-Za-z]+\\)[ \t\n\r]*}")
- (1 2) LaTeX-auto-fancyvrb-environment)
- "Matches new environments defined by fancyvrb package.")
-
-;; Setup for names in SaveVerb macros:
-
-(TeX-auto-add-type "fancyvrb-saveverb" "LaTeX")
-
-(defvar LaTeX-fancyvrb-saveverb-regexp
- `(,(concat "\\\\SaveVerb"
- LaTeX-fancyvrb-key-val-skip-regexp
- "{\\([^}]+\\)}")
- 1 LaTeX-auto-fancyvrb-saveverb)
- "Match the name under which verbatim text is saved by SaveVerb macro.")
-
-;; Setup for names in SaveVerbatim environments:
-
-(TeX-auto-add-type "fancyvrb-saveverbatim" "LaTeX")
-
-(defvar LaTeX-fancyvrb-saveverbatim-regexp
- `(,(concat "\\\\begin{SaveVerbatim}"
- LaTeX-fancyvrb-key-val-skip-regexp
- "{\\([^}]+\\)}")
- 1 LaTeX-auto-fancyvrb-saveverbatim)
- "Match the name under which verbatim text is saved by SaveVerbatim environment.")
-
-(defun LaTeX-fancyvrb-auto-prepare ()
- "Clear various LaTeX-auto-fancyvrb-* variables before parsing."
- (setq LaTeX-auto-fancyvrb-macro nil
- LaTeX-auto-fancyvrb-environment nil
- LaTeX-auto-fancyvrb-saveverb nil
- LaTeX-auto-fancyvrb-saveverbatim nil))
-
-(defun LaTeX-fancyvrb-auto-cleanup ()
- "Process parsed elements for fancyvrb package."
- (LaTeX-fancyvrb-arg-define-macro nil t)
- (LaTeX-fancyvrb-arg-define-environment nil t))
-
-(add-hook 'TeX-auto-prepare-hook #'LaTeX-fancyvrb-auto-prepare t)
-(add-hook 'TeX-auto-cleanup-hook #'LaTeX-fancyvrb-auto-cleanup t)
-(add-hook 'TeX-update-style-hook #'TeX-auto-parse t)
-
-(defun LaTeX-fancyvrb-arg-define-macro (optional &optional cleanup recustom)
- "Query and insert a new verbatim macro with fancyvrb package.
-If OPTIONAL is non-nil, insert the arguments in brackets. If
-CLEANUP is non-nil, do not insert any arguments in the buffer and
-update only various AUCTeX variables for verbatim macros. If
-RECUSTOM is non-nil, delete macros from the variable
-`TeX-symbol-list' before adding the new ones."
- ;; This part is only relevant when called by user:
- (unless cleanup
- (let ((new-mac (if recustom
- (completing-read
- (TeX-argument-prompt optional nil "Verbatim macro: \\" t)
- (mapcar #'car (apply #'append LaTeX-fancyvrb-macro-list)))
- (TeX-read-string
- (TeX-argument-prompt optional nil "New verbatim macro: \\" t))))
- (base-mac (completing-read (TeX-argument-prompt optional nil "Based on macro")
- LaTeX-fancyvrb-base-macros))
- (rec-flag (if recustom "Rec" "C")))
- ;; We are (re-)defining a macro: Insert user queried input and
- ;; use `LaTeX-add-fancyvrb-macros' on the input. Do not enclose
- ;; the first argument in braces as this will improve
- ;; fontification. Otherwise, the part between 2 closing braces
- ;; get fontified, i.e.:
- ;; \CustomVerbatimCommand{\foo}{Verb}{}
- ;; ^ ^
- (let ((TeX-arg-opening-brace "")
- (TeX-arg-closing-brace ""))
- (TeX-argument-insert new-mac optional TeX-esc))
- (TeX-argument-insert base-mac optional)
- (TeX-argument-insert
- (TeX-read-key-val optional (LaTeX-fancyvrb-key-val-options)) optional)
- (LaTeX-add-fancyvrb-macros `(,new-mac ,base-mac ,rec-flag))))
- ;;
- ;; Now run the procdure: Do not use the function
- ;; `LaTeX-fancyvrb-macro-list' here which will remove dupes from the
- ;; variable `LaTeX-fancyvrb-macro-list' depending on car; we need
- ;; the variable as is, hence (apply #'append ...);
- (dolist (elt (apply #'append LaTeX-fancyvrb-macro-list))
- (let ((mac-name (nth 0 elt))
- (base-mac (nth 1 elt))
- (flag (nth 2 elt)))
- ;; If we're Rec-ustomizing, delete the entry first from
- ;; `TeX-symbol-list':
- (when (string= flag "Rec")
- (setq TeX-symbol-list
- (assq-delete-all (car (assoc mac-name (TeX-symbol-list))) TeX-symbol-list)))
- ;; Now add the new item: Start with new macros for loading
- ;; files:
- (cond ((member base-mac '("VerbatimInput" "BVerbatimInput" "LVerbatimInput"))
- (TeX-add-symbols
- `(,mac-name
- [TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)]
- LaTeX-fancyvrb-arg-file-relative))
- (when (and (fboundp 'font-latex-add-keywords)
- (eq TeX-install-font-lock 'font-latex-setup))
- (font-latex-add-keywords `((,mac-name "[{"))
- 'reference)))
- ;; New macros for saving verbatim text:
- ((string= base-mac "SaveVerb")
- (TeX-add-symbols
- `(,mac-name
- [TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)]
- (TeX-arg-eval
- (lambda ()
- (let ((name (TeX-read-string
- (TeX-argument-prompt nil nil "Save name"))))
- (LaTeX-add-fancyvrb-saveverbs name)
- (format "%s" name))))
- TeX-arg-verb))
- (when (and (fboundp 'font-latex-add-keywords)
- (eq TeX-install-font-lock 'font-latex-setup))
- (font-latex-add-keywords `((,mac-name "[{"))
- 'textual)))
- ;; New macros for using previously saved text:
- ((string= base-mac "UseVerb")
- (TeX-add-symbols
- `(,mac-name
- (TeX-arg-eval
- completing-read
- (TeX-argument-prompt nil nil "Saved name")
- (LaTeX-fancyvrb-saveverb-list))))
- (when (and (fboundp 'font-latex-add-keywords)
- (eq TeX-install-font-lock 'font-latex-setup))
- (font-latex-add-keywords `((,mac-name "{"))
- 'textual)))
- ;; Anything else is considered as verbatim typesetting macro:
- (t
- (TeX-add-symbols
- `(,mac-name
- [TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)]
- TeX-arg-verb)
- ;; Defined macros have a starred version where the
- ;; `showspaces' key is set to true
- `(,(concat mac-name "*")
- [TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)]
- TeX-arg-verb))
- (add-to-list 'LaTeX-verbatim-macros-with-delims-local
- mac-name t)
- (add-to-list 'LaTeX-verbatim-macros-with-delims-local
- (concat mac-name "*") t)
- (when (and (fboundp 'font-latex-add-keywords)
- (eq TeX-install-font-lock 'font-latex-setup))
- (font-latex-add-keywords `((,mac-name "*["))
- 'textual))))))
- ;; Update font-lock:
- (when (and (fboundp 'font-latex-set-syntactic-keywords)
- (eq TeX-install-font-lock 'font-latex-setup))
- (font-latex-set-syntactic-keywords)))
-
-(defun LaTeX-fancyvrb-arg-define-environment (optional &optional cleanup)
- "Query and insert a new verbatim environment with fancyvrb package.
-If OPTIONAL is non-nil, insert the arguments in brackets. If
-CLEANUP is non-nil, do not insert any arguments in the buffer and
-update only various AUCTeX variables for verbatim environments."
- (unless cleanup
- (let ((new-env (TeX-read-string
- (TeX-argument-prompt optional nil "New verbatim environment")))
- (base-env (completing-read
- (TeX-argument-prompt optional nil "Based on environment")
- LaTeX-fancyvrb-base-environments)))
- ;; We are defining a new env: First insert the arguments and then
- ;; run `LaTeX-add-fancyvrb-environments' on '(new-env base-env).
- ;; If base-env is SaveVerbatim, run
- ;; `LaTeX-add-fancyvrb-saveverbatims' on new-env as well.
- (TeX-argument-insert new-env optional)
- (TeX-argument-insert base-env optional)
- (TeX-argument-insert
- (TeX-read-key-val optional (LaTeX-fancyvrb-key-val-options)) optional)
- (LaTeX-add-fancyvrb-environments `(,new-env ,base-env))
- (when (string= base-env "SaveVerbatim")
- (LaTeX-add-fancyvrb-saveverbatims new-env))))
- ;;
- ;; Now run the procdure:
- (dolist (elt (LaTeX-fancyvrb-environment-list))
- (let ((env (car elt))
- (type (cadr elt)))
- (cond ((string= type "VerbatimOut")
- (LaTeX-add-environments
- `(,env (lambda (env)
- (let ((options (TeX-read-key-val
- t (LaTeX-fancyvrb-key-val-options)))
- (file (TeX-read-string "Output file: ")))
- (LaTeX-insert-environment
- env
- (concat
- (unless (zerop (length options))
- (concat LaTeX-optop options LaTeX-optcl))
- (concat TeX-grop file TeX-grcl))))))))
- ((string= type "SaveVerbatim")
- (TeX-auto-add-regexp `(,(concat "\\\\begin{"
- env
- "}"
- LaTeX-fancyvrb-key-val-skip-regexp
- "{\\([^}]+\\)}")
- 1 LaTeX-auto-fancyvrb-saveverbatim)))
- (t
- ;; Regular verbatim environments have a starred
- ;; version; so add them here; the non-starred additions
- ;; to `LaTeX-verbatim-environments-local' and
- ;; `LaTeX-indent-environment-list' are done outside
- ;; (cond ...):
- (LaTeX-add-environments
- `(,env LaTeX-env-args
- [TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)]
- LaTeX-fancyvrb-env-reflabel-key-val))
- (LaTeX-add-environments
- `(,(concat env "*") LaTeX-env-args
- [TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)]
- LaTeX-fancyvrb-env-reflabel-key-val))
- (add-to-list 'LaTeX-verbatim-environments-local (concat env "*"))
- (add-to-list 'LaTeX-indent-environment-list
- `(,(concat env "*") current-indentation) t)
- ;; Tell AUCTeX about label values to reflabel key:
- (add-to-list 'LaTeX-label-alist
- (cons env 'LaTeX-listing-label) t)
- (add-to-list 'LaTeX-label-alist
- (cons (concat env "*") 'LaTeX-listing-label) t)
- (TeX-auto-add-regexp
- `(,(concat (regexp-quote TeX-esc)
- "begin[[:space:]]*"
- (regexp-quote TeX-grop)
- env
- "\\*?"
- (regexp-quote TeX-grcl)
- "[[:space:]]*"
- (LaTeX-extract-key-value-label "reflabel"))
- 1 LaTeX-auto-label))
- ;; Tell RefTeX:
- (when (and (fboundp 'reftex-add-label-environments)
- (boundp 'reftex-label-regexps))
- (reftex-add-label-environments
- `((,env
- ?l ,LaTeX-listing-label "~\\pageref{%s}"
- LaTeX-fancyvrb-reftex-label-context-function
- (regexp "[Ll]isting" "[Vv]erbatim"
- "[Cc]ode" "Quell\\(code\\|text\\)"))
-
- (,(concat env "*")
- ?l ,LaTeX-listing-label "~\\pageref{%s}"
- LaTeX-fancyvrb-reftex-label-context-function
- (regexp "[Ll]isting" "[Vv]erbatim"
- "[Cc]ode" "Quell\\(code\\|text\\)"))))
- (add-to-list 'reftex-label-regexps
- (concat
- (regexp-quote TeX-esc)
- "begin[[:space:]]*"
- (regexp-quote TeX-grop)
- (concat env "\\*?")
- (regexp-quote TeX-grcl)
- "[[:space:]]*"
- (LaTeX-extract-key-value-label "reflabel" 1))
- t))))
- ;; These apply for all environments defined:
- (add-to-list 'LaTeX-verbatim-environments-local env)
- (add-to-list 'LaTeX-indent-environment-list `(,env current-indentation) t)))
- ;; Update RefTeX:
- (when (fboundp 'reftex-compile-variables)
- (reftex-compile-variables))
- ;; Update font-lock:
- (when (and (fboundp 'font-latex-set-syntactic-keywords)
- (eq TeX-install-font-lock 'font-latex-setup))
- (font-latex-set-syntactic-keywords)))
-
-(defun LaTeX-fancyvrb-arg-file-relative (optional)
- "Query and insert a file name relative to current master file.
-If OPTIONAL is non-nil, insert the file name in brackets."
- (TeX-argument-insert
- (file-relative-name
- (read-file-name (TeX-argument-prompt optional nil "File"))
- (TeX-master-directory))
- optional))
-
-(defun LaTeX-fancyvrb-env-reflabel-key-val (_optional)
- "Add a label value to reflabel key.
-This function checks if the reflabel key is given in the optional
-argument of a fancyvrb environment and then adds a label as value
-to that key. The label value is inserted only if the key is
-value-less; user entered label values are recognized and
-respected. OPTIONAL is ignored."
- (let ((p (point-marker))
- (s (make-marker)))
- (set-marker s (save-excursion
- (LaTeX-find-matching-begin)
- (re-search-forward (regexp-quote LaTeX-optop)
- (line-end-position)
- t)))
- ;; Search for the reflabel and a potential value:
- (when (marker-position s)
- (re-search-backward
- (concat
- "\\(\\<reflabel\\>\\)"
- ;; Check if the key already has a label value:
- "\\("
- "[[:space:]]*=[[:space:]]*"
- (regexp-quote TeX-grop)
- "?"
- "[[:alnum:]:._-]"
- "\\)?")
- s t)
- ;; Insert a label value only if the key is value-less:
- (when (and (not (match-string 2))
- (match-string 1))
- (goto-char (match-end 1))
- (insert "="
- TeX-grop
- (format "%s" (LaTeX-label (LaTeX-current-environment)
- 'environment
- t))
- TeX-grcl)))
- ;; At any rate, go to where we started and clean up:
- (goto-char p)
- (set-marker p nil)
- (set-marker s nil)))
-
-(defun LaTeX-fancyvrb-reftex-label-context-function (env)
- "Extract and return a context string for RefTeX.
-The context string is the first line of the verbatim environment.
-If no reflabel key is found, an error is issued.
-ENV is the name of current environment as a string."
- (let* ((envstart (save-excursion
- (re-search-backward (concat "\\\\begin[[:space:]]*{"
- env
- "}")
- nil t)))
- (label-key (save-excursion
- (re-search-backward "\\<reflabel[ \t\n\r%]*=[ \t\n\r%]*"
- envstart t))))
- (if label-key
- (save-excursion
- (goto-char envstart)
- (re-search-forward (regexp-quote LaTeX-optop) label-key t)
- (up-list)
- (forward-line)
- ;; Return the first line of verbatim env:
- (buffer-substring-no-properties (point)
- (line-end-position)))
- (error "No label found"))))
-
-(defvar LaTeX-fancyvrb-key-val-label-regexp
- `(,(concat
- (regexp-quote TeX-esc)
- "begin[[:space:]]*"
- (regexp-quote TeX-grop)
- "[BL]?Verbatim\\*?"
- (regexp-quote TeX-grcl)
- "[[:space:]]*"
- (LaTeX-extract-key-value-label "reflabel"))
- 1 LaTeX-auto-label)
- "Matches the label inside an optional argument of fancyvrb environments.")
-
-(TeX-add-style-hook
- "fancyvrb"
- (lambda ()
- (TeX-auto-add-regexp LaTeX-fancyvrb-macro-regexp)
- (TeX-auto-add-regexp LaTeX-fancyvrb-environment-regexp)
- (TeX-auto-add-regexp LaTeX-fancyvrb-saveverb-regexp)
- (TeX-auto-add-regexp LaTeX-fancyvrb-saveverbatim-regexp)
- (TeX-auto-add-regexp LaTeX-fancyvrb-key-val-label-regexp)
- (TeX-run-style-hooks
- "keyval")
-
- (TeX-add-symbols
- ;; Verbatim material in footnotes
- "VerbatimFootnotes"
- ;; Improved verbatim commands
- '("Verb" [TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)] TeX-arg-verb)
- ;; \Verb also has a starred version:
- '("Verb*" [TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)] TeX-arg-verb)
- '("DefineShortVerb" (TeX-arg-eval
- TeX-read-string
- (TeX-argument-prompt nil nil "Character")
- TeX-esc))
- '("UndefineShortVerb" (TeX-arg-eval
- TeX-read-string
- (TeX-argument-prompt nil nil "Character")
- TeX-esc))
- ;; Verbatim environments
- '("fvset" (TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)))
- ;; Changing individual line formatting
- "FancyVerbFormatLine"
- ;; Line numbering
- "theFancyVerbLine"
- ;; Selection of lines to print
- "FancyVerbStartString"
- "FancyVerbStopString"
-
- ;; Personalized environments
- '("DefineVerbatimEnvironment"
- LaTeX-fancyvrb-arg-define-environment)
- '("RecustomVerbatimEnvironment"
- (TeX-arg-eval completing-read
- (TeX-argument-prompt nil nil "Verbatim environment")
- LaTeX-fancyvrb-base-environments)
- (TeX-arg-eval completing-read
- (TeX-argument-prompt nil nil "Based on environment")
- LaTeX-fancyvrb-base-environments)
- (TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)))
-
- '("CustomVerbatimCommand"
- LaTeX-fancyvrb-arg-define-macro)
- '("RecustomVerbatimCommand"
- (LaTeX-fancyvrb-arg-define-macro nil t))
-
- ;; Saving and restoring verbatim text and environments
- '("SaveVerb"
- [TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)]
- (TeX-arg-eval
- (lambda ()
- (let ((name (TeX-read-string
- (TeX-argument-prompt nil nil "Save name"))))
- (LaTeX-add-fancyvrb-saveverbs name)
- (format "%s" name))))
- TeX-arg-verb)
- '("UseVerb" (TeX-arg-eval
- completing-read
- (TeX-argument-prompt nil nil "Saved name")
- (LaTeX-fancyvrb-saveverb-list)))
- '("UseVerbatim" (TeX-arg-eval completing-read
- (TeX-argument-prompt nil nil "Saved name")
- (LaTeX-fancyvrb-saveverbatim-list)))
- '("LUseVerbatim" (TeX-arg-eval completing-read
- (TeX-argument-prompt nil nil "Saved name")
- (LaTeX-fancyvrb-saveverbatim-list)))
- '("BUseVerbatim" (TeX-arg-eval completing-read
- (TeX-argument-prompt nil nil "Saved name")
- (LaTeX-fancyvrb-saveverbatim-list)))
-
- ;; Writing and reading verbatim files
- '("VerbatimInput" [TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)]
- LaTeX-fancyvrb-arg-file-relative)
- '("BVerbatimInput" [TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)]
- LaTeX-fancyvrb-arg-file-relative)
- '("LVerbatimInput" [TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)]
- LaTeX-fancyvrb-arg-file-relative))
-
- (LaTeX-add-environments
- '("Verbatim" LaTeX-env-args
- [TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)]
- LaTeX-fancyvrb-env-reflabel-key-val)
- '("Verbatim*" LaTeX-env-args
- [TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)]
- LaTeX-fancyvrb-env-reflabel-key-val)
- '("BVerbatim" LaTeX-env-args
- [TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)]
- LaTeX-fancyvrb-env-reflabel-key-val)
- '("BVerbatim*" LaTeX-env-args
- [TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)]
- LaTeX-fancyvrb-env-reflabel-key-val)
- '("LVerbatim" LaTeX-env-args
- [TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)]
- LaTeX-fancyvrb-env-reflabel-key-val)
- '("LVerbatim*" LaTeX-env-args
- [TeX-arg-key-val (LaTeX-fancyvrb-key-val-options)]
- LaTeX-fancyvrb-env-reflabel-key-val)
- '("SaveVerbatim"
- (lambda (env)
- (let ((options (TeX-read-key-val t (LaTeX-fancyvrb-key-val-options)))
- (name (TeX-read-string "Save name: ")))
- (LaTeX-insert-environment
- env
- (concat
- (unless (zerop (length options))
- (concat LaTeX-optop options LaTeX-optcl))
- (concat TeX-grop name TeX-grcl)))
- (LaTeX-add-fancyvrb-saveverbatims name))))
- '("VerbatimOut"
- (lambda (env)
- (let ((options (TeX-read-key-val t (LaTeX-fancyvrb-key-val-options)))
- (file (TeX-read-string "Output file: ")))
- (LaTeX-insert-environment
- env
- (concat (unless (zerop (length options))
- (concat LaTeX-optop options LaTeX-optcl))
- (concat TeX-grop file TeX-grcl)))))))
-
- (let ((envs '("BVerbatim" "BVerbatim*"
- "LVerbatim" "LVerbatim*"
- "Verbatim" "Verbatim*")))
- ;; Add pre-defined environments to `LaTeX-label-alist':
- (dolist (env envs)
- (add-to-list 'LaTeX-label-alist (cons env 'LaTeX-listing-label) t))
-
- ;; Tell RefTeX
- (when (and (fboundp 'reftex-add-label-environments)
- (fboundp 'reftex-compile-variables)
- (boundp 'reftex-label-regexps))
- (dolist (env envs)
- (reftex-add-label-environments
- `((,env ?l ,LaTeX-listing-label "~\\pageref{%s}"
- LaTeX-fancyvrb-reftex-label-context-function
- (regexp "[Ll]isting" "[Vv]erbatim"
- "[Cc]ode" "Quell\\(code\\|text\\)")))))
-
- (unless (string-match "\\<reflabel"
- (mapconcat #'identity
- reftex-label-regexps
- "|"))
- (make-local-variable 'reftex-label-regexps)
- (add-to-list 'reftex-label-regexps
- (concat
- (regexp-quote TeX-esc)
- "begin[[:space:]]*"
- (regexp-quote TeX-grop)
- "[BL]?Verbatim\\*?"
- (regexp-quote TeX-grcl)
- "[[:space:]]*"
- (LaTeX-extract-key-value-label "reflabel" 1))
- t)
- (reftex-compile-variables))))
-
- (LaTeX-add-counters
- "FancyVerbLine")
-
- ;; Filling
- (add-to-list 'LaTeX-verbatim-environments-local "Verbatim")
- (add-to-list 'LaTeX-verbatim-environments-local "Verbatim*")
- (add-to-list 'LaTeX-verbatim-environments-local "BVerbatim")
- (add-to-list 'LaTeX-verbatim-environments-local "BVerbatim*")
- (add-to-list 'LaTeX-verbatim-environments-local "LVerbatim")
- (add-to-list 'LaTeX-verbatim-environments-local "LVerbatim*")
- (add-to-list 'LaTeX-verbatim-environments-local "SaveVerbatim")
- (add-to-list 'LaTeX-verbatim-environments-local "VerbatimOut")
- (make-local-variable 'LaTeX-indent-environment-list)
- (add-to-list 'LaTeX-indent-environment-list '("Verbatim" current-indentation) t)
- (add-to-list 'LaTeX-indent-environment-list '("Verbatim*" current-indentation) t)
- (add-to-list 'LaTeX-indent-environment-list '("BVerbatim" current-indentation) t)
- (add-to-list 'LaTeX-indent-environment-list '("BVerbatim*" current-indentation) t)
- (add-to-list 'LaTeX-indent-environment-list '("LVerbatim" current-indentation) t)
- (add-to-list 'LaTeX-indent-environment-list '("LVerbatim*" current-indentation) t)
- (add-to-list 'LaTeX-indent-environment-list '("SaveVerbatim" current-indentation) t)
- (add-to-list 'LaTeX-indent-environment-list '("VerbatimOut" current-indentation) t)
- (add-to-list 'LaTeX-verbatim-macros-with-delims-local "Verb")
- (add-to-list 'LaTeX-verbatim-macros-with-delims-local "Verb*")
-
- ;; Fontification
- (when (and (fboundp 'font-latex-add-keywords)
- (fboundp 'font-latex-set-syntactic-keywords)
- (eq TeX-install-font-lock 'font-latex-setup))
- (font-latex-add-keywords '(("CustomVerbatimCommand" "|{\\{{")
- ("RecustomVerbatimCommand" "|{\\{{")
- ("DefineVerbatimEnvironment" "{{{")
- ("RecustomVerbatimEnvironment" "{{{")
- ("DefineShortVerb" "{")
- ("UndefineShortVerb" "{")
- ("fvset" "{"))
- 'function)
- (font-latex-add-keywords '(("VerbatimInput" "[{")
- ("BVerbatimInput" "[{")
- ("LVerbatimInput" "[{"))
- 'reference)
- (font-latex-add-keywords '(("Verb" "*[") ; The second argument is verbatim.
- ("SaveVerb" "[{")
- ("UseVerb" "{")
- ("UseVerbatim" "{")
- ("LUseVerbatim" "{")
- ("BUseVerbatim" "{"))
- 'textual)
- (font-latex-set-syntactic-keywords)))
- TeX-dialect)
-
-(defvar LaTeX-fancyvrb-package-options nil
- "Package options for the fancyvrb package.")
-
-;;; fancyvrb.el ends here