summaryrefslogtreecommitdiff
path: root/elpa/auctex-13.1.3/style/pst-plot.el
diff options
context:
space:
mode:
Diffstat (limited to 'elpa/auctex-13.1.3/style/pst-plot.el')
-rw-r--r--elpa/auctex-13.1.3/style/pst-plot.el150
1 files changed, 150 insertions, 0 deletions
diff --git a/elpa/auctex-13.1.3/style/pst-plot.el b/elpa/auctex-13.1.3/style/pst-plot.el
new file mode 100644
index 0000000..cfad30b
--- /dev/null
+++ b/elpa/auctex-13.1.3/style/pst-plot.el
@@ -0,0 +1,150 @@
+;;; pst-plot.el --- AUCTeX style for `pst-plot.sty' -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2007, 2014, 2015, 2019, 2020 Free Software Foundation, Inc.
+
+;; Author: Holger Sparr <holger.sparr@gmx.net>
+;; Created: 21 Jun 2007
+;; Based on: Jean-Philippe Georget's pst-plot.el
+;; Keywords: latex, pstricks, auctex, emacs
+
+;; 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 `pst-plot.sty'.
+
+;;; TODO:
+;;
+;; -- improve symbol support (especially the pstScalePoints macros)
+;; -- check for multido.el necessity
+
+;;; Code:
+
+(require 'tex)
+
+;; Silence the compiler:
+(declare-function LaTeX-pst-arrows "pstricks" ())
+(declare-function LaTeX-pst-point "pstricks" ())
+(declare-function TeX-arg-compl-list
+ "pstricks" (list &optional prompt hist))
+
+(defvar LaTeX-pst-parameters-completion-regexp)
+(defvar LaTeX-pst-parameters-name-list)
+
+;;; Parameters
+(defvar LaTeX-pstplot-datasets nil
+ "List of parsed data sets defined with \\savedata or \\readdata.")
+
+(defvar LaTeX-pstplot-parameters-name-list
+ '("axesstyle" "labels" "plotpoints" "plotstyle" "showorigin" "ticks"
+ "ticksize" "tickstyle")
+ "A list of parameters' name in pst-plot.")
+
+(defvaralias 'LaTeX-pst-labels-list 'LaTeX-pst-ticks-list)
+
+(defvar LaTeX-pst-ticks-list '(t "none" "all" "x" "y")
+ "A list of values for ticks in pst-plot.")
+
+(defvar LaTeX-pst-plotstyle-list
+ '(t "dots" "line" "polygon" "curve" "ecurve" "ccurve")
+ "A list of values for tickstyles in pst-plot.")
+
+(defvar LaTeX-pst-tickstyle-list '(t "full" "top" "bottom")
+ "A list of values for tickstyles in pst-plot.")
+
+(defvar LaTeX-pst-axesstyle-list '(t "axes" "frame" "none")
+ "A list of values for axesstyles in pst-plot.")
+
+;; Self Parsing -- see (info "(auctex)Hacking the Parser")
+(defvar LaTeX-auto-pstplot-regexp-list
+ '(("\\\\\\(save\\|read\\)data{?\\(\\\\[a-zA-Z]+\\)}?"
+ 2 LaTeX-auto-pstplot))
+ "List of regular expressions to extract arguments of \\*data
+ macros.")
+
+(defvar LaTeX-auto-pstplot nil
+ "Temporary for parsing \\*data definitions.")
+
+(defun LaTeX-pstplot-cleanup ()
+ "Move symbols from `LaTeX-auto-pstplot' to `TeX-auto-symbol'."
+ (mapcar (lambda (symbol)
+ ;; (setq TeX-symbol-list (cons (list symbol 0) TeX-symbol-list))
+ ;; (setq TeX-auto-symbol (cons (list symbol 0) TeX-auto-symbol)))
+ (add-to-list 'LaTeX-pstplot-datasets symbol))
+ LaTeX-auto-pstplot))
+
+(defun LaTeX-pstplot-prepare ()
+ "Clear `LaTeX-auto-pstplot' before use."
+ (setq LaTeX-auto-pstplot nil))
+
+(add-hook 'TeX-auto-prepare-hook #'LaTeX-pstplot-prepare t)
+(add-hook 'TeX-auto-cleanup-hook #'LaTeX-pstplot-cleanup t)
+(add-hook 'TeX-update-style-hook #'TeX-auto-parse t)
+
+;;; Macros
+(defun LaTeX-pst-macro-psaxes (_optional &optional _arg)
+ "Return \\psaxes arguments after querying."
+ (let* ((cpref (if current-prefix-arg (car current-prefix-arg) 0))
+ (arrows (LaTeX-pst-arrows))
+ (pnt1 (if (> cpref 4) (LaTeX-pst-point) nil))
+ (pnt2 (if (> cpref 0) (LaTeX-pst-point) nil))
+ (pnt3 (LaTeX-pst-point)))
+ ;; Insert \psaxes arguments.
+ (insert (if arrows (format "{%s}" arrows) "")
+ (if pnt1 (format "(%s)" pnt1) "")
+ (if pnt2 (format "(%s)" pnt2) "") "(" pnt3 ")")))
+
+;;; Derived defuns
+(defun LaTeX-pstplot-datasets-read ()
+ (TeX-arg-compl-list "Datasets" LaTeX-pstplot-datasets))
+
+;;; Hook
+(TeX-add-style-hook
+ "pst-plot"
+ (function
+ (lambda ()
+ (mapc #'TeX-auto-add-regexp LaTeX-auto-pstplot-regexp-list)
+ (TeX-add-symbols
+ '("readdata" "Macro Name" TeX-arg-file)
+ '("savedata" "Macro Name" ["Values"])
+ '("dataplot" ["Options"]
+ (TeX-arg-eval LaTeX-pstplot-datasets-read))
+ '("fileplot" ["Options"] TeX-arg-file)
+ '("listplot" ["Options"] "Values")
+ '("pstScalePoints" "X-Mod" "Y-Mod")
+ '("psplot" [LaTeX-pst-parameter] "xmin" "xmax" t)
+ '("parametricplot" [LaTeX-pst-parameter] "xmin" "xmax" t)
+ '("psaxes" [LaTeX-pst-parameters] LaTeX-pst-macro-psaxes)
+ "pshlabel"
+ "psvlabel")
+ (TeX-run-style-hooks
+ "pstricks"
+ "multido")
+ (unless (string-match "plotstyle"
+ LaTeX-pst-parameters-completion-regexp)
+ (setq LaTeX-pst-parameters-completion-regexp
+ (concat
+ (substring LaTeX-pst-parameters-completion-regexp 0 -2)
+ "\\|plotstyle\\|ticks\\|tickstyle\\|axesstyle\\|labels\\)")))
+ (make-local-variable 'LaTeX-pst-parameters-name-list)
+ (setq LaTeX-pst-parameters-name-list
+ (append LaTeX-pstplot-parameters-name-list
+ LaTeX-pst-parameters-name-list))))
+ TeX-dialect)
+
+;;; pst-plot.el ends here