summaryrefslogtreecommitdiff
path: root/elpa/auctex-13.1.3/style/pst-node.el
diff options
context:
space:
mode:
Diffstat (limited to 'elpa/auctex-13.1.3/style/pst-node.el')
-rw-r--r--elpa/auctex-13.1.3/style/pst-node.el207
1 files changed, 207 insertions, 0 deletions
diff --git a/elpa/auctex-13.1.3/style/pst-node.el b/elpa/auctex-13.1.3/style/pst-node.el
new file mode 100644
index 0000000..86a87e4
--- /dev/null
+++ b/elpa/auctex-13.1.3/style/pst-node.el
@@ -0,0 +1,207 @@
+;;; pst-node.el --- AUCTeX style for `pst-node.sty' -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2007-2021 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-node.sty'.
+
+;;; TODO:
+;;
+;; -- self parsing of possible node names
+;; -- adding more macro support
+
+;;; Code:
+
+(require 'tex)
+(require 'latex)
+
+;; Silence the compiler:
+(declare-function LaTeX-package-parameter-value
+ "pstricks" (param pname))
+(declare-function LaTeX-package-parameters-pref-and-chosen
+ "pstricks" (param pname noskip))
+(declare-function LaTeX-package-parameters
+ "pstricks" (optional pname preparam param))
+(declare-function LaTeX-pst-angle "pstricks" ())
+(declare-function LaTeX-pst-point "pstricks" ())
+(declare-function LaTeX-pst-arrows "pstricks" ())
+
+(defalias 'LaTeX-pst-node #'LaTeX-pst-point)
+
+(defvar LaTeX-pstnode-parameters-completion-regexp
+ "\\(npos\\|nrot\\)"
+ "Regexp for `string-match'ing a parameter.")
+
+(defvar LaTeX-pstnode-parameters-boolean-regexp "show\\([a-zA-Z]+\\)"
+ "Regexp for `string-match'ing a parameter.")
+
+(defvar LaTeX-pstnode-npos-list '(".25" ".5" ".75" "1" "1.5" "2")
+ "A list of values for npos in nput.")
+
+(defvar LaTeX-pstnode-nrot-list '(":U" ":D" ":R" ":L")
+ "A list of values for nrot in nput.")
+
+(defvar LaTeX-pstnode-psmatrix-list
+ '("mnode" "emnode" "name" "nodealign" "mocl" "rowsep" "colsep"
+ "mnodesize")
+ "A list of values for trimode in pstribox.")
+
+;;; Parameters
+(defvar LaTeX-pstnode-parameters-history nil
+ "History of values for parameters in pst-node.")
+
+(defvar LaTeX-pstnode-parameters-value-history nil
+ "History of parameter values in pst-node.")
+
+(defvar LaTeX-pstnode-parameters-name-list
+ '("angle" "angleA" "angleB" "arcangle" "arcangleA" "arcangleB" "arm"
+ "armA" "armB" "boxsize" "colsep" "framesize" "href" "loopsize"
+ "ncurv" "ncurvA" "ncurvB" "nodesepA" "nodesepB" "npos" "nrot"
+ "offset" "offsetA" "offsetB" "radius" "vref" "Xnodesep" "XnodesepA"
+ "XnodesepB" "Ynodesep" "YnodesepA" "YnodesepB")
+ "A list of parameters' name in pst-node.")
+
+(defvar LaTeX-pstnode-parameters-name-history nil
+ "History of parameter names in pst-node.")
+
+;;; Derived Functions from pstricks.el defuns
+(defun LaTeX-pstnode-parameter-value (param)
+ "See documentation of `LaTeX-package-parameter-value'."
+ (LaTeX-package-parameter-value param "pstnode"))
+
+(defun LaTeX-pstnode-parameters-pref-and-chosen (param &optional noskip)
+ "See documentation of `LaTeX-package-parameters-pref-and-chosen'."
+ (LaTeX-package-parameters-pref-and-chosen param "pstnode" noskip))
+
+(defun LaTeX-pstnode-parameters (optional &optional preparam param)
+ "See documentation of `LaTeX-package-parameters-pref-and-chosen'."
+ (LaTeX-package-parameters optional "pstnode" preparam param))
+
+;;; Macros
+(defun LaTeX-pstnode-macro-nput (_optional &optional _arg)
+ "Return \\nput arguments after querying."
+ (insert "[rot=" (LaTeX-pst-angle) "]{" (LaTeX-pst-angle) "}{"
+ (LaTeX-pst-node) "}"))
+
+(defun LaTeX-pstnode-macro-cnodeput (_optional &optional _arg)
+ "Return \\cnodeput arguments after querying."
+ (let ((rotation (if current-prefix-arg (LaTeX-pst-angle) nil))
+ (pnt (if current-prefix-arg (LaTeX-pst-point) nil)))
+ (insert (if rotation (format "{%s}" rotation) "")
+ (if pnt (format "(%s)" pnt) "") "{" (LaTeX-pst-node) "}")))
+
+(defun LaTeX-pstnode-macro-nc (_optional &optional _arg)
+ "Return \\nc* arguments after querying."
+ (let ((arrows (LaTeX-pst-arrows)))
+ (insert (if arrows (format "{%s}" arrows) "") "{" (LaTeX-pst-node)
+ "}{" (LaTeX-pst-node) "}")))
+
+(defun LaTeX-pstnode-macro-pc (_optional &optional _arg)
+ "Return \\pc* arguments after querying."
+ (let ((arrows (LaTeX-pst-arrows)))
+ (insert (if arrows (format "{%s}" arrows) "") "(" (LaTeX-pst-point)
+ ")(" (LaTeX-pst-point) ")")))
+
+(defun LaTeX-pstnode-macro-tnabcput (optional &optional _arg)
+ "Return \\t?put or \\n?put arguments after querying."
+ (TeX-argument-insert (LaTeX-pstnode-parameters-pref-and-chosen
+ '("nrot" "npos"))
+ optional))
+
+;;; Environments
+(defun LaTeX-pstnode-env-psmatrix (env)
+ "Return psmatrix environment with arguments."
+ (let ((opt (TeX-completing-read-multiple "Options: "
+ LaTeX-pstnode-psmatrix-list)))
+ (LaTeX-insert-environment env opt)))
+
+(TeX-add-style-hook
+ "pst-node"
+ (function
+ (lambda ()
+ (LaTeX-add-environments
+ '("psmatrix" LaTeX-pstnode-env-psmatrix))
+ (TeX-add-symbols
+ '("MakeShortNab" 2) '("MakeShortTablr" 4) '("PSTnodesLoaded" 0)
+ '("nput" LaTeX-pstnode-macro-nput TeX-arg-macro)
+ '("cnodeput" [LaTeX-pst-parameters] LaTeX-pstnode-macro-cnodeput t)
+ '("Cnode" [LaTeX-pstnode-parameters] LaTeX-pst-point-in-parens t)
+ '("cnode" [LaTeX-pstnode-parameters] "Radius" t)
+ '("fnode" [LaTeX-pstnode-parameters] LaTeX-pst-point-in-parens t)
+ '("fnode*" [LaTeX-pstnode-parameters] LaTeX-pst-point-in-parens t)
+ '("dotnode" [LaTeX-pstnode-parameters] LaTeX-pst-point-in-parens t)
+ '("pnode" LaTeX-pst-point-in-parens t)
+ '("Rnode" [LaTeX-pstnode-parameters ("href" "vref")]
+ (TeX-arg-eval LaTeX-pst-point) t)
+ '("rnode" [LaTeX-pstnode-parameters ("ref")]
+ (TeX-arg-eval LaTeX-pst-point) t)
+ '("circlenode" [LaTeX-pst-parameters]
+ (TeX-arg-eval LaTeX-pst-point) t)
+ '("dianode" [LaTeX-pst-parameters] "Node Name" t)
+ '("ovalnode" [LaTeX-pst-parameters] "Node Name" t)
+ '("trinode" [LaTeX-pst-parameters] "Node Name" t)
+ '("dotnode" [LaTeX-pst-parameters] LaTeX-pst-point-in-parens
+ "Node Name")
+ '("naput" [LaTeX-pstnode-macro-tnabcput] t)
+ '("nbput" [LaTeX-pstnode-macro-tnabcput] t)
+ '("ncput" [LaTeX-pstnode-macro-tnabcput] t)
+ '("taput" [LaTeX-pstnode-macro-tnabcput] t)
+ '("tbput" [LaTeX-pstnode-macro-tnabcput] t)
+ '("thput" [LaTeX-pstnode-macro-tnabcput] t)
+ '("tlput" [LaTeX-pstnode-macro-tnabcput] t)
+ '("trput" [LaTeX-pstnode-macro-tnabcput] t)
+ '("tvput" [LaTeX-pstnode-macro-tnabcput] t)
+ '("ncline" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc)
+ '("ncarc" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc)
+ '("ncdiag" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc)
+ '("ncdiagg" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc)
+ '("ncbar" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc)
+ '("ncangle" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc)
+ '("ncangles" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc)
+ '("ncloop" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc)
+ '("nccurve" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc)
+ '("nccircle" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc)
+ '("ncbox" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc)
+ '("ncarcbox" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc)
+ '("pcline" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc)
+ '("pccurve" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc)
+ '("pcarc" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc)
+ '("pcbar" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc)
+ '("pcdiag" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc)
+ '("pcdiagg" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc)
+ '("pcangle" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc)
+ '("pcangles" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc)
+ '("pcloop" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc)
+ '("pcbox" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc)
+ '("pcarcbox" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc)
+ '("psspan" (TeX-arg-eval LaTeX-pst-input-int))
+ '("psrowhook" t)
+ '("pscolhook" t))
+ (TeX-run-style-hooks
+ "pstricks")))
+ TeX-dialect)
+
+;;; pst-node.el ends here