annotate lisp/progmodes/ps-mode.el @ 42307:922f0ef2951b

(balance-windows): Use new PRESERVE-BEFORE arg to enlarge-window. Use save-selected-window. Don't try to resize windows that end at the bottom "level". Retry changing the sizes until the windows get the desired sizes. Discount the minibuffer when computing total height available.
author Richard M. Stallman <rms@gnu.org>
date Tue, 25 Dec 2001 10:34:39 +0000
parents f2a856e8a39c
children 4111d9e8065d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 33965
diff changeset
1 ;;; ps-mode.el --- PostScript mode for GNU Emacs
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
3 ;; Copyright (C) 1999, 2001 Free Software Foundation, Inc.
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
5 ;; Author: Peter Kleiweg <kleiweg@let.rug.nl>
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
6 ;; Maintainer: Peter Kleiweg <kleiweg@let.rug.nl>
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
7 ;; Created: 20 Aug 1997
40901
f2a856e8a39c (ps-mode-font-lock-keywords-1): Merge two regular expressions into one.
Richard M. Stallman <rms@gnu.org>
parents: 40321
diff changeset
8 ;; Version: 1.1g, 9 Nov 2001
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
9 ;; Keywords: PostScript, languages
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
10
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
11 ;; This file is part of GNU Emacs.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
12
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
13 ;; GNU Emacs is free software; you can redistribute it and/or modify
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
15 ;; the Free Software Foundation; either version 2, or (at your option)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
16 ;; any later version.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
17
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
21 ;; GNU General Public License for more details.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
22
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
24 ;; along with GNU Emacs; see the file COPYING. If not, write to the
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
25 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
26 ;; Boston, MA 02111-1307, USA.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
27
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
28 ;;; Commentary:
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
29
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
30
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
31 ;;; Code:
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
32
40901
f2a856e8a39c (ps-mode-font-lock-keywords-1): Merge two regular expressions into one.
Richard M. Stallman <rms@gnu.org>
parents: 40321
diff changeset
33 (defconst ps-mode-version "1.1g, 9 Nov 2001")
26402
541f35936e05 (ps-mode-maintainer-address): New constant.
Gerd Moellmann <gerd@gnu.org>
parents: 26384
diff changeset
34 (defconst ps-mode-maintainer-address "Peter Kleiweg <kleiweg@let.rug.nl>")
26093
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
35
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
36 (require 'easymenu)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
37
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
38 ;; Define core `PostScript' group.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
39 (defgroup PostScript nil
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
40 "PostScript mode for Emacs."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
41 :group 'languages)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
42
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
43 (defgroup PostScript-edit nil
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
44 "PostScript editing."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
45 :prefix "ps-mode-"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
46 :group 'PostScript)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
47
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
48 (defgroup PostScript-interaction nil
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
49 "PostScript interaction."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
50 :prefix "ps-run-"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
51 :group 'PostScript)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
52
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
53 ;; User variables.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
54
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
55 (defcustom ps-mode-auto-indent t
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
56 "*Should we use autoindent?"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
57 :group 'PostScript-edit
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
58 :type 'boolean)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
59
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
60 (defcustom ps-mode-tab 4
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
61 "*Number of spaces to use when indenting."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
62 :group 'PostScript-edit
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
63 :type 'integer)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
64
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
65 (defcustom ps-mode-paper-size '(595 842)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
66 "*Default paper size.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
67
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
68 When inserting an EPSF template these values are used
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
69 to set the boundingbox to include the whole page.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
70 When the figure is finished these values should be replaced."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
71 :group 'PostScript-edit
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
72 :type '(choice
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
73 (const :tag "letter" (612 792))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
74 (const :tag "legal" (612 1008))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
75 (const :tag "a0" (2380 3368))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
76 (const :tag "a1" (1684 2380))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
77 (const :tag "a2" (1190 1684))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
78 (const :tag "a3" (842 1190))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
79 (const :tag "a4" (595 842))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
80 (const :tag "a5" (421 595))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
81 (const :tag "a6" (297 421))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
82 (const :tag "a7" (210 297))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
83 (const :tag "a8" (148 210))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
84 (const :tag "a9" (105 148))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
85 (const :tag "a10" (74 105))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
86 (const :tag "b0" (2836 4008))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
87 (const :tag "b1" (2004 2836))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
88 (const :tag "b2" (1418 2004))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
89 (const :tag "b3" (1002 1418))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
90 (const :tag "b4" (709 1002))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
91 (const :tag "b5" (501 709))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
92 (const :tag "archE" (2592 3456))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
93 (const :tag "archD" (1728 2592))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
94 (const :tag "archC" (1296 1728))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
95 (const :tag "archB" (864 1296))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
96 (const :tag "archA" (648 864))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
97 (const :tag "flsa" (612 936))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
98 (const :tag "flse" (612 936))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
99 (const :tag "halfletter" (396 612))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
100 (const :tag "11x17" (792 1224))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
101 (const :tag "tabloid" (792 1224))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
102 (const :tag "ledger" (1224 792))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
103 (const :tag "csheet" (1224 1584))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
104 (const :tag "dsheet" (1584 2448))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
105 (const :tag "esheet" (2448 3168))))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
106
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
107 (defcustom ps-mode-print-function
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
108 (lambda ()
26093
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
109 (let ((lpr-switches nil)
26384
b23b59eb6a78 (ps-mode-print-function): Changed default
Gerd Moellmann <gerd@gnu.org>
parents: 26093
diff changeset
110 (lpr-command (if (memq system-type '(usg-unix-v dgux hpux irix))
b23b59eb6a78 (ps-mode-print-function): Changed default
Gerd Moellmann <gerd@gnu.org>
parents: 26093
diff changeset
111 "lp" "lpr")))
26093
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
112 (lpr-buffer)))
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
113 "*Lisp function to print current buffer as PostScript."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
114 :group 'PostScript-edit
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
115 :type 'function)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
116
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
117 (defcustom ps-run-prompt "\\(GS\\(<[0-9]+\\)?>\\)+"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
118 "*Regexp to match prompt in interactive PostScript."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
119 :group 'PostScript-interaction
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
120 :type 'regexp)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
121
26093
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
122 (defcustom ps-run-font-lock-keywords-2
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
123 (append (unless (string= ps-run-prompt "")
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
124 (list (list (if (= ?^ (string-to-char ps-run-prompt))
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
125 ps-run-prompt
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
126 (concat "^" ps-run-prompt))
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
127 '(0 font-lock-function-name-face nil nil))))
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
128 '((">>showpage, press <return> to continue<<"
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
129 (0 font-lock-keyword-face nil nil))
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
130 ("^\\(Error\\|Can't\\).*"
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
131 (0 font-lock-warning-face nil nil))
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
132 ("^\\(Current file position is\\) \\([0-9]+\\)"
26093
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
133 (1 font-lock-comment-face nil nil)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
134 (2 font-lock-warning-face nil nil))))
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
135 "*Medium level highlighting of messages from the PostScript interpreter.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
136
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
137 See documentation on font-lock for details."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
138 :group 'PostScript-interaction
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
139 :type '(repeat (list :tag "Expression with one or more highlighters"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
140 :value ("" (0 default nil t))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
141 (regexp :tag "Expression")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
142 (repeat :tag "Highlighters"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
143 :inline regexp
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
144 (list :tag "Highlighter"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
145 (integer :tag "Subexp")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
146 face
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
147 (boolean :tag "Override")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
148 (boolean :tag "Laxmatch" :value t))))))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
149
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
150 (defcustom ps-run-x '("gs" "-r72" "-sPAPERSIZE=a4")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
151 "*Command as list to run PostScript with graphic display."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
152 :group 'PostScript-interaction
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
153 :type '(repeat string))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
154
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
155 (defcustom ps-run-dumb '("gs" "-dNODISPLAY")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
156 "*Command as list to run PostScript without graphic display."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
157 :group 'PostScript-interaction
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
158 :type '(repeat string))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
159
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
160 (defcustom ps-run-init nil
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
161 "*String of commands to send to PostScript to start interactive.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
162
26093
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
163 Example: \"executive\"
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
164
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
165 You won't need to set this option for Ghostscript."
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
166 :group 'PostScript-interaction
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
167 :type '(choice (const nil) string))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
168
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
169 (defcustom ps-run-error-line-numbers nil
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
170 "*What values are used by the PostScript interpreter in error messages?"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
171 :group 'PostScript-interaction
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
172 :type '(choice (const :tag "line numbers" t)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
173 (const :tag "byte counts" nil)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
174
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
175 (defcustom ps-run-tmp-dir nil
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
176 "*Name of directory to place temporary file.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
177
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
178 If nil, the following are tried in turn, until success:
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
179 1. \"$TEMP\"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
180 2. \"$TMP\"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
181 3. \"$HOME/tmp\"
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
182 4. \"/tmp\""
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
183 :group 'PostScript-interaction
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
184 :type '(choice (const nil) directory))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
185
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
186
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
187 ;; Constants used for font-lock.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
188
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
189 ;; Only a small set of the PostScript operators is selected for fontification.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
190 ;; Fontification is meant to clarify the document structure and process flow,
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
191 ;; fontifying all known PostScript operators would hinder that objective.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
192 (defconst ps-mode-operators
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
193 (let ((ops '("clear" "mark" "cleartomark" "counttomark"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
194 "forall"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
195 "dict" "begin" "end" "def"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
196 "true" "false"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
197 "exec" "if" "ifelse" "for" "repeat" "loop" "exit"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
198 "stop" "stopped" "countexecstack" "execstack"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
199 "quit" "start"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
200 "save" "restore"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
201 "bind" "null"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
202 "gsave" "grestore" "grestoreall"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
203 "showpage")))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
204 (concat "\\<" (regexp-opt ops t) "\\>"))
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
205 "Regexp of PostScript operators that will be fontified.")
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
206
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
207 ;; Level 1 font-lock:
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
208 ;; - Special comments (reference face)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
209 ;; - Strings and other comments
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
210 ;; - Partial strings (warning face)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
211 ;; - 8bit characters (warning face)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
212 ;; Multiline strings are not supported. Strings with nested brackets are.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
213 (defconst ps-mode-font-lock-keywords-1
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
214 '(("\\`%!PS.*" . font-lock-reference-face)
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
215 ("^%%BoundingBox:[ \t]+-?[0-9]+[ \t]+-?[0-9]+[ \t]+-?[0-9]+[ \t]+-?[0-9]+[ \t]*$"
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
216 . font-lock-reference-face)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
217 (ps-mode-match-string-or-comment
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
218 (1 font-lock-comment-face nil t)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
219 (2 font-lock-string-face nil t))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
220 ("([^()\n%]*\\|[^()\n]*)" . font-lock-warning-face)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
221 ("[\200-\377]+" (0 font-lock-warning-face prepend nil)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
222 "Subdued level highlighting for PostScript mode.")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
223
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
224 ;; Level 2 font-lock:
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
225 ;; - All from level 1
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
226 ;; - PostScript operators (keyword face)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
227 (defconst ps-mode-font-lock-keywords-2
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
228 (append
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
229 ps-mode-font-lock-keywords-1
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
230 (list
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
231 (cons
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
232 ;; exclude names prepended by `/'
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
233 (concat "\\(^\\|[^/\n]\\)" ps-mode-operators)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
234 '(2 font-lock-keyword-face))))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
235 "Medium level highlighting for PostScript mode.")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
236
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
237 ;; Level 3 font-lock:
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
238 ;; - All from level 2
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
239 ;; - Immediately evaluated names: those starting with `//' (type face)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
240 ;; - Names that look like they are used for the definition of:
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
241 ;; * a function
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
242 ;; * an array
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
243 ;; * a dictionary
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
244 ;; * a "global" variable
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
245 ;; (function name face)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
246 ;; - Other names (variable name face)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
247 ;; The rules used to determine what names fit in the first category are:
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
248 ;; - Only names that are at the left margin, and one of these on the same line:
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
249 ;; * Nothing after the name except possibly one or more `[' or a comment
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
250 ;; * A `{' or `<<' or `[0-9]+ dict' following the name
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
251 ;; * A `def' somewhere in the same line
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
252 ;; Names are fontified before PostScript operators, allowing the use of
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
253 ;; a more simple (efficient) regexp than the one used in level 2.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
254 (defconst ps-mode-font-lock-keywords-3
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
255 (append
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
256 ps-mode-font-lock-keywords-1
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
257 (list
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
258 '("//\\w+" . font-lock-type-face)
40901
f2a856e8a39c (ps-mode-font-lock-keywords-1): Merge two regular expressions into one.
Richard M. Stallman <rms@gnu.org>
parents: 40321
diff changeset
259 `(,(concat
f2a856e8a39c (ps-mode-font-lock-keywords-1): Merge two regular expressions into one.
Richard M. Stallman <rms@gnu.org>
parents: 40321
diff changeset
260 "^\\(/\\w+\\)\\>"
f2a856e8a39c (ps-mode-font-lock-keywords-1): Merge two regular expressions into one.
Richard M. Stallman <rms@gnu.org>
parents: 40321
diff changeset
261 "\\([[ \t]*\\(%.*\\)?\r?$" ; Nothing but `[' or comment after the name.
f2a856e8a39c (ps-mode-font-lock-keywords-1): Merge two regular expressions into one.
Richard M. Stallman <rms@gnu.org>
parents: 40321
diff changeset
262 "\\|[ \t]*\\({\\|<<\\)" ; `{' or `<<' following the name.
f2a856e8a39c (ps-mode-font-lock-keywords-1): Merge two regular expressions into one.
Richard M. Stallman <rms@gnu.org>
parents: 40321
diff changeset
263 "\\|[ \t]+[0-9]+[ \t]+dict\\>" ; `[0-9]+ dict' following the name.
f2a856e8a39c (ps-mode-font-lock-keywords-1): Merge two regular expressions into one.
Richard M. Stallman <rms@gnu.org>
parents: 40321
diff changeset
264 "\\|.*\\<def\\>\\)") ; `def' somewhere on the same line.
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
265 . (1 font-lock-function-name-face))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
266 '("/\\w+" . font-lock-variable-name-face)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
267 (cons ps-mode-operators 'font-lock-keyword-face)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
268 "High level highliting for PostScript mode.")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
269
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
270 (defconst ps-mode-font-lock-keywords ps-mode-font-lock-keywords-1
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
271 "Default expressions to highlight in PostScript mode.")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
272
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
273 ;; Level 1 font-lock for ps-run-mode
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
274 ;; - prompt (function name face)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
275 (defconst ps-run-font-lock-keywords-1
26093
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
276 (unless (string= "" ps-run-prompt)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
277 (list (cons (if (= ?^ (string-to-char ps-run-prompt))
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
278 ps-run-prompt
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
279 (concat "^" ps-run-prompt))
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
280 'font-lock-function-name-face)))
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
281 "Subdued level highlighting for PostScript run mode.")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
282
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
283 (defconst ps-run-font-lock-keywords ps-run-font-lock-keywords-1
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
284 "Default expressions to highlight in PostScript run mode.")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
285
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
286
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
287 ;; Variables.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
288
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
289 (defvar ps-mode-map nil
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
290 "Local keymap to use in PostScript mode.")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
291
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
292 (defvar ps-mode-syntax-table nil
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
293 "Syntax table used while in PostScript mode.")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
294
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
295 (defvar ps-run-mode-map nil
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
296 "Local keymap to use in PostScript run mode.")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
297
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
298 (defvar ps-mode-tmp-file nil
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
299 "Name of temporary file, set by `ps-run'.")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
300
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
301 (defvar ps-run-mark nil
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
302 "Mark to start of region that was sent to PostScript interpreter.")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
303
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
304 (defvar ps-run-parent nil
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
305 "Parent window of interactive PostScript.")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
306
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
307
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
308 ;; Menu
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
309
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
310 (defconst ps-mode-menu-main
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
311 '("PostScript"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
312 ["EPSF Template, Sparse" ps-mode-epsf-sparse t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
313 ["EPSF Template, Rich" ps-mode-epsf-rich t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
314 "---"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
315 ("Cookbook"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
316 ["RE" ps-mode-RE t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
317 ["ISOLatin1Extended" ps-mode-latin-extended t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
318 ["center" ps-mode-center t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
319 ["right" ps-mode-right t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
320 ["Heapsort" ps-mode-heapsort t])
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
321 ("Fonts (1)"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
322 ["Times-Roman" (insert "/Times-Roman ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
323 ["Times-Bold" (insert "/Times-Bold ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
324 ["Times-Italic" (insert "/Times-Italic ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
325 ["Times-BoldItalic" (insert "/Times-BoldItalic ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
326 ["Helvetica" (insert "/Helvetica ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
327 ["Helvetica-Bold" (insert "/Helvetica-Bold ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
328 ["Helvetica-Oblique" (insert "/Helvetica-Oblique ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
329 ["Helvetica-BoldOblique" (insert "/Helvetica-BoldOblique ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
330 ["Courier" (insert "/Courier ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
331 ["Courier-Bold" (insert "/Courier-Bold ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
332 ["Courier-Oblique" (insert "/Courier-Oblique ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
333 ["Courier-BoldOblique" (insert "/Courier-BoldOblique ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
334 ["Symbol" (insert "/Symbol") t ])
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
335 ("Fonts (2)"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
336 ["AvantGarde-Book" (insert "/AvantGarde-Book ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
337 ["AvantGarde-Demi" (insert "/AvantGarde-Demi ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
338 ["AvantGarde-BookOblique" (insert "/AvantGarde-BookOblique ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
339 ["AvantGarde-DemiOblique" (insert "/AvantGarde-DemiOblique ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
340 ["Bookman-Light" (insert "/Bookman-Light ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
341 ["Bookman-Demi" (insert "/Bookman-Demi ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
342 ["Bookman-LightItalic" (insert "/Bookman-LightItalic ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
343 ["Bookman-DemiItalic" (insert "/Bookman-DemiItalic ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
344 ["Helvetica-Narrow" (insert "/Helvetica-Narrow ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
345 ["Helvetica-Narrow-Bold" (insert "/Helvetica-Narrow-Bold ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
346 ["Helvetica-Narrow-Oblique" (insert "/Helvetica-Narrow-Oblique ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
347 ["Helvetica-Narrow-BoldOblique" (insert "/Helvetica-Narrow-BoldOblique ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
348 ["NewCenturySchlbk-Roman" (insert "/NewCenturySchlbk-Roman ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
349 ["NewCenturySchlbk-Bold" (insert "/NewCenturySchlbk-Bold ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
350 ["NewCenturySchlbk-Italic" (insert "/NewCenturySchlbk-Italic ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
351 ["NewCenturySchlbk-BoldItalic" (insert "/NewCenturySchlbk-BoldItalic ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
352 ["Palatino-Roman" (insert "/Palatino-Roman ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
353 ["Palatino-Bold" (insert "/Palatino-Bold ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
354 ["Palatino-Italic" (insert "/Palatino-Italic ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
355 ["Palatino-BoldItalic" (insert "/Palatino-BoldItalic ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
356 ["ZapfChancery-MediumItalic" (insert "/ZapfChancery-MediumItalic ") t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
357 ["ZapfDingbats" (insert "/ZapfDingbats ") t])
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
358 "---"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
359 ["Comment Out Region" ps-mode-comment-out-region (mark t)]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
360 ["Uncomment Region" ps-mode-uncomment-region (mark t)]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
361 "---"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
362 ["8-bit to Octal Buffer" ps-mode-octal-buffer t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
363 ["8-bit to Octal Region" ps-mode-octal-region (mark t)]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
364 "---"
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
365 ["Auto Indent" (setq ps-mode-auto-indent (not ps-mode-auto-indent))
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
366 :style toggle :selected ps-mode-auto-indent]
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
367 "---"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
368 ["Start PostScript"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
369 ps-run-start
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
370 t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
371 ["Quit PostScript" ps-run-quit (process-status "ps-run")]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
372 ["Kill PostScript" ps-run-kill (process-status "ps-run")]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
373 ["Send Buffer to Interpreter"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
374 ps-run-buffer
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
375 (process-status "ps-run")]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
376 ["Send Region to Interpreter"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
377 ps-run-region
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
378 (and (mark t) (process-status "ps-run"))]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
379 ["Send Newline to Interpreter"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
380 ps-mode-other-newline
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
381 (process-status "ps-run")]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
382 ["View BoundingBox"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
383 ps-run-boundingbox
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
384 (process-status "ps-run")]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
385 ["Clear/Reset PostScript Graphics"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
386 ps-run-clear
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
387 (process-status "ps-run")]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
388 "---"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
389 ["Print Buffer as PostScript"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
390 ps-mode-print-buffer
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
391 t]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
392 ["Print Region as PostScript"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
393 ps-mode-print-region
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
394 (mark t)]
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
395 "---"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
396 ["Customize for PostScript"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
397 (customize-group "PostScript")
26402
541f35936e05 (ps-mode-maintainer-address): New constant.
Gerd Moellmann <gerd@gnu.org>
parents: 26384
diff changeset
398 t]
541f35936e05 (ps-mode-maintainer-address): New constant.
Gerd Moellmann <gerd@gnu.org>
parents: 26384
diff changeset
399 "---"
541f35936e05 (ps-mode-maintainer-address): New constant.
Gerd Moellmann <gerd@gnu.org>
parents: 26384
diff changeset
400 ["Submit Bug Report"
541f35936e05 (ps-mode-maintainer-address): New constant.
Gerd Moellmann <gerd@gnu.org>
parents: 26384
diff changeset
401 ps-mode-submit-bug-report
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
402 t]))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
403
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
404
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
405 ;; Mode maps for PostScript edit mode and PostScript interaction mode.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
406
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
407 (unless ps-mode-map
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
408 (setq ps-mode-map (make-sparse-keymap))
26093
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
409 (define-key ps-mode-map "\C-cv" 'ps-mode-show-version)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
410 (define-key ps-mode-map "\C-c\C-v" 'ps-run-boundingbox)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
411 (define-key ps-mode-map "\C-c\C-u" 'ps-mode-uncomment-region)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
412 (define-key ps-mode-map "\C-c\C-t" 'ps-mode-epsf-rich)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
413 (define-key ps-mode-map "\C-c\C-s" 'ps-run-start)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
414 (define-key ps-mode-map "\C-c\C-r" 'ps-run-region)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
415 (define-key ps-mode-map "\C-c\C-q" 'ps-run-quit)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
416 (define-key ps-mode-map "\C-c\C-p" 'ps-mode-print-buffer)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
417 (define-key ps-mode-map "\C-c\C-o" 'ps-mode-comment-out-region)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
418 (define-key ps-mode-map "\C-c\C-k" 'ps-run-kill)
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
419 (define-key ps-mode-map "\C-c\C-j" 'ps-mode-other-newline)
26093
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
420 (define-key ps-mode-map "\C-c\C-c" 'ps-run-clear)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
421 (define-key ps-mode-map "\C-c\C-b" 'ps-run-buffer)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
422 (define-key ps-mode-map ">" 'ps-mode-r-gt)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
423 (define-key ps-mode-map "]" 'ps-mode-r-angle)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
424 (define-key ps-mode-map "}" 'ps-mode-r-brace)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
425 (define-key ps-mode-map "\177" 'ps-mode-backward-delete-char)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
426 (define-key ps-mode-map "\t" 'ps-mode-tabkey)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
427 (define-key ps-mode-map "\r" 'ps-mode-newline)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
428 (define-key ps-mode-map [return] 'ps-mode-newline)
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
429 (easy-menu-define ps-mode-main ps-mode-map "PostScript" ps-mode-menu-main))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
430
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
431 (unless ps-run-mode-map
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
432 (setq ps-run-mode-map (make-sparse-keymap))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
433 (define-key ps-run-mode-map "\C-c\C-q" 'ps-run-quit)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
434 (define-key ps-run-mode-map "\C-c\C-k" 'ps-run-kill)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
435 (define-key ps-run-mode-map "\C-c\C-e" 'ps-run-goto-error)
26093
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
436 (define-key ps-run-mode-map [mouse-2] 'ps-run-mouse-goto-error)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
437 (define-key ps-run-mode-map "\r" 'ps-run-newline)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
438 (define-key ps-run-mode-map [return] 'ps-run-newline))
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
439
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
440
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
441 ;; Syntax table.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
442
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
443 (unless ps-mode-syntax-table
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
444 (setq ps-mode-syntax-table (make-syntax-table))
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
445
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
446 (modify-syntax-entry ?\% "< " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
447 (modify-syntax-entry ?\n "> " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
448 (modify-syntax-entry ?\r "> " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
449 (modify-syntax-entry ?\f "> " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
450 (modify-syntax-entry ?\< "(>" ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
451 (modify-syntax-entry ?\> ")<" ps-mode-syntax-table)
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
452
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
453 (modify-syntax-entry ?\! "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
454 (modify-syntax-entry ?\" "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
455 (modify-syntax-entry ?\# "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
456 (modify-syntax-entry ?\$ "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
457 (modify-syntax-entry ?\& "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
458 (modify-syntax-entry ?\' "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
459 (modify-syntax-entry ?\* "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
460 (modify-syntax-entry ?\+ "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
461 (modify-syntax-entry ?\, "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
462 (modify-syntax-entry ?\- "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
463 (modify-syntax-entry ?\. "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
464 (modify-syntax-entry ?\: "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
465 (modify-syntax-entry ?\; "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
466 (modify-syntax-entry ?\= "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
467 (modify-syntax-entry ?\? "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
468 (modify-syntax-entry ?\@ "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
469 (modify-syntax-entry ?\\ "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
470 (modify-syntax-entry ?^ "w " ps-mode-syntax-table) ; NOT: ?\^
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
471 (modify-syntax-entry ?\_ "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
472 (modify-syntax-entry ?\` "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
473 (modify-syntax-entry ?\| "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
474 (modify-syntax-entry ?\~ "w " ps-mode-syntax-table)
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
475
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
476 (let ((i 128))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
477 (while (< i 256)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
478 (modify-syntax-entry i "w " ps-mode-syntax-table)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
479 (setq i (1+ i)))))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
480
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
481
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
482 ;; PostScript mode.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
483
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
484 ;;;###autoload (autoload (quote ps-mode) "ps-mode" "Major mode for editing PostScript with GNU Emacs.\n" t)
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
485
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
486 (define-derived-mode ps-mode fundamental-mode "PostScript"
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
487 "Major mode for editing PostScript with GNU Emacs.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
488
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
489 Entry to this mode calls `ps-mode-hook'.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
490
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
491 The following variables hold user options, and can
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
492 be set through the `customize' command:
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
493
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
494 `ps-mode-auto-indent'
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
495 `ps-mode-tab'
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
496 `ps-mode-paper-size'
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
497 `ps-mode-print-function'
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
498 `ps-run-prompt'
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
499 `ps-run-font-lock-keywords-2'
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
500 `ps-run-x'
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
501 `ps-run-dumb'
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
502 `ps-run-init'
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
503 `ps-run-error-line-numbers'
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
504 `ps-run-tmp-dir'
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
505
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
506 Type \\[describe-variable] for documentation on these options.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
507
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
508
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
509 \\{ps-mode-map}
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
510
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
511
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
512 When starting an interactive PostScript process with \\[ps-run-start],
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
513 a second window will be displayed, and `ps-run-mode-hook' will be called.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
514 The keymap for this second window is:
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
515
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
516 \\{ps-run-mode-map}
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
517
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
518
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
519 When Ghostscript encounters an error it displays an error message
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
520 with a file position. Clicking mouse-2 on this number will bring
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
521 point to the corresponding spot in the PostScript window, if input
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
522 to the interpreter was sent from that window.
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
523 Typing \\<ps-run-mode-map>\\[ps-run-goto-error] when the cursor is at the number has the same effect."
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
524 (set (make-local-variable 'font-lock-defaults)
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
525 '((ps-mode-font-lock-keywords
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
526 ps-mode-font-lock-keywords-1
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
527 ps-mode-font-lock-keywords-2
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
528 ps-mode-font-lock-keywords-3)
40901
f2a856e8a39c (ps-mode-font-lock-keywords-1): Merge two regular expressions into one.
Richard M. Stallman <rms@gnu.org>
parents: 40321
diff changeset
529 t))
f2a856e8a39c (ps-mode-font-lock-keywords-1): Merge two regular expressions into one.
Richard M. Stallman <rms@gnu.org>
parents: 40321
diff changeset
530 (set (make-local-variable 'comment-start) "%")
f2a856e8a39c (ps-mode-font-lock-keywords-1): Merge two regular expressions into one.
Richard M. Stallman <rms@gnu.org>
parents: 40321
diff changeset
531 ;; NOTE: `\' has a special meaning in strings only
f2a856e8a39c (ps-mode-font-lock-keywords-1): Merge two regular expressions into one.
Richard M. Stallman <rms@gnu.org>
parents: 40321
diff changeset
532 (set (make-local-variable 'comment-start-skip) "%+[ \t]*"))
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
533
26093
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
534 (defun ps-mode-show-version ()
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
535 "Show current version of PostScript mode."
26093
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
536 (interactive)
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
537 (message " *** PostScript Mode (ps-mode) Version %s *** " ps-mode-version))
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
538
26402
541f35936e05 (ps-mode-maintainer-address): New constant.
Gerd Moellmann <gerd@gnu.org>
parents: 26384
diff changeset
539 (defun ps-mode-submit-bug-report ()
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
540 "Submit via mail a bug report on PostScript mode."
26402
541f35936e05 (ps-mode-maintainer-address): New constant.
Gerd Moellmann <gerd@gnu.org>
parents: 26384
diff changeset
541 (interactive)
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
542 (when (y-or-n-p "Submit bug report on PostScript mode? ")
26421
a89f2624e1eb (ps-mode-submit-bug-report): Added list
Gerd Moellmann <gerd@gnu.org>
parents: 26402
diff changeset
543 (let ((reporter-prompt-for-summary-p nil)
a89f2624e1eb (ps-mode-submit-bug-report): Added list
Gerd Moellmann <gerd@gnu.org>
parents: 26402
diff changeset
544 (reporter-dont-compact-list '(ps-mode-print-function
a89f2624e1eb (ps-mode-submit-bug-report): Added list
Gerd Moellmann <gerd@gnu.org>
parents: 26402
diff changeset
545 ps-run-font-lock-keywords-2)))
26402
541f35936e05 (ps-mode-maintainer-address): New constant.
Gerd Moellmann <gerd@gnu.org>
parents: 26384
diff changeset
546 (reporter-submit-bug-report
541f35936e05 (ps-mode-maintainer-address): New constant.
Gerd Moellmann <gerd@gnu.org>
parents: 26384
diff changeset
547 ps-mode-maintainer-address
26421
a89f2624e1eb (ps-mode-submit-bug-report): Added list
Gerd Moellmann <gerd@gnu.org>
parents: 26402
diff changeset
548 (format "ps-mode.el %s [%s]" ps-mode-version system-type)
a89f2624e1eb (ps-mode-submit-bug-report): Added list
Gerd Moellmann <gerd@gnu.org>
parents: 26402
diff changeset
549 '(ps-mode-auto-indent
a89f2624e1eb (ps-mode-submit-bug-report): Added list
Gerd Moellmann <gerd@gnu.org>
parents: 26402
diff changeset
550 ps-mode-tab
a89f2624e1eb (ps-mode-submit-bug-report): Added list
Gerd Moellmann <gerd@gnu.org>
parents: 26402
diff changeset
551 ps-mode-paper-size
a89f2624e1eb (ps-mode-submit-bug-report): Added list
Gerd Moellmann <gerd@gnu.org>
parents: 26402
diff changeset
552 ps-mode-print-function
a89f2624e1eb (ps-mode-submit-bug-report): Added list
Gerd Moellmann <gerd@gnu.org>
parents: 26402
diff changeset
553 ps-run-prompt
a89f2624e1eb (ps-mode-submit-bug-report): Added list
Gerd Moellmann <gerd@gnu.org>
parents: 26402
diff changeset
554 ps-run-font-lock-keywords-2
a89f2624e1eb (ps-mode-submit-bug-report): Added list
Gerd Moellmann <gerd@gnu.org>
parents: 26402
diff changeset
555 ps-run-x
a89f2624e1eb (ps-mode-submit-bug-report): Added list
Gerd Moellmann <gerd@gnu.org>
parents: 26402
diff changeset
556 ps-run-dumb
a89f2624e1eb (ps-mode-submit-bug-report): Added list
Gerd Moellmann <gerd@gnu.org>
parents: 26402
diff changeset
557 ps-run-init
a89f2624e1eb (ps-mode-submit-bug-report): Added list
Gerd Moellmann <gerd@gnu.org>
parents: 26402
diff changeset
558 ps-run-error-line-numbers
a89f2624e1eb (ps-mode-submit-bug-report): Added list
Gerd Moellmann <gerd@gnu.org>
parents: 26402
diff changeset
559 ps-run-tmp-dir)))))
26402
541f35936e05 (ps-mode-maintainer-address): New constant.
Gerd Moellmann <gerd@gnu.org>
parents: 26384
diff changeset
560
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
561
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
562 ;; Helper functions for font-lock.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
563
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
564 ;; When this function is called, point is at an opening bracket.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
565 ;; This function should test if point is at the start of a string
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
566 ;; with nested brackets.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
567 ;; If true: move point to end of string
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
568 ;; set string to match data nr 2
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
569 ;; return new point
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
570 ;; If false: return nil
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
571 (defun ps-mode-looking-at-nested (limit)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
572 (let ((first (point))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
573 (level 1)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
574 pos)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
575 ;; Move past opening bracket.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
576 (forward-char 1)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
577 (setq pos (point))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
578 (while (and (> level 0) (< pos limit))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
579 ;; Search next bracket, stepping over escaped brackets.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
580 (if (not (looking-at "\\([^()\\\n]\\|\\\\.\\)*\\([()]\\)"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
581 (setq level -1)
40901
f2a856e8a39c (ps-mode-font-lock-keywords-1): Merge two regular expressions into one.
Richard M. Stallman <rms@gnu.org>
parents: 40321
diff changeset
582 (setq level (+ level (if (string= "(" (match-string 2)) 1 -1)))
f2a856e8a39c (ps-mode-font-lock-keywords-1): Merge two regular expressions into one.
Richard M. Stallman <rms@gnu.org>
parents: 40321
diff changeset
583 (goto-char (setq pos (match-end 0)))))
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
584 (if (not (= level 0))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
585 nil
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
586 ;; Found string with nested brackets, now set match data nr 2.
40901
f2a856e8a39c (ps-mode-font-lock-keywords-1): Merge two regular expressions into one.
Richard M. Stallman <rms@gnu.org>
parents: 40321
diff changeset
587 (set-match-data (list first pos nil nil first pos))
f2a856e8a39c (ps-mode-font-lock-keywords-1): Merge two regular expressions into one.
Richard M. Stallman <rms@gnu.org>
parents: 40321
diff changeset
588 pos)))
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
589
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
590 ;; This function should search for a string or comment
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
591 ;; If comment, return as match data nr 1
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
592 ;; If string, return as match data nr 2
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
593 (defun ps-mode-match-string-or-comment (limit)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
594 ;; Find the first potential match.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
595 (if (not (re-search-forward "[%(]" limit t))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
596 ;; Nothing found: return failure.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
597 nil
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
598 (let ((end (match-end 0)))
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
599 (goto-char (match-beginning 0))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
600 (cond ((looking-at "\\(%.*\\)\\|\\((\\([^()\\\n]\\|\\\\.\\)*)\\)")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
601 ;; It's a comment or string without nested, unescaped brackets.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
602 (goto-char (match-end 0))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
603 (point))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
604 ((ps-mode-looking-at-nested limit)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
605 ;; It's a string with nested brackets.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
606 (point))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
607 (t
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
608 ;; Try next match.
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
609 (goto-char end)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
610 (ps-mode-match-string-or-comment limit))))))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
611
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
612
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
613 ;; Key-handlers.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
614
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
615 (defun ps-mode-target-column ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
616 "To what column should text on current line be indented?
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
617
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
618 Identation is increased if the last token on the current line
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
619 defines the beginning of a group. These tokens are: { [ <<"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
620 (save-excursion
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
621 (beginning-of-line)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
622 (if (looking-at "[ \t]*\\(}\\|\\]\\|>>\\)")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
623 (condition-case err
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
624 (progn
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
625 (goto-char (match-end 0))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
626 (backward-sexp 1)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
627 (beginning-of-line)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
628 (if (looking-at "[ \t]+")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
629 (goto-char (match-end 0)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
630 (current-column))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
631 (error
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
632 (ding)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
633 (message (error-message-string err))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
634 0))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
635 (let (target)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
636 (if (not (re-search-backward "[^ \t\n\r\f][ \t\n\r\f]*\\=" nil t))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
637 0
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
638 (goto-char (match-beginning 0))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
639 (beginning-of-line)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
640 (if (looking-at "[ \t]+")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
641 (goto-char (match-end 0)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
642 (setq target (current-column))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
643 (end-of-line)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
644 (if (re-search-backward "\\({\\|\\[\\|<<\\)[ \t]*\\(%[^\n]*\\)?\\=" nil t)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
645 (setq target (+ target ps-mode-tab)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
646 target)))))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
647
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
648 (defun ps-mode-newline ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
649 "Insert newline with proper indentation."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
650 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
651 (delete-horizontal-space)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
652 (insert "\n")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
653 (if ps-mode-auto-indent
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
654 (indent-to (ps-mode-target-column))))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
655
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
656 (defun ps-mode-tabkey ()
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
657 "Indent/reindent current line, or insert tab."
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
658 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
659 (let ((column (current-column))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
660 target)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
661 (if (or (not ps-mode-auto-indent)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
662 (< ps-mode-tab 1)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
663 (not (re-search-backward "^[ \t]*\\=" nil t)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
664 (insert "\t")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
665 (setq target (ps-mode-target-column))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
666 (while (<= target column)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
667 (setq target (+ target ps-mode-tab)))
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
668 (indent-line-to target))))
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
669
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
670 (defun ps-mode-backward-delete-char ()
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
671 "Delete backward indentation, or delete backward character."
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
672 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
673 (let ((column (current-column))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
674 target)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
675 (if (or (not ps-mode-auto-indent)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
676 (< ps-mode-tab 1)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
677 (not (re-search-backward "^[ \t]+\\=" nil t)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
678 (delete-backward-char 1)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
679 (setq target (ps-mode-target-column))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
680 (while (> column target)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
681 (setq target (+ target ps-mode-tab)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
682 (while (>= target column)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
683 (setq target (- target ps-mode-tab)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
684 (if (< target 0)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
685 (setq target 0))
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
686 (indent-line-to target))))
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
687
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
688 (defun ps-mode-r-brace ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
689 "Insert `}' and perform balance."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
690 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
691 (insert "}")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
692 (ps-mode-r-balance "}"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
693
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
694 (defun ps-mode-r-angle ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
695 "Insert `]' and perform balance."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
696 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
697 (insert "]")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
698 (ps-mode-r-balance "]"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
699
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
700 (defun ps-mode-r-gt ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
701 "Insert `>' and perform balance."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
702 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
703 (insert ">")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
704 (ps-mode-r-balance ">>"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
705
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
706 (defun ps-mode-r-balance (right)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
707 "Adjust indentification if point after RIGHT."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
708 (if ps-mode-auto-indent
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
709 (save-excursion
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
710 (when (re-search-backward (concat "^[ \t]*" (regexp-quote right) "\\=") nil t)
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
711 (indent-line-to (ps-mode-target-column)))))
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
712 (blink-matching-open))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
713
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
714 (defun ps-mode-other-newline ()
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
715 "Perform newline in `*ps run*' buffer."
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
716 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
717 (let ((buf (current-buffer)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
718 (set-buffer "*ps run*")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
719 (ps-run-newline)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
720 (set-buffer buf)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
721
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
722
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
723 ;; Print PostScript.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
724
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
725 (defun ps-mode-print-buffer ()
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
726 "Print buffer as PostScript."
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
727 (interactive)
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
728 (funcall ps-mode-print-function))
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
729
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
730 (defun ps-mode-print-region (begin end)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
731 "Print region as PostScript, adding minimal header and footer lines:
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
732
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
733 %!PS
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
734 <region>
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
735 showpage"
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
736 (interactive "r")
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
737 (let ((buf (current-buffer)))
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
738 (with-temp-buffer
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
739 (insert "%!PS\n")
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
740 (insert-buffer-substring buf begin end)
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
741 (insert "\nshowpage\n")
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
742 (funcall ps-mode-print-function))))
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
743
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
744
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
745 ;; Comment Out / Uncomment.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
746
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
747 (defun ps-mode-comment-out-region (begin end)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
748 "Comment out region."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
749 (interactive "r")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
750 (let ((endm (make-marker)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
751 (set-marker endm end)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
752 (save-excursion
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
753 (goto-char begin)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
754 (if (= (current-column) 0)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
755 (insert "%"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
756 (while (and (= (forward-line) 0)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
757 (< (point) (marker-position endm)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
758 (insert "%")))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
759 (set-marker endm nil)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
760
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
761 (defun ps-mode-uncomment-region (begin end)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
762 "Uncomment region.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
763
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
764 Only one `%' is removed, and it has to be in the first column."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
765 (interactive "r")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
766 (let ((endm (make-marker)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
767 (set-marker endm end)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
768 (save-excursion
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
769 (goto-char begin)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
770 (if (looking-at "^%")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
771 (delete-char 1))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
772 (while (and (= (forward-line) 0)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
773 (< (point) (marker-position endm)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
774 (if (looking-at "%")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
775 (delete-char 1))))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
776 (set-marker endm nil)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
777
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
778
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
779 ;; Convert 8-bit to octal codes.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
780
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
781 (defun ps-mode-octal-buffer ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
782 "Change 8-bit characters to octal codes in buffer."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
783 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
784 (ps-mode-octal-region (point-min) (point-max)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
785
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
786 (defun ps-mode-octal-region (begin end)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
787 "Change 8-bit characters to octal codes in region."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
788 (interactive "r")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
789 (if buffer-read-only
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
790 (progn
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
791 (ding)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
792 (message "Buffer is read only"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
793 (save-excursion
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
794 (let (endm i)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
795 (setq endm (make-marker))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
796 (set-marker endm end)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
797 (goto-char begin)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
798 (setq i 0)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
799 (while (re-search-forward "[\200-\377]" (marker-position endm) t)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
800 (setq i (1+ i))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
801 (backward-char)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
802 (insert (format "\\%03o" (string-to-char (buffer-substring (point) (1+ (point))))))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
803 (delete-char 1))
26093
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
804 (message "%d change%s made" i (if (= i 1) "" "s"))
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
805 (set-marker endm nil)))))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
806
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
807
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
808 ;; Cookbook.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
809
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
810 (defun ps-mode-center ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
811 "Insert function /center."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
812 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
813 (insert "
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
814 /center {
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
815 dup stringwidth
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
816 exch 2 div neg
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
817 exch 2 div neg
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
818 rmoveto
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
819 } bind def
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
820 "))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
821
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
822 (defun ps-mode-right ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
823 "Insert function /right."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
824 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
825 (insert "
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
826 /right {
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
827 dup stringwidth
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
828 exch neg
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
829 exch neg
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
830 rmoveto
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
831 } bind def
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
832 "))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
833
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
834 (defun ps-mode-RE ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
835 "Insert function /RE."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
836 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
837 (insert "
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
838 % `new-font-name' `encoding-vector' `old-font-name' RE -
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
839 /RE {
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
840 findfont
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
841 dup maxlength dict begin {
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
842 1 index /FID ne { def } { pop pop } ifelse
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
843 } forall
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
844 /Encoding exch def
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
845 dup /FontName exch def
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
846 currentdict end definefont pop
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
847 } bind def
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
848 "))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
849
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
850 (defun ps-mode-latin-extended ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
851 "Insert array /ISOLatin1Extended.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
852
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
853 This encoding vector contains all the entries from ISOLatin1Encoding
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
854 plus the usually uncoded characters inserted on positions 1 through 28."
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
855 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
856 (insert "
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
857 % ISOLatin1Encoding, extended with remaining uncoded glyphs
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
858 /ISOLatin1Extended [
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
859 /.notdef /Lslash /lslash /OE /oe /Scaron /scaron /Zcaron /zcaron
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
860 /Ydieresis /trademark /bullet /dagger /daggerdbl /ellipsis /emdash
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
861 /endash /fi /fl /florin /fraction /guilsinglleft /guilsinglright
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
862 /perthousand /quotedblbase /quotedblleft /quotedblright
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
863 /quotesinglbase /quotesingle /.notdef /.notdef /.notdef /space
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
864 /exclam /quotedbl /numbersign /dollar /percent /ampersand
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
865 /quoteright /parenleft /parenright /asterisk /plus /comma /minus
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
866 /period /slash /zero /one /two /three /four /five /six /seven /eight
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
867 /nine /colon /semicolon /less /equal /greater /question /at /A /B /C
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
868 /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
869 /bracketleft /backslash /bracketright /asciicircum /underscore
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
870 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
871 /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
872 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
873 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
874 /.notdef /.notdef /.notdef /dotlessi /grave /acute /circumflex
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
875 /tilde /macron /breve /dotaccent /dieresis /.notdef /ring /cedilla
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
876 /.notdef /hungarumlaut /ogonek /caron /space /exclamdown /cent
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
877 /sterling /currency /yen /brokenbar /section /dieresis /copyright
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
878 /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
879 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
880 /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
881 /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
882 /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
883 /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
884 /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
885 /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
886 /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
887 /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
888 /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
889 /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
890 /ucircumflex /udieresis /yacute /thorn /ydieresis
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
891 ] def
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
892 "))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
893
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
894 (defun ps-mode-heapsort ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
895 "Insert function /Heapsort."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
896 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
897 (insert "
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
898 % `array-element' Heapsort-cvi-or-cvr-or-cvs `number-or-string'
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
899 /Heapsort-cvi-or-cvr-or-cvs {
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
900 % 0 get
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
901 } bind def
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
902 % `array' Heapsort `sorted-array'
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
903 /Heapsort {
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
904 dup length /hsR exch def
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
905 /hsL hsR 2 idiv 1 add def
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
906 {
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
907 hsR 2 lt { exit } if
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
908 hsL 1 gt {
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
909 /hsL hsL 1 sub def
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
910 } {
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
911 /hsR hsR 1 sub def
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
912 dup dup dup 0 get exch dup hsR get
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
913 0 exch put
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
914 hsR exch put
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
915 } ifelse
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
916 dup hsL 1 sub get /hsT exch def
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
917 /hsJ hsL def
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
918 {
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
919 /hsS hsJ def
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
920 /hsJ hsJ dup add def
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
921 hsJ hsR gt { exit } if
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
922 hsJ hsR lt {
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
923 dup dup hsJ 1 sub get Heapsort-cvi-or-cvr-or-cvs
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
924 exch hsJ get Heapsort-cvi-or-cvr-or-cvs
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
925 lt { /hsJ hsJ 1 add def } if
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
926 } if
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
927 dup hsJ 1 sub get Heapsort-cvi-or-cvr-or-cvs
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
928 hsT Heapsort-cvi-or-cvr-or-cvs
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
929 le { exit } if
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
930 dup dup hsS 1 sub exch hsJ 1 sub get put
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
931 } loop
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
932 dup hsS 1 sub hsT put
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
933 } loop
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
934 } bind def
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
935 "))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
936
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
937
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
938 ;; EPSF document lay-out.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
939
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
940 (defun ps-mode-epsf-sparse ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
941 "Insert sparse EPSF template."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
942 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
943 (goto-char (point-max))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
944 (unless (re-search-backward "%%EOF[ \t\n]*\\'" nil t)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
945 (goto-char (point-max))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
946 (insert "\n%%EOF\n"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
947 (goto-char (point-max))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
948 (unless (re-search-backward "\\bshowpage[ \t\n]+%%EOF[ \t\n]*\\'" nil t)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
949 (re-search-backward "%%EOF")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
950 (insert "showpage\n"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
951 (goto-char (point-max))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
952 (unless (re-search-backward "\\bend[ \t\n]+\\bshowpage[ \t\n]+%%EOF[ \t\n]*\\'" nil t)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
953 (re-search-backward "showpage")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
954 (insert "\nend\n"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
955 (goto-char (point-min))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
956 (insert "%!PS-Adobe-3.0 EPSF-3.0\n%%BoundingBox: 0 0 ")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
957 (insert (format "%d %d\n\n"
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
958 (car ps-mode-paper-size)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
959 (car (cdr ps-mode-paper-size))))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
960 (insert "64 dict begin\n\n"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
961
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
962 (defun ps-mode-epsf-rich ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
963 "Insert rich EPSF template."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
964 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
965 (ps-mode-epsf-sparse)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
966 (forward-line -3)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
967 (when buffer-file-name
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
968 (insert "%%Title: " (file-name-nondirectory buffer-file-name) "\n"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
969 (insert "%%Creator: " (user-full-name) "\n")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
970 (insert "%%CreationDate: " (current-time-string) "\n")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
971 (insert "%%EndComments\n")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
972 (forward-line 3))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
973
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
974
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
975 ;; Interactive PostScript interpreter.
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
976
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
977 (define-derived-mode ps-run-mode fundamental-mode "Interactive PS"
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
978 "Major mode in interactive PostScript window.
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
979 This mode is invoked from `ps-mode' and should not be called directly.
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
980
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
981 \\{ps-run-mode-map}"
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
982 (set (make-local-variable 'font-lock-defaults)
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
983 '((ps-run-font-lock-keywords
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
984 ps-run-font-lock-keywords-1
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
985 ps-run-font-lock-keywords-2)
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
986 t))
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
987 (setq mode-line-process '(":%s")))
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
988
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
989 (defun ps-run-running ()
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
990 "Error if not in `ps-mode' or not running PostScript."
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
991 (unless (equal major-mode 'ps-mode)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
992 (error "This function can only be called from PostScript mode"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
993 (unless (equal (process-status "ps-run") 'run)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
994 (error "No PostScript process running")))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
995
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
996 (defun ps-run-start ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
997 "Start interactive PostScript."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
998 (interactive)
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
999 (let ((command (or (and window-system ps-run-x) ps-run-dumb))
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1000 (init-file nil)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1001 (process-connection-type nil)
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1002 (oldwin (selected-window)))
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1003 (unless command
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1004 (error "No command specified to run interactive PostScript"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1005 (unless (and ps-run-mark (markerp ps-run-mark))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1006 (setq ps-run-mark (make-marker)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1007 (when ps-run-init
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1008 (setq init-file (ps-run-make-tmp-filename))
26093
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
1009 (write-region (concat ps-run-init "\n") 0 init-file)
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1010 (setq init-file (list init-file)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1011 (pop-to-buffer "*ps run*")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1012 (ps-run-mode)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1013 (when (process-status "ps-run")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1014 (delete-process "ps-run"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1015 (erase-buffer)
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1016 (setq command (append command init-file))
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1017 (insert (mapconcat 'identity command " ") "\n")
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1018 (apply 'start-process "ps-run" "*ps run*" command)
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1019 (select-window oldwin)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1020
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1021 (defun ps-run-quit ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1022 "Quit interactive PostScript."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1023 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1024 (ps-run-send-string "quit" t)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1025 (ps-run-cleanup))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1026
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1027 (defun ps-run-kill ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1028 "Kill interactive PostScript."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1029 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1030 (delete-process "ps-run")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1031 (ps-run-cleanup))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1032
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1033 (defun ps-run-clear ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1034 "Clear/reset PostScript graphics."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1035 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1036 (ps-run-send-string "showpage" t)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1037 (sit-for 1)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1038 (ps-run-send-string "" t))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1039
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1040 (defun ps-run-buffer ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1041 "Send buffer to PostScript interpreter."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1042 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1043 (ps-run-region (point-min) (point-max)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1044
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1045 (defun ps-run-region (begin end)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1046 "Send region to PostScript interpreter."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1047 (interactive "r")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1048 (ps-run-running)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1049 (setq ps-run-parent (buffer-name))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1050 (let ((f (ps-run-make-tmp-filename)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1051 (set-marker ps-run-mark begin)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1052 (write-region begin end f)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1053 (ps-run-send-string (format "(%s) run" f) t)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1054
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1055 (defun ps-run-boundingbox ()
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1056 "View BoundingBox."
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1057 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1058 (ps-run-running)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1059 (let (x1 y1 x2 y2 f
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1060 (buf (current-buffer)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1061 (save-excursion
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1062 (goto-char 1)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1063 (re-search-forward
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1064 "^%%BoundingBox:[ \t]+\\(-?[0-9]+\\)[ \t]+\\(-?[0-9]+\\)[ \t]+\\(-?[0-9]+\\)[ \t]+\\(-?[0-9]+\\)")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1065 (setq x1 (match-string 1)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1066 y1 (match-string 2)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1067 x2 (match-string 3)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1068 y2 (match-string 4)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1069 (unless (< (string-to-number x1) (string-to-number x2))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1070 (error "x1 (%s) should be less than x2 (%s)" x1 x2))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1071 (unless (< (string-to-number y1) (string-to-number y2))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1072 (error "y1 (%s) should be less than y2 (%s)" y1 y2))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1073 (setq f (ps-run-make-tmp-filename))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1074 (write-region
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1075 (format
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1076 "gsave
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1077 initgraphics
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1078 2 setlinewidth
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1079 %s %s moveto
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1080 %s %s lineto
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1081 %s %s lineto
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1082 %s %s lineto
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1083 closepath
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1084 gsave
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1085 [ 4 20 ] 0 setdash
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1086 1 0 0 setrgbcolor
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1087 stroke
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1088 grestore
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1089 gsave
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1090 [ 4 20 ] 8 setdash
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1091 0 1 0 setrgbcolor
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1092 stroke
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1093 grestore
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1094 [ 4 20 ] 16 setdash
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1095 0 0 1 setrgbcolor
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1096 stroke
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1097 grestore
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1098 " x1 y1 x2 y1 x2 y2 x1 y2)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1099 0
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1100 f)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1101 (ps-run-send-string (format "(%s) run" f) t)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1102 (set-buffer buf)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1103
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1104 (defun ps-run-send-string (string &optional echo)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1105 (let ((oldwin (selected-window)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1106 (pop-to-buffer "*ps run*")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1107 (goto-char (point-max))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1108 (when echo
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1109 (insert string "\n"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1110 (set-marker (process-mark (get-process "ps-run")) (point))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1111 (process-send-string "ps-run" (concat string "\n"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1112 (select-window oldwin)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1113
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1114 (defun ps-run-make-tmp-filename ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1115 (unless ps-mode-tmp-file
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1116 (cond (ps-run-tmp-dir)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1117 ((setq ps-run-tmp-dir (getenv "TEMP")))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1118 ((setq ps-run-tmp-dir (getenv "TMP")))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1119 ((setq ps-run-tmp-dir (getenv "HOME"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1120 (setq
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1121 ps-run-tmp-dir
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1122 (concat (file-name-as-directory ps-run-tmp-dir) "tmp"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1123 (unless (file-directory-p ps-run-tmp-dir)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1124 (setq ps-run-tmp-dir nil))))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1125 (unless ps-run-tmp-dir
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1126 (setq ps-run-tmp-dir "/tmp"))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1127 (setq ps-mode-tmp-file
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1128 (make-temp-name
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1129 (concat
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1130 (if ps-run-tmp-dir
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1131 (file-name-as-directory ps-run-tmp-dir)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1132 "")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1133 "ps-run-"))))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1134 ps-mode-tmp-file)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1135
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1136 ;; Remove temporary file
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1137 ;; This shouldn't fail twice, because it is called at kill-emacs
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1138 (defun ps-run-cleanup ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1139 (when ps-mode-tmp-file
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1140 (let ((i ps-mode-tmp-file))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1141 (setq ps-mode-tmp-file nil)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1142 (when (file-exists-p i)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1143 (delete-file i)))))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1144
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1145 (defun ps-run-mouse-goto-error (event)
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1146 "Set point at mouse click, then call `ps-run-goto-error'."
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1147 (interactive "e")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1148 (mouse-set-point event)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1149 (ps-run-goto-error))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1150
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1151 (defun ps-run-newline ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1152 "Process newline in PostScript interpreter window."
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1153 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1154 (end-of-line)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1155 (insert "\n")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1156 (forward-line -1)
26093
6b9477637c7c (ps-mode-print-function): Fix default
Gerd Moellmann <gerd@gnu.org>
parents: 25990
diff changeset
1157 (when (looking-at ps-run-prompt)
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1158 (goto-char (match-end 0)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1159 (looking-at ".*")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1160 (goto-char (1+ (match-end 0)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1161 (ps-run-send-string (buffer-substring (match-beginning 0) (match-end 0))))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1162
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1163 (defun ps-run-goto-error ()
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1164 "Jump to buffer position read as integer at point.
40321
bdb409454d22 (ps-mode-print-function): Remove quote for
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1165 Use line numbers if `ps-run-error-line-numbers' is not nil"
25990
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1166 (interactive)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1167 (let ((p (point)))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1168 (unless (looking-at "[0-9]")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1169 (goto-char (max 1 (1- (point)))))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1170 (when (looking-at "[0-9]")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1171 (forward-char 1)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1172 (forward-word -1)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1173 (when (looking-at "[0-9]+")
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1174 (let (i)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1175 (setq
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1176 i
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1177 (string-to-int
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1178 (buffer-substring (match-beginning 0) (match-end 0))))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1179 (goto-char p)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1180 (pop-to-buffer ps-run-parent)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1181 (if ps-run-error-line-numbers
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1182 (progn
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1183 (goto-char (marker-position ps-run-mark))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1184 (forward-line (1- i))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1185 (end-of-line))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1186 (goto-char (+ i (marker-position ps-run-mark)))))))))
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1187
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1188
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1189 ;;
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1190 (add-hook 'kill-emacs-hook 'ps-run-cleanup)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1191
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1192 (provide 'ps-mode)
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1193
2b2b161bac67 New file. Major mode for editing PostScript.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1194 ;;; ps-mode.el ends here