[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/gnuplot b96c5d8 144/184: Merge pull request #43 from conao
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/gnuplot b96c5d8 144/184: Merge pull request #43 from conao3/fix-format |
Date: |
Sun, 29 Aug 2021 11:03:32 -0400 (EDT) |
branch: elpa/gnuplot
commit b96c5d8c55b83dd3ae9554d2cfe431e8e9d67fc5
Merge: 55e3f75 14584a0
Author: Naoya Yamashita <conao3@gmail.com>
Commit: GitHub <noreply@github.com>
Merge pull request #43 from conao3/fix-format
Clean Elisp format
---
dotemacs.el | 10 +-
gnuplot-context.el | 2964 +++++++++++++++++++++++-----------------------
gnuplot-debug-context.el | 50 +-
gnuplot-gui.el | 2037 +++++++++++++++----------------
gnuplot-test-context.el | 442 +++----
gnuplot-tests.el | 94 +-
gnuplot.el | 1043 ++++++++--------
7 files changed, 3333 insertions(+), 3307 deletions(-)
diff --git a/dotemacs.el b/dotemacs.el
index 6107f55..310cf03 100644
--- a/dotemacs.el
+++ b/dotemacs.el
@@ -6,16 +6,16 @@
;; (setq load-path (append (list "/path/to/gnuplot") load-path))
;; these lines enable the use of gnuplot mode
- (autoload 'gnuplot-mode "gnuplot" "gnuplot major mode" t)
- (autoload 'gnuplot-make-buffer "gnuplot" "open a buffer in gnuplot mode" t)
+(autoload 'gnuplot-mode "gnuplot" "gnuplot major mode" t)
+(autoload 'gnuplot-make-buffer "gnuplot" "open a buffer in gnuplot mode" t)
;; this line automatically causes all files with the .gp extension to
;; be loaded into gnuplot mode
- (setq auto-mode-alist (append '(("\\.gp$" . gnuplot-mode)) auto-mode-alist))
+(setq auto-mode-alist (append '(("\\.gp$" . gnuplot-mode)) auto-mode-alist))
;; This line binds the function-9 key so that it opens a buffer into
-;; gnuplot mode
- (global-set-key [(f9)] 'gnuplot-make-buffer)
+;; gnuplot mode
+(global-set-key [(f9)] 'gnuplot-make-buffer)
;; end of line for gnuplot-mode
;;--------------------------------------------------------------------
diff --git a/gnuplot-context.el b/gnuplot-context.el
index d290eab..7ac379d 100644
--- a/gnuplot-context.el
+++ b/gnuplot-context.el
@@ -40,8 +40,8 @@
;; This file enhances gnuplot-mode with context-sensitive completion,
;; ElDoc support, and info page lookup for gnuplot script and shell
;; buffers.
-;;
-;; Usage
+;;
+;; Usage
;; =====
;;
;; Make sure to byte-compile this file, or things will be noticeably
@@ -83,7 +83,7 @@
;;
;; Internal details
;; ================
-;;
+;;
;; Gnuplot's command language has a fair amount of syntactic
;; complexity, and the only way I could think of to support these
;; features was to do a complete parse of the command line. So that's
@@ -138,7 +138,7 @@
;; will match PREFIX plus any number of characters from the
;; beginning of SUFFIX. Any literal string from ALIASES will
;; also match. The token-id of the matching token is mutated to
-;; the canonical value of KEYWORD.
+;; the canonical value of KEYWORD.
;; Example:
;; (kw ("linew" ."idth") "lw") matches "linew", "linewi",
;; ... "linewidth" as well as "lw". Any of these tokens will
@@ -164,7 +164,7 @@
;;
;; For better readability, sequence forms can also be written as
;; a vector, omitting the `sequence': [PATTERN PATTERN ...]
-;;
+;;
;; (either PATTERN PATTERN...)
;; Match the first PATTERN to succeed, or fail if none
;; matches. Like regexp `|'.
@@ -186,14 +186,14 @@
;; used to store the plotting style, which we need in order to
;; give the correct ElDoc string for "using" clauses, and for
;; info keywords (see below)
-;;
+;;
;; (info-keyword PATTERN)
;; Match PATTERN, and use whatever the value of the first token
;; it matches is to look up info pages for this pattern. Most
;; Gnuplot info pages have the same name as the keyword they
;; document, so by using this we only have to put :info
;; properties on the few that don't, such as "set".
-;;
+;;
;; For convenience, "many", "maybe", "capture" and "info-keyword"
;; wrap the rest of their arguments in an implicit "sequence" form,
;; so we can write (maybe "," expression) instead of
@@ -281,17 +281,17 @@
(eval-when-compile
(defmacro gnuplot-tokenize-by-regexps (&rest rules)
`(cond ,@(mapcar
- (lambda (rule)
- (let ((regexp (car rule))
- (token-type (cadr rule)))
- `((looking-at ,regexp)
- (let ((str (match-string-no-properties 0)))
- (forward-char (length str))
- (make-gnuplot-token :id str
- :type ',token-type
- :start (match-beginning 0)
- :end (match-end 0))))))
- rules))))
+ (lambda (rule)
+ (let ((regexp (car rule))
+ (token-type (cadr rule)))
+ `((looking-at ,regexp)
+ (let ((str (match-string-no-properties 0)))
+ (forward-char (length str))
+ (make-gnuplot-token :id str
+ :type ',token-type
+ :start (match-beginning 0)
+ :end (match-end 0))))))
+ rules))))
(defun gnuplot-tokenize (&optional completing-p)
"Tokenize the Gnuplot command at point. Returns a list of `gnuplot-token'
objects.
@@ -299,8 +299,8 @@
If COMPLETING-P is non-nil, omits the token at point if it is a
name; otherwise continues tokenizing up to the token at point. FIXME"
(let ((tokens '())
- (stop-point (min (point)
- (gnuplot-point-at-end-of-command))))
+ (stop-point (min (point)
+ (gnuplot-point-at-end-of-command))))
(save-excursion
(if (save-excursion ; HACK FIXME
(gnuplot-beginning-of-continuation)
@@ -308,50 +308,50 @@ name; otherwise continues tokenizing up to the token at
point. FIXME"
(gnuplot-beginning-of-continuation)
(gnuplot-beginning-of-command))
(while
- ;; Skip whitespace and continuation lines
- (progn
- (skip-syntax-forward "-" stop-point)
- (while (looking-at "\\\\\n")
- (forward-line)
- (skip-syntax-forward "-" stop-point))
- ;; Don't tokenize anything starting after point
- (and (not (looking-at "#"))
- (< (point) stop-point)))
- (let* ((from (point))
- (token
- (cond
- ((gnuplot-tokenize-by-regexps
- ("[A-Za-z_][A-Za-z0-9_]*" name)
-
("[0-9]+\\(\\.[0-9]*\\)?\\([eE][+-]?[0-9]+\\)?\\|\\.[0-9]+\\([eE][+-]?[0-9]+\\)?"
number)
- (gnuplot-operator-regexp operator)
+ ;; Skip whitespace and continuation lines
+ (progn
+ (skip-syntax-forward "-" stop-point)
+ (while (looking-at "\\\\\n")
+ (forward-line)
+ (skip-syntax-forward "-" stop-point))
+ ;; Don't tokenize anything starting after point
+ (and (not (looking-at "#"))
+ (< (point) stop-point)))
+ (let* ((from (point))
+ (token
+ (cond
+ ((gnuplot-tokenize-by-regexps
+ ("[A-Za-z_][A-Za-z0-9_]*" name)
+
("[0-9]+\\(\\.[0-9]*\\)?\\([eE][+-]?[0-9]+\\)?\\|\\.[0-9]+\\([eE][+-]?[0-9]+\\)?"
number)
+ (gnuplot-operator-regexp operator)
(";" separator)))
- ((looking-at "['\"]")
- (let* ((bounds (bounds-of-thing-at-point 'sexp))
- (to (or (cdr bounds) stop-point)))
- (goto-char to)
- (make-gnuplot-token
- :id (buffer-substring-no-properties from to)
- :type 'string
- :start from :end to)))
-
- (t (error
- "gnuplot-tokenize: bad token beginning %s"
- (buffer-substring-no-properties (point) stop-point))))))
-
- (push token tokens))))
-
+ ((looking-at "['\"]")
+ (let* ((bounds (bounds-of-thing-at-point 'sexp))
+ (to (or (cdr bounds) stop-point)))
+ (goto-char to)
+ (make-gnuplot-token
+ :id (buffer-substring-no-properties from to)
+ :type 'string
+ :start from :end to)))
+
+ (t (error
+ "gnuplot-tokenize: bad token beginning %s"
+ (buffer-substring-no-properties (point) stop-point))))))
+
+ (push token tokens))))
+
;; If we are looking for completions, AND if the last token
;; read is a name, AND if point is within the bounds of the
;; last token, then discard it. The matching function
;; generates a list of all possible tokens that could appear
;; in that position for completion.
(if (and completing-p
- tokens
- (eq (gnuplot-token-type (car tokens)) 'name)
- (<= (point) (gnuplot-token-end (car tokens))))
- (pop tokens))
-
+ tokens
+ (eq (gnuplot-token-type (car tokens)) 'name)
+ (<= (point) (gnuplot-token-end (car tokens))))
+ (pop tokens))
+
(nreverse tokens)))
@@ -384,13 +384,13 @@ name; otherwise continues tokenizing up to the token at
point. FIXME"
;; Jump to (set PC to) OFFSET if FIXED is non-nil, otherwise to
;; PC + OFFSET
;;
-;; (call OFFSET FIXED)
+;; (call OFFSET FIXED)
;; Like "jump", but push a return address onto the stack for
;; (return). (The compiler adds the name of the rule being called
;; as a fourth element on the end of the list, but this is just a
;; comment for debugging purposes).
;;
-;; (return)
+;; (return)
;; Return to the PC address on top of the stack, or finish
;; matching if stack is empty. (Usually this doesn't happen,
;; because the machine stops as soon as it gets to the token at
@@ -456,15 +456,15 @@ name; otherwise continues tokenizing up to the token at
point. FIXME"
((stringp pat)
;; Don't add non-words to completion lists
(let ((wordp (string-match-p "^\\sw\\(\\sw\\|\\s_\\)*$" pat)))
- `((literal ,pat ,(not wordp)))))
-
+ `((literal ,pat ,(not wordp)))))
+
;; Symbols match token types or calls to other patterns
((symbolp pat)
(case pat
- ((any) `((any)))
- ((name number string separator) `((token-type ,pat)))
- (t `((call ,pat)))))
-
+ ((any) `((any)))
+ ((name number string separator) `((token-type ,pat)))
+ (t `((call ,pat)))))
+
;; Syntactic sugar: write sequences (sequence ...) as vectors [...]
((vectorp pat)
(gnuplot-compile-pattern
@@ -473,130 +473,130 @@ name; otherwise continues tokenizing up to the token at
point. FIXME"
;; Other forms combine simpler patterns
(t
(let ((type (car pat)))
- (case type
- ;; (sequence...): concatenate patterns, with optional eldoc
- ;; and info strings
- ((sequence)
- (destructuring-bind
- (subpats eldoc info)
- (gnuplot-filter-arg-list (cdr pat))
- (let ((eldoc-push '()) (eldoc-pop '())
- (info-push '()) (info-pop '())
- (compiled
- (mapcar 'gnuplot-compile-pattern subpats)))
- (if eldoc
- (setq eldoc-push `((push eldoc ,eldoc))
- eldoc-pop `((pop eldoc))))
- (if info
- (if (eq info :no-info)
- (setq info-push '((push no-scan t))
- info-pop '((pop no-scan)))
- (setq info-push `((push info ,info))
- info-pop `((pop info)))))
- (apply 'append
- `(,info-push
- ,eldoc-push
- ,@compiled
- ,eldoc-pop
- ,info-pop)))))
-
- ;; (either...): choose between patterns
- ((either)
- (cond
- ((= (length pat) 2) ; trivial case
- (gnuplot-compile-pattern (cadr pat)))
-
- ((> (length pat) 3) ; could be more efficient...
- (gnuplot-compile-pattern (gnuplot-either-helper pat)))
-
- (t ; two patterns
- (let* ((pat1 (cadr pat))
- (pat2 (caddr pat))
- (pat1-c (gnuplot-compile-pattern pat1))
- (pat2-c (gnuplot-compile-pattern pat2))
- (pat1-l (length pat1-c))
- (pat2-l (length pat2-c)))
- `((choice ,(+ pat1-l 2))
- ,@pat1-c
- (commit ,(+ pat2-l 1))
- ,@pat2-c)))))
-
- ;; Repetition (*)
- ((many)
- (let* ((pat1 (cons 'sequence (cdr pat)))
- (pat1-c (gnuplot-compile-pattern pat1))
- (pat1-l (length pat1-c)))
- `((choice ,(+ pat1-l 3))
- (check-progress) ; bail out of infinite loops
- ,@pat1-c
- (commit ,(- (+ pat1-l 2))))))
-
- ;; Repetition (+)
- ((many1)
- (let* ((pat1 (cdr pat)))
- (gnuplot-compile-pattern
- `(sequence ,@pat1 (many ,@pat1)))))
-
-
- ;; Optional (?)
- ((maybe)
- (let* ((pat1 (cons 'sequence (cdr pat)))
- (pat1-c (gnuplot-compile-pattern pat1))
- (pat1-l (length pat1-c)))
- `((choice ,(+ pat1-l 1))
- ,@pat1-c)))
-
- ;; Syntactic sugar for delimited lists
- ((delimited-list)
- (let* ((item (cadr pat))
- (sep (caddr pat)))
- (gnuplot-compile-pattern
- `(sequence ,item (many (sequence ,sep ,item))))))
-
- ;; keywords
- ((kw)
- (destructuring-bind (regex name)
- (gnuplot-keyword-helper (cdr pat))
- `((keyword ,regex ,name))))
-
- ;; Capturing groups
- ((capture)
- (let* ((name (cadr pat))
- (pat1 (cons 'sequence (cddr pat)))
- (pat1-c (gnuplot-compile-pattern pat1)))
- `((save-start ,name)
- ,@pat1-c
- (save-end ,name))))
-
- ;; Use the first token as an info keyword
- ((info-keyword)
- (let* ((pat1 (cons 'sequence (cdr pat)))
- (pat1-c (gnuplot-compile-pattern pat1)))
- `((push info first-token)
- ,@pat1-c
- (pop info))))
-
- ;; Assertions
- ((assert)
- (let* ((form (cadr pat)))
- `((assert ,form))))
-
- (t
- (error "gnuplot-compile-pattern: bad pattern form %s" pat)))))))
+ (case type
+ ;; (sequence...): concatenate patterns, with optional eldoc
+ ;; and info strings
+ ((sequence)
+ (destructuring-bind
+ (subpats eldoc info)
+ (gnuplot-filter-arg-list (cdr pat))
+ (let ((eldoc-push '()) (eldoc-pop '())
+ (info-push '()) (info-pop '())
+ (compiled
+ (mapcar 'gnuplot-compile-pattern subpats)))
+ (if eldoc
+ (setq eldoc-push `((push eldoc ,eldoc))
+ eldoc-pop `((pop eldoc))))
+ (if info
+ (if (eq info :no-info)
+ (setq info-push '((push no-scan t))
+ info-pop '((pop no-scan)))
+ (setq info-push `((push info ,info))
+ info-pop `((pop info)))))
+ (apply 'append
+ `(,info-push
+ ,eldoc-push
+ ,@compiled
+ ,eldoc-pop
+ ,info-pop)))))
+
+ ;; (either...): choose between patterns
+ ((either)
+ (cond
+ ((= (length pat) 2) ; trivial case
+ (gnuplot-compile-pattern (cadr pat)))
+
+ ((> (length pat) 3) ; could be more efficient...
+ (gnuplot-compile-pattern (gnuplot-either-helper pat)))
+
+ (t ; two patterns
+ (let* ((pat1 (cadr pat))
+ (pat2 (caddr pat))
+ (pat1-c (gnuplot-compile-pattern pat1))
+ (pat2-c (gnuplot-compile-pattern pat2))
+ (pat1-l (length pat1-c))
+ (pat2-l (length pat2-c)))
+ `((choice ,(+ pat1-l 2))
+ ,@pat1-c
+ (commit ,(+ pat2-l 1))
+ ,@pat2-c)))))
+
+ ;; Repetition (*)
+ ((many)
+ (let* ((pat1 (cons 'sequence (cdr pat)))
+ (pat1-c (gnuplot-compile-pattern pat1))
+ (pat1-l (length pat1-c)))
+ `((choice ,(+ pat1-l 3))
+ (check-progress) ; bail out of infinite loops
+ ,@pat1-c
+ (commit ,(- (+ pat1-l 2))))))
+
+ ;; Repetition (+)
+ ((many1)
+ (let* ((pat1 (cdr pat)))
+ (gnuplot-compile-pattern
+ `(sequence ,@pat1 (many ,@pat1)))))
+
+
+ ;; Optional (?)
+ ((maybe)
+ (let* ((pat1 (cons 'sequence (cdr pat)))
+ (pat1-c (gnuplot-compile-pattern pat1))
+ (pat1-l (length pat1-c)))
+ `((choice ,(+ pat1-l 1))
+ ,@pat1-c)))
+
+ ;; Syntactic sugar for delimited lists
+ ((delimited-list)
+ (let* ((item (cadr pat))
+ (sep (caddr pat)))
+ (gnuplot-compile-pattern
+ `(sequence ,item (many (sequence ,sep ,item))))))
+
+ ;; keywords
+ ((kw)
+ (destructuring-bind (regex name)
+ (gnuplot-keyword-helper (cdr pat))
+ `((keyword ,regex ,name))))
+
+ ;; Capturing groups
+ ((capture)
+ (let* ((name (cadr pat))
+ (pat1 (cons 'sequence (cddr pat)))
+ (pat1-c (gnuplot-compile-pattern pat1)))
+ `((save-start ,name)
+ ,@pat1-c
+ (save-end ,name))))
+
+ ;; Use the first token as an info keyword
+ ((info-keyword)
+ (let* ((pat1 (cons 'sequence (cdr pat)))
+ (pat1-c (gnuplot-compile-pattern pat1)))
+ `((push info first-token)
+ ,@pat1-c
+ (pop info))))
+
+ ;; Assertions
+ ((assert)
+ (let* ((form (cadr pat)))
+ `((assert ,form))))
+
+ (t
+ (error "gnuplot-compile-pattern: bad pattern form %s" pat)))))))
;; Helper function for destructuring (sequence ...) forms in patterns
;; Takes the cdr of the sequence form, returns a list (PATTERNS ELDOC
;; INFO).
- (defun gnuplot-filter-arg-list (args)
+ (defun gnuplot-filter-arg-list (args)
(let ((accum '())
- (eldoc nil) (info nil))
+ (eldoc nil) (info nil))
(dolist (item args)
- (let ((type (car-safe item)))
- (case type
- ((:eldoc) (setq eldoc (cadr item)))
- ((:no-info) (setq info :no-info)) ; inhibit stack scanning
- ((:info) (setq info (cadr item)))
- (t (push item accum)))))
+ (let ((type (car-safe item)))
+ (case type
+ ((:eldoc) (setq eldoc (cadr item)))
+ ((:no-info) (setq info :no-info)) ; inhibit stack scanning
+ ((:info) (setq info (cadr item)))
+ (t (push item accum)))))
(list (reverse accum) eldoc info)))
;; Helper function for compiling (kw...) patterns
@@ -604,93 +604,93 @@ name; otherwise continues tokenizing up to the token at
point. FIXME"
(defun gnuplot-keyword-helper (args)
(let ((keyword (car args)) (aliases (cdr args)))
(when (consp keyword)
- (let ((pre (car keyword)) (suf (cdr keyword)))
- (setq keyword (concat pre suf))
- (while (progn
- (push pre aliases)
- (not (zerop (length suf))))
- (setq pre (concat pre (substring suf 0 1))
- suf (substring suf 1)))))
+ (let ((pre (car keyword)) (suf (cdr keyword)))
+ (setq keyword (concat pre suf))
+ (while (progn
+ (push pre aliases)
+ (not (zerop (length suf))))
+ (setq pre (concat pre (substring suf 0 1))
+ suf (substring suf 1)))))
(let ((regex
- (concat "^"
- (regexp-opt (cons keyword aliases))
- "$")))
- (list regex keyword))))
+ (concat "^"
+ (regexp-opt (cons keyword aliases))
+ "$")))
+ (list regex keyword))))
;; Helper function for compiling (either ...) patterns. Rewrites
;; alternates (either A B C) into (either A (either B (either C D)))
(defun gnuplot-either-helper (pat)
(if (= (length pat) 3)
- pat
+ pat
`(either ,(cadr pat)
- ,(gnuplot-either-helper
- (cons 'either (cddr pat))))))
-
+ ,(gnuplot-either-helper
+ (cons 'either (cddr pat))))))
+
;; Compile the grammar (a list of rule-pattern pairs (RULE PATTERN))
;; into a single vector of matching-machine instructions. Compiles
;; each pattern individually, then "links" them into one vector,
;; converting symbolic (call ...) instructions into numeric offsets
(defun gnuplot-compile-grammar (grammar start-symbol)
(let ((compiled-pats '()) ; Alist of (name . instructions)
- ;; Reserve space for a jump to the start symbol
- (code-length 1))
+ ;; Reserve space for a jump to the start symbol
+ (code-length 1))
;; Compile each rule and find the total number of instructions
(dolist (item grammar)
- (let* ((name (car item))
- (pat (cadr item))
- (code (gnuplot-compile-pattern pat)))
- (push (cons name code) compiled-pats)
- ;; Reserve space for a label at the beginning and (return) at
- ;; the end
- (setq code-length (+ code-length 2 (length code)))))
+ (let* ((name (car item))
+ (pat (cadr item))
+ (code (gnuplot-compile-pattern pat)))
+ (push (cons name code) compiled-pats)
+ ;; Reserve space for a label at the beginning and (return) at
+ ;; the end
+ (setq code-length (+ code-length 2 (length code)))))
;; Copy instructions into a single vector
(let ((object-code (make-vector code-length nil))
- (name->offset (make-hash-table))
- (i 1))
- (setf (aref object-code 0) `(jump ,start-symbol))
- (dolist (chunk compiled-pats)
- (let ((name (car chunk))
- (code (cdr chunk)))
- (setf (aref object-code i) `(label ,name))
- (incf i)
- (puthash name i name->offset)
- (while code
- (setf (aref object-code i) (car code)
- code (cdr code)
- i (1+ i)))
- (setf (aref object-code i) '(return)
- i (1+ i))))
-
- ;; Resolve symbolic and relative jumps
- (let ((pattern-name nil))
- (dotimes (i (length object-code))
- (let ((inst (aref object-code i)))
- (case (car inst)
- ((label)
- (setq pattern-name (cadr inst)))
-
- ((jump call choice commit)
- (cond
- ((symbolp (cadr inst))
- (let* ((name (cadr inst))
- (location (gethash name name->offset)))
- (if (not location)
- (error
- (concat "gnuplot-compile-grammar: "
- "No rule found for symbol `%s' in pattern
`%s'")
- name pattern-name))
- (setcdr inst `(,location ,name))))
-
- ((numberp (cadr inst))
- (let* ((offset (cadr inst))
- (location (+ offset i)))
- (setcdr inst `(,location))))
-
- (t
- (error "gnuplot-compile-grammar: bad instruction %s"
inst))))))))
- object-code))))
+ (name->offset (make-hash-table))
+ (i 1))
+ (setf (aref object-code 0) `(jump ,start-symbol))
+ (dolist (chunk compiled-pats)
+ (let ((name (car chunk))
+ (code (cdr chunk)))
+ (setf (aref object-code i) `(label ,name))
+ (incf i)
+ (puthash name i name->offset)
+ (while code
+ (setf (aref object-code i) (car code)
+ code (cdr code)
+ i (1+ i)))
+ (setf (aref object-code i) '(return)
+ i (1+ i))))
+
+ ;; Resolve symbolic and relative jumps
+ (let ((pattern-name nil))
+ (dotimes (i (length object-code))
+ (let ((inst (aref object-code i)))
+ (case (car inst)
+ ((label)
+ (setq pattern-name (cadr inst)))
+
+ ((jump call choice commit)
+ (cond
+ ((symbolp (cadr inst))
+ (let* ((name (cadr inst))
+ (location (gethash name name->offset)))
+ (if (not location)
+ (error
+ (concat "gnuplot-compile-grammar: "
+ "No rule found for symbol `%s' in pattern
`%s'")
+ name pattern-name))
+ (setcdr inst `(,location ,name))))
+
+ ((numberp (cadr inst))
+ (let* ((offset (cadr inst))
+ (location (+ offset i)))
+ (setcdr inst `(,location))))
+
+ (t
+ (error "gnuplot-compile-grammar: bad instruction %s"
inst))))))))
+ object-code))))
;;; The grammar.
(defvar gnuplot-compiled-grammar
@@ -698,86 +698,86 @@ name; otherwise continues tokenizing up to the token at
point. FIXME"
(let ((max-lisp-eval-depth 600))
(gnuplot-compile-grammar
'((expression
- [infix-expression (maybe "?" expression ":" expression)])
-
- (prefix-operator
- (either "!" "~" "-" "+"))
-
- (infix-operator
- (either "**" "*" "/" "%" "+" "-" "." "<" "<=" ">" ">=" "==" "!=" "eq"
"ne"
- "&" "^" "|" "&&" "||"))
-
- (infix-expression
- [(many prefix-operator)
- primary-expression
- (many infix-operator expression)])
-
- (primary-expression
- [(either number string parenthesized-expression
- column-ref complex-number function-call name)
- (many "!")
- (maybe "**" infix-expression)
- (maybe substring-range)])
-
- (function-call
- (either
- (info-keyword
- [(either "abs" "acos" "acosh" "arg" "asin" "asinh" "atan" "atan2"
"atanh"
- "besj0" "besj1" "besy0" "besy1" "ceil" "column"
"columnhead"
- "cos" "cosh" "defined" "erf" "erfc" "exists" "exp" "floor"
- "gamma" "gprintf" "ibeta" "igamma" "imag" "int" "inverf"
- "invnorm" "lambertw" "lgamma" "log" "log10" "norm" "real"
- "sgn" "sin" "sinh" "sprintf" "sqrt" "strftime"
"stringcolumn"
- "strlen" "strptime" "strstrt" "substr" "tan" "tanh"
"timecolumn"
- "tm_hour" "tm_mday" "tm_min" "tm_mon" "tm_sec" "tm_wday"
- "tm_yday" "tm_year" "valid" "value" "word" "words" "rand")
- parenthesized-expression])
- [(:info "elliptic_integrals")
- (either "EllipticK" "EllipticE" "EllipticPi")
- parenthesized-expression]
- [name
- parenthesized-expression]))
-
- (parenthesized-expression
- ["(" comma-list ")"])
-
- (complex-number
- ["{" (maybe "-") number "," (maybe "-") number "}"])
-
- (column-ref
- ["$" number])
-
- (substring-range-component
- (maybe (either "*" expression)))
-
- (substring-range
- ["[" (delimited-list substring-range-component ":" 2 2) "]"])
+ [infix-expression (maybe "?" expression ":" expression)])
+
+ (prefix-operator
+ (either "!" "~" "-" "+"))
+
+ (infix-operator
+ (either "**" "*" "/" "%" "+" "-" "." "<" "<=" ">" ">=" "==" "!="
"eq" "ne"
+ "&" "^" "|" "&&" "||"))
+
+ (infix-expression
+ [(many prefix-operator)
+ primary-expression
+ (many infix-operator expression)])
+
+ (primary-expression
+ [(either number string parenthesized-expression
+ column-ref complex-number function-call name)
+ (many "!")
+ (maybe "**" infix-expression)
+ (maybe substring-range)])
+
+ (function-call
+ (either
+ (info-keyword
+ [(either "abs" "acos" "acosh" "arg" "asin" "asinh" "atan" "atan2"
"atanh"
+ "besj0" "besj1" "besy0" "besy1" "ceil" "column"
"columnhead"
+ "cos" "cosh" "defined" "erf" "erfc" "exists" "exp" "floor"
+ "gamma" "gprintf" "ibeta" "igamma" "imag" "int" "inverf"
+ "invnorm" "lambertw" "lgamma" "log" "log10" "norm" "real"
+ "sgn" "sin" "sinh" "sprintf" "sqrt" "strftime"
"stringcolumn"
+ "strlen" "strptime" "strstrt" "substr" "tan" "tanh"
"timecolumn"
+ "tm_hour" "tm_mday" "tm_min" "tm_mon" "tm_sec" "tm_wday"
+ "tm_yday" "tm_year" "valid" "value" "word" "words" "rand")
+ parenthesized-expression])
+ [(:info "elliptic_integrals")
+ (either "EllipticK" "EllipticE" "EllipticPi")
+ parenthesized-expression]
+ [name
+ parenthesized-expression]))
+
+ (parenthesized-expression
+ ["(" comma-list ")"])
+
+ (complex-number
+ ["{" (maybe "-") number "," (maybe "-") number "}"])
+
+ (column-ref
+ ["$" number])
+
+ (substring-range-component
+ (maybe (either "*" expression)))
+
+ (substring-range
+ ["[" (delimited-list substring-range-component ":" 2 2) "]"])
;;; Assignments
- (lhs
- [name (maybe "(" (delimited-list name "," 1) ")")])
+ (lhs
+ [name (maybe "(" (delimited-list name "," 1) ")")])
- (assignment
- [lhs "=" (either assignment expression)])
+ (assignment
+ [lhs "=" (either assignment expression)])
;;; Lists of expressions
- (comma-list
- (delimited-list (either assignment expression) ","))
+ (comma-list
+ (delimited-list (either assignment expression) ","))
- (colon-list
- (delimited-list expression ":"))
+ (colon-list
+ (delimited-list expression ":"))
- (tuple
- ["(" (delimited-list expression "," 2 3) ")"])
+ (tuple
+ ["(" (delimited-list expression "," 2 3) ")"])
;;; Commands
- (command
- (info-keyword
- (either plot-command splot-command replot-command fit-command
print-command
- set-command cd-command call-command simple-command
- eval-command load-command lower-raise-command pause-command
- save-command system-command test-command undefine-command
- update-command assignment if-command new-if-command
do-command)))
+ (command
+ (info-keyword
+ (either plot-command splot-command replot-command fit-command
print-command
+ set-command cd-command call-command simple-command
+ eval-command load-command lower-raise-command pause-command
+ save-command system-command test-command undefine-command
+ update-command assignment if-command new-if-command
do-command)))
(command-list
(delimited-list command separator))
@@ -801,941 +801,941 @@ name; otherwise continues tokenizing up to the token at
point. FIXME"
(info-keyword "do" iteration-spec block))
;;; PLOT, SPLOT commands
- (plot-command
- [(kw ("pl" . "ot"))
-
- (either
- ;; Parametric ranges
- [(assert (gnuplot-guess-parametric-p))
- (maybe t-axis-range) (maybe x-axis-range) (maybe y-axis-range)]
+ (plot-command
+ [(kw ("pl" . "ot"))
- ;; Non-parametric ranges
- [(maybe x-axis-range) (maybe y-axis-range)])
+ (either
+ ;; Parametric ranges
+ [(assert (gnuplot-guess-parametric-p))
+ (maybe t-axis-range) (maybe x-axis-range) (maybe y-axis-range)]
- plot-body])
+ ;; Non-parametric ranges
+ [(maybe x-axis-range) (maybe y-axis-range)])
- (splot-command
- [ ;; This capturing group lets `gnuplot-find-using-eldoc' know
- ;; that this is an splot command
- (capture :splot-command (kw ("spl" . "ot")))
+ plot-body])
- (either
- ;; Parametric ranges
- [(assert (gnuplot-guess-parametric-p))
- (maybe u-axis-range) (maybe v-axis-range)
- (maybe x-axis-range) (maybe y-axis-range) (maybe z-axis-range)]
+ (splot-command
+ [ ;; This capturing group lets `gnuplot-find-using-eldoc' know
+ ;; that this is an splot command
+ (capture :splot-command (kw ("spl" . "ot")))
- ;; Non-parametric ranges
- [(maybe x-axis-range) (maybe y-axis-range) (maybe z-axis-range)])
+ (either
+ ;; Parametric ranges
+ [(assert (gnuplot-guess-parametric-p))
+ (maybe u-axis-range) (maybe v-axis-range)
+ (maybe x-axis-range) (maybe y-axis-range) (maybe z-axis-range)]
- plot-body])
+ ;; Non-parametric ranges
+ [(maybe x-axis-range) (maybe y-axis-range) (maybe z-axis-range)])
+
+ plot-body])
(replot-command [(kw "replot") plot-body])
-
- ;; Axis ranges
- (axis-range-component
- (maybe (either "*" expression)))
-
- (axis-range-body
- (delimited-list axis-range-component ":" 2 3))
-
- (axis-range
- [(:info "ranges")
- "[" (maybe (maybe name "=") axis-range-body) "]"])
-
- (x-axis-range [(:eldoc "X RANGE: [{<dummy>=}<min>:<max>]") axis-range])
- (y-axis-range [(:eldoc "Y RANGE: [{<dummy>=}<min>:<max>]") axis-range])
- (z-axis-range [(:eldoc "Z RANGE: [{<dummy>=}<min>:<max>]") axis-range])
- (t-axis-range [(:eldoc "T RANGE: [{<dummy>=}<min>:<max>]") axis-range])
- (u-axis-range [(:eldoc "U RANGE: [{<dummy>=}<min>:<max>]") axis-range])
- (v-axis-range [(:eldoc "V RANGE: [{<dummy>=}<min>:<max>]") axis-range])
-
- ;; Body of a plot/splot command. Should really be different for
- ;; parametric vs non-parametric, but that's too hard.
- (plot-body
- (delimited-list
- [(maybe iteration-spec) plot-expression plot-modifiers]
- ","))
-
- ;; Iteration: for [... ]
- (iteration-spec
- [(:info "iteration")
- (many1
+
+ ;; Axis ranges
+ (axis-range-component
+ (maybe (either "*" expression)))
+
+ (axis-range-body
+ (delimited-list axis-range-component ":" 2 3))
+
+ (axis-range
+ [(:info "ranges")
+ "[" (maybe (maybe name "=") axis-range-body) "]"])
+
+ (x-axis-range [(:eldoc "X RANGE: [{<dummy>=}<min>:<max>]")
axis-range])
+ (y-axis-range [(:eldoc "Y RANGE: [{<dummy>=}<min>:<max>]")
axis-range])
+ (z-axis-range [(:eldoc "Z RANGE: [{<dummy>=}<min>:<max>]")
axis-range])
+ (t-axis-range [(:eldoc "T RANGE: [{<dummy>=}<min>:<max>]")
axis-range])
+ (u-axis-range [(:eldoc "U RANGE: [{<dummy>=}<min>:<max>]")
axis-range])
+ (v-axis-range [(:eldoc "V RANGE: [{<dummy>=}<min>:<max>]")
axis-range])
+
+ ;; Body of a plot/splot command. Should really be different for
+ ;; parametric vs non-parametric, but that's too hard.
+ (plot-body
+ (delimited-list
+ [(maybe iteration-spec) plot-expression plot-modifiers]
+ ","))
+
+ ;; Iteration: for [... ]
+ (iteration-spec
+ [(:info "iteration")
+ (many1
"for" "[" name
(either ["=" (delimited-list expression ":")]
["in" expression])
"]")])
-
- ;; Expressions to plot can be preceded by any number of
- ;; assignments, with or without commas
- (plot-expression
- [(many [(:no-info) assignment (maybe ",")])
- expression])
+
+ ;; Expressions to plot can be preceded by any number of
+ ;; assignments, with or without commas
+ (plot-expression
+ [(many [(:no-info) assignment (maybe ",")])
+ expression])
;;; Plot/splot modifiers
- ;; These should probably be more different for plot and splot ...
- (plot-modifiers (many (either plot-modifier datafile-modifier)))
-
- (plot-modifier
- (info-keyword
- (either
- ;; simple one-word modifiers
- (kw "nohidden3d") (kw "nocontours") (kw "nosurface")
-
- ;; word followed by expression
- [(either
- (kw ("lines" . "tyle") "ls")
- (kw ("linet" . "ype") "lt")
- (kw ("linew" . "idth") "lw")
- (kw ("pointt" . "ype") "pt")
- (kw ("points" . "ize") "ps")
- (kw ("pointi" . "nterval") "pi"))
- expression]
-
- ;; others defined below
- title-modifier notitle-modifier axes-modifier with-modifier
- linecolor-modifier fillstyle-modifier)))
-
- (title-modifier
- [(kw ("t" . "itle")) expression])
-
- (notitle-modifier
- [(:info "title")
- (kw ("not" . "itle"))
- (maybe string)])
-
- (axes-modifier
- [(kw ("ax" . "es")) (either "x1y1" "x1y2" "x2y1" "x2y2")])
-
- (linecolor-modifier
- [(kw ("linec" . "olor") "lc") color-spec])
-
- (fillstyle-modifier
- [(kw "fillstyle" "fs")
- ;; fill-style also used by "set style fill"
- fill-style])
-
- (fill-style
- [(either
- "empty"
- [(maybe "transparent")
- (either "pattern" "solid")
- (maybe (either fill-style-border-clause expression))])
- (maybe fill-style-border-clause)])
-
- (fill-style-border-clause
- (either "noborder" [(kw ("bo" . "rder")) expression]))
-
- (color-spec
- [(:info "colorspec")
- (either
- (kw ("var" . "iable"))
-
- [(kw ("pal" . "ette"))
- (either "z"
- [(either "frac" "cb") expression])]
-
- [(kw ("rgb" . "color"))
- (either (kw ("var" . "iable")) string)])])
-
- (with-modifier
- [(:info "plotting_styles")
- (kw ("w" . "ith"))
-
- ;; plotting-style also used for "set style data"
- (capture :with-style plotting-style)])
-
- (plotting-style
- (info-keyword
- (either
- ;; Simple styles that take no arguments
- (kw ("l" . "ines")) (kw ("i" . "mpulses")) (kw ("p" . "oints"))
- (kw ("linesp" . "oints") "lp") (kw ("d" . "ots")) (kw ("yerrorl" .
"ines"))
- (kw ("errorl" . "ines")) (kw ("xerrorl" . "ines")) (kw ("xyerrorl"
. "ines"))
- (kw ("ye" . "rrorbars")) (kw ("e" . "rrorbars")) (kw ("xe" .
"rrorbars"))
- (kw ("xye" . "rrorbars")) (kw "boxes") (kw ("hist" . "ograms"))
- (kw ("boxer" . "rorbars")) (kw ("boxx" . "yerrorbars")) (kw ("st" .
"eps"))
- (kw ("fs" . "teps")) (kw ("his" . "teps")) (kw ("fin" . "ancebars"))
- (kw ("can" . "dlesticks")) (kw ("pm" . "3d"))
- (kw ("cir" . "cles"))
-
- ;; Image styles all use the same info page
- [(:info "image")
- (either (kw ("ima" . "ge"))
- (kw ("rgbima" . "ge"))
- (kw ("rgba" . "lpha")))]
-
- ;; More complicated styles defined below
- labels-style-clause
- filledcurves-style-clause
- vectors-style-clause)))
-
- (labels-style-clause
- [(kw "labels")
- (maybe textcolor-spec)])
-
- (filledcurves-style-clause
- [(kw ("filledc" . "urves"))
- (maybe
- (either
- "closed"
-
- ["xy" "=" expression "," expression]
-
- [(maybe (either "above" "below"))
- (maybe [(either "x1" "x2" "y1" "y2")
- (maybe "=" expression)])]))])
-
- (vectors-style-clause
- [(kw ("vec" . "tors"))
- (many
- (either
- "nohead" "head" "heads" "filled" "empty" "nofilled" "front" "back"
- [(kw "arrowstyle" "as") expression]
- ["size" (delimited-list expression ",")]
- linestyle-spec))])
+ ;; These should probably be more different for plot and splot ...
+ (plot-modifiers (many (either plot-modifier datafile-modifier)))
+
+ (plot-modifier
+ (info-keyword
+ (either
+ ;; simple one-word modifiers
+ (kw "nohidden3d") (kw "nocontours") (kw "nosurface")
+
+ ;; word followed by expression
+ [(either
+ (kw ("lines" . "tyle") "ls")
+ (kw ("linet" . "ype") "lt")
+ (kw ("linew" . "idth") "lw")
+ (kw ("pointt" . "ype") "pt")
+ (kw ("points" . "ize") "ps")
+ (kw ("pointi" . "nterval") "pi"))
+ expression]
+
+ ;; others defined below
+ title-modifier notitle-modifier axes-modifier with-modifier
+ linecolor-modifier fillstyle-modifier)))
+
+ (title-modifier
+ [(kw ("t" . "itle")) expression])
+
+ (notitle-modifier
+ [(:info "title")
+ (kw ("not" . "itle"))
+ (maybe string)])
+
+ (axes-modifier
+ [(kw ("ax" . "es")) (either "x1y1" "x1y2" "x2y1" "x2y2")])
+
+ (linecolor-modifier
+ [(kw ("linec" . "olor") "lc") color-spec])
+
+ (fillstyle-modifier
+ [(kw "fillstyle" "fs")
+ ;; fill-style also used by "set style fill"
+ fill-style])
+
+ (fill-style
+ [(either
+ "empty"
+ [(maybe "transparent")
+ (either "pattern" "solid")
+ (maybe (either fill-style-border-clause expression))])
+ (maybe fill-style-border-clause)])
+
+ (fill-style-border-clause
+ (either "noborder" [(kw ("bo" . "rder")) expression]))
+
+ (color-spec
+ [(:info "colorspec")
+ (either
+ (kw ("var" . "iable"))
+
+ [(kw ("pal" . "ette"))
+ (either "z"
+ [(either "frac" "cb") expression])]
+
+ [(kw ("rgb" . "color"))
+ (either (kw ("var" . "iable")) string)])])
+
+ (with-modifier
+ [(:info "plotting_styles")
+ (kw ("w" . "ith"))
+
+ ;; plotting-style also used for "set style data"
+ (capture :with-style plotting-style)])
+
+ (plotting-style
+ (info-keyword
+ (either
+ ;; Simple styles that take no arguments
+ (kw ("l" . "ines")) (kw ("i" . "mpulses")) (kw ("p" . "oints"))
+ (kw ("linesp" . "oints") "lp") (kw ("d" . "ots")) (kw ("yerrorl" .
"ines"))
+ (kw ("errorl" . "ines")) (kw ("xerrorl" . "ines")) (kw ("xyerrorl"
. "ines"))
+ (kw ("ye" . "rrorbars")) (kw ("e" . "rrorbars")) (kw ("xe" .
"rrorbars"))
+ (kw ("xye" . "rrorbars")) (kw "boxes") (kw ("hist" . "ograms"))
+ (kw ("boxer" . "rorbars")) (kw ("boxx" . "yerrorbars")) (kw ("st"
. "eps"))
+ (kw ("fs" . "teps")) (kw ("his" . "teps")) (kw ("fin" .
"ancebars"))
+ (kw ("can" . "dlesticks")) (kw ("pm" . "3d"))
+ (kw ("cir" . "cles"))
+
+ ;; Image styles all use the same info page
+ [(:info "image")
+ (either (kw ("ima" . "ge"))
+ (kw ("rgbima" . "ge"))
+ (kw ("rgba" . "lpha")))]
+
+ ;; More complicated styles defined below
+ labels-style-clause
+ filledcurves-style-clause
+ vectors-style-clause)))
+
+ (labels-style-clause
+ [(kw "labels")
+ (maybe textcolor-spec)])
+
+ (filledcurves-style-clause
+ [(kw ("filledc" . "urves"))
+ (maybe
+ (either
+ "closed"
+
+ ["xy" "=" expression "," expression]
+
+ [(maybe (either "above" "below"))
+ (maybe [(either "x1" "x2" "y1" "y2")
+ (maybe "=" expression)])]))])
+
+ (vectors-style-clause
+ [(kw ("vec" . "tors"))
+ (many
+ (either
+ "nohead" "head" "heads" "filled" "empty" "nofilled" "front" "back"
+ [(kw "arrowstyle" "as") expression]
+ ["size" (delimited-list expression ",")]
+ linestyle-spec))])
;;; Various style specifiers, used in different places
- (linestyle-spec
- (many1
- (either
- [(kw ("lines" . "tyle") "ls") expression]
- [(kw ("linet" . "ype") "lt") expression]
- [(kw ("linew" . "idth") "lw") expression])))
-
- (textcolor-spec
- [(kw "textcolor" "tc")
- (either "default"
- ["lt" expression]
- color-spec)])
-
- (pointsize-spec [(kw "pointsize" "ps") expression])
+ (linestyle-spec
+ (many1
+ (either
+ [(kw ("lines" . "tyle") "ls") expression]
+ [(kw ("linet" . "ype") "lt") expression]
+ [(kw ("linew" . "idth") "lw") expression])))
+
+ (textcolor-spec
+ [(kw "textcolor" "tc")
+ (either "default"
+ ["lt" expression]
+ color-spec)])
+
+ (pointsize-spec [(kw "pointsize" "ps") expression])
;;; Datafile modifiers
- (datafile-modifier
- (info-keyword
- (either binary-modifier
- [(maybe "nonuniform") (kw ("mat" . "rix"))]
- index-modifier every-modifier
- thru-modifier using-modifier
- smooth-modifier
- "volatile" "noautoscale")))
-
- (index-modifier
- [(kw ("i" . "ndex"))
- (either string (delimited-list expression ":" 0 2))])
-
- (every-modifier
- [(kw ("ev" . "ery")) (delimited-list (maybe expression) ":")])
-
- (thru-modifier
- [(kw "thru") expression])
-
- (using-modifier
- [(:eldoc gnuplot-find-using-eldoc)
- (kw ("u" . "sing"))
- (either
- string
- [colon-list (maybe string)])])
-
- (smooth-modifier
- [(kw ("s" . "mooth"))
- (either (kw ("a" . "csplines")) (kw ("b" . "ezier")) (kw ("c" .
"splines"))
- (kw ("s" . "bezier")) (kw ("u" . "nique")) (kw ("f" .
"requency"))
- (kw ("cum" . "ulative")) (kw ("k" . "density")))])
+ (datafile-modifier
+ (info-keyword
+ (either binary-modifier
+ [(maybe "nonuniform") (kw ("mat" . "rix"))]
+ index-modifier every-modifier
+ thru-modifier using-modifier
+ smooth-modifier
+ "volatile" "noautoscale")))
+
+ (index-modifier
+ [(kw ("i" . "ndex"))
+ (either string (delimited-list expression ":" 0 2))])
+
+ (every-modifier
+ [(kw ("ev" . "ery")) (delimited-list (maybe expression) ":")])
+
+ (thru-modifier
+ [(kw "thru") expression])
+
+ (using-modifier
+ [(:eldoc gnuplot-find-using-eldoc)
+ (kw ("u" . "sing"))
+ (either
+ string
+ [colon-list (maybe string)])])
+
+ (smooth-modifier
+ [(kw ("s" . "mooth"))
+ (either (kw ("a" . "csplines")) (kw ("b" . "ezier")) (kw ("c" .
"splines"))
+ (kw ("s" . "bezier")) (kw ("u" . "nique")) (kw ("f" .
"requency"))
+ (kw ("cum" . "ulative")) (kw ("k" . "density")))])
;;; Binary datafile modifiers
- (binary-modifier
- ["binary" (many binary-keyword)])
-
- (binary-keyword
- (either
- ;; All of these binary keywords are described on the same
- ;; info page
- [(:info "keywords")
- (either
- "transpose" "flipx" "flipy" "flipz"
- ["flip" "=" (either "x" "y" "z")]
- ["scan" "=" name]
- [(either "dx" "dy" "dz") "=" number]
- [(either "origin" "center" "perpendicular") "="
- (delimited-list tuple ":")]
- [(kw ("rot" . "ate") "rotation") "="
- (sequence expression (maybe (kw ("d" . "eg")) (kw ("p" .
"i"))))])]
-
- ;; remaining binary keywords have their own info pages
- (info-keyword
- (either
- [(either "array" "record")
- "="
- (delimited-list expression ":")]
-
- [(either "skip")
- "="
- (delimited-list expression ":")]
-
- [(either "format" "endian" "filetype")
- "="
- expression]))))
-
+ (binary-modifier
+ ["binary" (many binary-keyword)])
+
+ (binary-keyword
+ (either
+ ;; All of these binary keywords are described on the same
+ ;; info page
+ [(:info "keywords")
+ (either
+ "transpose" "flipx" "flipy" "flipz"
+ ["flip" "=" (either "x" "y" "z")]
+ ["scan" "=" name]
+ [(either "dx" "dy" "dz") "=" number]
+ [(either "origin" "center" "perpendicular") "="
+ (delimited-list tuple ":")]
+ [(kw ("rot" . "ate") "rotation") "="
+ (sequence expression (maybe (kw ("d" . "eg")) (kw ("p" .
"i"))))])]
+
+ ;; remaining binary keywords have their own info pages
+ (info-keyword
+ (either
+ [(either "array" "record")
+ "="
+ (delimited-list expression ":")]
+
+ [(either "skip")
+ "="
+ (delimited-list expression ":")]
+
+ [(either "format" "endian" "filetype")
+ "="
+ expression]))))
+
;;; "fit" command
- (fit-command
- [(:info "fit")
- (kw "fit")
- (many axis-range)
- expression
- string
- (many plot-modifier)
- (kw "via")
- (either string (delimited-list name ","))])
+ (fit-command
+ [(:info "fit")
+ (kw "fit")
+ (many axis-range)
+ expression
+ string
+ (many plot-modifier)
+ (kw "via")
+ (either string (delimited-list name ","))])
;;; print command
- (print-command
- [(kw ("pr" . "int")) (delimited-list expression ",")])
+ (print-command
+ [(kw ("pr" . "int")) (delimited-list expression ",")])
;;; set commands
- (set-command
- [(:eldoc "set ...")
- (:info "set-show")
- (either (kw "set") (kw "unset") (kw "show"))
- (maybe iteration-spec)
- (info-keyword
- (either set-angles-clause set-arrow-clause
- set-autoscale-clause set-bars-clause
- set-border-clause set-boxwidth-clause
- set-clabel-clause set-clip-clause
- set-cntrparam-clause set-colorbox-clause
- set-contour-clause set-datafile-clause
- set-decimalsign-clause set-dgrid3d-clause
- set-dummy-clause set-encoding-clause
- set-fit-clause set-fontpath-clause
- set-format-clause set-grid-clause
- set-hidden3d-clause set-historysize-clause
- set-isosamples-clause set-key-clause
- set-label-clause set-loadpath-clause
- set-locale-clause set-logscale-clause
- set-mapping-clause set-margin-clause
- set-multiplot-clause set-mxtics-clause
- set-object-clause set-offsets-clause
- set-origin-clause set-output-clause
- set-parametric-clause set-pm3d-clause
- set-palette-clause set-pointsize-clause
- set-polar-clause set-print-clause
- set-samples-clause set-size-clause
- set-style-clause
- set-surface-clause set-table-clause
- set-terminal-clause set-termoption-clause
- set-tics-clause set-tics-clause-2
- set-xtics-clause
- set-timestamp-clause set-timefmt-clause
- set-title-clause set-view-clause
- set-data-clause set-dtics-clause
- set-xlabel-clause
- set-mtics-clause set-range-clause
- set-xyplane-clause set-zero-clause
- set-zeroaxis-clause))])
-
+ (set-command
+ [(:eldoc "set ...")
+ (:info "set-show")
+ (either (kw "set") (kw "unset") (kw "show"))
+ (maybe iteration-spec)
+ (info-keyword
+ (either set-angles-clause set-arrow-clause
+ set-autoscale-clause set-bars-clause
+ set-border-clause set-boxwidth-clause
+ set-clabel-clause set-clip-clause
+ set-cntrparam-clause set-colorbox-clause
+ set-contour-clause set-datafile-clause
+ set-decimalsign-clause set-dgrid3d-clause
+ set-dummy-clause set-encoding-clause
+ set-fit-clause set-fontpath-clause
+ set-format-clause set-grid-clause
+ set-hidden3d-clause set-historysize-clause
+ set-isosamples-clause set-key-clause
+ set-label-clause set-loadpath-clause
+ set-locale-clause set-logscale-clause
+ set-mapping-clause set-margin-clause
+ set-multiplot-clause set-mxtics-clause
+ set-object-clause set-offsets-clause
+ set-origin-clause set-output-clause
+ set-parametric-clause set-pm3d-clause
+ set-palette-clause set-pointsize-clause
+ set-polar-clause set-print-clause
+ set-samples-clause set-size-clause
+ set-style-clause
+ set-surface-clause set-table-clause
+ set-terminal-clause set-termoption-clause
+ set-tics-clause set-tics-clause-2
+ set-xtics-clause
+ set-timestamp-clause set-timefmt-clause
+ set-title-clause set-view-clause
+ set-data-clause set-dtics-clause
+ set-xlabel-clause
+ set-mtics-clause set-range-clause
+ set-xyplane-clause set-zero-clause
+ set-zeroaxis-clause))])
+
;;; positions and coordinate systems for set options
- (position-system
- (either "first" "second" "graph" "screen" "character"))
-
- (dimension [(maybe position-system) expression])
-
- (position
- [dimension "," dimension (maybe "," dimension)])
-
- (to (either "to" "rto"))
-
+ (position-system
+ (either "first" "second" "graph" "screen" "character"))
+
+ (dimension [(maybe position-system) expression])
+
+ (position
+ [dimension "," dimension (maybe "," dimension)])
+
+ (to (either "to" "rto"))
+
;;; all the different "set ... " options
- (set-angles-clause
- ["angles" (either "degrees" "radians")])
-
- (set-arrow-clause
- ["arrow" (maybe number)
- (many
- (either ["from" position] [to position]
- [(kw "arrowstyle" "as") expression]
- "nohead" "head" "backhead" "heads"
- ["size" dimension "," expression (maybe "," expression)]
- "filled" "empty" "nofilled" "front" "back"
- linecolor-modifier linestyle-spec))])
-
- (set-autoscale-clause
- ["autoscale"
- (either "fix"
- "keepfix"
- "x" "y" "z" "cb" "x2" "y2" "xy"
- "xmin" "ymin" "zmin" "cbmin" "x2min" "y2min"
- "xmax" "ymax" "zmax" "cbmax" "x2max" "y2max"
- "xfix" "yfix" "zfix" "cbfix" "x2fix" "y2fix"
- "xfixmax" "yfixmax" "zfixmax" "cbfixmax" "x2fixmax"
"y2fixmax"
- "xfixmin" "yfixmin" "zfixmin" "cbfixmin" "x2fixmin"
"y2fixmin")])
-
- (set-bars-clause
- ["bars"
- (either expression "small" "large" "fullwidth")
- (either "front" "back")])
-
- (set-border-clause
- ["border"
- (maybe number)
- (maybe (either "front" "back"))
- (maybe (kw "linewidth" "lw") expression)
- (maybe
- (either (kw "linestyle" "ls") (kw "linetype" "lt"))
- expression)])
-
- (set-boxwidth-clause
- ["boxwidth"
- (maybe expression)
- (maybe (either (kw ("abs" . "olute")) "relative"))])
-
- (set-clabel-clause
- ["clabel" (maybe string)])
-
- (set-clip-clause
- ["clip" (maybe (either "points" "one" "two"))])
-
- (set-cntrparam-clause
- [(kw "cntrparam")
- (either
- "linear" "cubicspline" "bspline"
-
- [(either "points" "order") number]
-
- [(kw "levels")
- (either
- number
- (sequence (kw "auto") (maybe number))
- (sequence
- (kw "discrete") comma-list)
- (sequence
- (kw "incremental") (delimited-list expression "," 2 3)))])])
-
- (set-colorbox-clause
- [(:info "color_box")
- (kw ("colorb" . "ox"))
- (many
- (either
- (kw ("vert" . "ical")) (kw ("horiz" . "ontal"))
- "default" "user"
- ["origin" expression "," expression]
- ["size" expression "," expression]
- "front" "back"
- "noborder" "bdefault"
- ["border" expression]))])
-
- (set-contour-clause
- ["contour" (either "base" "surface" "both")])
-
- (set-datafile-clause
- ["datafile"
- (either [(:info "set_datafile_fortran")
- "fortran"]
- [(:info "set_datafile_nofpe_trap")
- "nofpe_trap"]
- [(:info "set_datafile_missing")
- "missing" (maybe string)]
- [(:info "set_datafile_separator")
- "separator" (either "whitespace" string)]
- [(:info "set_datafile_commentschars")
- "commentschars" (maybe string)]
- [(:info "set_datafile_binary")
- "binary" (many binary-keyword)])])
-
- (set-decimalsign-clause
- ["decimalsign"
- (either string ["locale" (maybe string)])])
-
- (set-dgrid3d-clause
- ["dgrid3d"
- (maybe expression) ; fixme
- (maybe "," expression)
- (either
- "splines"
- ["qnorm" expression]
- [(either "gauss" "cauchy" "exp" "box" "hann")
- (maybe expression)
- (maybe "," expression)])])
-
- (set-dummy-clause
- ["dummy"
- name (maybe "," name)])
-
- (set-encoding-clause
- ["encoding"
- (either "default" "iso_8859_1" "iso_8859_15" "iso_8859_2"
"iso_8859_9"
- "koi8r" "koi8u" "cp437" "cp850" "cp852" "cp1250" "cp1251"
"cp1254"
- "utf8" "locale")])
-
- (set-fit-clause
- [(:info "fit_")
- "fit"
- (either
- ["logfile" string]
- "errorvariables" "noerrorvariables")])
-
- (set-fontpath-clause
- ["fontpath" (many string)])
-
- (set-format-clause
- [(:info "format_")
- "format"
- (maybe (either "x" "y" "xy" "x2" "y2" "z" "cb"))
- string])
-
- (set-grid-clause
- ["grid"
- (either "nomxtics" "mxtics" "noxtics" "xtics" "nomytics" "mytics"
- "noytics" "ytics" "nomztics" "mztics" "noztics" "ztics"
- "nomx2tics" "mx2tics" "nox2tics" "x2tics" "nomy2tics"
- "my2tics" "noy2tics" "y2tics" "nomcbtics" "mcbtics"
- "nocbtics" "cbtics" "layerdefault" "front" "back"
- [linestyle-spec (maybe "," linestyle-spec)])])
-
- (set-hidden3d-clause
- [(kw ("hidden" . "3d"))
- (many
- (either
- "defaults" "front" "back"
- ["offset" expression] "nooffset"
- ["trianglepattern"
- (either "0" "1" "2" "3" "4" "5" "6" "7")]
- ["undefined" (either "1" "2" "3")]
- ["noundefined"]
- "altdiagonal" "noaltdiagonal"
- "bentover" "nobentover"))])
-
- (set-historysize-clause
- ["historysize" number])
-
- (set-isosamples-clause
- [(kw ("isosam" . "ples")) number (maybe "," number)])
-
- (set-key-clause
- ["key"
- (many
- (either "on" "off" "default"
- [(either "inside" "outside")
- (either "lmargin" "rmargin" "tmargin" "bmargin")]
- ["at" expression "," expression]
- "left" "right" "center" "top" "bottom" "vertical"
- "horizontal" "Left" "Right" "reverse" "noreverse" "invert"
- "noinvert" "above" "over" "below" "under"
- ["samplen" number]
- ["spacing" number]
- ["width" number]
- [(either "autotitle" "noautotitle") (maybe "columnheader")]
- ["title" expression] "enhanced" "noenhanced" ["font" string]
- textcolor-spec
- [(either "box" "nobox") linestyle-spec]
- ["maxcols" (either expression "auto")]
- ["maxrows" (either expression "auto")]))])
-
- (set-label-clause
- ["label"
- (maybe expression)
- (either label-clause-component expression)
- (many label-clause-component)])
-
- (label-clause-component
- (either
- ["at" position]
- "left" "center" "right"
- (either "norotate" ["rotate" "by" expression])
- ["font" string]
- "noenhanced"
- "front" "back"
- textcolor-spec
- "nopoint" ["point" (many (either pointsize-spec linestyle-spec))]
- ["offset" position]))
-
- (set-loadpath-clause
- ["loadpath" (many string)])
-
- (set-locale-clause
- ["locale" (maybe string)])
-
- (set-logscale-clause
- ["logscale"
- (either "x" "y" "xy" "x2" "y2" "z" "cb" name)])
-
- (set-mapping-clause
- ["mapping" (either "cartesian" "spherical" "cylindrical")])
-
- (set-margin-clause
- [(either "bmargin" "lmargin" "rmargin" "tmargin")
- (maybe "at" "screen") expression])
-
- ;; TODO: set-mouse-clause
-
- (set-multiplot-clause
- ["multiplot"
- (maybe
- ["layout" number "," number
- (maybe (either "rowsfirst" "columnsfirst"))
- (maybe (either "downwards" "upwards"))
- (maybe "title" string)
- (maybe "scale" number (maybe "," number))
- (maybe "offset" number (maybe "," number))])])
-
- (set-mxtics-clause
- [(:info "mxtics")
- (either "mxtics" "mytics" "mztics" "mx2tics" "my2tics" "mcbtics")
- (either "default" number)])
-
- ;; "set object", objects, dimensions, positions
- (set-object-clause
- ["object"
- (maybe number)
- (info-keyword
- (either rectangle-object ellipse-object circle-object
polygon-object))
- (maybe (either "front" "back" "behind"))
- (maybe (kw "fillcolor" "fc") color-spec)
- (maybe "fs" expression)
- (maybe "default")
- (maybe (kw "linewidth" "lw") expression)])
-
- (rectangle-object
- [(kw ("rect" . "angle"))
- (maybe
- (either
- ["from" position (either "to" "rto") position]
- ["center" position "size" dimension "," dimension]
- ["at" position "size" dimension "," dimension]))])
-
- (ellipse-object
- ["ellipse"
- (either "at" "center") position
- "size" dimension "," dimension
- (maybe "angle" number)])
-
- (circle-object
- ["circle"
- (either "at" "center") position
- "size" dimension
- (maybe "arc" "[" number ":" number "]")])
-
- (polygon-object
- ["polygon"
- "from" position (many (either "to" "rto") position)])
-
- ;; "set offsets"
- (set-offsets-clause
- ["offsets"
- (delimited-list [(maybe "graph") expression] "," 4 4)])
-
- (set-origin-clause
- ["origin" expression "," expression])
-
- (set-output-clause
- ["output" (maybe string)])
-
- (set-parametric-clause
- [(:info "parametric_")
- (kw ("param" . "etric"))])
-
- (set-pm3d-clause
- ["pm3d"
- (many
- (either
- ["at" name]
- ["interpolate" number "," number]
- (either "scansautomatic" "scansforward" "scansbackward"
"depthorder")
- ["flush" (either "begin" "center" "end")]
- (either "ftriangles" "noftriangles")
- (either "clip1in" "clip4in")
- ["corners2color"
- (either "mean" "geomean" "median" "min" "max" "c1" "c2" "c3"
"c4")]
- ["hidden3d" number]
- "nohidden3d"
- "implicit" "explicit" "map"))])
-
- (set-palette-clause
- ["palette"
- (many
- (either
- "gray" "color"
- ["gamma" number]
- ["rgbformulae" number "," number "," number]
- "defined" ; not complete
- ["functions" expression "," expression "," expression]
- ["file" string (many datafile-modifier)]
- "RGB" "HSV" "CMY" "YIQ" "XYZ"
- "positive" "negative"
- "nops_allcF" "ps_allcF"
- ["maxcolors" number]))])
-
- (set-pointsize-clause pointsize-spec)
-
- (set-polar-clause "polar")
-
- (set-print-clause
- [(:info "print_")
- "print"
- (maybe string)])
-
- (set-samples-clause
- ["samples" expression (maybe "," expression)])
-
- (set-size-clause
- ["size"
- (either
- "square" "nosquare"
- ["ratio" expression]
- "noratio"
- [expression "," expression])])
-
- (set-style-clause
- ["style"
- (either style-arrow-clause style-data-clause style-fill-clause
- style-function-clause style-increment-clause
- style-line-clause style-circle-clause
style-rectangle-clause)])
-
- ;; begin subclauses of "set style ..."
- (style-arrow-clause
- [(:info "set_style_arrow")
- "arrow"
- number
- (either
- "default"
- (many
- (either "nohead" "head" "heads"
- "filled" "empty" "nofilled"
- "front" "back"
- ["size" dimension "," number (maybe "," number)]
- linestyle-spec)))])
-
- (style-data-clause
- [(:info "set_style_data")
- "data" plotting-style])
-
- (style-fill-clause
- [(:info "set_style_fill")
- "fill" fill-style])
-
- (style-function-clause
- [(:info "set_style_function")
- "function" plotting-style])
-
- (style-increment-clause
- [(:info "set_style_increment")
- "increment"
- (either (kw ("d" . "efault")) (kw ("u" . "serstyles")))])
-
- (style-line-clause
- [(:info "set_style_line")
- "line"
- expression
- (either
- "default"
- (many
- (either
- "palette"
- [(kw ("linet" . "ype") "lt")
- (either expression color-spec)]
- [(kw ("linec" . "olor") "lc") color-spec]
- [(either (kw ("linew" . "idth") "lw")
- (kw ("pointt" . "ype") "pt")
- (kw ("points" . "ize") "ps")
- (kw ("pointi" . "nterval") "pi"))
- expression])))])
-
- (style-circle-clause
- [(:info "set_style_circle")
- "circle" "radius" dimension])
-
- (style-rectangle-clause
- [(:info "set_style_rectangle")
- "rectangle"
- (many
- (either
- "front" "back"
- [(kw ("linew" . "idth") "lw") expression]
- [(kw "fillcolor" "fc") color-spec]
- ["fs" expression]))])
- ;; end of "set style ..." clauses
-
- (set-surface-clause "surface")
-
- (set-table-clause ["table" (maybe string)])
-
- (set-terminal-clause ; not sure how to do this...
- ["terminal" (maybe (either "push" "pop"))])
-
- (set-termoption-clause
- ["termoption"
- (either
- "enhanced" "noenhanced"
- ["font" string]
- "solid" "dashed"
- [(kw "linewidth" "lw") expression])])
-
- (set-tics-clause
- ["tics"
- (many
- (either
- "axis" "border" "mirror" "nomirror" "in" "out"
- ["scale" (either "default" [expression (maybe "," expression)])]
- [(either "rotate" "norotate") (maybe "by" expression)]
- ["offset" expression] "nooffset"
- ["format" string]
- ["font" string]
- textcolor-spec))])
-
- (set-tics-clause-2
- ["tics" (either "front" "back")])
-
- (set-xtics-clause
- [(:info "xtics")
- (either "xtics" "ytics" "ztics" "x2tics" "y2tics" "cbtics")
- (many
- (either
- "axis" "border" "mirror" "nomirror" "in" "out"
- ["scale" (either "default" [expression (maybe "," expression)])]
- [(either "rotate" "norotate") (maybe "by" expression)]
- ["offset" position] "nooffset"
- "add" "autofreq"
- ["(" (delimited-list [(maybe string) expression (maybe number)]
",") ")"]
- ["format" string]
- ["font" string]
- "rangelimited"
- textcolor-spec
- (delimited-list expression ",")))])
-
- (set-timestamp-clause
- ["timestamp"
- (maybe string)
- (maybe (either "top" "bottom"))
- (maybe (either "rotate" "norotate"))
- (maybe "offset" position)
- (maybe "font" string)])
-
- (set-timefmt-clause
- ["timefmt" string])
-
- (set-title-clause
- [(:info "title_")
- "title"
- (maybe expression)
- (many
- (either
- ["offset" position]
- ["font" string]
- textcolor-spec
- "enhanced" "noenhanced"))])
-
- (set-view-clause
- ["view"
- (either
- "map"
- [(either "equal" "noequal") (maybe (either "xy" "xyz"))]
- (delimited-list (maybe expression) ","))])
-
- (set-data-clause
- [(:info "xdata")
- (either "xdata" "ydata" "zdata" "x2data" "y2data" "cbdata")
- (maybe (either "time" "geographic"))])
-
- (set-dtics-clause
- [(:info "xdtics")
- (either "xdtics" "ydtics" "zdtics" "x2dtics" "y2dtics" "cbdtics")])
-
- (set-xlabel-clause
- [(:info "xlabel")
- (either (kw ("xlab" . "el")) (kw ("ylab" . "el"))
- (kw ("zlab" . "el")) (kw ("x2lab" . "el"))
- (kw ("y2lab" . "el")) (kw ("cblab" . "el")))
- (maybe expression)
- (many
- (either
- ["offset" position]
- ["font" string]
- textcolor-spec
- "enhanced" "noenhanced"))])
-
- (set-mtics-clause
- [(:info "xmtics")
- (either "xmtics" "ymtics" "zmtics" "x2mtics" "y2mtics" "cbmtics")])
-
- (set-range-clause
- [(:info "xrange")
- (either (kw ("xr" . "ange")) (kw ("yr" . "ange"))
+ (set-angles-clause
+ ["angles" (either "degrees" "radians")])
+
+ (set-arrow-clause
+ ["arrow" (maybe number)
+ (many
+ (either ["from" position] [to position]
+ [(kw "arrowstyle" "as") expression]
+ "nohead" "head" "backhead" "heads"
+ ["size" dimension "," expression (maybe "," expression)]
+ "filled" "empty" "nofilled" "front" "back"
+ linecolor-modifier linestyle-spec))])
+
+ (set-autoscale-clause
+ ["autoscale"
+ (either "fix"
+ "keepfix"
+ "x" "y" "z" "cb" "x2" "y2" "xy"
+ "xmin" "ymin" "zmin" "cbmin" "x2min" "y2min"
+ "xmax" "ymax" "zmax" "cbmax" "x2max" "y2max"
+ "xfix" "yfix" "zfix" "cbfix" "x2fix" "y2fix"
+ "xfixmax" "yfixmax" "zfixmax" "cbfixmax" "x2fixmax"
"y2fixmax"
+ "xfixmin" "yfixmin" "zfixmin" "cbfixmin" "x2fixmin"
"y2fixmin")])
+
+ (set-bars-clause
+ ["bars"
+ (either expression "small" "large" "fullwidth")
+ (either "front" "back")])
+
+ (set-border-clause
+ ["border"
+ (maybe number)
+ (maybe (either "front" "back"))
+ (maybe (kw "linewidth" "lw") expression)
+ (maybe
+ (either (kw "linestyle" "ls") (kw "linetype" "lt"))
+ expression)])
+
+ (set-boxwidth-clause
+ ["boxwidth"
+ (maybe expression)
+ (maybe (either (kw ("abs" . "olute")) "relative"))])
+
+ (set-clabel-clause
+ ["clabel" (maybe string)])
+
+ (set-clip-clause
+ ["clip" (maybe (either "points" "one" "two"))])
+
+ (set-cntrparam-clause
+ [(kw "cntrparam")
+ (either
+ "linear" "cubicspline" "bspline"
+
+ [(either "points" "order") number]
+
+ [(kw "levels")
+ (either
+ number
+ (sequence (kw "auto") (maybe number))
+ (sequence
+ (kw "discrete") comma-list)
+ (sequence
+ (kw "incremental") (delimited-list expression "," 2 3)))])])
+
+ (set-colorbox-clause
+ [(:info "color_box")
+ (kw ("colorb" . "ox"))
+ (many
+ (either
+ (kw ("vert" . "ical")) (kw ("horiz" . "ontal"))
+ "default" "user"
+ ["origin" expression "," expression]
+ ["size" expression "," expression]
+ "front" "back"
+ "noborder" "bdefault"
+ ["border" expression]))])
+
+ (set-contour-clause
+ ["contour" (either "base" "surface" "both")])
+
+ (set-datafile-clause
+ ["datafile"
+ (either [(:info "set_datafile_fortran")
+ "fortran"]
+ [(:info "set_datafile_nofpe_trap")
+ "nofpe_trap"]
+ [(:info "set_datafile_missing")
+ "missing" (maybe string)]
+ [(:info "set_datafile_separator")
+ "separator" (either "whitespace" string)]
+ [(:info "set_datafile_commentschars")
+ "commentschars" (maybe string)]
+ [(:info "set_datafile_binary")
+ "binary" (many binary-keyword)])])
+
+ (set-decimalsign-clause
+ ["decimalsign"
+ (either string ["locale" (maybe string)])])
+
+ (set-dgrid3d-clause
+ ["dgrid3d"
+ (maybe expression) ; fixme
+ (maybe "," expression)
+ (either
+ "splines"
+ ["qnorm" expression]
+ [(either "gauss" "cauchy" "exp" "box" "hann")
+ (maybe expression)
+ (maybe "," expression)])])
+
+ (set-dummy-clause
+ ["dummy"
+ name (maybe "," name)])
+
+ (set-encoding-clause
+ ["encoding"
+ (either "default" "iso_8859_1" "iso_8859_15" "iso_8859_2"
"iso_8859_9"
+ "koi8r" "koi8u" "cp437" "cp850" "cp852" "cp1250" "cp1251"
"cp1254"
+ "utf8" "locale")])
+
+ (set-fit-clause
+ [(:info "fit_")
+ "fit"
+ (either
+ ["logfile" string]
+ "errorvariables" "noerrorvariables")])
+
+ (set-fontpath-clause
+ ["fontpath" (many string)])
+
+ (set-format-clause
+ [(:info "format_")
+ "format"
+ (maybe (either "x" "y" "xy" "x2" "y2" "z" "cb"))
+ string])
+
+ (set-grid-clause
+ ["grid"
+ (either "nomxtics" "mxtics" "noxtics" "xtics" "nomytics" "mytics"
+ "noytics" "ytics" "nomztics" "mztics" "noztics" "ztics"
+ "nomx2tics" "mx2tics" "nox2tics" "x2tics" "nomy2tics"
+ "my2tics" "noy2tics" "y2tics" "nomcbtics" "mcbtics"
+ "nocbtics" "cbtics" "layerdefault" "front" "back"
+ [linestyle-spec (maybe "," linestyle-spec)])])
+
+ (set-hidden3d-clause
+ [(kw ("hidden" . "3d"))
+ (many
+ (either
+ "defaults" "front" "back"
+ ["offset" expression] "nooffset"
+ ["trianglepattern"
+ (either "0" "1" "2" "3" "4" "5" "6" "7")]
+ ["undefined" (either "1" "2" "3")]
+ ["noundefined"]
+ "altdiagonal" "noaltdiagonal"
+ "bentover" "nobentover"))])
+
+ (set-historysize-clause
+ ["historysize" number])
+
+ (set-isosamples-clause
+ [(kw ("isosam" . "ples")) number (maybe "," number)])
+
+ (set-key-clause
+ ["key"
+ (many
+ (either "on" "off" "default"
+ [(either "inside" "outside")
+ (either "lmargin" "rmargin" "tmargin" "bmargin")]
+ ["at" expression "," expression]
+ "left" "right" "center" "top" "bottom" "vertical"
+ "horizontal" "Left" "Right" "reverse" "noreverse" "invert"
+ "noinvert" "above" "over" "below" "under"
+ ["samplen" number]
+ ["spacing" number]
+ ["width" number]
+ [(either "autotitle" "noautotitle") (maybe "columnheader")]
+ ["title" expression] "enhanced" "noenhanced" ["font"
string]
+ textcolor-spec
+ [(either "box" "nobox") linestyle-spec]
+ ["maxcols" (either expression "auto")]
+ ["maxrows" (either expression "auto")]))])
+
+ (set-label-clause
+ ["label"
+ (maybe expression)
+ (either label-clause-component expression)
+ (many label-clause-component)])
+
+ (label-clause-component
+ (either
+ ["at" position]
+ "left" "center" "right"
+ (either "norotate" ["rotate" "by" expression])
+ ["font" string]
+ "noenhanced"
+ "front" "back"
+ textcolor-spec
+ "nopoint" ["point" (many (either pointsize-spec linestyle-spec))]
+ ["offset" position]))
+
+ (set-loadpath-clause
+ ["loadpath" (many string)])
+
+ (set-locale-clause
+ ["locale" (maybe string)])
+
+ (set-logscale-clause
+ ["logscale"
+ (either "x" "y" "xy" "x2" "y2" "z" "cb" name)])
+
+ (set-mapping-clause
+ ["mapping" (either "cartesian" "spherical" "cylindrical")])
+
+ (set-margin-clause
+ [(either "bmargin" "lmargin" "rmargin" "tmargin")
+ (maybe "at" "screen") expression])
+
+ ;; TODO: set-mouse-clause
+
+ (set-multiplot-clause
+ ["multiplot"
+ (maybe
+ ["layout" number "," number
+ (maybe (either "rowsfirst" "columnsfirst"))
+ (maybe (either "downwards" "upwards"))
+ (maybe "title" string)
+ (maybe "scale" number (maybe "," number))
+ (maybe "offset" number (maybe "," number))])])
+
+ (set-mxtics-clause
+ [(:info "mxtics")
+ (either "mxtics" "mytics" "mztics" "mx2tics" "my2tics" "mcbtics")
+ (either "default" number)])
+
+ ;; "set object", objects, dimensions, positions
+ (set-object-clause
+ ["object"
+ (maybe number)
+ (info-keyword
+ (either rectangle-object ellipse-object circle-object
polygon-object))
+ (maybe (either "front" "back" "behind"))
+ (maybe (kw "fillcolor" "fc") color-spec)
+ (maybe "fs" expression)
+ (maybe "default")
+ (maybe (kw "linewidth" "lw") expression)])
+
+ (rectangle-object
+ [(kw ("rect" . "angle"))
+ (maybe
+ (either
+ ["from" position (either "to" "rto") position]
+ ["center" position "size" dimension "," dimension]
+ ["at" position "size" dimension "," dimension]))])
+
+ (ellipse-object
+ ["ellipse"
+ (either "at" "center") position
+ "size" dimension "," dimension
+ (maybe "angle" number)])
+
+ (circle-object
+ ["circle"
+ (either "at" "center") position
+ "size" dimension
+ (maybe "arc" "[" number ":" number "]")])
+
+ (polygon-object
+ ["polygon"
+ "from" position (many (either "to" "rto") position)])
+
+ ;; "set offsets"
+ (set-offsets-clause
+ ["offsets"
+ (delimited-list [(maybe "graph") expression] "," 4 4)])
+
+ (set-origin-clause
+ ["origin" expression "," expression])
+
+ (set-output-clause
+ ["output" (maybe string)])
+
+ (set-parametric-clause
+ [(:info "parametric_")
+ (kw ("param" . "etric"))])
+
+ (set-pm3d-clause
+ ["pm3d"
+ (many
+ (either
+ ["at" name]
+ ["interpolate" number "," number]
+ (either "scansautomatic" "scansforward" "scansbackward"
"depthorder")
+ ["flush" (either "begin" "center" "end")]
+ (either "ftriangles" "noftriangles")
+ (either "clip1in" "clip4in")
+ ["corners2color"
+ (either "mean" "geomean" "median" "min" "max" "c1" "c2" "c3"
"c4")]
+ ["hidden3d" number]
+ "nohidden3d"
+ "implicit" "explicit" "map"))])
+
+ (set-palette-clause
+ ["palette"
+ (many
+ (either
+ "gray" "color"
+ ["gamma" number]
+ ["rgbformulae" number "," number "," number]
+ "defined" ; not complete
+ ["functions" expression "," expression "," expression]
+ ["file" string (many datafile-modifier)]
+ "RGB" "HSV" "CMY" "YIQ" "XYZ"
+ "positive" "negative"
+ "nops_allcF" "ps_allcF"
+ ["maxcolors" number]))])
+
+ (set-pointsize-clause pointsize-spec)
+
+ (set-polar-clause "polar")
+
+ (set-print-clause
+ [(:info "print_")
+ "print"
+ (maybe string)])
+
+ (set-samples-clause
+ ["samples" expression (maybe "," expression)])
+
+ (set-size-clause
+ ["size"
+ (either
+ "square" "nosquare"
+ ["ratio" expression]
+ "noratio"
+ [expression "," expression])])
+
+ (set-style-clause
+ ["style"
+ (either style-arrow-clause style-data-clause style-fill-clause
+ style-function-clause style-increment-clause
+ style-line-clause style-circle-clause
style-rectangle-clause)])
+
+ ;; begin subclauses of "set style ..."
+ (style-arrow-clause
+ [(:info "set_style_arrow")
+ "arrow"
+ number
+ (either
+ "default"
+ (many
+ (either "nohead" "head" "heads"
+ "filled" "empty" "nofilled"
+ "front" "back"
+ ["size" dimension "," number (maybe "," number)]
+ linestyle-spec)))])
+
+ (style-data-clause
+ [(:info "set_style_data")
+ "data" plotting-style])
+
+ (style-fill-clause
+ [(:info "set_style_fill")
+ "fill" fill-style])
+
+ (style-function-clause
+ [(:info "set_style_function")
+ "function" plotting-style])
+
+ (style-increment-clause
+ [(:info "set_style_increment")
+ "increment"
+ (either (kw ("d" . "efault")) (kw ("u" . "serstyles")))])
+
+ (style-line-clause
+ [(:info "set_style_line")
+ "line"
+ expression
+ (either
+ "default"
+ (many
+ (either
+ "palette"
+ [(kw ("linet" . "ype") "lt")
+ (either expression color-spec)]
+ [(kw ("linec" . "olor") "lc") color-spec]
+ [(either (kw ("linew" . "idth") "lw")
+ (kw ("pointt" . "ype") "pt")
+ (kw ("points" . "ize") "ps")
+ (kw ("pointi" . "nterval") "pi"))
+ expression])))])
+
+ (style-circle-clause
+ [(:info "set_style_circle")
+ "circle" "radius" dimension])
+
+ (style-rectangle-clause
+ [(:info "set_style_rectangle")
+ "rectangle"
+ (many
+ (either
+ "front" "back"
+ [(kw ("linew" . "idth") "lw") expression]
+ [(kw "fillcolor" "fc") color-spec]
+ ["fs" expression]))])
+ ;; end of "set style ..." clauses
+
+ (set-surface-clause "surface")
+
+ (set-table-clause ["table" (maybe string)])
+
+ (set-terminal-clause ; not sure how to do this...
+ ["terminal" (maybe (either "push" "pop"))])
+
+ (set-termoption-clause
+ ["termoption"
+ (either
+ "enhanced" "noenhanced"
+ ["font" string]
+ "solid" "dashed"
+ [(kw "linewidth" "lw") expression])])
+
+ (set-tics-clause
+ ["tics"
+ (many
+ (either
+ "axis" "border" "mirror" "nomirror" "in" "out"
+ ["scale" (either "default" [expression (maybe "," expression)])]
+ [(either "rotate" "norotate") (maybe "by" expression)]
+ ["offset" expression] "nooffset"
+ ["format" string]
+ ["font" string]
+ textcolor-spec))])
+
+ (set-tics-clause-2
+ ["tics" (either "front" "back")])
+
+ (set-xtics-clause
+ [(:info "xtics")
+ (either "xtics" "ytics" "ztics" "x2tics" "y2tics" "cbtics")
+ (many
+ (either
+ "axis" "border" "mirror" "nomirror" "in" "out"
+ ["scale" (either "default" [expression (maybe "," expression)])]
+ [(either "rotate" "norotate") (maybe "by" expression)]
+ ["offset" position] "nooffset"
+ "add" "autofreq"
+ ["(" (delimited-list [(maybe string) expression (maybe number)]
",") ")"]
+ ["format" string]
+ ["font" string]
+ "rangelimited"
+ textcolor-spec
+ (delimited-list expression ",")))])
+
+ (set-timestamp-clause
+ ["timestamp"
+ (maybe string)
+ (maybe (either "top" "bottom"))
+ (maybe (either "rotate" "norotate"))
+ (maybe "offset" position)
+ (maybe "font" string)])
+
+ (set-timefmt-clause
+ ["timefmt" string])
+
+ (set-title-clause
+ [(:info "title_")
+ "title"
+ (maybe expression)
+ (many
+ (either
+ ["offset" position]
+ ["font" string]
+ textcolor-spec
+ "enhanced" "noenhanced"))])
+
+ (set-view-clause
+ ["view"
+ (either
+ "map"
+ [(either "equal" "noequal") (maybe (either "xy" "xyz"))]
+ (delimited-list (maybe expression) ","))])
+
+ (set-data-clause
+ [(:info "xdata")
+ (either "xdata" "ydata" "zdata" "x2data" "y2data" "cbdata")
+ (maybe (either "time" "geographic"))])
+
+ (set-dtics-clause
+ [(:info "xdtics")
+ (either "xdtics" "ydtics" "zdtics" "x2dtics" "y2dtics" "cbdtics")])
+
+ (set-xlabel-clause
+ [(:info "xlabel")
+ (either (kw ("xlab" . "el")) (kw ("ylab" . "el"))
+ (kw ("zlab" . "el")) (kw ("x2lab" . "el"))
+ (kw ("y2lab" . "el")) (kw ("cblab" . "el")))
+ (maybe expression)
+ (many
+ (either
+ ["offset" position]
+ ["font" string]
+ textcolor-spec
+ "enhanced" "noenhanced"))])
+
+ (set-mtics-clause
+ [(:info "xmtics")
+ (either "xmtics" "ymtics" "zmtics" "x2mtics" "y2mtics" "cbmtics")])
+
+ (set-range-clause
+ [(:info "xrange")
+ (either (kw ("xr" . "ange")) (kw ("yr" . "ange"))
(kw ("x2r" . "ange")) (kw ("y2r" . "ange"))
- (kw ("zr" . "ange")) (kw ("tr" . "ange"))
- (kw ("ur" . "ange")) (kw ("vr" . "ange"))
- (kw ("rr" . "ange")) (kw ("cbr" . "ange")))
- (either
- "restore"
- ["[" (maybe
- [(maybe axis-range-component) ":"
- (maybe axis-range-component)])
- "]"
- (many (either "reverse" "noreverse" "writeback" "nowriteback"))])])
-
- (set-xyplane-clause
- ["xyplane" (either "at" "relative") expression])
-
- (set-zero-clause
- ["zero" expression])
-
- (set-zeroaxis-clause
- [(:info "zeroaxis")
- (either "zeroaxis" "xzeroaxis" "x2zeroaxis" "yzeroaxis" "y2zeroaxis"
- "zzeroaxis")
- (maybe linestyle-spec)])
-
+ (kw ("zr" . "ange")) (kw ("tr" . "ange"))
+ (kw ("ur" . "ange")) (kw ("vr" . "ange"))
+ (kw ("rr" . "ange")) (kw ("cbr" . "ange")))
+ (either
+ "restore"
+ ["[" (maybe
+ [(maybe axis-range-component) ":"
+ (maybe axis-range-component)])
+ "]"
+ (many (either "reverse" "noreverse" "writeback"
"nowriteback"))])])
+
+ (set-xyplane-clause
+ ["xyplane" (either "at" "relative") expression])
+
+ (set-zero-clause
+ ["zero" expression])
+
+ (set-zeroaxis-clause
+ [(:info "zeroaxis")
+ (either "zeroaxis" "xzeroaxis" "x2zeroaxis" "yzeroaxis" "y2zeroaxis"
+ "zzeroaxis")
+ (maybe linestyle-spec)])
+
;;; Other commands
- (cd-command
- ["cd" string])
+ (cd-command
+ ["cd" string])
- (call-command
- ["call" string (many expression)])
+ (call-command
+ ["call" string (many expression)])
- (simple-command
- (either "clear" "exit" "quit" "pwd" "refresh" "reread" "reset"
- "shell"))
+ (simple-command
+ (either "clear" "exit" "quit" "pwd" "refresh" "reread" "reset"
+ "shell"))
- (eval-command
- ["eval" expression])
+ (eval-command
+ ["eval" expression])
- (load-command
- ["load" string])
+ (load-command
+ ["load" string])
- (lower-raise-command [(either "lower" "raise") number])
+ (lower-raise-command [(either "lower" "raise") number])
- (pause-command
- ["pause"
- (either
- expression
- ["mouse" (maybe endcondition (maybe "," endcondition))])
- string])
+ (pause-command
+ ["pause"
+ (either
+ expression
+ ["mouse" (maybe endcondition (maybe "," endcondition))])
+ string])
- (endcondition (either "keypress" "button1" "button2" "button3" "close"
"any"))
+ (endcondition (either "keypress" "button1" "button2" "button3"
"close" "any"))
- (save-command
- ["save"
- (either "functions" "variables" "terminal" "set")
- string])
+ (save-command
+ ["save"
+ (either "functions" "variables" "terminal" "set")
+ string])
- (system-command
- ["system" string])
+ (system-command
+ ["system" string])
- (test-command
- ["test"
- (either
- "terminal"
- ["palette"
- (maybe
- (either "rgb" "rbg" "grb" "gbr" "brg" "bgr"))])])
+ (test-command
+ ["test"
+ (either
+ "terminal"
+ ["palette"
+ (maybe
+ (either "rgb" "rbg" "grb" "gbr" "brg" "bgr"))])])
- (undefine-command
- ["undefine" (many name)])
+ (undefine-command
+ ["undefine" (many name)])
+
+ (update-command
+ ["update" string (maybe string)]))
- (update-command
- ["update" string (maybe string)]))
-
;; This is the start symbol
'command))))
@@ -1780,9 +1780,9 @@ list beginning the capture group, and END is the tail of
the
token list just after the end of the capture group.")
-;;;; The pattern matching machine
+;;;; The pattern matching machine
(defun gnuplot-match-pattern (instructions tokens completing-p
- &optional start-symbol)
+ &optional start-symbol)
"Parse TOKENS, setting completions, info and ElDoc information.
This function parses TOKENS by simulating a stack machine with
@@ -1794,216 +1794,216 @@ and `gnuplot-info-at-point' based on the contents of
the stack
there."
(catch 'return
(let ((pc 0) ; Program counter
- ;; Stack of return addresses (return PC), eldoc strings
- ;; (eldoc STRING) and info pages (info STRING)
- (stack '())
- ;; Stack of backtracking records:
- ;; ((STACK TOKENS RESUME-PC CAPTURES PROGRESS) ...)
- (backtrack '())
- ;; Match failure flag, set to `t' to cause backtracking
- (fail nil)
- ;; Flag set by JUMP and CALL instructions to stop PC advance
- (jump nil)
- ;; Record of progress made within (many ...) loops, an alist
- ;; of conses (pc . tokens)
- (progress '()))
+ ;; Stack of return addresses (return PC), eldoc strings
+ ;; (eldoc STRING) and info pages (info STRING)
+ (stack '())
+ ;; Stack of backtracking records:
+ ;; ((STACK TOKENS RESUME-PC CAPTURES PROGRESS) ...)
+ (backtrack '())
+ ;; Match failure flag, set to `t' to cause backtracking
+ (fail nil)
+ ;; Flag set by JUMP and CALL instructions to stop PC advance
+ (jump nil)
+ ;; Record of progress made within (many ...) loops, an alist
+ ;; of conses (pc . tokens)
+ (progress '()))
(with-gnuplot-trace-buffer (erase-buffer))
(when start-symbol ; HACK FIXME
- (let ((look-for `(label ,start-symbol)))
- (while (not (equal (aref instructions pc) look-for))
- (incf pc))
- (incf pc)))
+ (let ((look-for `(label ,start-symbol)))
+ (while (not (equal (aref instructions pc) look-for))
+ (incf pc))
+ (incf pc)))
(setq gnuplot-completions nil
- gnuplot-eldoc nil
- gnuplot-info-at-point nil
- gnuplot-captures nil)
+ gnuplot-eldoc nil
+ gnuplot-info-at-point nil
+ gnuplot-captures nil)
(flet ((advance
- ()
- (pop tokens)
- (if (and (null tokens) (not completing-p))
- (gnuplot-scan-stack stack tokens)))
- (fail () (setq fail t)))
-
- ;; Main loop
- (while t
- (let* ((inst (aref instructions pc))
- (opcode (car inst))
- (token (car tokens))
- (end-of-tokens (null tokens)))
- (gnuplot-trace "%s\t%s\t%s\n" pc inst (and token (gnuplot-token-id
token)))
-
- (case opcode
- ;; (literal LITERAL NO-COMPLETE)
- ((literal)
- (let ((expect (cadr inst))
- (no-complete (caddr inst)))
- (cond (end-of-tokens
- (unless no-complete
- (gnuplot-trace "\tpushing \"%s\" to completions\n"
expect)
- (push expect gnuplot-completions))
- (fail))
-
- ((not (equal (gnuplot-token-id token) expect))
- (fail))
-
- ;; otherwise succeed
- (t (advance)))))
-
- ;; (token-type TYPE)
- ((token-type)
- (let ((expect (cadr inst)))
- (if (or end-of-tokens
- (not (eq (gnuplot-token-type token) expect)))
- (fail)
- (advance))))
-
- ;; (keyword REGEXP NAME): match any token whose ID
- ;; regexp-matches REGEXP, use NAME for completions
- ((keyword)
- (let ((regexp (cadr inst))
- (name (caddr inst)))
- (cond (end-of-tokens
- (gnuplot-trace "\tpushing \"%s\" to completions\n" name)
- (push name gnuplot-completions)
- (fail))
-
- ((not (string-match-p regexp (gnuplot-token-id token)))
- (fail))
-
- ;; otherwise succeed
- (t
- (setf (gnuplot-token-id token) name)
- (advance)))))
-
- ;; (any): match any token
- ((any)
- (if end-of-tokens
- (fail)
- (advance)))
-
- ;; (jump LOCATION): jump to instruction at LOCATION
- ((jump)
- (let ((location (cadr inst)))
- (setq jump location)))
-
- ;; (call LOCATION): push the next instruction as a
- ;; return location and jump
- ((call)
- (let ((location (cadr inst)))
- (push `(return ,(+ pc 1)) stack)
- (setq jump location)))
-
- ;; (return): return to address at topmost RETURN record on
- ;; stack, or stop matching and return if stack is empty
- ((return)
- (while (and stack
- (not (eq (caar stack) 'return)))
- (pop stack))
- (if (not stack)
- ;; Successful match
- (throw 'return (list tokens))
- ;; Otherwise, return to caller
- (let* ((r (pop stack))
- (r-pc (cadr r)))
- (setq jump r-pc))))
-
- ;; (choice LOCATION): push LOCATION onto the stack of
- ;; backtracking points and continue at next instruction
- ((choice)
- (let ((location (cadr inst)))
- (push `(,stack ,tokens ,location ,gnuplot-captures
- ,progress)
- backtrack)))
-
- ;; (commit LOCATION): discard most recent backtrack point
- ;; and jump to LOCATION
- ((commit)
- (let ((location (cadr inst)))
- (if (not backtrack)
- (error "no more backtrack points in commit"))
- (pop backtrack)
- (setq jump location)))
-
- ;; (fail): force this match to fail, going back to most
- ;; recent backtrack point
- ((fail)
- (fail))
-
- ;; (assert): run Lisp code and fail if it returns NIL
- ((assert)
- (let ((form (cadr inst)))
- (if (not (eval form)) (fail))))
-
- ;; (push TYPE VALUE): push an info page or eldoc string
- ;; onto the stack
- ((push)
- (let* ((type (cadr inst))
- (value (caddr inst)))
- (push `(,type ,value ,tokens) stack)))
-
- ;; (pop TYPE): pop something off the stack
- ((pop)
- (let ((type (cadr inst)))
- (if (not (and stack
- (eq (caar stack) type)))
- (error "Expected a %s on the stack but found %s" type
stack))
- (pop stack)))
-
- ;; (save-start NAME): save current token pointer as
- ;; beginning of capture group NAME
- ((save-start)
- (let ((name (cadr inst)))
- (push `(,name ,tokens nil) gnuplot-captures)))
-
- ;; (save-end NAME): save current token pointer as end of
- ;; capture group NAME
- ((save-end)
- (let* ((name (cadr inst))
- (record (assoc name gnuplot-captures)))
- (if (not record)
- (error "gnuplot-match-tokens: no open capture group named
%s" name)
- (setf (caddr record) tokens)
- (gnuplot-debug (gnuplot-dump-captures)))))
-
- ;; (check-progress): make sure not stuck in an infinite loop
- ((check-progress)
- (let ((prev-progress (cdr (assoc pc progress))))
- (if (and prev-progress (eq prev-progress tokens))
- (fail)
- (push (cons pc tokens) progress))))
-
- (t
- (error "bad instruction: %s" inst)))
-
- ;; Increment PC or jump
- (setq pc (or jump (1+ pc))
- jump nil)
-
- ;; Backtrack on failure
- (when fail
- (if (not backtrack) ; Out of backtracking stack: failed
match
- (throw 'return nil)
- (gnuplot-trace "\t*fail*\t%s\n" (length backtrack))
- (gnuplot-debug (gnuplot-dump-backtrack backtrack))
- ;; If we got as far as token-at-point before failing,
- ;; scan the stack for eldoc and info strings
- (when (and end-of-tokens (not completing-p))
- (gnuplot-scan-stack stack tokens))
-
- (destructuring-bind
- (bt-stack bt-tokens bt-pc bt-captures bt-progress)
- (pop backtrack)
- (setq stack bt-stack
- tokens bt-tokens
- pc bt-pc
- gnuplot-captures bt-captures
- progress bt-progress
- fail nil)
- (gnuplot-debug (gnuplot-dump-progress progress)))))))))))
+ ()
+ (pop tokens)
+ (if (and (null tokens) (not completing-p))
+ (gnuplot-scan-stack stack tokens)))
+ (fail () (setq fail t)))
+
+ ;; Main loop
+ (while t
+ (let* ((inst (aref instructions pc))
+ (opcode (car inst))
+ (token (car tokens))
+ (end-of-tokens (null tokens)))
+ (gnuplot-trace "%s\t%s\t%s\n" pc inst (and token (gnuplot-token-id
token)))
+
+ (case opcode
+ ;; (literal LITERAL NO-COMPLETE)
+ ((literal)
+ (let ((expect (cadr inst))
+ (no-complete (caddr inst)))
+ (cond (end-of-tokens
+ (unless no-complete
+ (gnuplot-trace "\tpushing \"%s\" to completions\n"
expect)
+ (push expect gnuplot-completions))
+ (fail))
+
+ ((not (equal (gnuplot-token-id token) expect))
+ (fail))
+
+ ;; otherwise succeed
+ (t (advance)))))
+
+ ;; (token-type TYPE)
+ ((token-type)
+ (let ((expect (cadr inst)))
+ (if (or end-of-tokens
+ (not (eq (gnuplot-token-type token) expect)))
+ (fail)
+ (advance))))
+
+ ;; (keyword REGEXP NAME): match any token whose ID
+ ;; regexp-matches REGEXP, use NAME for completions
+ ((keyword)
+ (let ((regexp (cadr inst))
+ (name (caddr inst)))
+ (cond (end-of-tokens
+ (gnuplot-trace "\tpushing \"%s\" to completions\n"
name)
+ (push name gnuplot-completions)
+ (fail))
+
+ ((not (string-match-p regexp (gnuplot-token-id token)))
+ (fail))
+
+ ;; otherwise succeed
+ (t
+ (setf (gnuplot-token-id token) name)
+ (advance)))))
+
+ ;; (any): match any token
+ ((any)
+ (if end-of-tokens
+ (fail)
+ (advance)))
+
+ ;; (jump LOCATION): jump to instruction at LOCATION
+ ((jump)
+ (let ((location (cadr inst)))
+ (setq jump location)))
+
+ ;; (call LOCATION): push the next instruction as a
+ ;; return location and jump
+ ((call)
+ (let ((location (cadr inst)))
+ (push `(return ,(+ pc 1)) stack)
+ (setq jump location)))
+
+ ;; (return): return to address at topmost RETURN record on
+ ;; stack, or stop matching and return if stack is empty
+ ((return)
+ (while (and stack
+ (not (eq (caar stack) 'return)))
+ (pop stack))
+ (if (not stack)
+ ;; Successful match
+ (throw 'return (list tokens))
+ ;; Otherwise, return to caller
+ (let* ((r (pop stack))
+ (r-pc (cadr r)))
+ (setq jump r-pc))))
+
+ ;; (choice LOCATION): push LOCATION onto the stack of
+ ;; backtracking points and continue at next instruction
+ ((choice)
+ (let ((location (cadr inst)))
+ (push `(,stack ,tokens ,location ,gnuplot-captures
+ ,progress)
+ backtrack)))
+
+ ;; (commit LOCATION): discard most recent backtrack point
+ ;; and jump to LOCATION
+ ((commit)
+ (let ((location (cadr inst)))
+ (if (not backtrack)
+ (error "no more backtrack points in commit"))
+ (pop backtrack)
+ (setq jump location)))
+
+ ;; (fail): force this match to fail, going back to most
+ ;; recent backtrack point
+ ((fail)
+ (fail))
+
+ ;; (assert): run Lisp code and fail if it returns NIL
+ ((assert)
+ (let ((form (cadr inst)))
+ (if (not (eval form)) (fail))))
+
+ ;; (push TYPE VALUE): push an info page or eldoc string
+ ;; onto the stack
+ ((push)
+ (let* ((type (cadr inst))
+ (value (caddr inst)))
+ (push `(,type ,value ,tokens) stack)))
+
+ ;; (pop TYPE): pop something off the stack
+ ((pop)
+ (let ((type (cadr inst)))
+ (if (not (and stack
+ (eq (caar stack) type)))
+ (error "Expected a %s on the stack but found %s" type
stack))
+ (pop stack)))
+
+ ;; (save-start NAME): save current token pointer as
+ ;; beginning of capture group NAME
+ ((save-start)
+ (let ((name (cadr inst)))
+ (push `(,name ,tokens nil) gnuplot-captures)))
+
+ ;; (save-end NAME): save current token pointer as end of
+ ;; capture group NAME
+ ((save-end)
+ (let* ((name (cadr inst))
+ (record (assoc name gnuplot-captures)))
+ (if (not record)
+ (error "gnuplot-match-tokens: no open capture group named
%s" name)
+ (setf (caddr record) tokens)
+ (gnuplot-debug (gnuplot-dump-captures)))))
+
+ ;; (check-progress): make sure not stuck in an infinite loop
+ ((check-progress)
+ (let ((prev-progress (cdr (assoc pc progress))))
+ (if (and prev-progress (eq prev-progress tokens))
+ (fail)
+ (push (cons pc tokens) progress))))
+
+ (t
+ (error "bad instruction: %s" inst)))
+
+ ;; Increment PC or jump
+ (setq pc (or jump (1+ pc))
+ jump nil)
+
+ ;; Backtrack on failure
+ (when fail
+ (if (not backtrack) ; Out of backtracking stack: failed
match
+ (throw 'return nil)
+ (gnuplot-trace "\t*fail*\t%s\n" (length backtrack))
+ (gnuplot-debug (gnuplot-dump-backtrack backtrack))
+ ;; If we got as far as token-at-point before failing,
+ ;; scan the stack for eldoc and info strings
+ (when (and end-of-tokens (not completing-p))
+ (gnuplot-scan-stack stack tokens))
+
+ (destructuring-bind
+ (bt-stack bt-tokens bt-pc bt-captures bt-progress)
+ (pop backtrack)
+ (setq stack bt-stack
+ tokens bt-tokens
+ pc bt-pc
+ gnuplot-captures bt-captures
+ progress bt-progress
+ fail nil)
+ (gnuplot-debug (gnuplot-dump-progress progress)))))))))))
(defun gnuplot-scan-stack (stack tokens)
"Scan STACK for the most recently pushed eldoc and info strings"
@@ -2013,40 +2013,40 @@ there."
(catch 'no-scan
(while (and stack
- (not (and gnuplot-info-at-point gnuplot-eldoc)))
+ (not (and gnuplot-info-at-point gnuplot-eldoc)))
(let* ((item (car stack))
- (type (car item))
- (position (caddr item))) ; must progress by at least one token
- (if (and (memq type '(info eldoc no-scan))
- (not (eq position tokens)))
- (case type
- ((no-scan)
- (throw 'no-scan nil))
-
- ((info)
- (when (not gnuplot-info-at-point)
- (let ((info (cadr item)))
- (setq gnuplot-info-at-point
- (cond
- ((eq info 'first-token)
- (gnuplot-token-id (car position)))
- ((functionp info) (funcall info))
- (t info)))
- (when gnuplot-info-at-point
- (gnuplot-trace "\tset info to \"%s\"\n"
gnuplot-info-at-point)
- (when (and (not gnuplot-eldoc) gnuplot-eldoc-hash)
+ (type (car item))
+ (position (caddr item))) ; must progress by at least one token
+ (if (and (memq type '(info eldoc no-scan))
+ (not (eq position tokens)))
+ (case type
+ ((no-scan)
+ (throw 'no-scan nil))
+
+ ((info)
+ (when (not gnuplot-info-at-point)
+ (let ((info (cadr item)))
+ (setq gnuplot-info-at-point
+ (cond
+ ((eq info 'first-token)
+ (gnuplot-token-id (car position)))
+ ((functionp info) (funcall info))
+ (t info)))
+ (when gnuplot-info-at-point
+ (gnuplot-trace "\tset info to \"%s\"\n"
gnuplot-info-at-point)
+ (when (and (not gnuplot-eldoc) gnuplot-eldoc-hash)
(let ((eldoc
(car (gethash gnuplot-info-at-point
gnuplot-eldoc-hash))))
(when eldoc
- (setq gnuplot-eldoc eldoc)
- (gnuplot-trace "\tand set eldoc to \"%s\"\n"
eldoc))))))))
-
- ((eldoc)
- (when (not gnuplot-eldoc)
- (let ((eldoc (cadr item)))
- (setq gnuplot-eldoc
- (if (functionp eldoc) (funcall eldoc) eldoc))
- (gnuplot-trace "\tset eldoc to \"%s\"\n" gnuplot-eldoc)))))))
+ (setq gnuplot-eldoc eldoc)
+ (gnuplot-trace "\tand set eldoc to \"%s\"\n"
eldoc))))))))
+
+ ((eldoc)
+ (when (not gnuplot-eldoc)
+ (let ((eldoc (cadr item)))
+ (setq gnuplot-eldoc
+ (if (functionp eldoc) (funcall eldoc) eldoc))
+ (gnuplot-trace "\tset eldoc to \"%s\"\n"
gnuplot-eldoc)))))))
(pop stack))))
(defun gnuplot-capture-group (name)
@@ -2054,16 +2054,16 @@ there."
(let ((record (assoc name gnuplot-captures)))
(if (not record) nil
(let ((begin (cadr record))
- (end (caddr record))
- (accum '()))
- (while (and begin (not (eq begin end)))
- (push (pop begin) accum))
- (nreverse accum)))))
+ (end (caddr record))
+ (accum '()))
+ (while (and begin (not (eq begin end)))
+ (push (pop begin) accum))
+ (nreverse accum)))))
(defun gnuplot-capture-group->string (name)
(let ((tokens (gnuplot-capture-group name)))
(and tokens
- (mapconcat 'gnuplot-token-id tokens " "))))
+ (mapconcat 'gnuplot-token-id tokens " "))))
;;; Interface to the matching machine
@@ -2081,18 +2081,18 @@ there."
(defun gnuplot-context-completion-at-point ()
"Return completions of keyword preceding point, using context."
(let* ((end (point))
- (beg
- (save-excursion
- (skip-syntax-backward "w_" (gnuplot-point-at-beginning-of-command))
- (point)))
- (word nil)
- (completions (gnuplot-completions)))
-
+ (beg
+ (save-excursion
+ (skip-syntax-backward "w_" (gnuplot-point-at-beginning-of-command))
+ (point)))
+ (word nil)
+ (completions (gnuplot-completions)))
+
(setq word (buffer-substring beg end)
completions (all-completions word completions))
(if completions
- (list beg end completions)
+ (list beg end completions)
(if (not (equal "" word))
(message "No gnuplot keywords complete '%s'" word)
(message "No completions at point"))
@@ -2101,7 +2101,7 @@ there."
;; Eldoc help
(defun gnuplot-eldoc-function ()
"Return the ElDoc string for the Gnuplot construction at point."
- (gnuplot-parse-at-point nil)
+ (gnuplot-parse-at-point nil)
gnuplot-eldoc)
(defun gnuplot-help-function ()
@@ -2110,8 +2110,8 @@ there."
(gnuplot-parse-at-point nil)
(if (and gnuplot-info-at-point gnuplot-eldoc-hash)
(let ((eldoc
- (cadr (gethash gnuplot-info-at-point gnuplot-eldoc-hash))))
- (if eldoc (message eldoc)))))
+ (cadr (gethash gnuplot-info-at-point gnuplot-eldoc-hash))))
+ (if eldoc (message eldoc)))))
;; Info lookup
(defun gnuplot-info-at-point (&optional query)
@@ -2122,8 +2122,8 @@ there."
(gnuplot-parse-at-point nil))
(if (or query (not gnuplot-info-at-point))
(let ((info
- (info-lookup-interactive-arguments 'symbol)))
- (setq gnuplot-info-at-point (car info))))
+ (info-lookup-interactive-arguments 'symbol)))
+ (setq gnuplot-info-at-point (car info))))
(when gnuplot-info-at-point
(gnuplot--find-info-node gnuplot-info-at-point)))
@@ -2136,7 +2136,7 @@ there."
(gnuplot--adjust-info-display))
-;;; Some context-sensitive hacks
+;;; Some context-sensitive hacks
;; ElDoc strings for "using" specs, which depend on other information
;; from the parsed command
@@ -2190,15 +2190,15 @@ there."
This will fail if the \"using\" clause comes before the \"with\"
clause."
(let ((with-style (gnuplot-capture-group :with-style))
- (3d-p (gnuplot-capture-group :splot-command))
- (column-description nil))
+ (3d-p (gnuplot-capture-group :splot-command))
+ (column-description nil))
(if with-style
- (let ((with-style-string (gnuplot-token-id (car with-style))))
- (setq column-description
- (or (and 3d-p
- (cdr (assoc with-style-string gnuplot-using-3d-eldoc)))
- (cdr (assoc with-style-string gnuplot-using-eldoc))
- "<columns>"))))
+ (let ((with-style-string (gnuplot-token-id (car with-style))))
+ (setq column-description
+ (or (and 3d-p
+ (cdr (assoc with-style-string
gnuplot-using-3d-eldoc)))
+ (cdr (assoc with-style-string gnuplot-using-eldoc))
+ "<columns>"))))
(format "using %s {'format'}" column-description)))
;;; Needed for correctly parsing plot commands
@@ -2211,10 +2211,10 @@ command."
(and start (goto-char start))
(catch 'result
(while
- (search-backward-regexp "reset\\|set\\s-+parametric" (point-min) t)
- (gnuplot-beginning-of-command)
- (cond ((looking-at "reset\\|unset\\s-+parametric") (throw 'result nil))
- ((looking-at "set\\s-+parametric") (throw 'result t))))
+ (search-backward-regexp "reset\\|set\\s-+parametric" (point-min) t)
+ (gnuplot-beginning-of-command)
+ (cond ((looking-at "reset\\|unset\\s-+parametric") (throw 'result nil))
+ ((looking-at "set\\s-+parametric") (throw 'result t))))
nil)))
@@ -2222,4 +2222,8 @@ command."
;;; All done!
(provide 'gnuplot-context)
+;; Local Variables:
+;; indent-tabs-mode: nil
+;; End:
+
;;; gnuplot-context.el ends here
diff --git a/gnuplot-debug-context.el b/gnuplot-debug-context.el
index ae9c114..7d425e1 100644
--- a/gnuplot-debug-context.el
+++ b/gnuplot-debug-context.el
@@ -9,8 +9,8 @@
(mapatoms
(lambda (sym)
(when (string-match
- "gnuplot"
- (symbol-name sym))
+ "gnuplot"
+ (symbol-name sym))
(unintern sym obarray)))))
(defun gnuplot-reload (&optional context)
@@ -21,7 +21,7 @@
(require 'gnuplot)
(when context
(if (= context 16)
- (require 'gnuplot-debug-context))
+ (require 'gnuplot-debug-context))
(require 'gnuplot-context)))
(defsubst gnuplot-recompile ()
@@ -31,13 +31,13 @@
(delete-file "gnuplot-context.elc")
(emacs-lisp-byte-compile)
(load-file "gnuplot-context.elc"))))
-
+
(defun gnuplot-nodebug ()
(interactive)
(when (featurep 'gnuplot-debug-context)
- (let ((savef (symbol-function 'gnuplot-debug-on)))
- (unload-feature 'gnuplot-debug-context)
- (fset 'gnuplot-debug-on savef)))
+ (let ((savef (symbol-function 'gnuplot-debug-on)))
+ (unload-feature 'gnuplot-debug-context)
+ (fset 'gnuplot-debug-on savef)))
(gnuplot-recompile))
(defun gnuplot-debug-on ()
@@ -61,11 +61,11 @@
(with-gnuplot-trace-buffer
(insert "\n-- * backtrace: * --\n")
(dolist (x stack)
- (insert (format "%s\n"
- (if (eq (car x) 'return)
- x
- (list (car x) (cadr x)
- (gnuplot-simplify-tokens (caddr x)))))))
+ (insert (format "%s\n"
+ (if (eq (car x) 'return)
+ x
+ (list (car x) (cadr x)
+ (gnuplot-simplify-tokens (caddr x)))))))
(insert "-- end backtrace --\n"))))
(defun gnuplot-dump-backtrack (backtrack)
@@ -73,7 +73,7 @@
(with-gnuplot-trace-buffer
(insert "\n-- * backtrack records: * --\n")
(dolist (x backtrack)
- (insert (format "%s\t%s\n" (caddr x) (gnuplot-simplify-tokens (cadr
x)))))
+ (insert (format "%s\t%s\n" (caddr x) (gnuplot-simplify-tokens (cadr
x)))))
(insert "-- end backtrack records --\n\n"))))
(defun gnuplot-dump-progress (progress)
@@ -81,7 +81,7 @@
(with-gnuplot-trace-buffer
(insert "\n-- * progress records: * --\n")
(dolist (x progress)
- (insert (format "%s\t%s\n" (car x) (gnuplot-simplify-tokens (cdr x)))))
+ (insert (format "%s\t%s\n" (car x) (gnuplot-simplify-tokens (cdr
x)))))
(insert "-- end progress records --\n\n"))))
(defun gnuplot-dump-code (&optional inst)
@@ -100,16 +100,22 @@
(with-gnuplot-trace-buffer
(insert "\n-- * capture groups: * --\n")
(loop for c on gnuplot-captures
- do
- (let ((name (caar c))
- (gnuplot-captures c))
- (insert (format "%s\t%s\n"
- name
- (mapconcat 'gnuplot-token-id
- (gnuplot-capture-group name)
- " ")))))
+ do
+ (let ((name (caar c))
+ (gnuplot-captures c))
+ (insert (format "%s\t%s\n"
+ name
+ (mapconcat 'gnuplot-token-id
+ (gnuplot-capture-group name)
+ " ")))))
(insert "-- end capture groups --\n\n"))))
(provide 'gnuplot-debug-context)
(gnuplot-debug-on)
+
+;; Local Variables:
+;; indent-tabs-mode: nil
+;; End:
+
+;;; gnuplot-debug-context.el ends here
diff --git a/gnuplot-gui.el b/gnuplot-gui.el
index 02960b0..669ec7f 100644
--- a/gnuplot-gui.el
+++ b/gnuplot-gui.el
@@ -82,8 +82,8 @@
(eval-and-compile
(condition-case ()
(progn
- (require 'widget)
- (require 'wid-edit))
+ (require 'widget)
+ (require 'wid-edit))
(error nil)))
(require 'cl)
(eval-when-compile ; suppress some compiler warnings
@@ -102,14 +102,14 @@
"Return a list of substrings of STRING which are separated by PATTERN.
If PATTERN is omitted, it defaults to \"[ \\f\\t\\n\\r\\v]+\"."
(or pattern
- (setq pattern "[ \f\t\n\r\v]+"))
+ (setq pattern "[ \f\t\n\r\v]+"))
;; The FSF version of this function takes care not to cons in case
;; of infloop. Maybe we should synch?
(let (parts (start 0))
- (while (string-match pattern string start)
- (setq parts (cons (substring string start (match-beginning 0)) parts)
- start (match-end 0)))
- (nreverse (cons (substring string start) parts)))) ))
+ (while (string-match pattern string start)
+ (setq parts (cons (substring string start (match-beginning 0)) parts)
+ start (match-end 0)))
+ (nreverse (cons (substring string start) parts)))) ))
@@ -130,14 +130,14 @@ This would be done after menu insertion of Gnuplot
commands."
"Frame used to hold the buffer for setting options.")
(defcustom gnuplot-gui-frame-plist
'(height 18 width 65 border-width 0
- user-position t top 150 left 150
- internal-border-width 0 unsplittable t
- default-toolbar-visible-p nil has-modeline-p nil
- menubar-visible-p nil)
+ user-position t top 150 left 150
+ internal-border-width 0 unsplittable t
+ default-toolbar-visible-p nil has-modeline-p nil
+ menubar-visible-p nil)
"Frame plist for the input run-time display frame in XEmacs."
:type '(repeat (group :inline t
- (symbol :tag "Property")
- (sexp :tag "Value")))
+ (symbol :tag "Property")
+ (sexp :tag "Value")))
:group 'gnuplot-gui)
(defcustom gnuplot-gui-frame-parameters
'((height . 18)
@@ -183,7 +183,7 @@ the first entry in the list be a blank string."
(defun gnuplot-this-word ()
"Return the word under point."
(let ((begin (save-excursion (beginning-of-line) (point-marker)))
- (end (save-excursion (end-of-line) (point-marker))))
+ (end (save-excursion (end-of-line) (point-marker))))
(save-excursion
(or (looking-at "\\<") (= (current-column) 0) (forward-word -1))
(if (> (point) begin) (setq begin (point-marker)))
@@ -224,131 +224,131 @@ the first entry in the list be a blank string."
See the doc-string for `gnuplot-gui-all-types'.")
(setq gnuplot-gui-terminal-types
(list (cons "aifm"
- '(("COLOR" 'list " " "monochrome" "gray" "color")
- ("FONTNAME" 'list " " gnuplot-gui-fontname-list)
- ("FONTSIZE" 'fontsize " ")))
- (cons "cgm"
- '(("MODE" 'list " " "landscape" "portrait" "default")
- ("COLOR" 'list " " "color" "monochrome")
- ("ROTATION" 'list " " "rotate" "norotate")
- ("WIDTH" 'number " " "width")
- ("LINEWIDTH" 'number " " "linewidth")
- ("FONTNAME" 'list " " "\"Arial\"" "\"Arial Italic\""
- "\"Arial Bold\"" "\"Arial Bold Italic\""
- "\"Times Roman\"" "\"Times Roman Italic\""
- "\"Times Roman Bold\"" "\"Times Roman Bold Italic\""
- "\"Helvetica\"" "\"Roman\"")
- ("FONTSIZE" 'fontsize " ")))
- (cons "corel"
- '(("COLOR" 'list " " "default" "color"
"monochrome")
- ("FONTNAME" 'list " " "\"SwitzerlandLight\""
- "\"Helvetica\"" "\"Times-Roman\"")
- ("FONTSIZE " 'number " ")
- ("X-SIZE " 'number " ")
- ("Y-SIZE " 'number " ")
- ("LINEWIDTH" 'number " ")))
- (cons "dumb"
- '(("LINEFEED" 'list " " "feed" "nofeed")
- ("X-SIZE" 'number " ")
- ("Y-SIZE" 'number " ")))
- (cons "emf"
- '(("COLOR" 'list " " "color" "monochrome")
- ("LINE" 'list " " "solid" "dashed")
- ("FONTNAME" 'string " ")
- ("FONTSIZE" 'number " ")))
- (cons "emtex"
- '(("FONTNAME" 'list " " "courier" "roman")
- ("FONTSIZE" 'fontsize " ")))
- (cons "fig"
- '(("COLOR" 'list " " "color" "monochrome")
- ("FRAMESIZE" 'list " " "small" "big")
- ("POINTSMAX" 'number " " "pointsmax")
- ("ORIENTATION" 'list " " "landscape" "portrait")
- ("UNITS" 'list " " "metric" "inches")
- ("FONT SIZE" 'number " " "fontsize")
- ("SIZE" 'pair (" " . " ") "size")
- ("LINE THICKNESS" 'number " " "thickness")
- ("LAYER DEPTH" 'number " " "depth")))
- (cons "hp500c"
- '(("RESOLUTION" 'list " " "75" "100" "150" "300")
- ("COMPRESSION" 'list " " "rle" "tiff")))
- (cons "hpgl"
- '(("PENS" 'number " ")
- ("EJECT" 'list " " "eject")))
- (cons "hpdj"
- '(("RESOLUTION" 'list " " "75" "100" "150" "300")))
- (cons "hpljii"
- '(("RESOLUTION" 'list " " "75" "100" "150" "300")))
- (cons "hppj"
- '(("FONT" 'list " " "FNT9X17" "FNT5X9"
"FNT13X25")))
- (cons "imagen"
- '(("FONT SIZE" 'number " ")
- ("LAYOUT" 'list " " "portrait" "landscape")
- ("NUMBER OF GRAPHS" 'range (" " . " ") ",")))
- (cons "gpic"
- '(("X ORIGIN" 'number " ")
- ("Y ORIGIN" 'number " " ",")))
- (cons "latex"
- '(("FONTNAME" 'list " " "courier" "roman")
- ("FONTSIZE" 'fontsize " ")))
- (cons "mif"
- '(("COLOUR" 'list " " "colour" "monochrome")
- ("LINETYPE" 'list " " "polyline" "vectors")))
- (cons "nec-cp6"
- '(("MODE" 'list " " "monochrome" "colour"
"draft")))
- (cons "pbm"
- '(("SIZE" 'list " " "small" "medium" "large")
- ("COLOR" 'list " " "monochrome" "gray" "color")))
- (cons "pcl5L"
- '(("MODE" 'list " " "landscape" "portrait")
- ("FONTNAME" 'list " " "stick" "univers" "cg_times")
- ("FONTSIZE" 'fontsize " ")))
- (cons "png"
- '(("SIZE" 'list " " "small" "medium" "large")
- ("COLOR" 'list " " "monochrome" "gray" "color")))
- (cons "postscript"
- '(("MODE" 'list " " "landscape" "portrait" "eps"
"default")
- ("ENHANCED" 'list " " "enhanced" "noenhanced")
- ("COLOR" 'list " " "color" "monochrome")
- ("SOLID" 'list " " "solid" "dashed")
- ("DUPLEXING" 'list " " "defaultplex" "simplex" "duplex")
- ("FONTNAME" 'list " " gnuplot-gui-fontname-list)
- ("FONTSIZE" 'fontsize " ")))
- (cons "pslatex"
- '(("COLOR" 'list " " "monochrome" "color")
- ("DASHED" 'list " " "dashed")
- ("ROTATION" 'list " " "rotate" "norotate")
- ("AUXFILE" 'list " " "auxfile")))
- (cons "pstex"
- '(("COLOR" 'list " " "monochrome" "color")
- ("DASHED" 'list " " "dashed")
- ("ROTATION" 'list " " "rotate" "norotate")
- ("AUXFILE" 'list " " "auxfile")))
- (cons "pstricks"
- '(("HACK TEXT" 'list " " "hacktext" "nohacktext")
- ("PLOT SCALING" 'list " " "nounit" "unit")))
- (cons "regis"
- '(("COLOR DEPTH" 'list "4" "16")))
- (cons "tgif"
- '(("LAYOUT" 'list " " "portrait" "landscape")
- ("NUMBER OF GRAPHS" 'range (" " . " ") ",")
- ("LINE TYPE" 'list " " "solid" "dashed")
- ("FONTNAME" 'list " " gnuplot-gui-fontname-list)
- ("FONTSIZE" 'fontsize " ")))
- (cons "tpic"
- '(("POINTSIZE" 'number " ")
- ("LINEWIDTH" 'number " ")
- ("INTERVAL " 'number " ")))
- (cons "vgagl" ; for pm3d patch (also persist, raise
in x11) <MT>
- '(("BACKGROUND" 'position " " "background" 3)
- ("INTERPOLATION" 'list " " "uniform" "interpolate")
- ("DUMP" 'file " ")
- ("MODE" 'string " " "")))
- (cons "x11"
- '(("RESET" 'list " " "reset")
- ("TERMINAL NUMBER" 'number " ")
- ("PERSIST" 'list " " "persist" "nopersist")
- ("RAISE" 'list " " "raise" "noraise"))) ))
+ '(("COLOR" 'list " " "monochrome" "gray" "color")
+ ("FONTNAME" 'list " " gnuplot-gui-fontname-list)
+ ("FONTSIZE" 'fontsize " ")))
+ (cons "cgm"
+ '(("MODE" 'list " " "landscape" "portrait" "default")
+ ("COLOR" 'list " " "color" "monochrome")
+ ("ROTATION" 'list " " "rotate" "norotate")
+ ("WIDTH" 'number " " "width")
+ ("LINEWIDTH" 'number " " "linewidth")
+ ("FONTNAME" 'list " " "\"Arial\"" "\"Arial Italic\""
+ "\"Arial Bold\"" "\"Arial Bold Italic\""
+ "\"Times Roman\"" "\"Times Roman Italic\""
+ "\"Times Roman Bold\"" "\"Times Roman Bold Italic\""
+ "\"Helvetica\"" "\"Roman\"")
+ ("FONTSIZE" 'fontsize " ")))
+ (cons "corel"
+ '(("COLOR" 'list " " "default" "color"
"monochrome")
+ ("FONTNAME" 'list " " "\"SwitzerlandLight\""
+ "\"Helvetica\"" "\"Times-Roman\"")
+ ("FONTSIZE " 'number " ")
+ ("X-SIZE " 'number " ")
+ ("Y-SIZE " 'number " ")
+ ("LINEWIDTH" 'number " ")))
+ (cons "dumb"
+ '(("LINEFEED" 'list " " "feed" "nofeed")
+ ("X-SIZE" 'number " ")
+ ("Y-SIZE" 'number " ")))
+ (cons "emf"
+ '(("COLOR" 'list " " "color" "monochrome")
+ ("LINE" 'list " " "solid" "dashed")
+ ("FONTNAME" 'string " ")
+ ("FONTSIZE" 'number " ")))
+ (cons "emtex"
+ '(("FONTNAME" 'list " " "courier" "roman")
+ ("FONTSIZE" 'fontsize " ")))
+ (cons "fig"
+ '(("COLOR" 'list " " "color" "monochrome")
+ ("FRAMESIZE" 'list " " "small" "big")
+ ("POINTSMAX" 'number " " "pointsmax")
+ ("ORIENTATION" 'list " " "landscape" "portrait")
+ ("UNITS" 'list " " "metric" "inches")
+ ("FONT SIZE" 'number " " "fontsize")
+ ("SIZE" 'pair (" " . " ") "size")
+ ("LINE THICKNESS" 'number " " "thickness")
+ ("LAYER DEPTH" 'number " " "depth")))
+ (cons "hp500c"
+ '(("RESOLUTION" 'list " " "75" "100" "150" "300")
+ ("COMPRESSION" 'list " " "rle" "tiff")))
+ (cons "hpgl"
+ '(("PENS" 'number " ")
+ ("EJECT" 'list " " "eject")))
+ (cons "hpdj"
+ '(("RESOLUTION" 'list " " "75" "100" "150" "300")))
+ (cons "hpljii"
+ '(("RESOLUTION" 'list " " "75" "100" "150" "300")))
+ (cons "hppj"
+ '(("FONT" 'list " " "FNT9X17" "FNT5X9"
"FNT13X25")))
+ (cons "imagen"
+ '(("FONT SIZE" 'number " ")
+ ("LAYOUT" 'list " " "portrait" "landscape")
+ ("NUMBER OF GRAPHS" 'range (" " . " ") ",")))
+ (cons "gpic"
+ '(("X ORIGIN" 'number " ")
+ ("Y ORIGIN" 'number " " ",")))
+ (cons "latex"
+ '(("FONTNAME" 'list " " "courier" "roman")
+ ("FONTSIZE" 'fontsize " ")))
+ (cons "mif"
+ '(("COLOUR" 'list " " "colour" "monochrome")
+ ("LINETYPE" 'list " " "polyline" "vectors")))
+ (cons "nec-cp6"
+ '(("MODE" 'list " " "monochrome" "colour"
"draft")))
+ (cons "pbm"
+ '(("SIZE" 'list " " "small" "medium" "large")
+ ("COLOR" 'list " " "monochrome" "gray" "color")))
+ (cons "pcl5L"
+ '(("MODE" 'list " " "landscape" "portrait")
+ ("FONTNAME" 'list " " "stick" "univers" "cg_times")
+ ("FONTSIZE" 'fontsize " ")))
+ (cons "png"
+ '(("SIZE" 'list " " "small" "medium" "large")
+ ("COLOR" 'list " " "monochrome" "gray" "color")))
+ (cons "postscript"
+ '(("MODE" 'list " " "landscape" "portrait" "eps"
"default")
+ ("ENHANCED" 'list " " "enhanced" "noenhanced")
+ ("COLOR" 'list " " "color" "monochrome")
+ ("SOLID" 'list " " "solid" "dashed")
+ ("DUPLEXING" 'list " " "defaultplex" "simplex" "duplex")
+ ("FONTNAME" 'list " " gnuplot-gui-fontname-list)
+ ("FONTSIZE" 'fontsize " ")))
+ (cons "pslatex"
+ '(("COLOR" 'list " " "monochrome" "color")
+ ("DASHED" 'list " " "dashed")
+ ("ROTATION" 'list " " "rotate" "norotate")
+ ("AUXFILE" 'list " " "auxfile")))
+ (cons "pstex"
+ '(("COLOR" 'list " " "monochrome" "color")
+ ("DASHED" 'list " " "dashed")
+ ("ROTATION" 'list " " "rotate" "norotate")
+ ("AUXFILE" 'list " " "auxfile")))
+ (cons "pstricks"
+ '(("HACK TEXT" 'list " " "hacktext" "nohacktext")
+ ("PLOT SCALING" 'list " " "nounit" "unit")))
+ (cons "regis"
+ '(("COLOR DEPTH" 'list "4" "16")))
+ (cons "tgif"
+ '(("LAYOUT" 'list " " "portrait" "landscape")
+ ("NUMBER OF GRAPHS" 'range (" " . " ") ",")
+ ("LINE TYPE" 'list " " "solid" "dashed")
+ ("FONTNAME" 'list " " gnuplot-gui-fontname-list)
+ ("FONTSIZE" 'fontsize " ")))
+ (cons "tpic"
+ '(("POINTSIZE" 'number " ")
+ ("LINEWIDTH" 'number " ")
+ ("INTERVAL " 'number " ")))
+ (cons "vgagl" ; for pm3d patch (also persist, raise
in x11) <MT>
+ '(("BACKGROUND" 'position " " "background" 3)
+ ("INTERPOLATION" 'list " " "uniform" "interpolate")
+ ("DUMP" 'file " ")
+ ("MODE" 'string " " "")))
+ (cons "x11"
+ '(("RESET" 'list " " "reset")
+ ("TERMINAL NUMBER" 'number " ")
+ ("PERSIST" 'list " " "persist" "nopersist")
+ ("RAISE" 'list " " "raise" "noraise"))) ))
(defvar gnuplot-gui-terminal-list nil)
(setq gnuplot-gui-terminal-list
@@ -359,302 +359,302 @@ See the doc-string for `gnuplot-gui-all-types'.")
See the doc-string for `gnuplot-gui-all-types'.")
(setq gnuplot-gui-set-types
(list (cons "angles"
- '(("UNITS" 'list " " "degrees" "radians")))
- (cons "arrow"
- '(("TAG" 'tag " ")
- ("FROM" 'position " " "from" 3)
- ("TO" 'position " " "to" 3)
- ("HEAD" 'list " " "head" "nohead")
- ("LINESTYLE" 'number " " "ls")
- ("LINETYPE " 'number " " "lt")
- ("LINEWIDTH" 'number " " "lw")))
- (cons "noarrow"
- '(("TAG" 'tag " ")))
- (cons "autoscale"
- '(("AXIS" 'list " " "x" "y" "z" "x2" "y2" "xy"
- "xmin" "ymin" "zmin" "x2min" "y2min" "xymin"
- "xmax" "ymax" "zmax" "x2max" "y2max" "xymax")))
- (cons "noautoscale"
- '(("AXIS" 'list " " "x" "y" "z" "x2" "y2" "xy"
- "xmin" "ymin" "zmin" "x2min" "y2min" "xymin"
- "xmax" "ymax" "zmax" "x2max" "y2max" "xymax")))
- (cons "bar"
- '(("SIZE" 'list " " "small" "large")))
- (cons "border"
- '(("BORDER CODE" 'number " ")
- ("LINE STYLE" 'list " " "lines"
- "dots" "points" "linespoints")
- ("LINESTYLE" 'number " " "ls")
- ("LINETYPE" 'number " " "lt")
- ("LINEWIDTH" 'number " " "lw")
- ))
- (cons "boxwidth"
- '(("WIDTH" 'number " ")))
- (cons "clabel"
- '(("FORMAT" 'format " ")))
- (cons "clip"
- '(("CLIP TYPE" 'list " " "points" "one" "two")))
- (cons "noclip"
- '(("CLIP TYPE" 'list " " "points" "one" "two")))
- ;;(cons "cntrparam"
- ;; '(("INTERPOLATION" 'list " " "linear" "cubicspline"
"bspline")
- ;; ("POINTS" 'number " " "points")
- ;; ("ORDER" 'number " " "order")))
- (cons "contour"
- '(("WHERE" 'list " " "base" "surface" "both")))
- (cons "dgrid3d"
- '(("ROW,COLUMN,NORM" 'position " " "" 3)))
- (cons "encoding"
- '(("ENCODING" 'list " " "default" "iso_8859_1"
- "cp850" "cp437")))
- (cons "format"
- '(("AXIS" 'list " " "x" "y" "z" "xy" "x2" "y2")
- ("FORMAT" 'format " ")))
- (cons "dummy"
- '(("VAR 1" 'string " " "")
- ("VAR 2" 'string " " ",")))
- (cons "grid"
- '(("XTICS" 'list " " "xtics" "mxtics" "noxtics" "nomxtics")
- ("YTICS" 'list " " "ytics" "mytics" "noytics" "nomytics")
- ("ZTICS" 'list " " "ztics" "mztics" "noztics" "nomztics")
- ("X2TICS" 'list " " "x2tics" "mx2tics" "nox2tics"
"nomx2tics")
- ("Y2TICS" 'list " " "y2tics" "my2tics" "noy2tics"
"nomy2tics")
- ("POLAR" 'number " " "polar")
- ("MAJOR LINETYPE" 'number " ")
- ("MINOR LINETYPE" 'number " ")))
- (cons "hidden3d"
- '(("ALGORITHM" 'list " " "defaults"
- "offset"
- "nooffset"
- ;;"trianglepattern # bitpattern between 0 and 7"
- "trianglepattern 0" "trianglepattern 1"
- "trianglepattern 2" "trianglepattern 3"
- "trianglepattern 4" "trianglepattern 5"
- "trianglepattern 6" "trianglepattern 7"
- ;;"undefined # level between 0 and 3"
- "undefined 0" "undefined 1" "undefined 2" "undefined 3"
- "noundefined" "altdiagonal" "noaltdiagonal"
- "bentover" "nobentover")))
- (cons "historysize"
- '(("SIZE" 'number " ")))
- (cons "isosamples"
- '(("ISO_U LINES" 'number " ")
- ("ISO_V LINES" 'number " " ",")))
- (cons "key"
- '(("LOCATION" 'list " " "left" "right" "top" "bottom"
- "outside" "below")
- ("POSITION" 'position " " "" 3)
- ("JUSTIFICATION" 'list " " "Left" "Right")
- ("REVERSE" 'list " " "reverse" "noreverse")
- ("SAMPLE LENGTH" 'number " " "samplen")
- ("SPACING" 'number " " "spacing")
- ("WIDTH" 'number " " "width")
- ("TITLE" 'string " " "title ")
- ("BOX LINETYPE" 'number " " "box") ;; linetype data
- ("NOBOX" 'list " " "nobox")))
- (cons "label"
- '(("TAG" 'tag " ")
- ("LABEL TEXT" 'string " ")
- ("POSITION" 'position " " "at" 3)
- ;; first, second, graph, screen
- ("JUSTIFICATION" 'list " " "left" "right" "center")
- ("ROTATE" 'list " " "rotate" "norotate")
- ("FONT" 'string " " "font"))) ;; font "name,size"
- (cons "nolabel"
- '(("TAG" 'tag " ")))
- (cons "linestyle"
- '(("TAG " 'tag " ")
- ("LINE STYLE" 'list " " "boxerrorbars" "boxes"
- "boxxyerrorbars" "candlesticks" "dots"
- "financebars" "fsteps" "histeps" "impulses"
- "lines" "linespoints" "points" "steps" "vector"
- "xerrorbars" "xyerrorbars" "yerrorbars")
- ("LINETYPE " 'number " " "lt")
- ("LINEWIDTH" 'number " " "lw")
- ("POINTTYPE" 'number " " "pt")
- ("POINTSIZE" 'number " " "ps")))
- (cons "locale"
- '(("LOCALE" 'string " ")))
- (cons "logscale"
- '(("AXIS" 'list " " "x" "y" "z" "xy" "xz" "yz" "xyz"
- "x2" "y2")
- ("BASE" 'number " ")))
- (cons "nologscale"
- '(("AXIS" 'list " " "x" "y" "z" "xy" "xz" "yz" "xyz"
- "x2" "y2")))
- (cons "mapping"
- '(("COORDINATE SYSTEM" 'list " " "cartesian" "spherical"
- "cylindrical")))
- ; _margin
- (cons "bmargin"
- '(("BOTTOM MARGIN" 'number " ")))
- (cons "lmargin"
- '(("LEFT MARGIN" 'number " ")))
- (cons "rmargin"
- '(("RIGHT MARGIN" 'number " ")))
- (cons "tmargin"
- '(("TOP MARGIN" 'number " ")))
-
- (cons "missing"
- '(("CHARACTER" 'string " " 1)))
- ; m_tics
- (cons "mxtics" gnuplot-gui-mtics-list)
- (cons "mytics" gnuplot-gui-mtics-list)
- (cons "mztics" gnuplot-gui-mtics-list)
- (cons "mx2tics" gnuplot-gui-mtics-list)
- (cons "my2tics" gnuplot-gui-mtics-list)
-
- ; pm3d additions <MT>
- (cons "mouse"
- '(("DOUBLECLICK" 'number " " "doubleclick")
- ("ZOOM" 'list " " "zoomcoordinates"
"nozoomcoordinates")
- ("POLAR" 'list " " "polarcoordinates"
"nopolarcoordinates")
- ("FORMAT" 'string " " "format")
- ("CLIPBOARDFORMAT" 'string " " "clipboardformat")
- ("MOUSEFORMAT" 'string " " "mouseformat")
- ("LABELS" 'list " " "labels" "nolabels")
- ("LABELOPTIONS" 'string " " "labeloptions")
- ("ZOOMJUMP" 'list " " "zoomjump" "nozoomjump")
- ("VERBOSE" 'list " " "verbose" "noverbose")))
- (cons "palette"
- '(("COLOR" 'list " " "gray" "color")
- ("RGBFORMULAE" 'position " " "rgbformulae" 3)
- ("PARITY" 'list " " "positive" "negative")
- ("FORMULAE" 'list " " "nops_allcF" "ps_allcF")
- ("MAXCOLORS" 'number " ")
- ("COLOR_BOX" 'list " " "nocb" "cbdefault" "cbuser")
- ("ORIENTATION" 'list " " "cbvertical" "cbhorizontal")
- ("ORIGIN" 'position " " "origin" 2)
- ("SIZE" 'position " " "size" 2)
- ("BORDER" 'number " ")
- ("NOBORDER" 'list " " "bdefault" "noborder")))
- (cons "pm3d"
- '(("AT" 'list* " " "b" "s" "t" "bs" "bt" "st" "bst")
- ("SCANS" 'list " " "scansautomatic" "scansforward"
"scansbackward")
- ("FLUSH" 'list* " " "begin" "center" "end")
- ("CLIP" 'list " " "clip1in" "clip4in")
- ("ZRANGE" 'range (" " . " ") ":")
- ("HIDDEN3D" 'number " ")
- ("NOHIDDEN3D" 'list " " "nohidden3d")
- ("FILLING" 'list " " "transparent" "solid")
- ("MAP" 'list " " "map")))
-
- (cons "offsets"
- '(("LEFT " 'number " ")
- ("RIGHT " 'number " " ",")
- ("TOP " 'number " " ",")
- ("BOTTOM" 'number " " ",")))
- (cons "origin"
- '(("X ORIGIN" 'number " ")
- ("Y ORIGIN" 'number " " ",")))
- (cons "output"
- '(("FILENAME" 'file " ")))
- (cons "pointsize"
- '(("MULTIPLIER" 'number " ")))
- (cons "samples"
- '(("2D PLOT" 'number " ")
- ("3D PLOT" 'number " " ",")))
- (cons "size"
- '(("ASPECT" 'list " " "square" "nosquare"
- "ratio" "noratio")
- ("X-SCALE OR RATIO" 'number " ")
- ("Y-SCALE" 'number " " ",")))
- (cons "style"
- '(("DATA TYPE" 'list " " "data" "function")
- ("PLOT STYLE" 'list " " "boxerrorbars" "boxes"
- "boxxyerrorbars" "candlesticks" "dots"
- "financebars" "fsteps" "histeps" "impulses"
- "lines" "linespoints" "points" "steps" "vector"
- "xerrorbars" "xyerrorbars" "yerrorbars")))
- (cons "terminal"
- '(("TERMINAL TYPE" 'list " " gnuplot-gui-terminal-list)))
- (cons "tics"
- '(("DIRECTION" 'list " " "in" "out")))
- (cons "ticslevel"
- '(("RELATIVE HEIGHT" 'number " ")))
- (cons "ticscale"
- '(("MAJOR" 'number " ")
- ("MINOR" 'number " ")))
- (cons "timestamp"
- '(("FORMAT STRING" 'format " ")
- ("WHERE" 'list " " "top" "bottom")
- ("ROTATE" 'list " " "rotate" "norotate")
- ("X-OFFSET" 'number " ")
- ("Y-OFFSET" 'number " " ",")
- ("FONTNAME" 'list " " gnuplot-gui-fontname-list)))
- (cons "timefmt"
- '(("FORMAT STRING" 'string " ")))
- (cons "title"
- '(("TITLE" 'string " ")))
- (cons "view"
- '(("X-ROTATION" 'number " ")
- ("Z-ROTATION" 'number " " ",")
- ("SCALE" 'number " " ",")
- ("Z-SCALE" 'number " " ",")))
- ;; ("SCALE" 'position " " "," 4)
- ; _data
- (cons "xdata" gnuplot-gui-data-list)
- (cons "ydata" gnuplot-gui-data-list)
- (cons "zdata" gnuplot-gui-data-list)
- (cons "x2data" gnuplot-gui-data-list)
- (cons "y2data" gnuplot-gui-data-list)
- ; _label
- (cons "xlabel" gnuplot-gui-label-list)
- (cons "ylabel" gnuplot-gui-label-list)
- (cons "zlabel" gnuplot-gui-label-list)
- (cons "x2label" gnuplot-gui-label-list)
- (cons "y2label" gnuplot-gui-label-list)
- ; _range, note that the [] syntax for
- ; the writeback argument is
- ; not properly supported
- (cons "xrange" gnuplot-gui-range-list)
- (cons "yrange" gnuplot-gui-range-list)
- (cons "zrange" gnuplot-gui-range-list)
- (cons "x2range" gnuplot-gui-range-list)
- (cons "y2range" gnuplot-gui-range-list)
- (cons "trange" gnuplot-gui-range-list)
- (cons "rrange" gnuplot-gui-range-list)
- (cons "urange" gnuplot-gui-range-list)
- (cons "vrange" gnuplot-gui-range-list)
- ; _tics
- (cons "xtics" gnuplot-gui-tics-list)
- (cons "ytics" gnuplot-gui-tics-list)
- (cons "ztics" gnuplot-gui-tics-list)
- (cons "x2tics" gnuplot-gui-tics-list)
- (cons "y2tics" gnuplot-gui-tics-list)
- ; zeroaxis
- (cons "zeroaxis" gnuplot-gui-zeroaxis-list)
- (cons "xzeroaxis" gnuplot-gui-zeroaxis-list)
- (cons "yzeroaxis" gnuplot-gui-zeroaxis-list)
- (cons "y2zeroaxis" gnuplot-gui-zeroaxis-list)
- (cons "x2zeroaxis" gnuplot-gui-zeroaxis-list)
-
- (cons "zero"
- '(("THRESHOLD" 'number " ")))
- ))
+ '(("UNITS" 'list " " "degrees" "radians")))
+ (cons "arrow"
+ '(("TAG" 'tag " ")
+ ("FROM" 'position " " "from" 3)
+ ("TO" 'position " " "to" 3)
+ ("HEAD" 'list " " "head" "nohead")
+ ("LINESTYLE" 'number " " "ls")
+ ("LINETYPE " 'number " " "lt")
+ ("LINEWIDTH" 'number " " "lw")))
+ (cons "noarrow"
+ '(("TAG" 'tag " ")))
+ (cons "autoscale"
+ '(("AXIS" 'list " " "x" "y" "z" "x2" "y2" "xy"
+ "xmin" "ymin" "zmin" "x2min" "y2min" "xymin"
+ "xmax" "ymax" "zmax" "x2max" "y2max" "xymax")))
+ (cons "noautoscale"
+ '(("AXIS" 'list " " "x" "y" "z" "x2" "y2" "xy"
+ "xmin" "ymin" "zmin" "x2min" "y2min" "xymin"
+ "xmax" "ymax" "zmax" "x2max" "y2max" "xymax")))
+ (cons "bar"
+ '(("SIZE" 'list " " "small" "large")))
+ (cons "border"
+ '(("BORDER CODE" 'number " ")
+ ("LINE STYLE" 'list " " "lines"
+ "dots" "points" "linespoints")
+ ("LINESTYLE" 'number " " "ls")
+ ("LINETYPE" 'number " " "lt")
+ ("LINEWIDTH" 'number " " "lw")
+ ))
+ (cons "boxwidth"
+ '(("WIDTH" 'number " ")))
+ (cons "clabel"
+ '(("FORMAT" 'format " ")))
+ (cons "clip"
+ '(("CLIP TYPE" 'list " " "points" "one" "two")))
+ (cons "noclip"
+ '(("CLIP TYPE" 'list " " "points" "one" "two")))
+ ;;(cons "cntrparam"
+ ;; '(("INTERPOLATION" 'list " " "linear" "cubicspline" "bspline")
+ ;; ("POINTS" 'number " " "points")
+ ;; ("ORDER" 'number " " "order")))
+ (cons "contour"
+ '(("WHERE" 'list " " "base" "surface" "both")))
+ (cons "dgrid3d"
+ '(("ROW,COLUMN,NORM" 'position " " "" 3)))
+ (cons "encoding"
+ '(("ENCODING" 'list " " "default" "iso_8859_1"
+ "cp850" "cp437")))
+ (cons "format"
+ '(("AXIS" 'list " " "x" "y" "z" "xy" "x2" "y2")
+ ("FORMAT" 'format " ")))
+ (cons "dummy"
+ '(("VAR 1" 'string " " "")
+ ("VAR 2" 'string " " ",")))
+ (cons "grid"
+ '(("XTICS" 'list " " "xtics" "mxtics" "noxtics" "nomxtics")
+ ("YTICS" 'list " " "ytics" "mytics" "noytics" "nomytics")
+ ("ZTICS" 'list " " "ztics" "mztics" "noztics" "nomztics")
+ ("X2TICS" 'list " " "x2tics" "mx2tics" "nox2tics"
"nomx2tics")
+ ("Y2TICS" 'list " " "y2tics" "my2tics" "noy2tics"
"nomy2tics")
+ ("POLAR" 'number " " "polar")
+ ("MAJOR LINETYPE" 'number " ")
+ ("MINOR LINETYPE" 'number " ")))
+ (cons "hidden3d"
+ '(("ALGORITHM" 'list " " "defaults"
+ "offset"
+ "nooffset"
+ ;;"trianglepattern # bitpattern between 0 and 7"
+ "trianglepattern 0" "trianglepattern 1"
+ "trianglepattern 2" "trianglepattern 3"
+ "trianglepattern 4" "trianglepattern 5"
+ "trianglepattern 6" "trianglepattern 7"
+ ;;"undefined # level between 0 and 3"
+ "undefined 0" "undefined 1" "undefined 2" "undefined 3"
+ "noundefined" "altdiagonal" "noaltdiagonal"
+ "bentover" "nobentover")))
+ (cons "historysize"
+ '(("SIZE" 'number " ")))
+ (cons "isosamples"
+ '(("ISO_U LINES" 'number " ")
+ ("ISO_V LINES" 'number " " ",")))
+ (cons "key"
+ '(("LOCATION" 'list " " "left" "right" "top" "bottom"
+ "outside" "below")
+ ("POSITION" 'position " " "" 3)
+ ("JUSTIFICATION" 'list " " "Left" "Right")
+ ("REVERSE" 'list " " "reverse" "noreverse")
+ ("SAMPLE LENGTH" 'number " " "samplen")
+ ("SPACING" 'number " " "spacing")
+ ("WIDTH" 'number " " "width")
+ ("TITLE" 'string " " "title ")
+ ("BOX LINETYPE" 'number " " "box") ;; linetype data
+ ("NOBOX" 'list " " "nobox")))
+ (cons "label"
+ '(("TAG" 'tag " ")
+ ("LABEL TEXT" 'string " ")
+ ("POSITION" 'position " " "at" 3)
+ ;; first, second, graph, screen
+ ("JUSTIFICATION" 'list " " "left" "right" "center")
+ ("ROTATE" 'list " " "rotate" "norotate")
+ ("FONT" 'string " " "font"))) ;; font "name,size"
+ (cons "nolabel"
+ '(("TAG" 'tag " ")))
+ (cons "linestyle"
+ '(("TAG " 'tag " ")
+ ("LINE STYLE" 'list " " "boxerrorbars" "boxes"
+ "boxxyerrorbars" "candlesticks" "dots"
+ "financebars" "fsteps" "histeps" "impulses"
+ "lines" "linespoints" "points" "steps" "vector"
+ "xerrorbars" "xyerrorbars" "yerrorbars")
+ ("LINETYPE " 'number " " "lt")
+ ("LINEWIDTH" 'number " " "lw")
+ ("POINTTYPE" 'number " " "pt")
+ ("POINTSIZE" 'number " " "ps")))
+ (cons "locale"
+ '(("LOCALE" 'string " ")))
+ (cons "logscale"
+ '(("AXIS" 'list " " "x" "y" "z" "xy" "xz" "yz" "xyz"
+ "x2" "y2")
+ ("BASE" 'number " ")))
+ (cons "nologscale"
+ '(("AXIS" 'list " " "x" "y" "z" "xy" "xz" "yz" "xyz"
+ "x2" "y2")))
+ (cons "mapping"
+ '(("COORDINATE SYSTEM" 'list " " "cartesian" "spherical"
+ "cylindrical")))
+ ; _margin
+ (cons "bmargin"
+ '(("BOTTOM MARGIN" 'number " ")))
+ (cons "lmargin"
+ '(("LEFT MARGIN" 'number " ")))
+ (cons "rmargin"
+ '(("RIGHT MARGIN" 'number " ")))
+ (cons "tmargin"
+ '(("TOP MARGIN" 'number " ")))
+
+ (cons "missing"
+ '(("CHARACTER" 'string " " 1)))
+ ; m_tics
+ (cons "mxtics" gnuplot-gui-mtics-list)
+ (cons "mytics" gnuplot-gui-mtics-list)
+ (cons "mztics" gnuplot-gui-mtics-list)
+ (cons "mx2tics" gnuplot-gui-mtics-list)
+ (cons "my2tics" gnuplot-gui-mtics-list)
+
+ ; pm3d additions <MT>
+ (cons "mouse"
+ '(("DOUBLECLICK" 'number " " "doubleclick")
+ ("ZOOM" 'list " " "zoomcoordinates"
"nozoomcoordinates")
+ ("POLAR" 'list " " "polarcoordinates"
"nopolarcoordinates")
+ ("FORMAT" 'string " " "format")
+ ("CLIPBOARDFORMAT" 'string " " "clipboardformat")
+ ("MOUSEFORMAT" 'string " " "mouseformat")
+ ("LABELS" 'list " " "labels" "nolabels")
+ ("LABELOPTIONS" 'string " " "labeloptions")
+ ("ZOOMJUMP" 'list " " "zoomjump" "nozoomjump")
+ ("VERBOSE" 'list " " "verbose" "noverbose")))
+ (cons "palette"
+ '(("COLOR" 'list " " "gray" "color")
+ ("RGBFORMULAE" 'position " " "rgbformulae" 3)
+ ("PARITY" 'list " " "positive" "negative")
+ ("FORMULAE" 'list " " "nops_allcF" "ps_allcF")
+ ("MAXCOLORS" 'number " ")
+ ("COLOR_BOX" 'list " " "nocb" "cbdefault" "cbuser")
+ ("ORIENTATION" 'list " " "cbvertical" "cbhorizontal")
+ ("ORIGIN" 'position " " "origin" 2)
+ ("SIZE" 'position " " "size" 2)
+ ("BORDER" 'number " ")
+ ("NOBORDER" 'list " " "bdefault" "noborder")))
+ (cons "pm3d"
+ '(("AT" 'list* " " "b" "s" "t" "bs" "bt" "st" "bst")
+ ("SCANS" 'list " " "scansautomatic" "scansforward"
"scansbackward")
+ ("FLUSH" 'list* " " "begin" "center" "end")
+ ("CLIP" 'list " " "clip1in" "clip4in")
+ ("ZRANGE" 'range (" " . " ") ":")
+ ("HIDDEN3D" 'number " ")
+ ("NOHIDDEN3D" 'list " " "nohidden3d")
+ ("FILLING" 'list " " "transparent" "solid")
+ ("MAP" 'list " " "map")))
+
+ (cons "offsets"
+ '(("LEFT " 'number " ")
+ ("RIGHT " 'number " " ",")
+ ("TOP " 'number " " ",")
+ ("BOTTOM" 'number " " ",")))
+ (cons "origin"
+ '(("X ORIGIN" 'number " ")
+ ("Y ORIGIN" 'number " " ",")))
+ (cons "output"
+ '(("FILENAME" 'file " ")))
+ (cons "pointsize"
+ '(("MULTIPLIER" 'number " ")))
+ (cons "samples"
+ '(("2D PLOT" 'number " ")
+ ("3D PLOT" 'number " " ",")))
+ (cons "size"
+ '(("ASPECT" 'list " " "square" "nosquare"
+ "ratio" "noratio")
+ ("X-SCALE OR RATIO" 'number " ")
+ ("Y-SCALE" 'number " " ",")))
+ (cons "style"
+ '(("DATA TYPE" 'list " " "data" "function")
+ ("PLOT STYLE" 'list " " "boxerrorbars" "boxes"
+ "boxxyerrorbars" "candlesticks" "dots"
+ "financebars" "fsteps" "histeps" "impulses"
+ "lines" "linespoints" "points" "steps" "vector"
+ "xerrorbars" "xyerrorbars" "yerrorbars")))
+ (cons "terminal"
+ '(("TERMINAL TYPE" 'list " " gnuplot-gui-terminal-list)))
+ (cons "tics"
+ '(("DIRECTION" 'list " " "in" "out")))
+ (cons "ticslevel"
+ '(("RELATIVE HEIGHT" 'number " ")))
+ (cons "ticscale"
+ '(("MAJOR" 'number " ")
+ ("MINOR" 'number " ")))
+ (cons "timestamp"
+ '(("FORMAT STRING" 'format " ")
+ ("WHERE" 'list " " "top" "bottom")
+ ("ROTATE" 'list " " "rotate" "norotate")
+ ("X-OFFSET" 'number " ")
+ ("Y-OFFSET" 'number " " ",")
+ ("FONTNAME" 'list " " gnuplot-gui-fontname-list)))
+ (cons "timefmt"
+ '(("FORMAT STRING" 'string " ")))
+ (cons "title"
+ '(("TITLE" 'string " ")))
+ (cons "view"
+ '(("X-ROTATION" 'number " ")
+ ("Z-ROTATION" 'number " " ",")
+ ("SCALE" 'number " " ",")
+ ("Z-SCALE" 'number " " ",")))
+ ;; ("SCALE" 'position " " "," 4)
+ ; _data
+ (cons "xdata" gnuplot-gui-data-list)
+ (cons "ydata" gnuplot-gui-data-list)
+ (cons "zdata" gnuplot-gui-data-list)
+ (cons "x2data" gnuplot-gui-data-list)
+ (cons "y2data" gnuplot-gui-data-list)
+ ; _label
+ (cons "xlabel" gnuplot-gui-label-list)
+ (cons "ylabel" gnuplot-gui-label-list)
+ (cons "zlabel" gnuplot-gui-label-list)
+ (cons "x2label" gnuplot-gui-label-list)
+ (cons "y2label" gnuplot-gui-label-list)
+ ; _range, note that the [] syntax for
+ ; the writeback argument is
+ ; not properly supported
+ (cons "xrange" gnuplot-gui-range-list)
+ (cons "yrange" gnuplot-gui-range-list)
+ (cons "zrange" gnuplot-gui-range-list)
+ (cons "x2range" gnuplot-gui-range-list)
+ (cons "y2range" gnuplot-gui-range-list)
+ (cons "trange" gnuplot-gui-range-list)
+ (cons "rrange" gnuplot-gui-range-list)
+ (cons "urange" gnuplot-gui-range-list)
+ (cons "vrange" gnuplot-gui-range-list)
+ ; _tics
+ (cons "xtics" gnuplot-gui-tics-list)
+ (cons "ytics" gnuplot-gui-tics-list)
+ (cons "ztics" gnuplot-gui-tics-list)
+ (cons "x2tics" gnuplot-gui-tics-list)
+ (cons "y2tics" gnuplot-gui-tics-list)
+ ; zeroaxis
+ (cons "zeroaxis" gnuplot-gui-zeroaxis-list)
+ (cons "xzeroaxis" gnuplot-gui-zeroaxis-list)
+ (cons "yzeroaxis" gnuplot-gui-zeroaxis-list)
+ (cons "y2zeroaxis" gnuplot-gui-zeroaxis-list)
+ (cons "x2zeroaxis" gnuplot-gui-zeroaxis-list)
+
+ (cons "zero"
+ '(("THRESHOLD" 'number " ")))
+ ))
(defvar gnuplot-gui-command-types nil
"Associated list of command descriptions.
See the doc-string for `gnuplot-gui-all-types'.")
(setq gnuplot-gui-command-types
(list (cons "cd"
- '(("FILENAME" 'file " ")))
- (cons "call"
- '(("INPUT FILE" 'file " ")
- ("PARAMETER LIST" 'string " ")))
- (cons "load"
- '(("INPUT FILE" 'file " ")))
- (cons "pause"
- '(("TIME" 'number " ")
- ("MESSAGE" 'string " ")))
- (cons "print"
- '(("EXPRESSION" 'string " ")))
- (cons "save"
- '(("SAVE" 'list " " "functions" "variables" "set")
- ("FILE" 'file " ")))
- (cons "update"
- '(("INITIAL FILE" 'file " " t)
- ("UPDATED FILE" 'file " " t))) ))
+ '(("FILENAME" 'file " ")))
+ (cons "call"
+ '(("INPUT FILE" 'file " ")
+ ("PARAMETER LIST" 'string " ")))
+ (cons "load"
+ '(("INPUT FILE" 'file " ")))
+ (cons "pause"
+ '(("TIME" 'number " ")
+ ("MESSAGE" 'string " ")))
+ (cons "print"
+ '(("EXPRESSION" 'string " ")))
+ (cons "save"
+ '(("SAVE" 'list " " "functions" "variables"
"set")
+ ("FILE" 'file " ")))
+ (cons "update"
+ '(("INITIAL FILE" 'file " " t)
+ ("UPDATED FILE" 'file " " t))) ))
(defcustom gnuplot-gui-plot-splot-fit-style 'simple
@@ -665,7 +665,7 @@ all options. The 'complete setting is prone to making
errors when
parsing values already in the script buffer."
:group 'gnuplot-gui
:type '(radio (const :tag "Simple listing" simple)
- (const :tag "Complete listing" complete)))
+ (const :tag "Complete listing" complete)))
(defconst gnuplot-gui-plot-simple-list
@@ -762,36 +762,36 @@ parsing values already in the script buffer."
See the doc-string for `gnuplot-gui-all-types'.")
(setq gnuplot-gui-plot-splot-fit
(list (cons "plot" (if (equal gnuplot-gui-plot-splot-fit-style
'complete)
- gnuplot-gui-plot-full-list
- gnuplot-gui-plot-simple-list))
- (cons "splot" (if (equal gnuplot-gui-plot-splot-fit-style 'complete)
- gnuplot-gui-splot-full-list
- gnuplot-gui-splot-simple-list))
- (cons "fit" (if (equal gnuplot-gui-plot-splot-fit-style 'complete)
- gnuplot-gui-fit-full-list
- gnuplot-gui-fit-simple-list))) )
+ gnuplot-gui-plot-full-list
+ gnuplot-gui-plot-simple-list))
+ (cons "splot" (if (equal gnuplot-gui-plot-splot-fit-style
'complete)
+ gnuplot-gui-splot-full-list
+ gnuplot-gui-splot-simple-list))
+ (cons "fit" (if (equal gnuplot-gui-plot-splot-fit-style
'complete)
+ gnuplot-gui-fit-full-list
+ gnuplot-gui-fit-simple-list))) )
(defvar gnuplot-gui-test-type nil)
(setq gnuplot-gui-test-type
(list (cons "test"
- '(("TAG" 'tag " ")
- ("LIST" 'list " " "1" "2" "3")
- ("LIST*" 'list* " " "1" "2" "3")
- ("NUMBER" 'number " " "number")
- ("RANGE" 'range (" " . " ") ":")
- ("PAIR" 'pair (" " . " ") "pair")
- ("LABELS" 'labels ())
- ("FILE" 'file " ")
- ("TEXT" 'text "this is text")
- ("STRING" 'string " ")
- ("STRING*" 'string* " " "string*")
- ("FORMAT" 'format " ")
- ("POSITION" 'position " " "at" 3)
- ("FONTSIZE" 'fontsize " ") ))))
+ '(("TAG" 'tag " ")
+ ("LIST" 'list " " "1" "2" "3")
+ ("LIST*" 'list* " " "1" "2" "3")
+ ("NUMBER" 'number " " "number")
+ ("RANGE" 'range (" " . " ") ":")
+ ("PAIR" 'pair (" " . " ") "pair")
+ ("LABELS" 'labels ())
+ ("FILE" 'file " ")
+ ("TEXT" 'text "this is text")
+ ("STRING" 'string " ")
+ ("STRING*" 'string* " " "string*")
+ ("FORMAT" 'format " ")
+ ("POSITION" 'position " " "at" 3)
+ ("FONTSIZE" 'fontsize " ") ))))
(defvar gnuplot-gui-all-types nil
- "Associated list of terminal, set option, and command arguments.
+ "Associated list of terminal, set option, and command arguments.
Each entry in the list is a cons cell of the form
(OPTION . ALIST)
@@ -862,28 +862,28 @@ This alist is formed at load time by appending together
`gnuplot-gui-command-types'.")
(setq gnuplot-gui-all-types (append gnuplot-gui-terminal-types
- gnuplot-gui-set-types
- gnuplot-gui-command-types
- gnuplot-gui-plot-splot-fit
- gnuplot-gui-test-type
- ))
+ gnuplot-gui-set-types
+ gnuplot-gui-command-types
+ gnuplot-gui-plot-splot-fit
+ gnuplot-gui-test-type
+ ))
(defun gnuplot-gui-swap-simple-complete ()
(interactive)
(setq gnuplot-gui-plot-splot-fit-style
- (if (equal gnuplot-gui-plot-splot-fit-style 'complete)
- 'simple 'complete))
+ (if (equal gnuplot-gui-plot-splot-fit-style 'complete)
+ 'simple 'complete))
(if (equal gnuplot-gui-plot-splot-fit-style 'complete)
(progn
- (setcdr (assoc "plot" gnuplot-gui-all-types)
gnuplot-gui-plot-full-list)
- (setcdr (assoc "splot" gnuplot-gui-all-types)
gnuplot-gui-splot-full-list)
- (setcdr (assoc "fit" gnuplot-gui-all-types)
gnuplot-gui-fit-full-list))
+ (setcdr (assoc "plot" gnuplot-gui-all-types)
gnuplot-gui-plot-full-list)
+ (setcdr (assoc "splot" gnuplot-gui-all-types)
gnuplot-gui-splot-full-list)
+ (setcdr (assoc "fit" gnuplot-gui-all-types)
gnuplot-gui-fit-full-list))
(setcdr (assoc "plot" gnuplot-gui-all-types) gnuplot-gui-plot-simple-list)
(setcdr (assoc "splot" gnuplot-gui-all-types)
gnuplot-gui-splot-simple-list)
(setcdr (assoc "fit" gnuplot-gui-all-types) gnuplot-gui-fit-simple-list))
(message "Using %s lists for plot, splot, and fit."
- gnuplot-gui-plot-splot-fit-style) )
+ gnuplot-gui-plot-splot-fit-style) )
@@ -918,86 +918,86 @@ Note that \"cntrparam\" is not currently supported."
(interactive)
(when (fboundp 'widget-create)
(let ((begin (gnuplot-point-at-beginning-of-command))
- (end (save-excursion (end-of-line) (point-marker)))
- (termin (concat "\\(,\\s-*" (regexp-quote "\\") "\\|;\\)"))
- (set nil) (term nil))
+ (end (save-excursion (end-of-line) (point-marker)))
+ (termin (concat "\\(,\\s-*" (regexp-quote "\\") "\\|;\\)"))
+ (set nil) (term nil))
(save-excursion
- ;; there can be more then one command per line
- (if (re-search-forward termin end "to_limit")
- (progn (backward-char (length (match-string 1)))
- (setq end (point-marker))))
- (goto-char begin)
- (skip-syntax-forward "-" end)
- ;; various constructions are recognized here. at the end of this
- ;; cond, point should be just after the word whose arguments are
- ;; to be set
- (cond ((looking-at "set\\s-+")
- (setq set t)
- (goto-char (match-end 0))
- (if (looking-at "\\sw+") (goto-char (match-end 0)))
- (when (string-match "^ter" (gnuplot-this-word)) ; terminal?
- (setq term t)
- (forward-word 1))
- (when (string-match "^\\(da\\|fu\\)" (gnuplot-this-word))
- (unless (looking-at "\\s-+st")
- (insert " style") (forward-word 1))
- (forward-word 1)))
- ((looking-at (concat "\\(cd\\|ca\\|lo\\|pa\\|pr\\|sa\\|u\\)"
- "\\w*"
- "[\\s-\\']"))
- (forward-word 1))
- ;;(goto-char (match-end 0)))
- (t
- (forward-word 1)))
- (if (> (point) end) (goto-char end))
- (let* ((w (gnuplot-this-word))
- (wd (try-completion w gnuplot-gui-all-types))
- (word "") wrd list)
- (cond ((equal wd t) (setq word w))
- ((equal wd nil) (setq word w))
- ((assoc wd gnuplot-gui-all-types) (setq word wd))
- (t (setq wd nil)))
- (cond ((equal (string-match "^\\s-*$" w) 0)
- (message "Blank line"))
- ((and wd (stringp word))
- (gnuplot-gui-correct-command word set term begin)
- (setq gnuplot-gui-alist nil
- gnuplot-gui-current-string
- (buffer-substring-no-properties (point) end))
- (gnuplot-gui-set-alist word gnuplot-gui-current-string)
- (let* ((old-height (gnuplot-gui-get-frame-param 'height))
- (old-top (gnuplot-gui-get-frame-param 'top)))
- (when (or
- (and (equal gnuplot-gui-plot-splot-fit-style
'complete)
- (member* word '("plot" "splot" "fit")
- :test 'string=))
- (equal word "test"))
- (gnuplot-gui-set-frame-param 'height 32)
- (gnuplot-gui-set-frame-param 'top 50))
- (gnuplot-gui-prompt-for-frame word)
- (when (or
- (and (equal gnuplot-gui-plot-splot-fit-style
'complete)
- (member* word '("plot" "splot" "fit")
- :test 'string=))
- (equal word "test"))
- (gnuplot-gui-set-frame-param 'height old-height)
- (gnuplot-gui-set-frame-param 'top old-top)) ))
- ((setq wrd (car (all-completions w '(("cntrparam")))))
- (message
- "Setting arguments for %S is currently unsuported in
gnuplot-mode"
- wrd))
- ((setq list (all-completions w gnuplot-gui-all-types))
- (message "%S could be one of %S" w list))
- (t
- (message
- "%S is not a gnuplot command which takes options" w)))) ))))
+ ;; there can be more then one command per line
+ (if (re-search-forward termin end "to_limit")
+ (progn (backward-char (length (match-string 1)))
+ (setq end (point-marker))))
+ (goto-char begin)
+ (skip-syntax-forward "-" end)
+ ;; various constructions are recognized here. at the end of this
+ ;; cond, point should be just after the word whose arguments are
+ ;; to be set
+ (cond ((looking-at "set\\s-+")
+ (setq set t)
+ (goto-char (match-end 0))
+ (if (looking-at "\\sw+") (goto-char (match-end 0)))
+ (when (string-match "^ter" (gnuplot-this-word)) ; terminal?
+ (setq term t)
+ (forward-word 1))
+ (when (string-match "^\\(da\\|fu\\)" (gnuplot-this-word))
+ (unless (looking-at "\\s-+st")
+ (insert " style") (forward-word 1))
+ (forward-word 1)))
+ ((looking-at (concat "\\(cd\\|ca\\|lo\\|pa\\|pr\\|sa\\|u\\)"
+ "\\w*"
+ "[\\s-\\']"))
+ (forward-word 1))
+ ;;(goto-char (match-end 0)))
+ (t
+ (forward-word 1)))
+ (if (> (point) end) (goto-char end))
+ (let* ((w (gnuplot-this-word))
+ (wd (try-completion w gnuplot-gui-all-types))
+ (word "") wrd list)
+ (cond ((equal wd t) (setq word w))
+ ((equal wd nil) (setq word w))
+ ((assoc wd gnuplot-gui-all-types) (setq word wd))
+ (t (setq wd nil)))
+ (cond ((equal (string-match "^\\s-*$" w) 0)
+ (message "Blank line"))
+ ((and wd (stringp word))
+ (gnuplot-gui-correct-command word set term begin)
+ (setq gnuplot-gui-alist nil
+ gnuplot-gui-current-string
+ (buffer-substring-no-properties (point) end))
+ (gnuplot-gui-set-alist word gnuplot-gui-current-string)
+ (let* ((old-height (gnuplot-gui-get-frame-param 'height))
+ (old-top (gnuplot-gui-get-frame-param 'top)))
+ (when (or
+ (and (equal gnuplot-gui-plot-splot-fit-style
'complete)
+ (member* word '("plot" "splot" "fit")
+ :test 'string=))
+ (equal word "test"))
+ (gnuplot-gui-set-frame-param 'height 32)
+ (gnuplot-gui-set-frame-param 'top 50))
+ (gnuplot-gui-prompt-for-frame word)
+ (when (or
+ (and (equal gnuplot-gui-plot-splot-fit-style
'complete)
+ (member* word '("plot" "splot" "fit")
+ :test 'string=))
+ (equal word "test"))
+ (gnuplot-gui-set-frame-param 'height old-height)
+ (gnuplot-gui-set-frame-param 'top old-top)) ))
+ ((setq wrd (car (all-completions w '(("cntrparam")))))
+ (message
+ "Setting arguments for %S is currently unsuported in
gnuplot-mode"
+ wrd))
+ ((setq list (all-completions w gnuplot-gui-all-types))
+ (message "%S could be one of %S" w list))
+ (t
+ (message
+ "%S is not a gnuplot command which takes options" w)))) ))))
(defun gnuplot-gui-toggle-popup ()
(interactive)
(setq gnuplot-gui-popup-flag (not gnuplot-gui-popup-flag))
(message (if gnuplot-gui-popup-flag
- "Argument popup will appear after insertions."
- "Argument popup will no longer appear after insertions.")))
+ "Argument popup will appear after insertions."
+ "Argument popup will no longer appear after insertions.")))
(defun gnuplot-gui-y-n (foo))
@@ -1012,28 +1012,28 @@ WORD is the item being set. SET and TERM are non-nil if
the words
BEGIN is the beginning of the command."
(save-excursion
(cond ((assoc word gnuplot-gui-terminal-types)
- (when (and (not (and set term))
- (gnuplot-gui-y-n
- (format
- "%S must be preceded by \"set terminal\". Add it? "
- word)))
- (backward-word 1)
- (let ((e (point-marker)))
- (goto-char begin)
- (skip-syntax-forward "-" e)
- (delete-region (point) e)
- (insert "set terminal "))))
- ((assoc word gnuplot-gui-set-types)
- (when (and (not set)
- (gnuplot-gui-y-n
- (format
- "%S must be preceded by \"set\". Add \"set\"? " word)))
- (backward-word 1)
- (let ((e (point-marker)))
- (goto-char begin)
- (skip-syntax-forward "-" e)
- (delete-region (point) e)
- (insert "set "))))))
+ (when (and (not (and set term))
+ (gnuplot-gui-y-n
+ (format
+ "%S must be preceded by \"set terminal\". Add it? "
+ word)))
+ (backward-word 1)
+ (let ((e (point-marker)))
+ (goto-char begin)
+ (skip-syntax-forward "-" e)
+ (delete-region (point) e)
+ (insert "set terminal "))))
+ ((assoc word gnuplot-gui-set-types)
+ (when (and (not set)
+ (gnuplot-gui-y-n
+ (format
+ "%S must be preceded by \"set\". Add \"set\"? "
word)))
+ (backward-word 1)
+ (let ((e (point-marker)))
+ (goto-char begin)
+ (skip-syntax-forward "-" e)
+ (delete-region (point) e)
+ (insert "set "))))))
(message nil))
@@ -1049,24 +1049,24 @@ bounding single quotes with double quotes, since double
quotes are
used in `gnuplot-gui-all-types'."
(let (fixed-list quote quoted) ; remove blanks
(setq list (remove* "\\s-+" list :test 'string-match)
- list (remove* "" list :test 'string=))
+ list (remove* "" list :test 'string=))
(while list ; concatinate parts of quoted
string
(if (not (string-match "^\\([\]\[()'\"]\\)" (car list)))
- (setq fixed-list (append fixed-list (list (car list))))
- (setq quote (match-string 1 (car list))
- quoted (car list))
- (if (string= quote "[") (setq quote "]"))
- (if (string= quote "(") (setq quote ")"))
- (while (and list
- (or (equal (length quoted) 1)
- (not (string-match (concat (regexp-quote quote) "$")
- quoted))))
- (setq quoted (concat quoted " " (cadr list))
- list (cdr list)))
- (if (string= quote "'")
- (setq quoted (concat "\"" (substring quoted 1))
- quoted (concat (substring quoted 0 -1) "\"")))
- (setq fixed-list (append fixed-list (list quoted))))
+ (setq fixed-list (append fixed-list (list (car list))))
+ (setq quote (match-string 1 (car list))
+ quoted (car list))
+ (if (string= quote "[") (setq quote "]"))
+ (if (string= quote "(") (setq quote ")"))
+ (while (and list
+ (or (equal (length quoted) 1)
+ (not (string-match (concat (regexp-quote quote) "$")
+ quoted))))
+ (setq quoted (concat quoted " " (cadr list))
+ list (cdr list)))
+ (if (string= quote "'")
+ (setq quoted (concat "\"" (substring quoted 1))
+ quoted (concat (substring quoted 0 -1) "\"")))
+ (setq fixed-list (append fixed-list (list quoted))))
(setq list (cdr list)) )
fixed-list))
@@ -1076,146 +1076,146 @@ WORD is the Gnuplot expression whose arguments are
being set. STRING
is text from the buffer containing the previous values for WORD's
arguments."
(let ((alist (cdr (assoc word gnuplot-gui-all-types)))
- (arg-list (gnuplot-gui-fix-arg-list (split-string string)) ))
+ (arg-list (gnuplot-gui-fix-arg-list (split-string string)) ))
;; arg-list contains the arguments taken from the buffer
(setq gnuplot-gui-alist nil)
(while alist
(let* ((list (car alist))
- (tag (gnuplot-gui-type-tag list))
- (symbol (eval (gnuplot-gui-type-symbol list)))
- (default (gnuplot-gui-type-default list))
- (prefix (gnuplot-gui-type-prefix list))
- (values (gnuplot-gui-type-list list))
- (this-cons (cond ((stringp default) (cons tag default))
- ((consp default) ; set cons valued default w/care
- (cons tag (cons (car default) (cdr default))))
- (t (cons tag default))))
- (temp-list arg-list) )
- ;;(message "%S" temp-list) ; want to lop values off arg-list
- ; as they are found
- (if (symbolp (cadr values))
- (setq values (symbol-value (cadr values))))
- ;; check if an argument of this type is in arg-list
- ;; set the current cons cell if it is
- (while temp-list
- (cond
- ;; ---------------------------- list
- ((member* symbol '(list list*) :test 'equal)
- (let* ((case-fold-search nil)
- (match-cons (member* (concat "^" (car temp-list))
- values :test 'string-match)))
- (if (and (car match-cons) ; " " may be first elem. of list
- (not (string= " " (car match-cons))))
- (setq this-cons (cons tag (car match-cons))
- arg-list (remove* (car temp-list) arg-list
- :test 'string= :count 1)
- temp-list nil)
- (setq temp-list (cdr temp-list)))))
- ;; ---------------------------- tag (first number in list)
- ((equal symbol 'tag)
- (if (string-match "^[-0-9.]+$" (car arg-list))
- (setq this-cons (cons tag (car arg-list))
- temp-list nil)
- (setq temp-list (cdr temp-list))) )
- ;; ---------------------------- fontsize (last number in list)
- ((equal symbol 'fontsize)
- (if (string-match "^[-0-9.]+$" (car (last arg-list)))
- (setq this-cons (cons tag (car (last arg-list)))
- temp-list nil)
- (setq temp-list (cdr temp-list))) )
- ;; ---------------------------- number with prefix
- ((equal symbol 'number)
- (cond ((and (string= prefix (car temp-list))
- (string-match "^[-0-9.]+$" (cadr temp-list)))
- (setq this-cons (cons tag (cadr temp-list))
- arg-list (remove* (car temp-list) arg-list
- :test 'string= :count 1)
- arg-list (remove* (cadr temp-list) arg-list
- :test 'string= :count 1)
- temp-list nil))
- ;; --------------------- number without prefix
- ((and (not prefix)
- (string-match "^[-0-9.]+$" (car temp-list)))
- (setq this-cons (cons tag (car temp-list))
- arg-list (remove* (car temp-list) arg-list
- :test 'string= :count 1)
- temp-list nil))
- (t
- (setq temp-list (cdr temp-list)))))
- ;; ---------------------------- pair with prefix
- ((equal symbol 'pair)
- (if (and (string= prefix (car temp-list))
- (string-match "^[-0-9.]+$" (cadr temp-list)))
- (let ((this-car (cadr temp-list))
- (this-cdr (if (string-match "^[-0-9.]+$" (caddr
temp-list))
- (caddr temp-list) "")))
- (setq this-cons (cons tag (cons this-car this-cdr))
- temp-list nil))
- (setq temp-list (cdr temp-list))))
- ;; ---------------------------- range
- ((equal symbol 'range)
- (if (string-match (concat "\\[\\s-*" ; opening bracket
- "\\([^:, \t]*\\)" ; first argument
- "\\s-*[:,]\\s-*" ; separator
- "\\([^\] \t]*\\)" ; second argument
- "\\s-*\\]") ; closing bracket
- (car temp-list))
- (setq this-cons
- (cons tag (cons (match-string 1 (car temp-list))
- (match-string 2 (car temp-list))))
- arg-list (remove* (car temp-list) arg-list
- :test 'string= :count 1)
- temp-list nil)
- (setq temp-list (cdr temp-list)) ))
- ;; ---------------------------- labels
- ((equal symbol 'labels)
- (if (string-match (concat "(" ; opening paren
- "\\([^\)]*\\)" ; string
- ")") ; closing paren
- (car temp-list))
- (let* ((list (split-string (car temp-list) "[ \t(),]+"))
- (list (remove* "" list :test 'string=))
- (return ()))
- (while list
- (if (string-match "['\"]\\([^'\"]*\\)['\"]" (car list))
- (setq return (append return
- (list (match-string 1 (car list))))
- list (cdr list)
- return (append return (list (car list))) )
- (setq return (append return (list "" (car list)))))
- (setq list (cdr list)) )
- (setq this-cons (cons tag return)
- arg-list (remove* (car temp-list) arg-list
- :test 'string= :count 1)
- temp-list nil))
- (setq temp-list (cdr temp-list))) )
- ;; ---------------------------- string, file, format
- ((member* symbol '(string file format) :test 'equal)
- (if (string-match (concat "['\"]" ; opening quote
- "\\([^'\"]*\\)" ; string
- "['\"]") ; closing quote
- (car temp-list))
- (setq this-cons (cons tag (match-string 0 (car temp-list)))
- arg-list (remove* (car temp-list) arg-list
- :test 'string= :count 1)
- temp-list nil)
- (setq temp-list (cdr temp-list)) ))
- ;; ---------------------------- string*
- ((equal symbol 'string*)
- (if (string= prefix (car temp-list))
- (setq this-cons (cons tag (cadr temp-list))
- arg-list (remove* (car temp-list) arg-list
- :test 'string= :count 1)
- arg-list (remove* (cadr temp-list) arg-list
- :test 'string= :count 1)
- temp-list nil)
- (setq temp-list (cdr temp-list)) ) )
- ;; ---------------------------- other or unknown
- (t
- (setq temp-list nil))
- ))
- (setq gnuplot-gui-alist
- (append gnuplot-gui-alist (list this-cons))))
+ (tag (gnuplot-gui-type-tag list))
+ (symbol (eval (gnuplot-gui-type-symbol list)))
+ (default (gnuplot-gui-type-default list))
+ (prefix (gnuplot-gui-type-prefix list))
+ (values (gnuplot-gui-type-list list))
+ (this-cons (cond ((stringp default) (cons tag default))
+ ((consp default) ; set cons valued default w/care
+ (cons tag (cons (car default) (cdr default))))
+ (t (cons tag default))))
+ (temp-list arg-list) )
+ ;;(message "%S" temp-list) ; want to lop values off arg-list
+ ; as they are found
+ (if (symbolp (cadr values))
+ (setq values (symbol-value (cadr values))))
+ ;; check if an argument of this type is in arg-list
+ ;; set the current cons cell if it is
+ (while temp-list
+ (cond
+ ;; ---------------------------- list
+ ((member* symbol '(list list*) :test 'equal)
+ (let* ((case-fold-search nil)
+ (match-cons (member* (concat "^" (car temp-list))
+ values :test 'string-match)))
+ (if (and (car match-cons) ; " " may be first elem. of list
+ (not (string= " " (car match-cons))))
+ (setq this-cons (cons tag (car match-cons))
+ arg-list (remove* (car temp-list) arg-list
+ :test 'string= :count 1)
+ temp-list nil)
+ (setq temp-list (cdr temp-list)))))
+ ;; ---------------------------- tag (first number in list)
+ ((equal symbol 'tag)
+ (if (string-match "^[-0-9.]+$" (car arg-list))
+ (setq this-cons (cons tag (car arg-list))
+ temp-list nil)
+ (setq temp-list (cdr temp-list))) )
+ ;; ---------------------------- fontsize (last number in list)
+ ((equal symbol 'fontsize)
+ (if (string-match "^[-0-9.]+$" (car (last arg-list)))
+ (setq this-cons (cons tag (car (last arg-list)))
+ temp-list nil)
+ (setq temp-list (cdr temp-list))) )
+ ;; ---------------------------- number with prefix
+ ((equal symbol 'number)
+ (cond ((and (string= prefix (car temp-list))
+ (string-match "^[-0-9.]+$" (cadr temp-list)))
+ (setq this-cons (cons tag (cadr temp-list))
+ arg-list (remove* (car temp-list) arg-list
+ :test 'string= :count 1)
+ arg-list (remove* (cadr temp-list) arg-list
+ :test 'string= :count 1)
+ temp-list nil))
+ ;; --------------------- number without prefix
+ ((and (not prefix)
+ (string-match "^[-0-9.]+$" (car temp-list)))
+ (setq this-cons (cons tag (car temp-list))
+ arg-list (remove* (car temp-list) arg-list
+ :test 'string= :count 1)
+ temp-list nil))
+ (t
+ (setq temp-list (cdr temp-list)))))
+ ;; ---------------------------- pair with prefix
+ ((equal symbol 'pair)
+ (if (and (string= prefix (car temp-list))
+ (string-match "^[-0-9.]+$" (cadr temp-list)))
+ (let ((this-car (cadr temp-list))
+ (this-cdr (if (string-match "^[-0-9.]+$" (caddr
temp-list))
+ (caddr temp-list) "")))
+ (setq this-cons (cons tag (cons this-car this-cdr))
+ temp-list nil))
+ (setq temp-list (cdr temp-list))))
+ ;; ---------------------------- range
+ ((equal symbol 'range)
+ (if (string-match (concat "\\[\\s-*" ; opening bracket
+ "\\([^:, \t]*\\)" ; first argument
+ "\\s-*[:,]\\s-*" ; separator
+ "\\([^\] \t]*\\)" ; second
argument
+ "\\s-*\\]") ; closing bracket
+ (car temp-list))
+ (setq this-cons
+ (cons tag (cons (match-string 1 (car temp-list))
+ (match-string 2 (car temp-list))))
+ arg-list (remove* (car temp-list) arg-list
+ :test 'string= :count 1)
+ temp-list nil)
+ (setq temp-list (cdr temp-list)) ))
+ ;; ---------------------------- labels
+ ((equal symbol 'labels)
+ (if (string-match (concat "(" ; opening paren
+ "\\([^\)]*\\)" ; string
+ ")") ; closing paren
+ (car temp-list))
+ (let* ((list (split-string (car temp-list) "[ \t(),]+"))
+ (list (remove* "" list :test 'string=))
+ (return ()))
+ (while list
+ (if (string-match "['\"]\\([^'\"]*\\)['\"]" (car list))
+ (setq return (append return
+ (list (match-string 1 (car
list))))
+ list (cdr list)
+ return (append return (list (car list))) )
+ (setq return (append return (list "" (car list)))))
+ (setq list (cdr list)) )
+ (setq this-cons (cons tag return)
+ arg-list (remove* (car temp-list) arg-list
+ :test 'string= :count 1)
+ temp-list nil))
+ (setq temp-list (cdr temp-list))) )
+ ;; ---------------------------- string, file, format
+ ((member* symbol '(string file format) :test 'equal)
+ (if (string-match (concat "['\"]" ; opening quote
+ "\\([^'\"]*\\)" ; string
+ "['\"]") ; closing quote
+ (car temp-list))
+ (setq this-cons (cons tag (match-string 0 (car temp-list)))
+ arg-list (remove* (car temp-list) arg-list
+ :test 'string= :count 1)
+ temp-list nil)
+ (setq temp-list (cdr temp-list)) ))
+ ;; ---------------------------- string*
+ ((equal symbol 'string*)
+ (if (string= prefix (car temp-list))
+ (setq this-cons (cons tag (cadr temp-list))
+ arg-list (remove* (car temp-list) arg-list
+ :test 'string= :count 1)
+ arg-list (remove* (cadr temp-list) arg-list
+ :test 'string= :count 1)
+ temp-list nil)
+ (setq temp-list (cdr temp-list)) ) )
+ ;; ---------------------------- other or unknown
+ (t
+ (setq temp-list nil))
+ ))
+ (setq gnuplot-gui-alist
+ (append gnuplot-gui-alist (list this-cons))))
(setq alist (cdr alist))) ))
@@ -1225,67 +1225,67 @@ arguments."
into strings. This is called right before inserting the arguments
into the buffer. TYPE is the object whose arguments are being set."
(let ((alist gnuplot-gui-alist)
- (types (cdr (assoc type gnuplot-gui-all-types))) )
+ (types (cdr (assoc type gnuplot-gui-all-types))) )
(while alist ;; loop thru alist looking for tyeps needing post-processing
(let* ((list (assoc (caar alist) types))
- (value (cdr (assoc (caar alist) gnuplot-gui-alist)))
- (prefix (gnuplot-gui-type-prefix list))
- (symb (gnuplot-gui-type-symbol list)) )
- (cond
- ;;-------------------------- flat text
- ((equal (eval symb) 'text)
- (setcdr (assoc (caar alist) gnuplot-gui-alist) ""))
- ;;-------------------------- range [#:#] or [#,#]
- ((equal (eval symb) 'range)
- (if (and (string-match "^\\s-*$" (car value))
- (string-match "^\\s-*$" (cdr value)))
- (setcdr (assoc (caar alist) gnuplot-gui-alist) "")
- (setcdr (assoc (caar alist) gnuplot-gui-alist)
- (concat "[" (car value) prefix (cdr value) "]")) ) )
- ;;-------------------------- pair
- ((equal (eval symb) 'pair)
- (if (and (string-match "^\\s-*$" (car value))
- (string-match "^\\s-*$" (cdr value)))
- (setcdr (assoc (caar alist) gnuplot-gui-alist) "")
- (setcdr (assoc (caar alist) gnuplot-gui-alist)
- (concat prefix " " (car value) " " (cdr value) )) ) )
- ;;-------------------------- labels
- ((equal (eval symb) 'labels)
- (if (consp value)
- (let ((word "") (list value))
- (while list
- (if (string-match "^\\s-*$" (car list))
- (setq word (concat word (format "%s, " (cadr list))))
- (setq word (concat word (format "%S %s, " (car list)
- (cadr list)))))
- (setq list (cddr list)) )
- (setq value (concat "(" (substring word 0 -2) ")")))
- (setq value "") )
- (setcdr (assoc (caar alist) gnuplot-gui-alist) value) ))
-
- (setq alist (cdr alist))) )))
+ (value (cdr (assoc (caar alist) gnuplot-gui-alist)))
+ (prefix (gnuplot-gui-type-prefix list))
+ (symb (gnuplot-gui-type-symbol list)) )
+ (cond
+ ;;-------------------------- flat text
+ ((equal (eval symb) 'text)
+ (setcdr (assoc (caar alist) gnuplot-gui-alist) ""))
+ ;;-------------------------- range [#:#] or [#,#]
+ ((equal (eval symb) 'range)
+ (if (and (string-match "^\\s-*$" (car value))
+ (string-match "^\\s-*$" (cdr value)))
+ (setcdr (assoc (caar alist) gnuplot-gui-alist) "")
+ (setcdr (assoc (caar alist) gnuplot-gui-alist)
+ (concat "[" (car value) prefix (cdr value) "]")) ) )
+ ;;-------------------------- pair
+ ((equal (eval symb) 'pair)
+ (if (and (string-match "^\\s-*$" (car value))
+ (string-match "^\\s-*$" (cdr value)))
+ (setcdr (assoc (caar alist) gnuplot-gui-alist) "")
+ (setcdr (assoc (caar alist) gnuplot-gui-alist)
+ (concat prefix " " (car value) " " (cdr value) )) ) )
+ ;;-------------------------- labels
+ ((equal (eval symb) 'labels)
+ (if (consp value)
+ (let ((word "") (list value))
+ (while list
+ (if (string-match "^\\s-*$" (car list))
+ (setq word (concat word (format "%s, " (cadr list))))
+ (setq word (concat word (format "%S %s, " (car list)
+ (cadr list)))))
+ (setq list (cddr list)) )
+ (setq value (concat "(" (substring word 0 -2) ")")))
+ (setq value "") )
+ (setcdr (assoc (caar alist) gnuplot-gui-alist) value) ))
+
+ (setq alist (cdr alist))) )))
;;; GUI frames
(defun gnuplot-gui-prompt-for-frame (&optional option save-frame)
(setq option (or option (completing-read "Option: " gnuplot-gui-all-types
- nil t nil t)))
+ nil t nil t)))
(gnuplot-gui-make-frame
option (cdr (assoc option gnuplot-gui-all-types)) save-frame) )
(defface gnuplot-gui-error-face '((((class color) (background light))
- (:foreground "grey30"))
- (((class color) (background dark))
- (:foreground "grey70")))
+ (:foreground "grey30"))
+ (((class color) (background dark))
+ (:foreground "grey70")))
"Face used to display message about unknown widget types."
:group 'gnuplot-faces)
(defface gnuplot-gui-flat-text-face '((((class color) (background light))
- (:foreground "MediumBlue"))
- (((class color) (background dark))
- (:foreground "LightSteelBlue")))
+ (:foreground "MediumBlue"))
+ (((class color) (background dark))
+ (:foreground "LightSteelBlue")))
"Face used to display message about unknown widget types."
:group 'gnuplot-faces)
@@ -1296,173 +1296,173 @@ the alist of arguments for ITEM taken from
`gnuplot-gui-all-types'.
SAVE-FRAME is non-nil when the widgets are being reset."
(unless save-frame
(setq gnuplot-current-frame (selected-frame)
- gnuplot-current-buffer (current-buffer)
- gnuplot-current-buffer-point (point-marker))
+ gnuplot-current-buffer (current-buffer)
+ gnuplot-current-buffer-point (point-marker))
(unless (and gnuplot-gui-frame (frame-live-p gnuplot-gui-frame))
(setq gnuplot-gui-frame (if gnuplot-xemacs-p
- (make-frame gnuplot-gui-frame-plist)
- (make-frame gnuplot-gui-frame-parameters))))
+ (make-frame gnuplot-gui-frame-plist)
+ (make-frame gnuplot-gui-frame-parameters))))
(select-frame gnuplot-gui-frame)
;;(set-frame-position gnuplot-gui-frame 150 150) ;; so herky-jerky
(if gnuplot-xemacs-p
- (set-mouse-position (selected-window) 0 0)
+ (set-mouse-position (selected-window) 0 0)
(set-mouse-position gnuplot-gui-frame 0 0)))
(kill-buffer (get-buffer-create "*Gnuplot GUI*"))
(switch-to-buffer (get-buffer-create "*Gnuplot GUI*"))
(kill-all-local-variables)
(if gnuplot-xemacs-p
(progn
- (set (make-local-variable 'frame-title-format)
- "Set Gnuplot Options")
- (set (make-local-variable 'frame-icon-title-format)
- "Set Gnuplot Options"))
+ (set (make-local-variable 'frame-title-format)
+ "Set Gnuplot Options")
+ (set (make-local-variable 'frame-icon-title-format)
+ "Set Gnuplot Options"))
(modify-frame-parameters (selected-frame)
- '((title . "Set Gnuplot Options"))) )
+ '((title . "Set Gnuplot Options"))) )
(widget-insert "\nSet options for \"" item "\" ")
(let (tag help val)
(cond ((string-match "^[xyz]2?tics" item)
- (setq tag "info on tic labels"
- help "Open a frame displaying the info entry for tic labels"
- val "xtics"))
- ((string-match "^no" item)
- (setq tag (concat "info on " (substring item 2))
- help (format "Open a frame displaying the info entry for %S"
- item)
- val item))
- (t
- (setq tag (concat "info on " item)
- help (format "Open a frame displaying the info entry for %S"
- item)
- val item)))
+ (setq tag "info on tic labels"
+ help "Open a frame displaying the info entry for tic labels"
+ val "xtics"))
+ ((string-match "^no" item)
+ (setq tag (concat "info on " (substring item 2))
+ help (format "Open a frame displaying the info entry for %S"
+ item)
+ val item))
+ (t
+ (setq tag (concat "info on " item)
+ help (format "Open a frame displaying the info entry for %S"
+ item)
+ val item)))
(widget-create 'gnuplot-gui-info-link :tag tag :help-echo help :value val))
(widget-insert "\n\n")
(while alist
(let* ((this (car alist))
- (tag (gnuplot-gui-type-tag this))
- (wtype (gnuplot-gui-type-symbol this))
- (prefix (gnuplot-gui-type-prefix this))
- (default (cdr (assoc tag gnuplot-gui-alist)))
- (list (gnuplot-gui-type-list this)))
+ (tag (gnuplot-gui-type-tag this))
+ (wtype (gnuplot-gui-type-symbol this))
+ (prefix (gnuplot-gui-type-prefix this))
+ (default (cdr (assoc tag gnuplot-gui-alist)))
+ (list (gnuplot-gui-type-list this)))
(if (symbolp (cadr list))
- (setq list (symbol-value (cadr list))))
+ (setq list (symbol-value (cadr list))))
(widget-insert "\t") ; insert the appropriate widget
(cond
;;------------------------------ list, list* ------------
((member* (eval wtype) '(list list*) :test 'equal)
- (let ((starred (if (equal (eval wtype) 'list*) t nil)))
- (gnuplot-gui-menu-choice tag default list starred)))
+ (let ((starred (if (equal (eval wtype) 'list*) t nil)))
+ (gnuplot-gui-menu-choice tag default list starred)))
;;------------------------------ number, tag, fontsize --
((member* (eval wtype) '(number tag fontsize) :test 'equal)
- (gnuplot-gui-number tag default prefix))
+ (gnuplot-gui-number tag default prefix))
;;------------------------------ position ---------------
;;------------------------------ range, pair ------------
((member* (eval wtype) '(range pair) :test 'equal)
- (let ((is-range (equal (eval wtype) 'range)))
- (gnuplot-gui-range tag default prefix is-range)))
+ (let ((is-range (equal (eval wtype) 'range)))
+ (gnuplot-gui-range tag default prefix is-range)))
;;------------------------------ string, string* --------
((member* (eval wtype) '(string string*) :test 'equal)
- (let ((starred (if (equal (eval wtype) 'string) nil t)))
- (gnuplot-gui-string tag default prefix starred)))
+ (let ((starred (if (equal (eval wtype) 'string) nil t)))
+ (gnuplot-gui-string tag default prefix starred)))
;;------------------------------ format -----------------
((equal (eval wtype) 'format)
- (gnuplot-gui-format tag default))
+ (gnuplot-gui-format tag default))
;;------------------------------ file -------------------
((equal (eval wtype) 'file)
- (gnuplot-gui-file tag default prefix))
+ (gnuplot-gui-file tag default prefix))
;;------------------------------ labels -----------------
((equal (eval wtype) 'labels)
- (gnuplot-gui-labels tag default))
+ (gnuplot-gui-labels tag default))
;;------------------------------ text -------------------
((equal (eval wtype) 'text)
- (let ((str (gnuplot-gui-type-default this)))
- (put-text-property 0 (length str) 'face 'gnuplot-gui-flat-text-face
str)
- (widget-insert str "\n")))
+ (let ((str (gnuplot-gui-type-default this)))
+ (put-text-property 0 (length str) 'face 'gnuplot-gui-flat-text-face
str)
+ (widget-insert str "\n")))
;;------------------------------ unknown ----------------
(t
- (let ((str (concat "<" (downcase tag) "> ('"
- (symbol-name (eval wtype))
- " arguments are not yet supported)\n")))
- (put-text-property 0 (length str) 'face 'gnuplot-gui-error-face str)
- (widget-insert str)) )))
+ (let ((str (concat "<" (downcase tag) "> ('"
+ (symbol-name (eval wtype))
+ " arguments are not yet supported)\n")))
+ (put-text-property 0 (length str) 'face 'gnuplot-gui-error-face str)
+ (widget-insert str)) )))
(setq alist (cdr alist)))
;; insert control buttons: [Set options] [Reset] [Clear] [Cancel]
(widget-insert "\n\t")
(widget-create 'push-button
- :value "Set options"
- :doc item
- :button-face 'gnuplot-gui-button-face
- :help-echo "Push this button to set options"
- :notify
- (lambda (widget &rest ignore)
- (kill-buffer (get-buffer-create "*Gnuplot GUI*"))
- (delete-frame)
- (select-frame gnuplot-current-frame)
- (switch-to-buffer gnuplot-current-buffer)
- (goto-char gnuplot-current-buffer-point)
- (gnuplot-gui-post-process-alist
- (widget-get widget :doc))
- (let ((alist gnuplot-gui-alist) marker
- (eol (save-excursion (end-of-line) (point-marker) )) )
- (if (re-search-forward ";" eol "to_limit")
- (backward-char 1))
- (delete-region gnuplot-current-buffer-point (point-marker))
- (delete-horizontal-space)
- (setq marker (point-marker))
- (while alist
- (let ((val (cdar alist)))
- (if (string-match "^\\s-+$" val) ()
- (if (string-match "^['\"]\\(.*\\)['\"]$" val)
- (setq val (concat gnuplot-quote-character
- (match-string 1 val)
- gnuplot-quote-character)))
- (insert (format " %s" val))))
- (setq alist (cdr alist)))
- (setq eol (point-marker))
- (goto-char marker)
- (while (< (point) eol) ; a few odd cases
- (unless (looking-at (concat "[" (regexp-quote "(")
- (regexp-quote "*") ",]"))
- (just-one-space))
- (forward-sexp)))
- (delete-horizontal-space)
- (if (string= "terminal" (widget-get widget :doc))
- (gnuplot-gui-set-options-and-insert)) ))
+ :value "Set options"
+ :doc item
+ :button-face 'gnuplot-gui-button-face
+ :help-echo "Push this button to set options"
+ :notify
+ (lambda (widget &rest ignore)
+ (kill-buffer (get-buffer-create "*Gnuplot GUI*"))
+ (delete-frame)
+ (select-frame gnuplot-current-frame)
+ (switch-to-buffer gnuplot-current-buffer)
+ (goto-char gnuplot-current-buffer-point)
+ (gnuplot-gui-post-process-alist
+ (widget-get widget :doc))
+ (let ((alist gnuplot-gui-alist) marker
+ (eol (save-excursion (end-of-line) (point-marker) )) )
+ (if (re-search-forward ";" eol "to_limit")
+ (backward-char 1))
+ (delete-region gnuplot-current-buffer-point
(point-marker))
+ (delete-horizontal-space)
+ (setq marker (point-marker))
+ (while alist
+ (let ((val (cdar alist)))
+ (if (string-match "^\\s-+$" val) ()
+ (if (string-match "^['\"]\\(.*\\)['\"]$" val)
+ (setq val (concat gnuplot-quote-character
+ (match-string 1 val)
+ gnuplot-quote-character)))
+ (insert (format " %s" val))))
+ (setq alist (cdr alist)))
+ (setq eol (point-marker))
+ (goto-char marker)
+ (while (< (point) eol) ; a few odd cases
+ (unless (looking-at (concat "[" (regexp-quote "(")
+ (regexp-quote "*") ",]"))
+ (just-one-space))
+ (forward-sexp)))
+ (delete-horizontal-space)
+ (if (string= "terminal" (widget-get widget :doc))
+ (gnuplot-gui-set-options-and-insert)) ))
(widget-insert " ")
(widget-create 'push-button :value "Reset"
- :help-echo "Push this button to reset all values"
- :button-face 'gnuplot-gui-button-face
- :doc item
- :notify
- (lambda (widget &rest ignore)
- (let ((word (widget-get widget :doc)))
- (gnuplot-gui-set-alist word gnuplot-gui-current-string)
- (gnuplot-gui-prompt-for-frame word t))))
+ :help-echo "Push this button to reset all values"
+ :button-face 'gnuplot-gui-button-face
+ :doc item
+ :notify
+ (lambda (widget &rest ignore)
+ (let ((word (widget-get widget :doc)))
+ (gnuplot-gui-set-alist word gnuplot-gui-current-string)
+ (gnuplot-gui-prompt-for-frame word t))))
(widget-insert " ")
(widget-create 'push-button :value "Clear"
- :help-echo "Push this button to clear all values"
- :button-face 'gnuplot-gui-button-face
- :doc item
- :notify
- (lambda (widget &rest ignore)
- (let* ((word (widget-get widget :doc))
- (alist (cdr (assoc word gnuplot-gui-all-types))))
- (while alist
- (setcdr (assoc (gnuplot-gui-type-tag (car alist))
- gnuplot-gui-alist)
- (gnuplot-gui-type-default (car alist)))
- (setq alist (cdr alist)))
- (gnuplot-gui-prompt-for-frame word t))) )
+ :help-echo "Push this button to clear all values"
+ :button-face 'gnuplot-gui-button-face
+ :doc item
+ :notify
+ (lambda (widget &rest ignore)
+ (let* ((word (widget-get widget :doc))
+ (alist (cdr (assoc word gnuplot-gui-all-types))))
+ (while alist
+ (setcdr (assoc (gnuplot-gui-type-tag (car alist))
+ gnuplot-gui-alist)
+ (gnuplot-gui-type-default (car alist)))
+ (setq alist (cdr alist)))
+ (gnuplot-gui-prompt-for-frame word t))) )
(widget-insert " ")
(widget-create 'push-button :value "Cancel"
- :help-echo "Quit setting options and dismiss frame"
- :button-face 'gnuplot-gui-button-face
- :notify (lambda (widget &rest ignore)
- (kill-buffer (get-buffer-create "*Gnuplot GUI*"))
- (setq gnuplot-gui-alist nil
- gnuplot-gui-current-string nil)
- (delete-frame)
- (select-frame gnuplot-current-frame)))
+ :help-echo "Quit setting options and dismiss frame"
+ :button-face 'gnuplot-gui-button-face
+ :notify (lambda (widget &rest ignore)
+ (kill-buffer (get-buffer-create "*Gnuplot GUI*"))
+ (setq gnuplot-gui-alist nil
+ gnuplot-gui-current-string nil)
+ (delete-frame)
+ (select-frame gnuplot-current-frame)))
(goto-char (point-min))
(use-local-map widget-keymap)
(widget-setup))
@@ -1471,28 +1471,28 @@ SAVE-FRAME is non-nil when the widgets are being reset."
;;; widgets
(defface gnuplot-gui-menu-face '((((class color) (background light))
- (:bold t :foreground "darkolivegreen"))
- (((class color) (background dark))
- (:bold t :foreground "seagreen"))
- (t
- (:italic t)))
+ (:bold t :foreground "darkolivegreen"))
+ (((class color) (background dark))
+ (:bold t :foreground "seagreen"))
+ (t
+ (:italic t)))
"Face used for menu-buttons."
:group 'gnuplot-faces)
(defface gnuplot-gui-button-face '((((class color) (background light))
- (:bold t :foreground "sienna"))
- (((class color) (background dark))
- (:bold t :foreground "tan"))
- (t
- (:italic t)))
+ (:bold t :foreground "sienna"))
+ (((class color) (background dark))
+ (:bold t :foreground "tan"))
+ (t
+ (:italic t)))
"Face used for push-buttons.
Only used in Emacs. XEmacs displays push-buttons with a pixmap."
:group 'gnuplot-faces)
(defface gnuplot-gui-labels-face '((((class color) (background light))
- (:bold t :foreground "darkslateblue"))
- (((class color) (background dark))
- (:bold t :foreground "lightslateblue"))
- (t
- (:italic t)))
+ (:bold t :foreground "darkslateblue"))
+ (((class color) (background dark))
+ (:bold t :foreground "lightslateblue"))
+ (t
+ (:italic t)))
"Face used for insert and delete button in the labels widget."
:group 'gnuplot-faces)
@@ -1502,25 +1502,25 @@ ITEM is the object whose arguments are set by this
widget, DEFAULT
is the default argument value, LIST contains the items for the pop-up
menu. STARRED is true if this a 'list* widget."
(let ((widget
- (apply 'widget-create
- 'menu-choice :value default :tag item :doc starred
- :button-face 'gnuplot-gui-menu-face
- :button-prefix "[" :button-suffix "]"
- :help-echo (format "Mouse-2 to view the %S menu" (downcase
item))
- :notify
- (lambda (widget &rest ignore)
- (let ((lab (if (widget-get widget :doc)
- (concat (downcase (widget-get widget :tag)) "
")
- "" )))
- (setcdr (assoc (widget-get widget :tag) gnuplot-gui-alist)
- (if (string= (widget-value widget) " ") ""
- (format "%s%s" lab (widget-value widget))) )))
- (mapcar (lambda (x) (list 'item :value x))
- list))))
+ (apply 'widget-create
+ 'menu-choice :value default :tag item :doc starred
+ :button-face 'gnuplot-gui-menu-face
+ :button-prefix "[" :button-suffix "]"
+ :help-echo (format "Mouse-2 to view the %S menu" (downcase
item))
+ :notify
+ (lambda (widget &rest ignore)
+ (let ((lab (if (widget-get widget :doc)
+ (concat (downcase (widget-get widget :tag)) "
")
+ "" )))
+ (setcdr (assoc (widget-get widget :tag) gnuplot-gui-alist)
+ (if (string= (widget-value widget) " ") ""
+ (format "%s%s" lab (widget-value widget))) )))
+ (mapcar (lambda (x) (list 'item :value x))
+ list))))
(widget-value-set widget default)
(if (and starred (not (string-match "^\\s-*$" default)))
- (setcdr (assoc item gnuplot-gui-alist)
- (format "%s %s" (downcase item) default)))
+ (setcdr (assoc item gnuplot-gui-alist)
+ (format "%s %s" (downcase item) default)))
widget))
(defun gnuplot-gui-number (item default &optional prefix)
@@ -1531,20 +1531,20 @@ the numerical argument."
(let ((help-label (or prefix (downcase item))))
(widget-insert (capitalize item) ": ")
(widget-create 'editable-field
- :size 2 :tag item :value default :doc prefix
- :help-echo (format "Insert new value of %S here" help-label)
- :notify (lambda (widget &rest ignore)
- (let ((val (widget-value widget))
- (pre (concat (widget-get widget :doc) " ")))
- (setcdr (assoc (widget-get widget :tag)
- gnuplot-gui-alist)
- (if (string-match
- "^\\s-*[-0-9.*]+\\s-*$" val)
- (format "%s%s" pre val) "") )))))
+ :size 2 :tag item :value default :doc prefix
+ :help-echo (format "Insert new value of %S here" help-label)
+ :notify (lambda (widget &rest ignore)
+ (let ((val (widget-value widget))
+ (pre (concat (widget-get widget :doc) " ")))
+ (setcdr (assoc (widget-get widget :tag)
+ gnuplot-gui-alist)
+ (if (string-match
+ "^\\s-*[-0-9.*]+\\s-*$" val)
+ (format "%s%s" pre val) "") )))))
(unless (string-match "^\\s-*$" default)
(setcdr (assoc item gnuplot-gui-alist) (format "%s %s" prefix default)))
(widget-insert " " (make-string (- 40 (current-column)) ?.)
- " (numeric value)\n"))
+ " (numeric value)\n"))
(defun gnuplot-gui-string (item default &optional width_or_prefix starred)
"Create a string widget for the Gnuplot GUI.
@@ -1554,37 +1554,37 @@ the text entry field (which defaults to half the frame
width) or the
prefix for the string. STARRED is t if quotes are not to be used."
(let ((help-label (downcase item)) width (prefix "") (pp ""))
(cond ((stringp width_or_prefix)
- (setq prefix width_or_prefix
- pp prefix)
- (if starred (setq prefix (concat prefix "_star"))) )
- ((numberp width_or_prefix)
- (setq width width_or_prefix)))
+ (setq prefix width_or_prefix
+ pp prefix)
+ (if starred (setq prefix (concat prefix "_star"))) )
+ ((numberp width_or_prefix)
+ (setq width width_or_prefix)))
(setq width (or width (/ (frame-width) 2)))
(if (string-match "^['\"]" default)
- (setq default (replace-match "" nil nil default)))
+ (setq default (replace-match "" nil nil default)))
(if (string-match "['\"]$" default)
- (setq default (replace-match "" nil nil default)))
+ (setq default (replace-match "" nil nil default)))
(widget-insert (capitalize item) ": ")
(widget-create
'editable-field
:size width :tag item :doc prefix :value default
:help-echo (format "Insert new value of %S here" help-label)
:notify (lambda (widget &rest ignore)
- (let ((val (widget-value widget))
- (q gnuplot-quote-character)
- (p (widget-get widget :doc)) )
- (setcdr (assoc (widget-get widget :tag) gnuplot-gui-alist)
- (if (string-match "^\\s-*$" val)
- ""
- (progn
- (if (string-match "_star$" p)
- (setq p (concat (substring p 0 -5) " ")
- q ""))
- (if (string-match "^\\s-+" val)
- (setq val (replace-match "" nil nil val)))
- (if (string-match "\\s-+$" val)
- (setq val (replace-match "" nil nil val)))
- (format "%s%s%s%s" p q val q)))))))
+ (let ((val (widget-value widget))
+ (q gnuplot-quote-character)
+ (p (widget-get widget :doc)) )
+ (setcdr (assoc (widget-get widget :tag) gnuplot-gui-alist)
+ (if (string-match "^\\s-*$" val)
+ ""
+ (progn
+ (if (string-match "_star$" p)
+ (setq p (concat (substring p 0 -5) " ")
+ q ""))
+ (if (string-match "^\\s-+" val)
+ (setq val (replace-match "" nil nil val)))
+ (if (string-match "\\s-+$" val)
+ (setq val (replace-match "" nil nil val)))
+ (format "%s%s%s%s" p q val q)))))))
(unless (string-match "^\\s-*$" default)
(setcdr (assoc item gnuplot-gui-alist) (format "%s %s" pp default)))
(widget-insert "\n")))
@@ -1601,21 +1601,21 @@ prefix for the string."
(setq default (replace-match "" nil nil default)))
(widget-insert (capitalize item) ": ")
(widget-create 'editable-field
- :size (/ (frame-width) 3) :tag item :value default
- :help-echo (format "Insert new format string here")
- :notify (lambda (widget &rest ignore)
- (let ((val (widget-value widget)))
- (setcdr (assoc (widget-get widget :tag)
- gnuplot-gui-alist)
- (format "%s%s%s"
- gnuplot-quote-character
- val
- gnuplot-quote-character)))))
+ :size (/ (frame-width) 3) :tag item :value default
+ :help-echo (format "Insert new format string here")
+ :notify (lambda (widget &rest ignore)
+ (let ((val (widget-value widget)))
+ (setcdr (assoc (widget-get widget :tag)
+ gnuplot-gui-alist)
+ (format "%s%s%s"
+ gnuplot-quote-character
+ val
+ gnuplot-quote-character)))))
(widget-insert " ")
(widget-create 'gnuplot-gui-info-link
- :tag (concat "info on format")
- :help-echo "Open a frame displaying the info entry for format"
- :value "format")
+ :tag (concat "info on format")
+ :help-echo "Open a frame displaying the info entry for format"
+ :value "format")
(widget-insert "\n"))
@@ -1623,22 +1623,22 @@ prefix for the string."
(defun gnuplot-gui-file-completion (widget)
"Complete the filename in WIDGET."
(let* ((str (buffer-substring-no-properties (widget-field-start widget)
- (point)))
- (file (or (file-name-nondirectory str) ""))
- (dir (or (file-name-directory str) "./"))
- (val (file-name-completion file dir)) )
+ (point)))
+ (file (or (file-name-nondirectory str) ""))
+ (dir (or (file-name-directory str) "./"))
+ (val (file-name-completion file dir)) )
(cond ((eq val t)
- (message "Exact match"))
- ((null val)
- (error "Can't find completion for \"%s\"" str))
- ((not (string-equal str val))
- (insert (substring val (length file))))
- (t
- (message "Making completion list...")
- (let ((list (file-name-all-completions file dir)))
- (with-output-to-temp-buffer "*Completions*"
- (display-completion-list list)))
- (message "Making completion list...done")))))
+ (message "Exact match"))
+ ((null val)
+ (error "Can't find completion for \"%s\"" str))
+ ((not (string-equal str val))
+ (insert (substring val (length file))))
+ (t
+ (message "Making completion list...")
+ (let ((list (file-name-all-completions file dir)))
+ (with-output-to-temp-buffer "*Completions*"
+ (display-completion-list list)))
+ (message "Making completion list...done")))))
(defun gnuplot-gui-file (item default &optional tag)
"Create a file widget for the Gnuplot GUI.
@@ -1651,30 +1651,30 @@ the default value for the argument. TAG is non-nil if
ITEM rather than
(if (string-match "['\"]$" default)
(setq default (replace-match "" nil nil default)))
(let ((widg (widget-create
- 'file
- :value default :tag tag
- :size (- (/ (frame-width) 2) 3)
- :doc item :help-echo "Insert a filename here"
- :complete 'gnuplot-gui-file-completion
- :notify
- (lambda (widget &rest ignore)
- (setcdr (assoc (widget-get widget :doc) gnuplot-gui-alist)
- (format "%s%s%s" gnuplot-quote-character
- (widget-value widget)
- gnuplot-quote-character)) )) ))
+ 'file
+ :value default :tag tag
+ :size (- (/ (frame-width) 2) 3)
+ :doc item :help-echo "Insert a filename here"
+ :complete 'gnuplot-gui-file-completion
+ :notify
+ (lambda (widget &rest ignore)
+ (setcdr (assoc (widget-get widget :doc) gnuplot-gui-alist)
+ (format "%s%s%s" gnuplot-quote-character
+ (widget-value widget)
+ gnuplot-quote-character)) )) ))
(widget-insert " ")
(widget-create
'push-button :value "Browse"
:doc item :help-echo "Browse directories for a filename."
:parent widg
:notify (lambda (widget &rest ignore)
- (let ((fname (file-relative-name (read-file-name "File: ")
- default-directory))
- (q gnuplot-quote-character))
- (widget-value-set (widget-get widget :parent) fname)
- (setcdr (assoc (widget-get widget :doc) gnuplot-gui-alist)
- (format "%s%s%s" q fname q))
- (widget-setup))))
+ (let ((fname (file-relative-name (read-file-name "File: ")
+ default-directory))
+ (q gnuplot-quote-character))
+ (widget-value-set (widget-get widget :parent) fname)
+ (setcdr (assoc (widget-get widget :doc) gnuplot-gui-alist)
+ (format "%s%s%s" q fname q))
+ (widget-setup))))
(widget-insert "\n")))
(defun gnuplot-gui-labels (item default)
@@ -1684,19 +1684,19 @@ the default value for the argument."
(widget-create
'(editable-list
(list :inline t :tag "Tic label"
- (string :tag "label" :size 10
- :help-echo "Enter the tic label here" )
- (string :tag " position" :size 10
- :help-echo "Enter an expression for the tic location here"
)))
- :tag (capitalize item)
- :value default
- :format "%{%t%}:\n%v\t %i\n"
- :entry-format "\t %i %d %v\n"
- :button-face 'gnuplot-gui-labels-face
- :notify (lambda (widget &rest ignore)
- (setcdr (assoc (upcase (widget-get widget :tag))
- gnuplot-gui-alist)
- (widget-value widget)))))
+ (string :tag "label" :size 10
+ :help-echo "Enter the tic label here" )
+ (string :tag " position" :size 10
+ :help-echo "Enter an expression for the tic location here"
)))
+ :tag (capitalize item)
+ :value default
+ :format "%{%t%}:\n%v\t %i\n"
+ :entry-format "\t %i %d %v\n"
+ :button-face 'gnuplot-gui-labels-face
+ :notify (lambda (widget &rest ignore)
+ (setcdr (assoc (upcase (widget-get widget :tag))
+ gnuplot-gui-alist)
+ (widget-value widget)))))
(defun gnuplot-gui-range (item default separator is-range)
"Create a range or pair widget for the Gnuplot GUI.
@@ -1707,25 +1707,25 @@ is non-nil if this is a 'range widget."
(widget-insert (capitalize item) ": ")
(if is-range (widget-insert "["))
(widget-create 'editable-field
- :size 4 :tag item :value (car default)
- :help-echo (format "Insert the first value of the %S here"
- (downcase item))
- :notify (lambda (widget &rest ignore)
- (setcar (cdr (assoc (widget-get widget :tag)
- gnuplot-gui-alist))
- (format "%s" (widget-value widget)))))
+ :size 4 :tag item :value (car default)
+ :help-echo (format "Insert the first value of the %S here"
+ (downcase item))
+ :notify (lambda (widget &rest ignore)
+ (setcar (cdr (assoc (widget-get widget :tag)
+ gnuplot-gui-alist))
+ (format "%s" (widget-value widget)))))
(if is-range (widget-insert separator) (widget-insert " "))
(widget-create 'editable-field
- :size 4 :tag item :value (cdr default)
- :help-echo (format "Insert the second value of the %S here"
- (downcase item))
- :notify (lambda (widget &rest ignore)
- (setcdr (cdr (assoc (widget-get widget :tag)
- gnuplot-gui-alist))
- (format "%s" (widget-value widget)))))
+ :size 4 :tag item :value (cdr default)
+ :help-echo (format "Insert the second value of the %S here"
+ (downcase item))
+ :notify (lambda (widget &rest ignore)
+ (setcdr (cdr (assoc (widget-get widget :tag)
+ gnuplot-gui-alist))
+ (format "%s" (widget-value widget)))))
(if is-range (widget-insert "]"))
(widget-insert " " (make-string (- 39 (current-column)) ?.)
- " (numeric values)\n"))
+ " (numeric values)\n"))
;; suppress compiler warning
@@ -1733,16 +1733,19 @@ is non-nil if this is a 'range widget."
(define-widget 'gnuplot-gui-info-link 'info-link
"A link to an info file for the Gnuplot GUI."
:action '(lambda (widget &optional event)
- (let ((gnuplot-info-display 'frame))
- (if gnuplot-keywords-pending ; <HW>
- (gnuplot-setup-info-look))
- (gnuplot-info-lookup-symbol (widget-value widget)
- 'gnuplot-mode))))
+ (let ((gnuplot-info-display 'frame))
+ (if gnuplot-keywords-pending ; <HW>
+ (gnuplot-setup-info-look))
+ (gnuplot-info-lookup-symbol (widget-value widget)
+ 'gnuplot-mode))))
;;; just about done
(provide 'gnuplot-gui)
-;;;============================================================================
-;;;
+
+;; Local Variables:
+;; indent-tabs-mode: nil
+;; End:
+
;;; gnuplot-gui.el ends here
diff --git a/gnuplot-test-context.el b/gnuplot-test-context.el
index 9fa2a05..1b41c30 100644
--- a/gnuplot-test-context.el
+++ b/gnuplot-test-context.el
@@ -34,15 +34,15 @@
(lambda (token)
(case (gnuplot-token-type token)
(number
- (string-to-number (gnuplot-token-id token)))
+ (string-to-number (gnuplot-token-id token)))
(string
- (gnuplot-token-id token))
+ (gnuplot-token-id token))
(end-of-command 'end-of-command)
(otherwise
- (intern (gnuplot-token-id token)))))
+ (intern (gnuplot-token-id token)))))
tokens))
;; compile a single pattern to usable form
@@ -64,34 +64,34 @@
(defmacro with-gensyms (symbols &rest forms)
(declare (indent 1))
`(let ,(mapcar
- (lambda (sym)
- `(,sym (make-symbol ,(symbol-name sym))))
- symbols)
+ (lambda (sym)
+ `(,sym (make-symbol ,(symbol-name sym))))
+ symbols)
,@forms))
;; test-defining macro
(defmacro should-match (rule &rest pairs)
(declare (indent 1))
(with-gensyms (tokens result rest)
- `(let ((rule ,(if (symbolp rule)
- `(quote ,rule)
- (gnuplot-compile-pattern-1 rule))))
- ,@(mapcar
- (lambda (pair)
- (if (stringp pair)
- (setq pair (list pair)))
-
- (let ((string (car pair))
- (rest (cadr pair)))
- (if (eq rest :none) ; Shouldn't match anything
- `(should
- (null
- (gnuplot-match-string ,string rule)))
- `(should (equal
- (gnuplot-simplify-tokens
- (car (gnuplot-match-string ,string rule)))
- ,rest)))))
- pairs))))
+ `(let ((rule ,(if (symbolp rule)
+ `(quote ,rule)
+ (gnuplot-compile-pattern-1 rule))))
+ ,@(mapcar
+ (lambda (pair)
+ (if (stringp pair)
+ (setq pair (list pair)))
+
+ (let ((string (car pair))
+ (rest (cadr pair)))
+ (if (eq rest :none) ; Shouldn't match
anything
+ `(should
+ (null
+ (gnuplot-match-string ,string rule)))
+ `(should (equal
+ (gnuplot-simplify-tokens
+ (car (gnuplot-match-string ,string
rule)))
+ ,rest)))))
+ pairs))))
;;; The tests
@@ -99,236 +99,236 @@
;; Number
(ert-deftest gnuplot-number ()
(should-match [number]
- ("123")
- (".05")
- ("1e7")))
+ ("123")
+ (".05")
+ ("1e7")))
;; name
(ert-deftest gnuplot-name ()
(should-match [name]
- ("foo")
- ("name_with_underscores")
- ("var123")))
+ ("foo")
+ ("name_with_underscores")
+ ("var123")))
;; string-constant
;; Note that the id of a string constant token includes the delimiters
(ert-deftest gnuplot-string-constant ()
(should-match [string]
- ("\"double quoted string\"")
- ("'single quoted'")))
+ ("\"double quoted string\"")
+ ("'single quoted'")))
;; sequence
(ert-deftest gnuplot-sequence ()
(should-match [number name]
- ("1.34 name garbage" '(garbage))
- ("2.718 xy")
- ("1e9 123 2.718281828459045" :none)))
+ ("1.34 name garbage" '(garbage))
+ ("2.718 xy")
+ ("1e9 123 2.718281828459045" :none)))
;; either
(ert-deftest gnuplot-either ()
(should-match
- (either number name)
- ("1359, 349" '(\, 349))
- ("a_name . something" '(\. something))
- ("'quoted string constant' name" :none)))
+ (either number name)
+ ("1359, 349" '(\, 349))
+ ("a_name . something" '(\. something))
+ ("'quoted string constant' name" :none)))
;; many
(ert-deftest gnuplot-many ()
(should-match (many number)
- ("123 456 789")
- ("not a number" '(not a number))
- (".89 3.1415 foo" '(foo)))
+ ("123 456 789")
+ ("not a number" '(not a number))
+ (".89 3.1415 foo" '(foo)))
(should-match (many name)
- ("foo bar baz")
- ("tom dick harry 1.34" '(1.34))))
+ ("foo bar baz")
+ ("tom dick harry 1.34" '(1.34))))
;; maybe
(ert-deftest gnuplot-maybe ()
(should-match (maybe name)
- ("foo bar baz" '(bar baz))
- ("1.23" '(1.23))
- ("'string' quux" '("'string'" quux))))
+ ("foo bar baz" '(bar baz))
+ ("1.23" '(1.23))
+ ("'string' quux" '("'string'" quux))))
;; delimited list
(ert-deftest gnuplot-delimited-list ()
(should-match (delimited-list number ":")
- ("1:2:3")
- ("1e2:2.78")
- ("9")
- ("17:xy" '(: xy))
- ("nan" :none))
+ ("1:2:3")
+ ("1e2:2.78")
+ ("9")
+ ("17:xy" '(: xy))
+ ("nan" :none))
(should-match (delimited-list name ",")
- ("foo,bar,baz")
- ("x,y")
- ("x"))
+ ("foo,bar,baz")
+ ("x,y")
+ ("x"))
(should-match (delimited-list number "-")
- ("1 - 2 - 3, garbage" '(\, garbage))
- ("x - 2 - 3" :none)
- ("1 - 2 - y" '(- y))))
+ ("1 - 2 - 3, garbage" '(\, garbage))
+ ("x - 2 - 3" :none)
+ ("1 - 2 - y" '(- y))))
;; keyword
(ert-deftest gnuplot-keyword ()
(should-match (either (kw ("w" . "ord"))
- (kw ("ot" . "her_word") "ow" "alt"))
- ("word")
- ("w")
- ("wo")
- ("wor")
- ("word thing" '(thing))
- ("o" :none)
- ("ot")
- ("oth")
- ("othx" :none)
- ("ow")
- ("alt")))
+ (kw ("ot" . "her_word") "ow" "alt"))
+ ("word")
+ ("w")
+ ("wo")
+ ("wor")
+ ("word thing" '(thing))
+ ("o" :none)
+ ("ot")
+ ("oth")
+ ("othx" :none)
+ ("ow")
+ ("alt")))
;; primary-expression
(ert-deftest gnuplot-primary-expression ()
(should-match primary-expression
- ("name")
- ("123")
- ("{3,5}")
- ("$23")
- ("\"string\"")
- ("5!! + 2" '(+ 2))
- ("5 ** 9")
- ("foo[3:5]")
- ("(1,2,3)")
- ("fun(3.14,x)")
- ("3!!**2 ," '(\,))
- ("," :none)
- ("]" :none)))
+ ("name")
+ ("123")
+ ("{3,5}")
+ ("$23")
+ ("\"string\"")
+ ("5!! + 2" '(+ 2))
+ ("5 ** 9")
+ ("foo[3:5]")
+ ("(1,2,3)")
+ ("fun(3.14,x)")
+ ("3!!**2 ," '(\,))
+ ("," :none)
+ ("]" :none)))
(ert-deftest gnuplot-function-call ()
(should-match function-call
- "abs(2)"
- "sin(pi*2)"
- "non_built_in(5+2)"
- "sprintf('%s*', columnheader(1))"
- "y(n)"))
+ "abs(2)"
+ "sin(pi*2)"
+ "non_built_in(5+2)"
+ "sprintf('%s*', columnheader(1))"
+ "y(n)"))
;; expression
(ert-deftest gnuplot-infix-expression ()
(should-match expression
- ("-2")
- ("!~foo ^ bar , " '(\,))
- ("1+2%7 >= 9")
- ("f && g ? 1 + 2 : 5**2")
- ("t ? y(n) : n")
- ("f ? g ? 1 : 2 : 3 + x")
- ("f ? fun(1, 3+5 ** 7) : g > h ? pi:e : garbage"
- '(: garbage))))
+ ("-2")
+ ("!~foo ^ bar , " '(\,))
+ ("1+2%7 >= 9")
+ ("f && g ? 1 + 2 : 5**2")
+ ("t ? y(n) : n")
+ ("f ? g ? 1 : 2 : 3 + x")
+ ("f ? fun(1, 3+5 ** 7) : g > h ? pi:e : garbage"
+ '(: garbage))))
;; assignments
(ert-deftest gnuplot-assignment ()
(should-match lhs
- ("x")
- ("long_identifier")
- ("1.9" :none)
- ("x(y)")
- ("fun(x_, y_) = " '(=))
- ("no_thunks()" '(\( \))))
+ ("x")
+ ("long_identifier")
+ ("1.9" :none)
+ ("x(y)")
+ ("fun(x_, y_) = " '(=))
+ ("no_thunks()" '(\( \))))
(should-match assignment
- ("x=2")
- ("x=y=3, garbage" '(\, garbage))
- ("f(a) = y(x) = 5")))
+ ("x=2")
+ ("x=y=3, garbage" '(\, garbage))
+ ("f(a) = y(x) = 5")))
;; parenthesized exprs (including assignments)
(ert-deftest gnuplot-parenthesized-expression ()
(should-match parenthesized-expression
- ("(sum = sum + $2, sum/2)")))
+ ("(sum = sum + $2, sum/2)")))
;; axis ranges
(ert-deftest gnuplot-axis-range ()
(should-match axis-range
- ("[-pi:pi]")
- ("[-1:1]")
- ("[t = -10 :30]")
- ("[ ]")
- ("[-2:sin(5)*-8]")
- ("[:200]")
- ("[foo=:200]")
- ("[-pi:]")
- ("[bar=-pi:]")
- ("[baz=1:100*2:3/2]")
- ("[-pi:pi:0.2]")
- ("[\"1/6/93 12:00\":\"5/6/93 12:00\"]")))
+ ("[-pi:pi]")
+ ("[-1:1]")
+ ("[t = -10 :30]")
+ ("[ ]")
+ ("[-2:sin(5)*-8]")
+ ("[:200]")
+ ("[foo=:200]")
+ ("[-pi:]")
+ ("[bar=-pi:]")
+ ("[baz=1:100*2:3/2]")
+ ("[-pi:pi:0.2]")
+ ("[\"1/6/93 12:00\":\"5/6/93 12:00\"]")))
;; iteration
(ert-deftest gnuplot-iteration-spec ()
(should-match iteration-spec
- ("for [x = 1:9]")
- ("for [y=-2*pi:2*pi:0.1]")
- ("for [x = 1:9] for [y=-2*pi:2*pi:0.1]")
- ("for[1:2:3]" :none)))
+ ("for [x = 1:9]")
+ ("for [y=-2*pi:2*pi:0.1]")
+ ("for [x = 1:9] for [y=-2*pi:2*pi:0.1]")
+ ("for[1:2:3]" :none)))
;; plot expression, ignoring assignments
(ert-deftest gnuplot-plot-expression ()
(should-match plot-expression
- ("sin(x) + 2")
- ("a=5, foo")
- ("b=9 5+2")
- ("i=3, j=sin(x)+9 k = 1**2!! f(x) garbage" '(garbage))))
+ ("sin(x) + 2")
+ ("a=5, foo")
+ ("b=9 5+2")
+ ("i=3, j=sin(x)+9 k = 1**2!! f(x) garbage" '(garbage))))
;; plot modifiers
(ert-deftest gnuplot-plot-modifier ()
(should-match plot-modifier
- ("lines 5 + 2")
- ("lw 9")
+ ("lines 5 + 2")
+ ("lw 9")
- ("titl 'string'[2:3]")
- ("notitle 'ignored'")
- ("notitle with lines" '(with lines))
+ ("titl 'string'[2:3]")
+ ("notitle 'ignored'")
+ ("notitle with lines" '(with lines))
- ("axes x1y2")
- ("axes" :none)
- ("axes 2 + 3" :none)))
+ ("axes x1y2")
+ ("axes" :none)
+ ("axes 2 + 3" :none)))
(ert-deftest gnuplot-with-modifier ()
(should-match with-modifier
- ("with impulses")
- ("w points")
- ("with l")
- ("w i")
- ("with boxes")
- ("w lines")
- ("w errorbars")))
+ ("with impulses")
+ ("w points")
+ ("with l")
+ ("w i")
+ ("with boxes")
+ ("w lines")
+ ("w errorbars")))
(ert-deftest gnuplot-filledcurves ()
(should-match filledcurves-style-clause
- ("filledcurves closed")
- ("filledcurves x1")
- ("filledcurves x2")
- ("filledcurves y1=0")
- ("filledcurves below y2=42")
- ("filledcurves xy=10,20")))
+ ("filledcurves closed")
+ ("filledcurves x1")
+ ("filledcurves x2")
+ ("filledcurves y1=0")
+ ("filledcurves below y2=42")
+ ("filledcurves xy=10,20")))
(ert-deftest gnuplot-plot-command ()
(should-match plot-command
- ("plot sin(x) with impulses")
- ("plot x w points, x**2")
- ("plot [ ] [-2:5] tan(x), 'data.1' with l")
- ("plot 'leastsq.dat' w i")
- ("plot 'exper.dat' w lines, 'exper.dat' notitle w errorbars")
- ("plot sin(x) with linesp lt 1 pt 3, cos(x) with linesp lt 1 pt 4")
- ("plot 'data' with points pointtype 3 pointsize 2")
- ("plot 'data' using 1:2:4 with points pt 5 pointsize variable")
- ("plot 'd1' t \"good\" w l lt 2 lw 3, 'd2' t \"bad\" w l lt 2 lw 1")
- ("plot x*x with filledcurve closed, 40 with filledcurve y1=10")
- ("plot x*x, (x>=-5 && x<=5 ? 40 : 1/0) with filledcurve y1=10 lt 8")))
+ ("plot sin(x) with impulses")
+ ("plot x w points, x**2")
+ ("plot [ ] [-2:5] tan(x), 'data.1' with l")
+ ("plot 'leastsq.dat' w i")
+ ("plot 'exper.dat' w lines, 'exper.dat' notitle w errorbars")
+ ("plot sin(x) with linesp lt 1 pt 3, cos(x) with linesp lt 1
pt 4")
+ ("plot 'data' with points pointtype 3 pointsize 2")
+ ("plot 'data' using 1:2:4 with points pt 5 pointsize variable")
+ ("plot 'd1' t \"good\" w l lt 2 lw 3, 'd2' t \"bad\" w l lt 2
lw 1")
+ ("plot x*x with filledcurve closed, 40 with filledcurve y1=10")
+ ("plot x*x, (x>=-5 && x<=5 ? 40 : 1/0) with filledcurve y1=10
lt 8")))
;;; set cntrparam
(ert-deftest gnuplot-cntrparam ()
(should-match set-cntrparam-clause
- ("cntrparam bspline")
- ("cntrparam points 7")
- ("cntrparam order 10")
- ("cntrparam levels auto 5")
- ("cntrparam levels discrete .1,1/exp(1),.9")
- ("cntrparam levels incremental 0,1,4")
- ("cntrparam levels 10")
- ("cntrparam levels incremental 100,50")))
+ ("cntrparam bspline")
+ ("cntrparam points 7")
+ ("cntrparam order 10")
+ ("cntrparam levels auto 5")
+ ("cntrparam levels discrete .1,1/exp(1),.9")
+ ("cntrparam levels incremental 0,1,4")
+ ("cntrparam levels 10")
+ ("cntrparam levels incremental 100,50")))
@@ -360,37 +360,37 @@
(defun gnuplot-test-parse-all-demos ()
(interactive)
(let* ((bufname "*gnuplot parse test results*")
- (gnuplot-test-result-buffer
- (progn
- (and bufname (get-buffer bufname)
- (kill-buffer bufname))
- (get-buffer-create bufname)))
- (gnuplot-test-count 0)
- (gnuplot-test-success-count 0)
- (demo-files (directory-files gnuplot-demo-dir t "^[^.].*\\.dem$"))
- (n-files (length demo-files))
- (n 0))
+ (gnuplot-test-result-buffer
+ (progn
+ (and bufname (get-buffer bufname)
+ (kill-buffer bufname))
+ (get-buffer-create bufname)))
+ (gnuplot-test-count 0)
+ (gnuplot-test-success-count 0)
+ (demo-files (directory-files gnuplot-demo-dir t "^[^.].*\\.dem$"))
+ (n-files (length demo-files))
+ (n 0))
(switch-to-buffer-other-window gnuplot-test-result-buffer)
(catch 'done
(dolist (fname demo-files)
- (with-temp-buffer
- (insert-file-contents fname)
- (gnuplot-mode)
- (message "Testing on file %s of %s: %s..."
- (incf n) n-files fname)
- (condition-case err
- (gnuplot-test-parse-buffer (current-buffer) fname)
- (error
- (with-current-buffer gnuplot-test-result-buffer
- (insert (format "ERROR in %s: %s" fname err)))))
- (message "Testing on file %s of %s: %s... done"
- n n-files fname)
- (with-current-buffer gnuplot-test-result-buffer
- (goto-char (point-max))
- (recenter)
+ (with-temp-buffer
+ (insert-file-contents fname)
+ (gnuplot-mode)
+ (message "Testing on file %s of %s: %s..."
+ (incf n) n-files fname)
+ (condition-case err
+ (gnuplot-test-parse-buffer (current-buffer) fname)
+ (error
+ (with-current-buffer gnuplot-test-result-buffer
+ (insert (format "ERROR in %s: %s" fname err)))))
+ (message "Testing on file %s of %s: %s... done"
+ n n-files fname)
+ (with-current-buffer gnuplot-test-result-buffer
+ (goto-char (point-max))
+ (recenter)
(redisplay t)))))
(let ((success-rate
(/ (+ gnuplot-test-success-count 0.0)
@@ -406,35 +406,35 @@
(defun gnuplot-test-parse-buffer (&optional buffer fname)
(interactive nil)
(let ((buffer (or buffer (current-buffer)))
- (fname (or fname (buffer-file-name))))
+ (fname (or fname (buffer-file-name))))
(with-current-buffer buffer
(goto-char (point-min))
(while (not (eobp))
- (let ((ln (line-number-at-pos))
- (tokens (progn
- (gnuplot-end-of-command)
- (gnuplot-tokenize))))
- (when (> (length tokens) 1)
- (let ((result
- (gnuplot-match-pattern
- gnuplot-compiled-grammar
- tokens nil)))
- (incf gnuplot-test-count)
- (if (equal result '(nil))
- (incf gnuplot-test-success-count)
- (let ((cmd
- (buffer-substring
- (gnuplot-point-at-beginning-of-command)
- (gnuplot-point-at-end-of-command))))
- (with-current-buffer
- (get-buffer-create gnuplot-test-result-buffer)
- (insert
- (format "FAILED at %s:%s\n\t%s\n" fname ln cmd))
- (when (not (null result))
- (insert
- (format "\tUNMATCHED TOKENS were: %s\n"
- (gnuplot-simplify-tokens (car result)))))))))))
- (gnuplot-beginning-of-defun -1)))))
+ (let ((ln (line-number-at-pos))
+ (tokens (progn
+ (gnuplot-end-of-command)
+ (gnuplot-tokenize))))
+ (when (> (length tokens) 1)
+ (let ((result
+ (gnuplot-match-pattern
+ gnuplot-compiled-grammar
+ tokens nil)))
+ (incf gnuplot-test-count)
+ (if (equal result '(nil))
+ (incf gnuplot-test-success-count)
+ (let ((cmd
+ (buffer-substring
+ (gnuplot-point-at-beginning-of-command)
+ (gnuplot-point-at-end-of-command))))
+ (with-current-buffer
+ (get-buffer-create gnuplot-test-result-buffer)
+ (insert
+ (format "FAILED at %s:%s\n\t%s\n" fname ln cmd))
+ (when (not (null result))
+ (insert
+ (format "\tUNMATCHED TOKENS were: %s\n"
+ (gnuplot-simplify-tokens (car result)))))))))))
+ (gnuplot-beginning-of-defun -1)))))
(when (boundp 'compilation-error-regexp-alist-alist)
(add-to-list 'compilation-error-regexp-alist-alist
@@ -444,3 +444,9 @@
(add-to-list 'compilation-error-regexp-alist 'gnuplot-test-errors))
(provide 'gnuplot-test-context)
+
+;; Local Variables:
+;; indent-tabs-mode: nil
+;; End:
+
+;;; gnuplot-test-context.el ends here
diff --git a/gnuplot-tests.el b/gnuplot-tests.el
index 2333846..96fbde9 100644
--- a/gnuplot-tests.el
+++ b/gnuplot-tests.el
@@ -68,102 +68,102 @@ string-literal in multiple different contexts, as
determined by
`(ert-deftest ,name ()
,string
,@(loop for context in gnuplot-string-test-contexts
- collect
- `(should (gnuplot-test-string-in-context ,string ,context)))))
+ collect
+ `(should (gnuplot-test-string-in-context ,string ,context)))))
;;;; Tests for double-quoted strings
(gnuplot-test-string gnuplot-double-quoted-string
- "\"double-quoted string\"")
+ "\"double-quoted string\"")
(gnuplot-test-string gnuplot-double-quoted-with-single-quotes
- "\"double-quoted 'with single quotes' embedded\"")
+ "\"double-quoted 'with single quotes' embedded\"")
(gnuplot-test-string gnuplot-double-quoted-with-single-quotes-2
- "\"'single quotes inside double quotes'\"")
-
+ "\"'single quotes inside double quotes'\"")
+
(gnuplot-test-string gnuplot-double-quoted-escapes
- "\"double-quoted \\\\ string \\\" with embedded \\\" escapes\"")
+ "\"double-quoted \\\\ string \\\" with embedded \\\"
escapes\"")
(gnuplot-test-string gnuplot-double-quoted-escapes-2
- "\"escaped quote before closing quote \\\"\"")
+ "\"escaped quote before closing quote \\\"\"")
(gnuplot-test-string gnuplot-double-quoted-escapes-3
- "\"escaped backslash before closing quote \\\\\"")
+ "\"escaped backslash before closing quote \\\\\"")
(gnuplot-test-string gnuplot-double-quoted-escapes-4
- "\"\\\" escaped quote after opening quote\"")
+ "\"\\\" escaped quote after opening quote\"")
(gnuplot-test-string gnuplot-double-quoted-escapes-5
- "\"\\\\ escaped backslash after opening quote\"")
+ "\"\\\\ escaped backslash after opening quote\"")
(gnuplot-test-string gnuplot-double-quoted-escapes-6
- "\"\\\\\\\" escaped backslashes + escaped quotes (1) \\\\\\\"\"")
+ "\"\\\\\\\" escaped backslashes + escaped quotes (1)
\\\\\\\"\"")
(gnuplot-test-string gnuplot-double-quoted-empty
- "\"\"")
+ "\"\"")
(gnuplot-test-string gnuplot-double-quoted-string-containing-escaped-quotes
- "\"\\\"\\\"\"")
+ "\"\\\"\\\"\"")
(gnuplot-test-string gnuplot-newline-terminated-double-quoted-string
- "\"newline-terminated
+ "\"newline-terminated
")
-
+
(gnuplot-test-string gnuplot-double-quoted-with-embedded-newlines
- "\"string \\
+ "\"string \\
with embedded \\
newlines\"")
(gnuplot-test-string
gnuplot-newline-terminated-double-quoted-string-with-newline
- ;; with newlines
- "\"newline-terminated string \\
+ ;; with newlines
+ "\"newline-terminated string \\
with newlines
")
;;;; Tests for single-quoted strings
(gnuplot-test-string gnuplot-single-quoted-strings
- "'single-quoted string'")
+ "'single-quoted string'")
(gnuplot-test-string gnuplot-single-quoted-empty
- "''")
+ "''")
(gnuplot-test-string gnuplot-single-quoted-with-double-quotes
- "'a single-quoted string \"containing a double-quoted string\"'")
+ "'a single-quoted string \"containing a double-quoted
string\"'")
(gnuplot-test-string gnuplot-single-quoted-quotes
- "'embedded '' quote '' characters'")
+ "'embedded '' quote '' characters'")
(gnuplot-test-string gnuplot-single-quoted-quotes-2
- "'embedded '' quote '' characters'''")
+ "'embedded '' quote '' characters'''")
(gnuplot-test-string gnuplot-single-quoted-quotes-3
- "' '''")
+ "' '''")
(gnuplot-test-string gnuplot-single-quoted-backslashes
- "'embedded \\ backslashes \\'")
+ "'embedded \\ backslashes \\'")
(gnuplot-test-string gnuplot-single-quoted-backslashes-2
- "'multiple \\ embedded \\\\ backslashes \\\\\\'")
+ "'multiple \\ embedded \\\\ backslashes \\\\\\'")
(gnuplot-test-string gnuplot-single-quoted-trailing-backslash
- "'trailing backslash\\'")
+ "'trailing backslash\\'")
(gnuplot-test-string gnuplot-single-quoted-newline-terminated
- "'newline terminated\n")
+ "'newline terminated\n")
(gnuplot-test-string gnuplot-single-quoted-newline-terminated-quotes
- "'embedded '' escapes \\ ending at newline ''\n")
+ "'embedded '' escapes \\ ending at newline ''\n")
(gnuplot-test-string gnuplot-single-quoted-embedded-newlines
- "'string \\\n with embedded \\\nnewlines'")
+ "'string \\\n with embedded \\\nnewlines'")
(gnuplot-test-string gnuplot-single-quoted-embedded-newlines-backslashes
- "'string \\\\\n with \\\\\\\n multiple \\\\\\\\\n backslashes'")
+ "'string \\\\\n with \\\\\\\n multiple \\\\\\\\\n
backslashes'")
(gnuplot-test-string gnuplot-single-quoted-newline-terminated-embedded-newline
- "'newline-terminated string \\\n with newlines\n")
+ "'newline-terminated string \\\n with newlines\n")
;;;; Comment syntax
@@ -204,11 +204,11 @@ comment
(syntax-propertize (point-max)))
(goto-char (1+ start))
(flet ((in-comment-p (position)
- (nth 4 (syntax-ppss position))))
+ (nth 4 (syntax-ppss position))))
(and
(not (in-comment-p start))
(loop for position from (1+ start) upto end
- always (in-comment-p position))
+ always (in-comment-p position))
(or (= end (point-max))
(not (in-comment-p (1+ end))))))))))
@@ -222,32 +222,38 @@ string-literal in multiple different contexts, as
determined by
`(ert-deftest ,name ()
,comment
,@(loop for context in gnuplot-comment-test-contexts
- collect
- `(should (gnuplot-test-comment-in-context ,comment
,context)))))
+ collect
+ `(should (gnuplot-test-comment-in-context ,comment ,context)))))
(gnuplot-test-comment gnuplot-comment-simple
- "# a simple one-line comment")
+ "# a simple one-line comment")
(gnuplot-test-comment gnuplot-comment-multiline
- "# a comment\
+ "# a comment\
continued \
over multiple lines")
(gnuplot-test-comment gnuplot-comment-with-hashes
- "# a comment # with more # hash # characters #")
+ "# a comment # with more # hash # characters #")
(gnuplot-test-comment gnuplot-comment-multiline-with-hashes
- "# a comment \
+ "# a comment \
# continued # over \
mutliple # lines #")
(gnuplot-test-comment gnuplot-comment-with-single-quotes
- "# a comment 'containing a single-quoted string'")
+ "# a comment 'containing a single-quoted string'")
(gnuplot-test-comment gnuplot-comment-with-single-quotes
- "# a comment \"containing a double-quoted string\"")
+ "# a comment \"containing a double-quoted string\"")
(gnuplot-test-comment gnuplot-comment-multiline-with-quotes
- "# a continued \
+ "# a continued \
'comment' \
\"containing strings\"")
+
+;; Local Variables:
+;; indent-tabs-mode: nil
+;; End:
+
+;;; gnuplot-tests.el ends here
diff --git a/gnuplot.el b/gnuplot.el
index 00e7e62..7ca7638 100644
--- a/gnuplot.el
+++ b/gnuplot.el
@@ -46,7 +46,7 @@
;; This version of gnuplot-mode has been tested mostly on GNU Emacs 23
;; and 24, but should also work with older GNU Emacs versions back to
;; Emacs 21, and XEmacs 21.
-;;
+;;
;; This mode offers several tools to help you compose your scripts,
;; including font-lock syntax colorization, a syntax table appropriate
;; to gnuplot, key bindings, pull-down menus, indentation, keyword
@@ -110,7 +110,7 @@
;; gnuplot-context.el (written by Jonathan, j.j.oddie@gmail.com)
;; Context-sensitive completion, help lookup and eldoc
;; strings for gnuplot buffers. Should be byte-compiled before
-;; using.
+;; using.
;;
;; ---------------------------------------------------------------------
;;
@@ -300,7 +300,7 @@
;; 0.6.1 Sep 13 2011 <BR> Moved to github, updated contact info
;; 0.7.0 Oct 20 2012 <jjo> Contextual completion & help, inline plots,
;; some other stuff
-
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Acknowledgements:
;; David Batty <DB> (numerous corrections)
@@ -382,10 +382,10 @@ real work."
(defalias 'gnuplot-window-full-height-p 'window-full-height-p)
;; The below is taken from window.el in GNU Emacs
(defun gnuplot-window-full-height-p (&optional window)
- (unless window
- (setq window (selected-window)))
- (= (window-height window)
- (window-height (frame-root-window (window-frame window))))))
+ (unless window
+ (setq window (selected-window)))
+ (= (window-height window)
+ (window-height (frame-root-window (window-frame window))))))
;; Workaround obsolete `process-kill-without-query'
(if (fboundp 'set-process-query-on-exit-flag)
@@ -396,13 +396,13 @@ real work."
(if (fboundp 'syntax-ppss)
(defalias 'gnuplot-syntax-ppss 'syntax-ppss)
(defun gnuplot-syntax-ppss (&optional pos)
- (save-excursion
- (unless pos (setq pos (point)))
- (let ((begin
- (save-excursion
- (goto-char pos)
- (gnuplot-point-at-beginning-of-continuation))))
- (parse-partial-sexp begin pos)))))
+ (save-excursion
+ (unless pos (setq pos (point)))
+ (let ((begin
+ (save-excursion
+ (goto-char pos)
+ (gnuplot-point-at-beginning-of-continuation))))
+ (parse-partial-sexp begin pos)))))
;;;;
@@ -423,7 +423,7 @@ real work."
:group 'local
:link '(emacs-library-link :tag "Lisp File" "gnuplot.el")
:link '(url-link :tag "Homepage"
- "https://github.com/emacsorphanage/gnuplot/")
+ "https://github.com/emacsorphanage/gnuplot/")
:link '(custom-manual "(gnuplot)Top")
:link '(emacs-commentary-link :tag "Commentary" "gnuplot.el") )
(defgroup gnuplot-insertions nil
@@ -558,8 +558,8 @@ The values are
nil `gnuplot-process' is in the current frame but not displayed"
:group 'gnuplot
:type '(radio (const :tag "Separate frame" frame)
- (const :tag "Separate window" window)
- (const :tag "Not displayed" nil)))
+ (const :tag "Separate window" window)
+ (const :tag "Not displayed" nil)))
(defcustom gnuplot-info-display 'window
"*Determines how `gnuplot-info-lookup-symbol' displays the info file.
The values are
@@ -568,8 +568,8 @@ The values are
nil display info file in the current window"
:group 'gnuplot
:type '(radio (const :tag "Separate frame" frame)
- (const :tag "Separate window" window)
- (const :tag "This window" nil)))
+ (const :tag "Separate window" window)
+ (const :tag "This window" nil)))
(defcustom gnuplot-echo-command-line-flag (not gnuplot-ntemacs-p)
"*This sets the fall-back value of `comint-process-echos'.
@@ -612,8 +612,8 @@ filename insertion function never insert quotes for you,
set this
to the empty string."
:group 'gnuplot
:type '(radio (const :tag "double quote" "\"")
- (const :tag "single quote" "\'")
- (const :tag "none" "" )))
+ (const :tag "single quote" "\'")
+ (const :tag "none" "" )))
(defcustom gnuplot-basic-offset 4
"Number of columns to indent lines inside a do- or if-else-block.
@@ -653,7 +653,7 @@ time that data is needed."
:group 'gnuplot
:type
'(radio (const :tag "Parse info file when gnuplot-mode starts"
immediately)
- (const :tag "Parse info file the first time it is needed" deferred)))
+ (const :tag "Parse info file the first time it is needed" deferred)))
(defun gnuplot-set-context-sensitive-completion (_variable value)
"Customize :set function for `gnuplot-use-context-sensitive-completion'."
@@ -664,7 +664,7 @@ time that data is needed."
(if value 1 0))))))
(defcustom gnuplot-use-context-sensitive-completion t
- "Non-nil if `gnuplot-context-sensitive-mode' should be enabled by default.
+ "Non-nil if `gnuplot-context-sensitive-mode' should be enabled by default.
In context-sensitive mode, gnuplot-mode parses the current
command line to provide smarter completion and documentation
@@ -681,7 +681,7 @@ ElDoc support requires `gnuplot-context-sensitive-mode' to
be
on."
:group 'gnuplot
:type 'boolean)
-
+
(defcustom gnuplot-tab-completion nil
"Non-nil if TAB should perform completion in gnuplot-mode buffers.
@@ -755,9 +755,9 @@ non-nil."
(defvar gnuplot-mode-map
(let ((map (make-sparse-keymap))
(completion-function
- (if (fboundp 'completion-at-point)
- 'completion-at-point
- 'gnuplot-xemacs-completion-at-point)))
+ (if (fboundp 'completion-at-point)
+ 'completion-at-point
+ 'gnuplot-xemacs-completion-at-point)))
(define-key map "\C-c\C-b" 'gnuplot-send-buffer-to-gnuplot)
(define-key map "\C-c\C-c" 'comment-region) ; <RF>
(define-key map "\C-c\C-o" 'gnuplot-gui-set-options-and-insert)
@@ -792,10 +792,10 @@ non-nil."
(defvar gnuplot-display-options-menu
(flet ((make-image-setter (type)
- `[,(concat (upcase type) " images")
- (lambda () (interactive) (gnuplot-set-image-format ,type))
- :style toggle
- :selected (eq gnuplot-image-format ,type)]))
+ `[,(concat (upcase type) " images")
+ (lambda () (interactive)
(gnuplot-set-image-format ,type))
+ :style toggle
+ :selected (eq gnuplot-image-format ,type)]))
`("Display plot output"
["Externally" gnuplot-external-display-mode
:style toggle
@@ -917,23 +917,23 @@ create a `gnuplot-mode' buffer."
(defcustom gnuplot-insertions-adornments ; this is icky...
(if gnuplot-three-eight-p
'("adornments"
- ["arrow" (gnuplot-insert "set arrow ") t]
- ["bar" (gnuplot-insert "set bar") t]
- ["border" (gnuplot-insert "set border") t]
- ["boxwidth" (gnuplot-insert "set boxwidth ") t]
- ["format" (gnuplot-insert "set format ") t]
- ["grid" (gnuplot-insert "set grid") t]
- ["key" (gnuplot-insert "set key ") t]
- ["label" (gnuplot-insert "set label ") t]
- ["pointsize" (gnuplot-insert "set pointsize ") t]
- ["samples" (gnuplot-insert "set samples ") t]
- ["size" (gnuplot-insert "set size ") t]
- ["style" (gnuplot-insert "set style ") t]
- ["tics" (gnuplot-insert "set tics ") t]
- ["timefmt" (gnuplot-insert "set timefmt ") t]
- ["timestamp" (gnuplot-insert "set timestamp ") t]
- ["title" (gnuplot-insert "set title ") t]
- ["zeroaxis" (gnuplot-insert "set zeroaxis") t] )
+ ["arrow" (gnuplot-insert "set arrow ") t]
+ ["bar" (gnuplot-insert "set bar") t]
+ ["border" (gnuplot-insert "set border") t]
+ ["boxwidth" (gnuplot-insert "set boxwidth ") t]
+ ["format" (gnuplot-insert "set format ") t]
+ ["grid" (gnuplot-insert "set grid") t]
+ ["key" (gnuplot-insert "set key ") t]
+ ["label" (gnuplot-insert "set label ") t]
+ ["pointsize" (gnuplot-insert "set pointsize ") t]
+ ["samples" (gnuplot-insert "set samples ") t]
+ ["size" (gnuplot-insert "set size ") t]
+ ["style" (gnuplot-insert "set style ") t]
+ ["tics" (gnuplot-insert "set tics ") t]
+ ["timefmt" (gnuplot-insert "set timefmt ") t]
+ ["timestamp" (gnuplot-insert "set timestamp ") t]
+ ["title" (gnuplot-insert "set title ") t]
+ ["zeroaxis" (gnuplot-insert "set zeroaxis") t] )
'("adornments"
["data style" (gnuplot-insert "set data style ") t]
["function style" (gnuplot-insert "set function style ") t]
@@ -958,12 +958,12 @@ See the document string for `gnuplot-insertions-menu'
Changing this will not effect a change in any currently existing
`gnuplot-mode' buffer. You will see the change the next time you
create a `gnuplot-mode' buffer."
- :group 'gnuplot-insertions
- :type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
+ :group 'gnuplot-insertions
+ :type '(list (string :tag "Title")
+ (repeat :inline t
+ (vector (string :tag "Name")
+ (function :tag "Callback")
+ (boolean :tag "Enabled" t)))))
@@ -988,10 +988,10 @@ Changing this will not effect a change in any currently
existing
create a `gnuplot-mode' buffer."
:group 'gnuplot-insertions
:type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
+ (repeat :inline t
+ (vector (string :tag "Name")
+ (function :tag "Callback")
+ (boolean :tag "Enabled" t)))))
(defcustom gnuplot-insertions-terminal
@@ -1019,10 +1019,10 @@ Changing this will not effect a change in any currently
existing
create a `gnuplot-mode' buffer."
:group 'gnuplot-insertions
:type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
+ (repeat :inline t
+ (vector (string :tag "Name")
+ (function :tag "Callback")
+ (boolean :tag "Enabled" t)))))
(defcustom gnuplot-insertions-x-axis
@@ -1042,10 +1042,10 @@ Changing this will not effect a change in any currently
existing
create a `gnuplot-mode' buffer."
:group 'gnuplot-insertions
:type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
+ (repeat :inline t
+ (vector (string :tag "Name")
+ (function :tag "Callback")
+ (boolean :tag "Enabled" t)))))
(defcustom gnuplot-insertions-x2-axis
@@ -1065,10 +1065,10 @@ Changing this will not effect a change in any currently
existing
create a `gnuplot-mode' buffer."
:group 'gnuplot-insertions
:type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
+ (repeat :inline t
+ (vector (string :tag "Name")
+ (function :tag "Callback")
+ (boolean :tag "Enabled" t)))))
(defcustom gnuplot-insertions-y-axis
@@ -1088,10 +1088,10 @@ Changing this will not effect a change in any currently
existing
create a `gnuplot-mode' buffer."
:group 'gnuplot-insertions
:type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
+ (repeat :inline t
+ (vector (string :tag "Name")
+ (function :tag "Callback")
+ (boolean :tag "Enabled" t)))))
(defcustom gnuplot-insertions-y2-axis
'("y2-axis"
@@ -1110,10 +1110,10 @@ Changing this will not effect a change in any currently
existing
create a `gnuplot-mode' buffer."
:group 'gnuplot-insertions
:type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
+ (repeat :inline t
+ (vector (string :tag "Name")
+ (function :tag "Callback")
+ (boolean :tag "Enabled" t)))))
@@ -1133,10 +1133,10 @@ Changing this will not effect a change in any currently
existing
create a `gnuplot-mode' buffer."
:group 'gnuplot-insertions
:type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
+ (repeat :inline t
+ (vector (string :tag "Name")
+ (function :tag "Callback")
+ (boolean :tag "Enabled" t)))))
(defcustom gnuplot-insertions-parametric-plots
@@ -1154,10 +1154,10 @@ Changing this will not effect a change in any currently
existing
create a `gnuplot-mode' buffer."
:group 'gnuplot-insertions
:type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
+ (repeat :inline t
+ (vector (string :tag "Name")
+ (function :tag "Callback")
+ (boolean :tag "Enabled" t)))))
(defcustom gnuplot-insertions-polar-plots
@@ -1172,10 +1172,10 @@ Changing this will not effect a change in any currently
existing
create a `gnuplot-mode' buffer."
:group 'gnuplot-insertions
:type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
+ (repeat :inline t
+ (vector (string :tag "Name")
+ (function :tag "Callback")
+ (boolean :tag "Enabled" t)))))
(defcustom gnuplot-insertions-surface-plots
@@ -1195,10 +1195,10 @@ Changing this will not effect a change in any currently
existing
create a `gnuplot-mode' buffer."
:group 'gnuplot-insertions
:type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
+ (repeat :inline t
+ (vector (string :tag "Name")
+ (function :tag "Callback")
+ (boolean :tag "Enabled" t)))))
@@ -1208,12 +1208,12 @@ This part contains the toggle buttons for displaying
info or
opening an argument-setting popup.")
(setq gnuplot-insertions-bottom
'("---"
- ["Display of info with insertion" gnuplot-toggle-info-display
- :style toggle :selected gnuplot-insertions-show-help-flag]
- ["Display GUI popup with insertion" gnuplot-gui-toggle-popup
- :active (fboundp 'gnuplot-gui-toggle-popup)
- :style toggle :selected (and (fboundp 'gnuplot-gui-toggle-popup)
- gnuplot-gui-popup-flag)] ))
+ ["Display of info with insertion" gnuplot-toggle-info-display
+ :style toggle :selected gnuplot-insertions-show-help-flag]
+ ["Display GUI popup with insertion" gnuplot-gui-toggle-popup
+ :active (fboundp 'gnuplot-gui-toggle-popup)
+ :style toggle :selected (and (fboundp 'gnuplot-gui-toggle-popup)
+ gnuplot-gui-popup-flag)] ))
;; Regarding a comment by <DB>:
@@ -1241,33 +1241,33 @@ opening an argument-setting popup.")
"Initial setup of gnuplot and insertions menus."
(if gnuplot-insertions-menu-flag ; set up insertions menu
(progn
- (if gnuplot-xemacs-p
- (setq gnuplot-insertions-top
- '("insert set expression" "--:doubleLine"))
- (setq gnuplot-insertions-top
- '("insert set expression" "---")))
- (setq gnuplot-insertions-menu
- (append (list "Insertions")
- gnuplot-insertions-top
- (list gnuplot-insertions-adornments)
- (list gnuplot-insertions-plot-options)
- (list gnuplot-insertions-terminal)
- (list gnuplot-insertions-x-axis)
- (list gnuplot-insertions-y-axis)
- (list gnuplot-insertions-z-axis)
- (list gnuplot-insertions-x2-axis)
- (list gnuplot-insertions-y2-axis)
- (list gnuplot-insertions-parametric-plots)
- (list gnuplot-insertions-polar-plots)
- (list gnuplot-insertions-surface-plots)
- gnuplot-insertions-bottom))
- (easy-menu-define gnuplot-mode-insertions-menu gnuplot-mode-map
- "Insertions menu used in Gnuplot-mode"
- gnuplot-insertions-menu)
- (easy-menu-add gnuplot-mode-insertions-menu gnuplot-mode-map)))
+ (if gnuplot-xemacs-p
+ (setq gnuplot-insertions-top
+ '("insert set expression" "--:doubleLine"))
+ (setq gnuplot-insertions-top
+ '("insert set expression" "---")))
+ (setq gnuplot-insertions-menu
+ (append (list "Insertions")
+ gnuplot-insertions-top
+ (list gnuplot-insertions-adornments)
+ (list gnuplot-insertions-plot-options)
+ (list gnuplot-insertions-terminal)
+ (list gnuplot-insertions-x-axis)
+ (list gnuplot-insertions-y-axis)
+ (list gnuplot-insertions-z-axis)
+ (list gnuplot-insertions-x2-axis)
+ (list gnuplot-insertions-y2-axis)
+ (list gnuplot-insertions-parametric-plots)
+ (list gnuplot-insertions-polar-plots)
+ (list gnuplot-insertions-surface-plots)
+ gnuplot-insertions-bottom))
+ (easy-menu-define gnuplot-mode-insertions-menu gnuplot-mode-map
+ "Insertions menu used in Gnuplot-mode"
+ gnuplot-insertions-menu)
+ (easy-menu-add gnuplot-mode-insertions-menu gnuplot-mode-map)))
(easy-menu-define ; set up gnuplot menu
- gnuplot-mode-menu gnuplot-mode-map "Menu used in gnuplot-mode"
- gnuplot-menu)
+ gnuplot-mode-menu gnuplot-mode-map "Menu used in gnuplot-mode"
+ gnuplot-menu)
(easy-menu-add gnuplot-mode-menu gnuplot-mode-map) )
;; There is no `mark-active' variable in XEmacs. Hassle! This is not
@@ -1306,11 +1306,11 @@ the next time you use `gnuplot-mode' and emacs.
This is only used if a toolbar can be displayed, thus this is used in
XEmacs and ignored in FSF Emacs."
:type '(choice (const default-toolbar)
- (const top-toolbar)
- (const bottom-toolbar)
- (const left-toolbar)
- (const right-toolbar)
- (const :tag "No toolbar" nil))
+ (const top-toolbar)
+ (const bottom-toolbar)
+ (const left-toolbar)
+ (const right-toolbar)
+ (const :tag "No toolbar" nil))
:group 'gnuplot-toolbar)
(defvar gnuplot-toolbar-location "")
@@ -1320,9 +1320,9 @@ XEmacs and ignored in FSF Emacs."
TOOLBAR contains the toolbar specification.
This is basically swiped from VM."
(let ((width 46) (height 46)
- (buffer (current-buffer))
- (frame (selected-frame))
- (tag-set '(win)))
+ (buffer (current-buffer))
+ (frame (selected-frame))
+ (tag-set '(win)))
(cond
((eq (symbol-value gnuplot-toolbar-use-toolbar) right-toolbar)
(setq gnuplot-toolbar-location "right")
@@ -1395,7 +1395,7 @@ static char *line[] = {
\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"};")
- "XPM format image used for the \"plot line\" button"))
+ "XPM format image used for the \"plot line\" button"))
(defvar gnuplot-region-xpm
(if (and (featurep 'xpm) (fboundp 'toolbar-make-button-list))
@@ -1451,7 +1451,7 @@ static char *region[] = {
\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"};")
- "XPM format image used for the \"plot region\" button"))
+ "XPM format image used for the \"plot region\" button"))
(defvar gnuplot-buffer-xpm
(if (and (featurep 'xpm) (fboundp 'toolbar-make-button-list))
@@ -1507,7 +1507,7 @@ static char *buffer[] = {
\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"};")
- "XPM format image used for the \"plot buffer\" button"))
+ "XPM format image used for the \"plot buffer\" button"))
(defvar gnuplot-doc-xpm
(if (and (featurep 'xpm) (fboundp 'toolbar-make-button-list))
@@ -1564,7 +1564,7 @@ static char *book_index[] = {
\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"};")
- "XPM format image used for the \"document\" button"))
+ "XPM format image used for the \"document\" button"))
(defvar gnuplot-help-xpm
(if (and (featurep 'xpm) (fboundp 'toolbar-make-button-list))
@@ -1618,7 +1618,7 @@ static char *help_btn[] = {
\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"};")
- "XPM format image used for the \"help\" button"))
+ "XPM format image used for the \"help\" button"))
(defvar gnuplot-toolbar
'([gnuplot-line-xpm
@@ -1649,11 +1649,11 @@ static char *help_btn[] = {
(defun gnuplot-make-toolbar-function ()
(if (and gnuplot-xemacs-p gnuplot-all-buttons-defined)
(progn
- ;;(remove-specifier gnuplot-toolbar-use-toolbar (current-buffer))
- (gnuplot-toolbar-setup-toolbar gnuplot-toolbar)
- (add-spec-to-specifier (symbol-value gnuplot-toolbar-use-toolbar)
- gnuplot-toolbar
- (current-buffer) ))))
+ ;;(remove-specifier gnuplot-toolbar-use-toolbar (current-buffer))
+ (gnuplot-toolbar-setup-toolbar gnuplot-toolbar)
+ (add-spec-to-specifier (symbol-value gnuplot-toolbar-use-toolbar)
+ gnuplot-toolbar
+ (current-buffer) ))))
;;(defalias 'gnuplot-make-toolbar 'gnuplot-make-toolbar-function)
@@ -1685,11 +1685,11 @@ static char *help_btn[] = {
;; `syntax-propertize', fall back to using the built-in parser and
;; making ", ', and # string or comment delimiters as normal.
(if (not (boundp 'syntax-propertize-function))
- (progn
- (modify-syntax-entry ?\' "\"" table)
- (modify-syntax-entry ?# "<" table)
- (modify-syntax-entry ?\n ">" table)
- (modify-syntax-entry ?\\ "\\" table))
+ (progn
+ (modify-syntax-entry ?\' "\"" table)
+ (modify-syntax-entry ?# "<" table)
+ (modify-syntax-entry ?\n ">" table)
+ (modify-syntax-entry ?\\ "\\" table))
;; When syntax-propertize is available, ", ', and # should be
;; punctuation so that the built-in parser doesn't interfere
@@ -1737,7 +1737,7 @@ These are highlighted using
`font-lock-function-name-face'.")
"List of GNUPLOT keywords associated with plotting, as strings.
These are highlighted using `font-lock-type-face'.
-This list does not include plotting styles -- for that, see
+This list does not include plotting styles -- for that, see
`gnuplot-keywords-plotting-styles'")
(defvar gnuplot-keywords-plotting-styles
@@ -1782,48 +1782,48 @@ These are highlighted using `font-lock-constant-face'.")
(when (featurep 'font-lock) ; <KL>
(setq gnuplot-font-lock-keywords
- (list
- ;; stuff in brackets, sugg. by <LB>
- '("\\[\\([^]]+\\)\\]" 1 font-lock-constant-face)
-
- ;; variable/function definitions
-
'("\\(\\(\\sw\\|\\s_\\)+\\s-*\\((\\s-*\\(\\sw\\|\\s_\\)*\\s-*\\(,\\s-*\\sw*\\)*\\s-*)\\)?\\s-*=\\)[^=]"
- 1 font-lock-variable-name-face)
-
- ;; built-in function names
- (cons (gnuplot-make-regexp gnuplot-keywords-builtin-functions)
- font-lock-function-name-face)
-
- ;; reserved words associated with plotting <AL>
- (cons (gnuplot-make-regexp gnuplot-keywords-plotting)
- font-lock-type-face)
- (cons (gnuplot-make-regexp gnuplot-keywords-plotting-styles)
- font-lock-function-name-face)
-
- ;; (s)plot -- also thing (s)plotted
- '("\\<s?plot\\>" . font-lock-keyword-face)
- ;; '("\\<s?plot\\s-+\\([^'\" ]+\\)[) \n,\\\\]"
- ;; 1 font-lock-variable-name-face)
-
- ;; other common commands
- (cons (gnuplot-make-regexp gnuplot-keywords-misc)
- font-lock-constant-face)
- (cons "!.*$" font-lock-constant-face))) ; what is this for? jjo
-
- (setq gnuplot-font-lock-defaults
- '(gnuplot-font-lock-keywords
- nil ; Use syntactic fontification
- t ; Use case folding
- nil ; No extra syntax
- ;; calls `gnuplot-beginning-of-continuation'
- ;; to find a safe place to begin syntactic highlighting
- beginning-of-defun))
-
+ (list
+ ;; stuff in brackets, sugg. by <LB>
+ '("\\[\\([^]]+\\)\\]" 1 font-lock-constant-face)
+
+ ;; variable/function definitions
+
'("\\(\\(\\sw\\|\\s_\\)+\\s-*\\((\\s-*\\(\\sw\\|\\s_\\)*\\s-*\\(,\\s-*\\sw*\\)*\\s-*)\\)?\\s-*=\\)[^=]"
+ 1 font-lock-variable-name-face)
+
+ ;; built-in function names
+ (cons (gnuplot-make-regexp gnuplot-keywords-builtin-functions)
+ font-lock-function-name-face)
+
+ ;; reserved words associated with plotting <AL>
+ (cons (gnuplot-make-regexp gnuplot-keywords-plotting)
+ font-lock-type-face)
+ (cons (gnuplot-make-regexp gnuplot-keywords-plotting-styles)
+ font-lock-function-name-face)
+
+ ;; (s)plot -- also thing (s)plotted
+ '("\\<s?plot\\>" . font-lock-keyword-face)
+ ;; '("\\<s?plot\\s-+\\([^'\" ]+\\)[) \n,\\\\]"
+ ;; 1 font-lock-variable-name-face)
+
+ ;; other common commands
+ (cons (gnuplot-make-regexp gnuplot-keywords-misc)
+ font-lock-constant-face)
+ (cons "!.*$" font-lock-constant-face))) ; what is this for? jjo
+
+ (setq gnuplot-font-lock-defaults
+ '(gnuplot-font-lock-keywords
+ nil ; Use syntactic fontification
+ t ; Use case folding
+ nil ; No extra syntax
+ ;; calls `gnuplot-beginning-of-continuation'
+ ;; to find a safe place to begin syntactic highlighting
+ beginning-of-defun))
+
;; Set up font-lock for Xemacs
;; For GNU Emacs, this is done in `gnuplot-mode'
(if gnuplot-xemacs-p
(put 'gnuplot-mode 'font-lock-defaults
- gnuplot-font-lock-defaults)))
+ gnuplot-font-lock-defaults)))
;; Some corner cases in Gnuplot's comment and string syntax are
;; difficult to handle accurately using Emacs's built-in syntax tables
@@ -1831,15 +1831,15 @@ These are highlighted using `font-lock-constant-face'.")
;;
;; - strings can continue over several lines, but only by using a
;; backslash to escape the newline
-;;
+;;
;; - double-quoted strings can contain escaped quotes, \", and escaped
;; backslashes, \\; but in single-quoted strings the quote is
;; escaped by doubling it, '', and backslash is only special at
;; end-of-line
-;;
+;;
;; - either type of string can end at newline without needing a
;; - closing delimiter
-;;
+;;
;; - comments continue over continuation lines
;;
;; The following syntax-propertize rules should accurately mark string
@@ -1849,32 +1849,32 @@ These are highlighted using `font-lock-constant-face'.")
;; normal syntax-table parser, which is accurate enough for most
;; normal cases. (See the definition of `gnuplot-mode-syntax-table'.)
(defalias 'gnuplot-syntax-propertize
- (when (fboundp 'syntax-propertize-rules)
- (syntax-propertize-rules
- ;; Double quoted strings
- ((rx
- (group "\"")
- (* (or (seq "\\" anything)
- (not (any "\"" "\n"))))
- (group (or "\"" "\n" buffer-end)))
- (1 "|") (2 "|"))
-
- ;; Single quoted strings
- ((rx
- (group "'")
- (* (or (seq "\\" "\n")
- "''"
- (not (any "'" "\n"))))
- (group (or "'" "\n" buffer-end)))
- (1 "|") (2 "|"))
-
- ;; Comments
- ((rx
- (group "#")
- (* (or (seq "\\" "\n")
- any))
- (or (group "\n") buffer-end))
- (1 "!") (2 "!")))))
+ (when (fboundp 'syntax-propertize-rules)
+ (syntax-propertize-rules
+ ;; Double quoted strings
+ ((rx
+ (group "\"")
+ (* (or (seq "\\" anything)
+ (not (any "\"" "\n"))))
+ (group (or "\"" "\n" buffer-end)))
+ (1 "|") (2 "|"))
+
+ ;; Single quoted strings
+ ((rx
+ (group "'")
+ (* (or (seq "\\" "\n")
+ "''"
+ (not (any "'" "\n"))))
+ (group (or "'" "\n" buffer-end)))
+ (1 "|") (2 "|"))
+
+ ;; Comments
+ ((rx
+ (group "#")
+ (* (or (seq "\\" "\n")
+ any))
+ (or (group "\n") buffer-end))
+ (1 "!") (2 "!")))))
(defun gnuplot-syntax-propertize-extend-region (start end)
"Expand the region to syntax-propertize for strings and comments.
@@ -1924,7 +1924,7 @@ This is a simple wrapper for `syntax-ppss'."
(save-excursion
(let ((parse-state (gnuplot-syntax-ppss where)))
(or (nth 3 parse-state)
- (nth 4 parse-state)))))
+ (nth 4 parse-state)))))
;; these two lines get rid of an annoying compile time error
;; message. that function gets non-trivially defalias-ed in
@@ -1940,9 +1940,9 @@ This is a simple wrapper for `syntax-ppss'."
(let ((list ()) (line "") (index 0))
(while (< index (length string))
(if (char-equal (elt string index) ?\n)
- (setq list (append list (list line))
- line "")
- (setq line (concat line (char-to-string (elt string index)))))
+ (setq list (append list (list line))
+ line "")
+ (setq line (concat line (char-to-string (elt string index)))))
(setq index (1+ index)) )
list))
@@ -1965,13 +1965,13 @@ called by this function after all of STRING is sent to
gnuplot."
;; Create a gnuplot frame if needed
(if (equal gnuplot-display-process 'frame)
(or (and gnuplot-process-frame
- (frame-live-p gnuplot-process-frame))
- (let ((frame (selected-frame)))
- (setq gnuplot-process-frame (make-frame))
- (select-frame gnuplot-process-frame)
- (switch-to-buffer gnuplot-buffer)
- (delete-other-windows)
- (select-frame frame))))
+ (frame-live-p gnuplot-process-frame))
+ (let ((frame (selected-frame)))
+ (setq gnuplot-process-frame (make-frame))
+ (select-frame gnuplot-process-frame)
+ (switch-to-buffer gnuplot-buffer)
+ (delete-other-windows)
+ (select-frame frame))))
(let ((list (gnuplot-split-string string)))
(with-current-buffer (get-buffer gnuplot-buffer)
@@ -1980,18 +1980,18 @@ called by this function after all of STRING is sent to
gnuplot."
(set-marker (process-mark gnuplot-process) (point-marker))
(sleep-for (* 20 gnuplot-delay))
(while list
- (insert (car list))
- (comint-send-input)
- (sleep-for gnuplot-delay)
- (setq list (cdr list))
- (goto-char (point-max))))
+ (insert (car list))
+ (comint-send-input)
+ (sleep-for gnuplot-delay)
+ (setq list (cdr list))
+ (goto-char (point-max))))
(cond ((equal gnuplot-display-process 'window)
- (gnuplot-display-and-recenter-gnuplot-buffer))
- ((equal gnuplot-display-process 'frame)
- ;;(raise-frame gnuplot-process-frame)
- (with-selected-frame gnuplot-process-frame
- (gnuplot-display-and-recenter-gnuplot-buffer))))
+ (gnuplot-display-and-recenter-gnuplot-buffer))
+ ((equal gnuplot-display-process 'frame)
+ ;;(raise-frame gnuplot-process-frame)
+ (with-selected-frame gnuplot-process-frame
+ (gnuplot-display-and-recenter-gnuplot-buffer))))
(setq gnuplot-recently-sent text)
(run-hooks 'gnuplot-after-plot-hook)))
@@ -2014,13 +2014,13 @@ useful for function in `gnuplot-after-plot-hook'."
(interactive "r")
(let (string (txt (or text 'region)))
(cond ((equal major-mode 'gnuplot-mode)
- (setq string (buffer-substring-no-properties begin end))
- (if (string= (substring string -1) "\n") ()
- (setq string (concat string "\n")))
- (gnuplot-send-string-to-gnuplot string txt))
- (t
- (message (concat "You can only send regions from "
- "gnuplot-mode buffers to gnuplot."))))))
+ (setq string (buffer-substring-no-properties begin end))
+ (if (string= (substring string -1) "\n") ()
+ (setq string (concat string "\n")))
+ (gnuplot-send-string-to-gnuplot string txt))
+ (t
+ (message (concat "You can only send regions from "
+ "gnuplot-mode buffers to gnuplot."))))))
(defun gnuplot-send-line-to-gnuplot ()
"Sends the current line to the gnuplot program.
@@ -2028,26 +2028,26 @@ Respects continuation lines.
This sets `gnuplot-recently-sent' to 'line."
(interactive)
(cond ((equal major-mode 'gnuplot-mode)
- (let (start end)
- (save-excursion
- ;; go to start of continued command, or beginning of line
- ;; if this is not a continuation of a previous line <JJO>
- (gnuplot-beginning-of-continuation)
- (setq start (point))
- (end-of-line)
- (while (save-excursion
- (backward-char)
- (looking-at "\\\\")) ; go to end of last
continuation line
- (end-of-line 2))
- (beginning-of-line 2)
- (setq end (point)))
- (if (not (string-match "\\`\\s-*\\'"
- (buffer-substring-no-properties start end)))
- (gnuplot-send-region-to-gnuplot start end 'line))
- end))
- (t
- (message "You can only send lines in gnuplot-mode buffers to gnuplot.")
- nil)))
+ (let (start end)
+ (save-excursion
+ ;; go to start of continued command, or beginning of line
+ ;; if this is not a continuation of a previous line <JJO>
+ (gnuplot-beginning-of-continuation)
+ (setq start (point))
+ (end-of-line)
+ (while (save-excursion
+ (backward-char)
+ (looking-at "\\\\")) ; go to end of last
continuation line
+ (end-of-line 2))
+ (beginning-of-line 2)
+ (setq end (point)))
+ (if (not (string-match "\\`\\s-*\\'"
+ (buffer-substring-no-properties start end)))
+ (gnuplot-send-region-to-gnuplot start end 'line))
+ end))
+ (t
+ (message "You can only send lines in gnuplot-mode buffers to
gnuplot.")
+ nil)))
;; I chose a very easy to type but slightly non-mnemonic key-binding
;; for this (C-c C-v). It seems like the kind of thing one would want
@@ -2079,8 +2079,8 @@ Blank lines and commented lines are not included in the
NUM count."
(while (> num 0)
(and (not (eobp)) (forward-line 1))
(while (and (not (eobp))
- (or (looking-at "^\\s-*$")
- (looking-at "^\\s-*#")))
+ (or (looking-at "^\\s-*$")
+ (looking-at "^\\s-*#")))
(forward-line 1))
(setq num (1- num))))
@@ -2114,14 +2114,14 @@ this by copying the script line by line."
(let (string list (buffer (current-buffer)))
(set-buffer gnuplot-comint-recent-buffer)
(setq string (buffer-substring-no-properties (point-min) (point-max))
- string (concat string "\n")
- list (gnuplot-split-string string))
+ string (concat string "\n")
+ list (gnuplot-split-string string))
(set-buffer buffer)
(while list
- (insert (car list))
- (comint-send-input)
- (sleep-for gnuplot-delay)
- (setq list (cdr list)))
+ (insert (car list))
+ (comint-send-input)
+ (sleep-for gnuplot-delay)
+ (setq list (cdr list)))
(comint-send-input))))
(defun gnuplot-save-and-plot-from-comint ()
@@ -2136,8 +2136,8 @@ file visited by the script buffer."
(message "Script buffer has been deleted.")
(let (fname)
(with-current-buffer gnuplot-comint-recent-buffer
- (save-buffer)
- (setq fname (buffer-file-name)))
+ (save-buffer)
+ (setq fname (buffer-file-name)))
(goto-char (point-max))
(insert (format "load '%s'" fname))
(comint-send-input))))
@@ -2154,13 +2154,13 @@ This keeps that buffer from growing excessively in
size. Normally,
this function is attached to `gnuplot-after-plot-hook'"
(if (> gnuplot-buffer-max-size 0)
(with-current-buffer gnuplot-buffer
- (let ((nlines (count-lines (point-min) (point-max)))
- (kill-whole-line t))
- (while (> nlines gnuplot-buffer-max-size)
- (goto-char (point-min))
- (kill-line)
- (setq nlines (1- nlines)))
- (goto-char (point-max)) ))))
+ (let ((nlines (count-lines (point-min) (point-max)))
+ (kill-whole-line t))
+ (while (> nlines gnuplot-buffer-max-size)
+ (goto-char (point-min))
+ (kill-line)
+ (setq nlines (1- nlines)))
+ (goto-char (point-max)) ))))
(add-hook 'gnuplot-after-plot-hook 'gnuplot-trim-gnuplot-buffer nil nil)
@@ -2221,16 +2221,16 @@ buffer."
;; XEmacs needs the call to make-local-hook
(when (and (featurep 'xemacs)
- (fboundp 'make-local-hook))
+ (fboundp 'make-local-hook))
(make-local-hook 'kill-buffer-hook))
(add-hook 'kill-buffer-hook 'gnuplot-close-down nil t)
(add-hook 'comint-output-filter-functions
- 'comint-postoutput-scroll-to-bottom
- nil t)
+ 'comint-postoutput-scroll-to-bottom
+ nil t)
(add-hook 'comint-output-filter-functions
- 'gnuplot-protect-prompt-fn
- nil t)
+ 'gnuplot-protect-prompt-fn
+ nil t)
;; Set up completion, using completion-at-point in recent Emacs,
;; comint-dynamic-complete in older Emacs
@@ -2241,8 +2241,8 @@ buffer."
;; Set up menu (see below)
(easy-menu-define
- gnuplot-comint-mode-menu gnuplot-comint-mode-map "Menu used in
gnuplot-comint-mode"
- gnuplot-comint-menu)
+ gnuplot-comint-mode-menu gnuplot-comint-mode-map "Menu used in
gnuplot-comint-mode"
+ gnuplot-comint-menu)
(easy-menu-add gnuplot-comint-mode-menu gnuplot-comint-mode-map))
;; Key bindings for gnuplot-comint-mode
@@ -2301,30 +2301,30 @@ If the version number cannot be determined by this
method, it
defaults to 3.7."
(unless gnuplot-program-version
(message "gnuplot-mode %s -- determining gnuplot version ......"
- gnuplot-version)
+ gnuplot-version)
(with-temp-buffer
(insert "show version")
(call-process-region (point-min) (point-max)
- gnuplot-program t (current-buffer))
+ gnuplot-program t (current-buffer))
(goto-char (point-min))
(if (and (re-search-forward "[Vv]ersion\\s-+" (point-max) t)
- (looking-at "\\([0-9]\\)\\.\\([0-9]+\\)"))
- (progn
- (setq gnuplot-program-version (match-string 0)
- gnuplot-program-major-version (string-to-number
- (match-string 1))
- gnuplot-program-minor-version (string-to-number
- (match-string 2))
- gnuplot-three-eight-p
- (>= (string-to-number gnuplot-program-version) 3.8)))
-
- ;; Guess v3.7 if something went wrong
- (message "Warning: could not determine gnuplot version, guessing 3.7")
- (setq gnuplot-program-version "3.7"
- gnuplot-program-major-version 3
- gnuplot-program-minor-version 7
- gnuplot-three-eight-p nil)))
-
+ (looking-at "\\([0-9]\\)\\.\\([0-9]+\\)"))
+ (progn
+ (setq gnuplot-program-version (match-string 0)
+ gnuplot-program-major-version (string-to-number
+ (match-string 1))
+ gnuplot-program-minor-version (string-to-number
+ (match-string 2))
+ gnuplot-three-eight-p
+ (>= (string-to-number gnuplot-program-version) 3.8)))
+
+ ;; Guess v3.7 if something went wrong
+ (message "Warning: could not determine gnuplot version, guessing 3.7")
+ (setq gnuplot-program-version "3.7"
+ gnuplot-program-major-version 3
+ gnuplot-program-minor-version 7
+ gnuplot-three-eight-p nil)))
+
;; Setup stuff that depends on version number
(gnuplot-setup-menu-and-toolbar)))
@@ -2334,13 +2334,13 @@ defaults to 3.7."
;; set up the toolbar (possibly dependent on version number)
(if (and gnuplot-xemacs-p gnuplot-toolbar-display-flag)
(condition-case () ; deal with the toolbar
- (and (require 'toolbar)
- (require 'xpm)
- (gnuplot-make-toolbar-function))
- (error nil)))
+ (and (require 'toolbar)
+ (require 'xpm)
+ (gnuplot-make-toolbar-function))
+ (error nil)))
(message "gnuplot-mode %s (gnuplot %s) -- report bugs as issues at %s"
- gnuplot-version gnuplot-program-version
- gnuplot-maintainer-url))
+ gnuplot-version gnuplot-program-version
+ gnuplot-maintainer-url))
(defvar gnuplot-prompt-regexp
(regexp-opt '("gnuplot> " "multiplot> "))
@@ -2362,12 +2362,12 @@ STRING is the text as originally inserted in the comint
buffer."
(put-text-property b e 'intangible t)
(put-text-property b e 'face 'gnuplot-prompt-face)
;;(put-text-property b e 'read-only t)
- )) )))
+ )) )))
(defun gnuplot-close-down ()
"Tidy up when deleting the gnuplot buffer."
(if (and gnuplot-process
- (eq (process-status gnuplot-process) 'run)) ; <SE>
+ (eq (process-status gnuplot-process) 'run)) ; <SE>
(kill-process gnuplot-process))
(setq gnuplot-process nil
gnuplot-buffer nil))
@@ -2384,13 +2384,13 @@ This is very similar to `comint-delchar-or-maybe-eof'."
"Kill the gnuplot process and its display buffers."
(interactive)
(if (and gnuplot-process
- (eq (process-status gnuplot-process) 'run)) ;; <SE>
+ (eq (process-status gnuplot-process) 'run)) ;; <SE>
(kill-process gnuplot-process))
(if (and gnuplot-buffer (get-buffer gnuplot-buffer))
(progn
- (if (one-window-p) ()
- (delete-window (get-buffer-window gnuplot-buffer)))
- (kill-buffer gnuplot-buffer)))
+ (if (one-window-p) ()
+ (delete-window (get-buffer-window gnuplot-buffer)))
+ (kill-buffer gnuplot-buffer)))
(setq gnuplot-process nil
gnuplot-buffer nil))
@@ -2404,16 +2404,16 @@ gnuplot process buffer will be displayed in a window."
(unless (and gnuplot-buffer (get-buffer gnuplot-buffer))
(gnuplot-make-gnuplot-buffer))
(cond ((equal gnuplot-display-process 'window)
- (switch-to-buffer-other-window gnuplot-buffer))
- ((equal gnuplot-display-process 'frame)
- (or (and gnuplot-process-frame
- (frame-live-p gnuplot-process-frame))
- (setq gnuplot-process-frame (make-frame)))
- (raise-frame gnuplot-process-frame)
- (select-frame gnuplot-process-frame)
- (switch-to-buffer gnuplot-buffer))
- (t
- (switch-to-buffer gnuplot-buffer))))
+ (switch-to-buffer-other-window gnuplot-buffer))
+ ((equal gnuplot-display-process 'frame)
+ (or (and gnuplot-process-frame
+ (frame-live-p gnuplot-process-frame))
+ (setq gnuplot-process-frame (make-frame)))
+ (raise-frame gnuplot-process-frame)
+ (select-frame gnuplot-process-frame)
+ (switch-to-buffer gnuplot-buffer))
+ (t
+ (switch-to-buffer gnuplot-buffer))))
;;; Support for displaying plotted images within Emacs
@@ -2493,12 +2493,12 @@ updates Gnuplot with the appropriate 'set output'
command."
(ecase gnuplot-inline-image-mode
(nil nil)
(inline
- (ignore-errors
- (let ((image (create-image filename)))
- (beginning-of-line)
- (insert-image image)
- (insert "\n")
- (gnuplot-inline-image-set-output))))
+ (ignore-errors
+ (let ((image (create-image filename)))
+ (beginning-of-line)
+ (insert-image image)
+ (insert "\n")
+ (gnuplot-inline-image-set-output))))
(dedicated
(with-current-buffer
(get-buffer-create gnuplot-image-buffer-name)
@@ -2511,12 +2511,12 @@ updates Gnuplot with the appropriate 'set output'
command."
;;; Send commands to GNUPLOT silently & without generating an extra prompt
(defvar gnuplot-hidden-output-buffer " *gnuplot output*")
-
+
(defun gnuplot-send-hiding-output (string)
"Send STRING to the running Gnuplot process invisibly."
(with-current-buffer gnuplot-buffer
(add-hook 'comint-preoutput-filter-functions
- 'gnuplot-discard-output nil t))
+ 'gnuplot-discard-output nil t))
(with-current-buffer (get-buffer-create gnuplot-hidden-output-buffer)
(erase-buffer))
(comint-send-string (get-buffer-process gnuplot-buffer) string))
@@ -2530,8 +2530,8 @@ updates Gnuplot with the appropriate 'set output'
command."
(insert string)
(when (looking-back gnuplot-prompt-regexp)
(with-current-buffer gnuplot-buffer
- (remove-hook 'comint-preoutput-filter-functions
- 'gnuplot-discard-output t))))
+ (remove-hook 'comint-preoutput-filter-functions
+ 'gnuplot-discard-output t))))
"")
@@ -2545,9 +2545,9 @@ Uses completion and the value of
`gnuplot-quote-character'.
Bound to \\[gnuplot-insert-filename]"
(interactive)
(insert gnuplot-quote-character
- (file-relative-name (read-file-name "Filename > " "")
- default-directory)
- gnuplot-quote-character) )
+ (file-relative-name (read-file-name "Filename > " "")
+ default-directory)
+ gnuplot-quote-character) )
;; Adjust indentation for the line containing point
@@ -2558,18 +2558,18 @@ Add additional indentation for continuation lines."
(interactive)
(let (indent)
(if (gnuplot-in-string (point-at-bol))
- ;; Continued strings begin at left margin
- (setq indent 0)
- (save-excursion
- (if (gnuplot-continuation-line-p)
- ;; This is a continuation line. Indent to the same level as
- ;; the second word on the line beginning this command (i.e.,
- ;; the first non-whitespace character after whitespace)
- (progn
- (gnuplot-beginning-of-continuation)
- (back-to-indentation)
- (re-search-forward "\\S-+\\s-+" (point-at-eol) 'end-at-limit)
- (setq indent (- (point) (point-at-bol))))
+ ;; Continued strings begin at left margin
+ (setq indent 0)
+ (save-excursion
+ (if (gnuplot-continuation-line-p)
+ ;; This is a continuation line. Indent to the same level as
+ ;; the second word on the line beginning this command (i.e.,
+ ;; the first non-whitespace character after whitespace)
+ (progn
+ (gnuplot-beginning-of-continuation)
+ (back-to-indentation)
+ (re-search-forward "\\S-+\\s-+" (point-at-eol) 'end-at-limit)
+ (setq indent (- (point) (point-at-bol))))
;; Not a continuation line; indent according to block
;; nesting depth
@@ -2586,7 +2586,7 @@ Add additional indentation for continuation lines."
(setq indent 0)))))))
;; Set indentation
- (save-excursion
+ (save-excursion
(indent-line-to indent))
;; Move point after indentation when at beginning of line
@@ -2612,10 +2612,10 @@ Add additional indentation for continuation lines."
"Return t if the line containing point is a continuation of the previous
line."
(save-excursion
(condition-case ()
- (progn
- (end-of-line 0)
- (backward-char)
- (looking-at "\\\\"))
+ (progn
+ (end-of-line 0)
+ (backward-char)
+ (looking-at "\\\\"))
(error nil))))
;; Move point to start of continuation block
@@ -2636,9 +2636,9 @@ If there are no continuation lines, move point to
end-of-line."
(unless (bobp)
(catch 'eob
(while (save-excursion (backward-char)
- (looking-at "\\\\"))
- (end-of-line 2)
- (if (eobp) (throw 'eob nil))))))
+ (looking-at "\\\\"))
+ (end-of-line 2)
+ (if (eobp) (throw 'eob nil))))))
;; Save-excursion wrappers for the above to return point at beginning
;; or end of continuation
@@ -2664,27 +2664,27 @@ If there are no continuation lines, returns
point-at-eol."
;; movement purposes
(defun gnuplot-beginning-of-defun (&optional arg)
(if (not arg) (setq arg 1))
- (if (> arg 0)
+ (if (> arg 0)
(catch 'bob ; go to beginning of ARGth prev. defun
- (dotimes (n arg)
- (when (= (point)
- (gnuplot-point-at-beginning-of-continuation))
- (forward-line -1)
- (if (bobp) (throw 'bob t))
- (while (looking-at "^\\s-*$")
- (forward-line -1)
- (if (bobp) (throw 'bob t))))
- (gnuplot-beginning-of-continuation))
- t)
+ (dotimes (n arg)
+ (when (= (point)
+ (gnuplot-point-at-beginning-of-continuation))
+ (forward-line -1)
+ (if (bobp) (throw 'bob t))
+ (while (looking-at "^\\s-*$")
+ (forward-line -1)
+ (if (bobp) (throw 'bob t))))
+ (gnuplot-beginning-of-continuation))
+ t)
(catch 'eob ; find beginning of (-ARG)th following defun
(dotimes (n (- arg))
- (gnuplot-end-of-continuation)
- (forward-line)
- (if (eobp) (throw 'eob t))
- (while (looking-at "^\\s-*$")
- (forward-line)
- (if (eobp) (throw 'eob t)))))))
+ (gnuplot-end-of-continuation)
+ (forward-line)
+ (if (eobp) (throw 'eob t))
+ (while (looking-at "^\\s-*$")
+ (forward-line)
+ (if (eobp) (throw 'eob t)))))))
;; Movement to start or end of command, including multiple commands
;; separated by semicolons
@@ -2692,9 +2692,9 @@ If there are no continuation lines, returns point-at-eol."
"Move point to beginning of command containing point."
(let ((limit (gnuplot-point-at-beginning-of-continuation)))
(while
- (and
- (search-backward ";" limit 'lim)
- (gnuplot-in-string-or-comment)))
+ (and
+ (search-backward ";" limit 'lim)
+ (gnuplot-in-string-or-comment)))
(skip-chars-forward ";")
(skip-syntax-forward "-")))
@@ -2702,9 +2702,9 @@ If there are no continuation lines, returns point-at-eol."
"Move point to end of command containing point."
(let ((limit (gnuplot-point-at-end-of-continuation)))
(while
- (and
- (search-forward ";" limit 'lim)
- (gnuplot-in-string-or-comment)))
+ (and
+ (search-forward ";" limit 'lim)
+ (gnuplot-in-string-or-comment)))
(skip-chars-backward ";")
(skip-syntax-backward "-")))
@@ -2724,29 +2724,29 @@ Negatable options are defined in
`gnuplot-keywords-negatable-options'."
(interactive)
(gnuplot-fetch-version-number)
(let ((begin (gnuplot-point-at-beginning-of-command))
- (end (gnuplot-point-at-end-of-command))
- (regex gnuplot-negatable-options-regexp))
+ (end (gnuplot-point-at-end-of-command))
+ (regex gnuplot-negatable-options-regexp))
(save-excursion
(goto-char begin)
(skip-syntax-forward "-" end)
(if (looking-at "\\(un\\)?set\\s-+")
- (cond ((> (string-to-number gnuplot-program-version) 3.7)
- (cond ((looking-at "unset")
- (delete-char 2))
- ((looking-at (concat "set\\s-+\\(" regex "\\)"))
- (insert "un"))
- (t
- (message "There is not a negatable set option on this
line"))))
- (t
- (goto-char (match-end 0))
- (if (> (point) end) (goto-char end))
- (cond ((looking-at "no")
- (delete-char 2))
- ((looking-at regex)
- (insert "no"))
- (t
- (message "There is not a negatable set option on this
line")))))
- (message "There is not a set option on this line")) )))
+ (cond ((> (string-to-number gnuplot-program-version) 3.7)
+ (cond ((looking-at "unset")
+ (delete-char 2))
+ ((looking-at (concat "set\\s-+\\(" regex "\\)"))
+ (insert "un"))
+ (t
+ (message "There is not a negatable set option on this
line"))))
+ (t
+ (goto-char (match-end 0))
+ (if (> (point) end) (goto-char end))
+ (cond ((looking-at "no")
+ (delete-char 2))
+ ((looking-at regex)
+ (insert "no"))
+ (t
+ (message "There is not a negatable set option on this
line")))))
+ (message "There is not a set option on this line")) )))
;; (defun gnuplot-set-binding ()
;; "Interactively select a key sequence for binding to a plot function.
@@ -2795,61 +2795,61 @@ See the comments in `gnuplot-info-hook'."
(interactive)
(setq gnuplot-keywords-pending nil)
(if (featurep 'info-look)
- (progn
- (gnuplot-fetch-version-number)
-
- ;; In the absence of evidence to the contrary, I'm guessing
- ;; the info file layout changed with gnuplot version 4 <jjo>
- (let ((doc-spec
- (if (>= (string-to-number gnuplot-program-version) 4.0)
- ;; New info-file layout - works with gnuplot 4.4
- '(("(gnuplot)Command_Index" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)Options_Index" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)Function_Index" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)Terminal_Index" nil "[_a-zA-Z0-9]+"))
-
- ;; Old info-file layout
- '(("(gnuplot)Top" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)Commands" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)Functions" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)plot" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)set-show" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)data-file" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)smooth" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)style" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)terminal" nil "[_a-zA-Z0-9]+")))))
- (cond ((boundp 'info-lookup-symbol-alist) ; older info-lookup version
- (setq info-lookup-symbol-alist
- (append
- info-lookup-symbol-alist
- `((gnuplot-mode
- "[a-zA-Z][_a-zA-Z0-9]*" nil
- ,doc-spec "[_a-zA-Z0-9]+" )))))
- (t ; newer version
- (info-lookup-add-help
- :mode 'gnuplot-mode :topic 'symbol
- :regexp "[a-zA-Z][_a-zA-Z0-9]*"
- :doc-spec doc-spec)
- ;; allow help lookup from the comint buffer as well <jjo>
- (info-lookup-add-help
- :mode 'gnuplot-comint-mode :topic 'symbol
- :regexp "[a-zA-Z][_a-zA-Z0-9]*"
- :doc-spec doc-spec))))
-
- ;; this hook is my best way of working with info-look and
- ;; allowing multiple versions of the gnuplot-info file.
- ;; yes, this is a hassle.
- (run-hooks 'gnuplot-info-hook)
- (let ((there (bufferp (get-buffer "*info*"))))
- (info-lookup-setup-mode 'symbol 'gnuplot-mode)
- (or there (and (get-buffer "*info*") (kill-buffer "*info*")))
- ;; why are these buffers here? I think that the general
- ;; user will not want them lying around
- (and (get-buffer "info dir") (kill-buffer "info dir"))
- (and (get-buffer "info dir<2>") (kill-buffer "info dir<2>")))
- (setq gnuplot-keywords (gnuplot-set-keywords-list))
- (setq gnuplot-keywords-alist ; needed for all-completions
- (mapcar 'list gnuplot-keywords)))
+ (progn
+ (gnuplot-fetch-version-number)
+
+ ;; In the absence of evidence to the contrary, I'm guessing
+ ;; the info file layout changed with gnuplot version 4 <jjo>
+ (let ((doc-spec
+ (if (>= (string-to-number gnuplot-program-version) 4.0)
+ ;; New info-file layout - works with gnuplot 4.4
+ '(("(gnuplot)Command_Index" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)Options_Index" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)Function_Index" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)Terminal_Index" nil "[_a-zA-Z0-9]+"))
+
+ ;; Old info-file layout
+ '(("(gnuplot)Top" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)Commands" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)Functions" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)plot" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)set-show" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)data-file" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)smooth" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)style" nil "[_a-zA-Z0-9]+")
+ ("(gnuplot)terminal" nil "[_a-zA-Z0-9]+")))))
+ (cond ((boundp 'info-lookup-symbol-alist) ; older info-lookup version
+ (setq info-lookup-symbol-alist
+ (append
+ info-lookup-symbol-alist
+ `((gnuplot-mode
+ "[a-zA-Z][_a-zA-Z0-9]*" nil
+ ,doc-spec "[_a-zA-Z0-9]+" )))))
+ (t ; newer version
+ (info-lookup-add-help
+ :mode 'gnuplot-mode :topic 'symbol
+ :regexp "[a-zA-Z][_a-zA-Z0-9]*"
+ :doc-spec doc-spec)
+ ;; allow help lookup from the comint buffer as well <jjo>
+ (info-lookup-add-help
+ :mode 'gnuplot-comint-mode :topic 'symbol
+ :regexp "[a-zA-Z][_a-zA-Z0-9]*"
+ :doc-spec doc-spec))))
+
+ ;; this hook is my best way of working with info-look and
+ ;; allowing multiple versions of the gnuplot-info file.
+ ;; yes, this is a hassle.
+ (run-hooks 'gnuplot-info-hook)
+ (let ((there (bufferp (get-buffer "*info*"))))
+ (info-lookup-setup-mode 'symbol 'gnuplot-mode)
+ (or there (and (get-buffer "*info*") (kill-buffer "*info*")))
+ ;; why are these buffers here? I think that the general
+ ;; user will not want them lying around
+ (and (get-buffer "info dir") (kill-buffer "info dir"))
+ (and (get-buffer "info dir<2>") (kill-buffer "info dir<2>")))
+ (setq gnuplot-keywords (gnuplot-set-keywords-list))
+ (setq gnuplot-keywords-alist ; needed for all-completions
+ (mapcar 'list gnuplot-keywords)))
;; or do something sensible if info-look is not installed
(defun info-lookup-interactive-arguments (symbol)
@@ -2862,14 +2862,14 @@ See the comments in `gnuplot-info-hook'."
"Set `gnuplot-keywords' from `info-lookup-cache'.
Return a list of keywords."
(let* ((list (cdr (assoc 'symbol info-lookup-cache)))
- (list (cdr (cdr (assoc 'gnuplot-mode list))))
- (list (car list))
- (store ()) item)
+ (list (cdr (cdr (assoc 'gnuplot-mode list))))
+ (list (car list))
+ (store ()) item)
(while list
(setq item (car (car list))
- item (format "%s" item) ; keep this line for the sake of
- store (append (list item) store) ; info-look.el w/o my patch
- list (cdr list)))
+ item (format "%s" item) ; keep this line for the sake of
+ store (append (list item) store) ; info-look.el w/o my patch
+ list (cdr list)))
(delete "nil" store)
store ))
@@ -2969,7 +2969,7 @@ distribution. See gnuplot-context.el for details."
(when gnuplot-tab-completion
(set (make-local-variable 'tab-always-indent) 'complete))
- (message "Gnuplot context-sensitive help & completion enabled."))
+ (message "Gnuplot context-sensitive help & completion enabled."))
;; Turn off
(setq gnuplot-completion-at-point-function
#'gnuplot-completion-at-point-info-look)
@@ -2983,21 +2983,21 @@ distribution. See gnuplot-context.el for details."
Uses the cache of keywords generated by info-lookup. See
`gnuplot-setup-info-look'. If not nil, the return value is in the form
-\(BEGIN END COMPLETIONS) where BEGIN and END are buffer
+\(BEGIN END COMPLETIONS) where BEGIN and END are buffer
positions and COMPLETIONS is a list."
-
+
(if gnuplot-keywords-pending ; <HW>
(gnuplot-setup-info-look))
(let* ((end (point))
- (beg (unwind-protect (save-excursion (backward-sexp 1) (point))))
- (patt (buffer-substring beg end))
- (pattern (if (string-match "\\([^ \t]*\\)\\s-+$" patt)
- (match-string 1 patt) patt))
- (completions (all-completions pattern gnuplot-keywords-alist)))
+ (beg (unwind-protect (save-excursion (backward-sexp 1) (point))))
+ (patt (buffer-substring beg end))
+ (pattern (if (string-match "\\([^ \t]*\\)\\s-+$" patt)
+ (match-string 1 patt) patt))
+ (completions (all-completions pattern gnuplot-keywords-alist)))
(if completions
- (list beg end completions)
+ (list beg end completions)
(message "No gnuplot keywords complete '%s'" pattern)
- nil)))
+ nil)))
(defun gnuplot-comint-complete ()
"Complete the keyword preceding point in the gnuplot comint buffer.
@@ -3005,13 +3005,13 @@ positions and COMPLETIONS is a list."
This is only used in Emacs versions before 24.1."
(let ((completions (gnuplot-completion-at-point)))
(if completions
- (let* ((beg (nth 0 completions))
- (end (nth 1 completions))
- (candidates (nth 2 completions))
- (completion-base-position (list beg end)))
- (comint-dynamic-simple-complete
- (buffer-substring-no-properties beg end)
- candidates))
+ (let* ((beg (nth 0 completions))
+ (end (nth 1 completions))
+ (candidates (nth 2 completions))
+ (completion-base-position (list beg end)))
+ (comint-dynamic-simple-complete
+ (buffer-substring-no-properties beg end)
+ candidates))
nil)))
@@ -3023,13 +3023,13 @@ Takes SYMBOL and MODE as arguments exactly as
according to the value of `gnuplot-info-display'."
(interactive
(cond (gnuplot-keywords
- (info-lookup-interactive-arguments 'symbol))
- (gnuplot-keywords-pending ; <HW>
- (gnuplot-setup-info-look)
- (info-lookup-interactive-arguments 'symbol))
- (t
- (list nil (message
- "Help is not available. The gnuplot info file could not be found.")))))
+ (info-lookup-interactive-arguments 'symbol))
+ (gnuplot-keywords-pending ; <HW>
+ (gnuplot-setup-info-look)
+ (info-lookup-interactive-arguments 'symbol))
+ (t
+ (list nil (message
+ "Help is not available. The gnuplot info file could not
be found.")))))
(when (and (featurep 'info-look) gnuplot-keywords)
(unless symbol (setq symbol "Commands"))
@@ -3049,7 +3049,7 @@ called."
(case gnuplot-info-display
(window
(switch-to-buffer-other-window "*info*")
- ;; Adjust window height only if the frame is split
+ ;; Adjust window height only if the frame is split
;; horizontally, so as not to mess up the minibuffer <jjo>
;; we can't use shrink-window-if-larger-than-buffer here
;; because it doesn't work with Info mode's narrowing
@@ -3079,33 +3079,33 @@ help shown is for STRING unless STRING begins with the
word \"set\" or
shown."
(interactive)
(cond ((and (not gnuplot-three-eight-p)
- (string-match "\\(emf\\|p\\(alette\\|m3d\\)\\|vgagl\\)" string))
- (message "%S is an option introduced in gnuplot 3.8 (You are using %s)"
- string gnuplot-program-version) )
- (t
- (insert string)
- (let ((topic string) term)
- (if (string-match
- "\\(set\\|show\\)[ \t]+\\([^ \t]+\\)\\(\\s-+\\([^ \t]+\\)\\)?"
- string)
- (progn
- (setq topic (downcase (match-string 2 string))
- term (match-string 4 string))
- (if (string= topic "terminal") (setq topic (downcase term)))))
- (cond ((and (fboundp 'gnuplot-gui-set-options-and-insert)
- gnuplot-gui-popup-flag)
- (gnuplot-gui-set-options-and-insert))
- (gnuplot-insertions-show-help-flag
- (if gnuplot-keywords-pending ; <HW>
- (gnuplot-setup-info-look))
- (gnuplot-info-lookup-symbol topic)) ) )) ) )
+ (string-match "\\(emf\\|p\\(alette\\|m3d\\)\\|vgagl\\)" string))
+ (message "%S is an option introduced in gnuplot 3.8 (You are using
%s)"
+ string gnuplot-program-version) )
+ (t
+ (insert string)
+ (let ((topic string) term)
+ (if (string-match
+ "\\(set\\|show\\)[ \t]+\\([^ \t]+\\)\\(\\s-+\\([^ \t]+\\)\\)?"
+ string)
+ (progn
+ (setq topic (downcase (match-string 2 string))
+ term (match-string 4 string))
+ (if (string= topic "terminal") (setq topic (downcase term)))))
+ (cond ((and (fboundp 'gnuplot-gui-set-options-and-insert)
+ gnuplot-gui-popup-flag)
+ (gnuplot-gui-set-options-and-insert))
+ (gnuplot-insertions-show-help-flag
+ (if gnuplot-keywords-pending ; <HW>
+ (gnuplot-setup-info-look))
+ (gnuplot-info-lookup-symbol topic)) ) )) ) )
(defun gnuplot-toggle-info-display ()
(interactive)
(setq gnuplot-insertions-show-help-flag (not
gnuplot-insertions-show-help-flag))
(message (if gnuplot-insertions-show-help-flag
- "Help will be displayed after insertions."
- "Help no longer displayed after insertions.")))
+ "Help will be displayed after insertions."
+ "Help no longer displayed after insertions.")))
;;; --- autoloaded functions: gnuplot-mode and gnuplot-make-buffer
@@ -3167,7 +3167,7 @@ a list:
(kill-all-local-variables)
(use-local-map gnuplot-mode-map)
(setq major-mode 'gnuplot-mode
- mode-name "Gnuplot")
+ mode-name "Gnuplot")
(set (make-local-variable 'comment-start) "# ")
(set (make-local-variable 'comment-end) "")
(set (make-local-variable 'comment-column) 32)
@@ -3187,7 +3187,7 @@ a list:
(if gnuplot-xemacs-p ; deal with font-lock
(when (fboundp 'turn-on-font-lock)
- (turn-on-font-lock))
+ (turn-on-font-lock))
(progn
;; Add syntax-propertizing functions to search for strings and comments
(set (make-local-variable 'syntax-propertize-function)
@@ -3195,17 +3195,17 @@ a list:
(add-hook 'syntax-propertize-extend-region-functions
#'gnuplot-syntax-propertize-extend-region nil t)
- ;; Set up font-lock
+ ;; Set up font-lock
(setq font-lock-defaults gnuplot-font-lock-defaults)
(set (make-local-variable 'font-lock-multiline) t)
(set (make-local-variable 'parse-sexp-lookup-properties) t)))
(if (fboundp 'widget-create) ; gnuplot-gui
(condition-case ()
- (require 'gnuplot-gui)
- (error nil)))
+ (require 'gnuplot-gui)
+ (error nil)))
(setq gnuplot-first-call nil ; a few more details ...
- gnuplot-comint-recent-buffer (current-buffer)
+ gnuplot-comint-recent-buffer (current-buffer)
comint-process-echoes gnuplot-echo-command-line-flag)
(run-hooks 'gnuplot-mode-hook)
;; the first time we need to figure out which gnuplot we are running
@@ -3256,7 +3256,8 @@ following in your .emacs file:
(provide 'gnuplot)
(run-hooks 'gnuplot-load-hook)
-;;;============================================================================
-;;;
+;; Local Variables:
+;; indent-tabs-mode: nil
+;; End:
;;; gnuplot.el ends here
- [nongnu] elpa/gnuplot 71e3174 129/184: Remove un-needed run-after-load hackery, (continued)
- [nongnu] elpa/gnuplot 71e3174 129/184: Remove un-needed run-after-load hackery, ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot d899379 123/184: Clarify comments, ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot 536f2c3 122/184: Put alias for missing syntax-ppss with the other workarounds, ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot b6eea0b 133/184: Add :set function for customizing context-sensitive mode, ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot c4d464a 125/184: Use `gnuplot-completion-at-point-function' instead of advice hackery, ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot da11bfa 128/184: New customize option `gnuplot-use-context-sensitive-completion', ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot f274ad7 138/184: Recommend to use GitHub bug tracker instead of E-mail, ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot 54fd3eb 141/184: do toolbar-make-button-list after check the function exists, ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot 14584a0 143/184: clean Elisp format, ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot a080f79 149/184: Merge pull request #45 from conao3/fix-trivial, ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot b96c5d8 144/184: Merge pull request #43 from conao3/fix-format,
ELPA Syncer <=
- [nongnu] elpa/gnuplot 3f0e094 154/184: Merge pull request #48 from conao3/feature, ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot 706e810 161/184: Merge pull request #54 from vxid/delete-xemacs, ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot c1e6018 158/184: Add GitHub Actions CI configure files, ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot 8d5b7f5 157/184: Merge pull request #51 from vxid/master, ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot 1dd661e 180/184: Fix testing in Github CI. Simplify compilation and testing process., ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot 2c1e7cb 177/184: Rewrite README.org, ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot fbb15b6 168/184: Merge pull request #60 from conao3/fix-ci, ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot 24dd2d0 170/184: Merge pull request #64 from mtreca/info-update, ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot 1f8f051 166/184: use actions/setup-python@v2 instead of v1.1.1, ELPA Syncer, 2021/08/29
- [nongnu] elpa/gnuplot 90bfd6d 179/184: Simplify Makefile situation, ELPA Syncer, 2021/08/29