annotate lisp/progmodes/dcl-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 45db352a0971
children 5a5a4566e9f7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 ;;; dcl-mode.el --- major mode for editing DCL command files
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2
17252
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
3 ;; Copyright (c) 1997 Free Software Foundation, Inc.
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
4
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 ;; Author: Odd Gripenstam <gripenstamol@decus.se>
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 ;; Maintainer: Odd Gripenstam <gripenstamol@decus.se>
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 ;; Keywords: DCL editing major-mode languages
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8
17252
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
9 ;; This file is part of GNU Emacs.
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
10
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
14 ;; any later version.
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
15
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
19 ;; GNU General Public License for more details.
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
20
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
21 ;; You should have received a copy of the GNU General Public License
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
24 ;; Boston, MA 02111-1307, USA.
fb59cd650fa1 Add copyright notice and distribution terms.
Richard M. Stallman <rms@gnu.org>
parents: 17246
diff changeset
25
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 ;;; Commentary:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 ;; DCL mode is a package for editing DCL command files. It helps you
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 ;; indent lines, add leading `$' and trailing `-', move around in the
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 ;; code and insert lexical functions.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 ;;
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 ;; Type `C-h m' when you are editing a .COM file to get more
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 ;; information about this mode.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 ;;
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 ;; To use templates you will need a version of tempo.el that is at
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 ;; least later than the buggy 1.1.1, which was included with my versions of
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 ;; Emacs. I used version 1.2.4.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 ;; The latest tempo.el distribution can be fetched from
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 ;; ftp.lysator.liu.se in the directory /pub/emacs.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 ;; I recommend setting (setq tempo-interactive t). This will make
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 ;; tempo prompt you for values to put in the blank spots in the templates.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 ;;
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43 ;; There is limited support for imenu. The limitation is that you need
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 ;; a version of imenu.el that uses imenu-generic-expression. I found
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 ;; the version I use in Emacs 19.30. (It was *so* much easier to hook
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 ;; into that version than the one in 19.27...)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 ;;
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 ;; Any feedback will be welcomed. If you write functions for
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49 ;; dcl-calc-command-indent-function or dcl-calc-cont-indent-function,
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 ;; please send them to the maintainer.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 ;;
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 ;;
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 ;; Ideas for improvement:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 ;; * Change meaning of `left margin' when dcl-tab-always-indent is nil.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 ;; Consider the following line (`_' is the cursor):
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 ;; $ label: _ command
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 ;; Pressing tab with the cursor at the underline now inserts a tab.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 ;; This should be part of the left margin and pressing tab should indent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 ;; the line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 ;; * Make M-LFD work properly with comments in all cases. Now it only
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 ;; works on comment-only lines. But what is "properly"? New rules for
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 ;; indenting comments?
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 ;; * Even smarter indentation of continuation lines.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 ;; * A delete-indentation function (M-^) that joins continued lines,
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 ;; including lines with end line comments?
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 ;; * Handle DECK/EOD.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 ;; * `indent list' commands: C-M-q, C-u TAB. What is a list in DCL? One
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 ;; complete command line? A block? A subroutine?
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 ;;; Code:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 ;;; *** Customization *****************************************************
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73
22511
f5b3f55fc25b (dcl): Define as customize group, not
Karl Heuer <kwzh@gnu.org>
parents: 20781
diff changeset
74 (defgroup dcl nil
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
75 "Major mode for editing DCL command files."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
76 :group 'languages)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
78 (defcustom dcl-basic-offset 4
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 "*Number of columns to indent a block in DCL.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 A block is the commands between THEN-ELSE-ENDIF and between the commands
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81 dcl-block-begin-regexp and dcl-block-end-regexp.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 The meaning of this variable may be changed if
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
84 dcl-calc-command-indent-function is set to a function."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
85 :type 'integer
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
86 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
89 (defcustom dcl-continuation-offset 6
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 "*Number of columns to indent a continuation line in DCL.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 A continuation line is a line that follows a line ending with `-'.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 The meaning of this variable may be changed if
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
94 dcl-calc-cont-indent-function is set to a function."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
95 :type 'integer
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
96 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
99 (defcustom dcl-margin-offset 8
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 "*Indentation for the first command line in DCL.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 The first command line in a file or after a SUBROUTINE statement is indented
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 this much. Other command lines are indented the same number of columns as
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 the preceding command line.
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
104 A command line is a line that starts with `$'."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
105 :type 'integer
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
106 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
109 (defcustom dcl-margin-label-offset 2
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 "*Number of columns to indent a margin label in DCL.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 A margin label is a label that doesn't begin or end a block, i.e. it
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
112 doesn't match dcl-block-begin-regexp or dcl-block-end-regexp."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
113 :type 'integer
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
114 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
117 (defcustom dcl-comment-line-regexp "^\\$!"
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 "*Regexp describing the start of a comment line in DCL.
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
119 Comment lines are not indented."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
120 :type 'regexp
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
121 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
124 (defcustom dcl-block-begin-regexp "loop[0-9]*:"
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 "*Regexp describing a command that begins an indented block in DCL.
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
126 Set to nil to only indent at THEN-ELSE-ENDIF."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
127 :type 'regexp
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
128 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
131 (defcustom dcl-block-end-regexp "endloop[0-9]*:"
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 "*Regexp describing a command that ends an indented block in DCL.
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
133 Set to nil to only indent at THEN-ELSE-ENDIF."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
134 :type 'regexp
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
135 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
138 (defcustom dcl-calc-command-indent-function nil
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 "*Function to calculate indentation for a command line in DCL.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 If this variable is non-nil it is called as a function:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 \(func INDENT-TYPE CUR-INDENT EXTRA-INDENT LAST-POINT THIS-POINT)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 The function must return the number of columns to indent the current line or
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 nil to get the default indentation.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 INDENT-TYPE is a symbol indicating what kind of indentation should be done.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 It can have the following values:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 indent the lines indentation should be increased, e.g. after THEN.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 outdent the lines indentation should be decreased, e.g a line with ENDIF.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 first-line indentation for the first line in a buffer or SUBROUTINE.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 CUR-INDENT is the indentation of the preceding command line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 EXTRA-INDENT is the default change in indentation for this line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 \(a negative number for 'outdent).
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 LAST-POINT is the buffer position of the first significant word on the
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 previous line or nil if the current line is the first line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 THIS-POINT is the buffer position of the first significant word on the
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 current line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 If this variable is nil, the indentation is calculated as
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 CUR-INDENT + EXTRA-INDENT.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 This package includes two functions suitable for this:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164 dcl-calc-command-indent-multiple
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
165 dcl-calc-command-indent-hang"
35960
a21a0d45ea19 (dcl-calc-command-indent-function): Fix :type.
Dave Love <fx@gnu.org>
parents: 22511
diff changeset
166 :type '(choice (const nil) function)
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
167 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
170 (defcustom dcl-calc-cont-indent-function 'dcl-calc-cont-indent-relative
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 "*Function to calculate indentation for a continuation line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172 If this variable is non-nil it is called as a function:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174 \(func CUR-INDENT EXTRA-INDENT)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176 The function must return the number of columns to indent the current line or
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 nil to get the default indentation.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179 If this variable is nil, the indentation is calculated as
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 CUR-INDENT + EXTRA-INDENT.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 This package includes one function suitable for this:
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
183 dcl-calc-cont-indent-relative"
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
184 :type 'function
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
185 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
188 (defcustom dcl-tab-always-indent t
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 "*Controls the operation of the TAB key in DCL mode.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 If t, pressing TAB always indents the current line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 If nil, pressing TAB indents the current line if point is at the left margin.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 Data lines (i.e. lines not part of a command line or continuation line) are
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
193 never indented."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
194 :type 'boolean
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
195 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
198 (defcustom dcl-electric-characters t
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
199 "*Non-nil means reindent immediately when a label, ELSE or ENDIF is inserted."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
200 :type 'boolean
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
201 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
204 (defcustom dcl-tempo-comma ", "
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
205 "*Text to insert when a comma is needed in a template, in DCL mode."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
206 :type 'string
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
207 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
209 (defcustom dcl-tempo-left-paren "("
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
210 "*Text to insert when a left parenthesis is needed in a template in DCL."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
211 :type 'string
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
212 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
215 (defcustom dcl-tempo-right-paren ")"
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
216 "*Text to insert when a right parenthesis is needed in a template in DCL."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
217 :type 'string
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
218 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 ; I couldn't decide what looked best, so I'll let you decide...
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 ; Remember, you can also customize this with imenu-submenu-name-format.
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
222 (defcustom dcl-imenu-label-labels "Labels"
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
223 "*Imenu menu title for sub-listing with label names."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
224 :type 'string
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
225 :group 'dcl)
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
226 (defcustom dcl-imenu-label-goto "GOTO"
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
227 "*Imenu menu title for sub-listing with GOTO statements."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
228 :type 'string
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
229 :group 'dcl)
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
230 (defcustom dcl-imenu-label-gosub "GOSUB"
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
231 "*Imenu menu title for sub-listing with GOSUB statements."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
232 :type 'string
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
233 :group 'dcl)
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
234 (defcustom dcl-imenu-label-call "CALL"
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
235 "*Imenu menu title for sub-listing with CALL statements."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
236 :type 'string
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
237 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
239 (defcustom dcl-imenu-generic-expression
41608
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 35960
diff changeset
240 `((nil "^\\$[ \t]*\\([A-Za-z0-9_\$]+\\):[ \t]+SUBROUTINE\\b" 1)
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 35960
diff changeset
241 (,dcl-imenu-label-labels
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 "^\\$[ \t]*\\([A-Za-z0-9_\$]+\\):\\([ \t]\\|$\\)" 1)
41608
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 35960
diff changeset
243 (,dcl-imenu-label-goto "\\s-GOTO[ \t]+\\([A-Za-z0-9_\$]+\\)" 1)
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 35960
diff changeset
244 (,dcl-imenu-label-gosub "\\s-GOSUB[ \t]+\\([A-Za-z0-9_\$]+\\)" 1)
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 35960
diff changeset
245 (,dcl-imenu-label-call "\\s-CALL[ \t]+\\([A-Za-z0-9_\$]+\\)" 1))
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
246 "*Default imenu generic expression for DCL.
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 The default includes SUBROUTINE labels in the main listing and
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 sub-listings for other labels, CALL, GOTO and GOSUB statements.
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
250 See `imenu-generic-expression' for details."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
251 :type '(repeat (sexp :tag "Imenu Expression"))
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
252 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
255 (defcustom dcl-mode-hook nil
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
256 "*Hook called by `dcl-mode'."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
257 :type 'hook
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
258 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 ;;; *** Global variables ****************************************************
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264 (defvar dcl-mode-syntax-table nil
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 "Syntax table used in DCL-buffers.")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 (if dcl-mode-syntax-table
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268 (setq dcl-mode-syntax-table (make-syntax-table))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 (modify-syntax-entry ?! "<" dcl-mode-syntax-table) ; comment start
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 (modify-syntax-entry ?\n ">" dcl-mode-syntax-table) ; comment end
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 (modify-syntax-entry ?< "(>" dcl-mode-syntax-table) ; < and ...
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 (modify-syntax-entry ?> ")<" dcl-mode-syntax-table) ; > is a matching pair
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 )
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 (defvar dcl-mode-map ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 "Keymap used in DCL-mode buffers.")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278 (if dcl-mode-map
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 (setq dcl-mode-map (make-sparse-keymap))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 (define-key dcl-mode-map "\e\n" 'dcl-split-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 (define-key dcl-mode-map "\e\t" 'tempo-complete-tag)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 (define-key dcl-mode-map "\e^" 'dcl-delete-indentation)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 (define-key dcl-mode-map "\em" 'dcl-back-to-indentation)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285 (define-key dcl-mode-map "\ee" 'dcl-forward-command)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286 (define-key dcl-mode-map "\ea" 'dcl-backward-command)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287 (define-key dcl-mode-map "\e\C-q" 'dcl-indent-command)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 (define-key dcl-mode-map "\t" 'dcl-tab)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289 (define-key dcl-mode-map ":" 'dcl-electric-character)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290 (define-key dcl-mode-map "F" 'dcl-electric-character)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 (define-key dcl-mode-map "f" 'dcl-electric-character)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 (define-key dcl-mode-map "E" 'dcl-electric-character)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 (define-key dcl-mode-map "e" 'dcl-electric-character)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 (define-key dcl-mode-map "\C-c\C-o" 'dcl-set-option)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 (define-key dcl-mode-map "\C-c\C-f" 'tempo-forward-mark)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 (define-key dcl-mode-map "\C-c\C-b" 'tempo-backward-mark)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 (define-key dcl-mode-map [menu-bar] (make-sparse-keymap))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 (define-key dcl-mode-map [menu-bar dcl]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 (cons "DCL" (make-sparse-keymap "DCL")))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 ;; Define these in bottom-up order
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 (define-key dcl-mode-map [menu-bar dcl tempo-backward-mark]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 '("Previous template mark" . tempo-backward-mark))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305 (define-key dcl-mode-map [menu-bar dcl tempo-forward-mark]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306 '("Next template mark" . tempo-forward-mark))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 (define-key dcl-mode-map [menu-bar dcl tempo-complete-tag]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308 '("Complete template tag" . tempo-complete-tag))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 (define-key dcl-mode-map [menu-bar dcl dcl-separator-tempo]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 '("--"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 (define-key dcl-mode-map [menu-bar dcl dcl-save-all-options]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312 '("Save all options" . dcl-save-all-options))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 (define-key dcl-mode-map [menu-bar dcl dcl-save-nondefault-options]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314 '("Save changed options" . dcl-save-nondefault-options))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315 (define-key dcl-mode-map [menu-bar dcl dcl-set-option]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316 '("Set option" . dcl-set-option))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317 (define-key dcl-mode-map [menu-bar dcl dcl-separator-option]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318 '("--"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319 (define-key dcl-mode-map [menu-bar dcl dcl-delete-indentation]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320 '("Delete indentation" . dcl-delete-indentation))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
321 (define-key dcl-mode-map [menu-bar dcl dcl-split-line]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322 '("Split line" . dcl-split-line))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323 (define-key dcl-mode-map [menu-bar dcl dcl-indent-command]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324 '("Indent command" . dcl-indent-command))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325 (define-key dcl-mode-map [menu-bar dcl dcl-tab]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 '("Indent line/insert tab" . dcl-tab))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327 (define-key dcl-mode-map [menu-bar dcl dcl-back-to-indentation]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 '("Back to indentation" . dcl-back-to-indentation))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329 (define-key dcl-mode-map [menu-bar dcl dcl-forward-command]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330 '("End of statement" . dcl-forward-command))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331 (define-key dcl-mode-map [menu-bar dcl dcl-backward-command]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 '("Beginning of statement" . dcl-backward-command))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333 ;; imenu is only supported for versions with imenu-generic-expression
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334 (if (boundp 'imenu-generic-expression)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335 (progn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 (define-key dcl-mode-map [menu-bar dcl dcl-separator-movement]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 '("--"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 (define-key dcl-mode-map [menu-bar dcl imenu]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339 '("Buffer index menu" . imenu))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 )
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
343 (defcustom dcl-ws-r
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 "\\([ \t]*-[ \t]*\\(!.*\\)*\n\\)*[ \t]*"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 "Regular expression describing white space in a DCL command line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 White space is any number of continued lines with only space,tab,endcomment
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
347 followed by space or tab."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
348 :type 'regexp
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
349 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
352 (defcustom dcl-label-r
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 "[a-zA-Z0-9_\$]*:\\([ \t!]\\|$\\)"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 "Regular expression describing a label.
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
355 A label is a name followed by a colon followed by white-space or end-of-line."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
356 :type 'regexp
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
357 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
360 (defcustom dcl-cmd-r
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 "^\\$\\(.*-[ \t]*\\(!.*\\)*\n\\)*[^!\"\n]*\\(\".*\\(\"\".*\\)*\"\\)*[^!\"\n]*"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 "Regular expression describing a DCL command line up to a trailing comment.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 A line starting with $, optionally followed by continuation lines,
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364 followed by the end of the command line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 A continuation line is any characters followed by `-',
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
366 optionally followed by a comment, followed by a newline."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
367 :type 'regexp
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
368 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
371 (defcustom dcl-command-regexp
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 "^\\$\\(.*-[ \t]*\\(!.*\\)*\n\\)*.*\\(\".*\\(\"\".*\\)*\"\\)*"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 "Regular expression describing a DCL command line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374 A line starting with $, optionally followed by continuation lines,
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 followed by the end of the command line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 A continuation line is any characters followed by `-',
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
377 optionally followed by a comment, followed by a newline."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
378 :type 'regexp
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
379 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
382 (defcustom dcl-electric-reindent-regexps
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 (list "endif" "else" dcl-label-r)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 "*Regexps that can trigger an electric reindent.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 A list of regexps that will trigger a reindent if the last letter
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 is defined as dcl-electric-character.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 E.g.: if this list contains `endif', the key `f' is defined as
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 dcl-electric-character and the you have just typed the `f' in
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
390 `endif', the line will be reindented."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
391 :type '(repeat regexp)
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
392 :group 'dcl)
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 (defvar dcl-option-alist
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 '((dcl-basic-offset dcl-option-value-basic)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 (dcl-continuation-offset curval)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 (dcl-margin-offset dcl-option-value-margin-offset)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 (dcl-margin-label-offset dcl-option-value-offset)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 (dcl-comment-line-regexp dcl-option-value-comment-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401 (dcl-block-begin-regexp curval)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 (dcl-block-end-regexp curval)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 (dcl-tab-always-indent toggle)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 (dcl-electric-characters toggle)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 (dcl-electric-reindent-regexps curval)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 (dcl-tempo-comma curval)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 (dcl-tempo-left-paren curval)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 (dcl-tempo-right-paren curval)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 (dcl-calc-command-indent-function curval)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 (dcl-calc-cont-indent-function curval)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 (comment-start curval)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 (comment-start-skip curval)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 )
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 "Options and default values for dcl-set-option.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 An alist with option variables and functions or keywords to get a
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 default value for the option.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 The keywords are:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 curval the current value
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 toggle the opposite of the current value (for t/nil)")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 (defvar dcl-option-history
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 (mapcar (lambda (option-assoc)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 (format "%s" (car option-assoc)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 dcl-option-alist)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 "The history list for dcl-set-option.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 Preloaded with all known option names from dcl-option-alist")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432 ;; Must be defined after dcl-cmd-r
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433 ;; This version is more correct but much slower than the one
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434 ;; above. This version won't find GOTOs in comments or text strings.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 ;(defvar dcl-imenu-generic-expression
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436 ; (`
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 ; ((nil "^\\$[ \t]*\\([A-Za-z0-9_\$]+\\):[ \t]+SUBROUTINE\\b" 1)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438 ; ("Labels" "^\\$[ \t]*\\([A-Za-z0-9_\$]+\\):\\([ \t]\\|$\\)" 1)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 ; ("GOTO" (, (concat dcl-cmd-r "GOTO[ \t]+\\([A-Za-z0-9_\$]+\\)")) 5)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440 ; ("GOSUB" (, (concat dcl-cmd-r
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441 ; "GOSUB[ \t]+\\([A-Za-z0-9_\$]+\\)")) 5)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442 ; ("CALL" (, (concat dcl-cmd-r "CALL[ \t]+\\([A-Za-z0-9_\$]+\\)")) 5)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443 ; "*Default imenu generic expression for DCL.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445 ;The default includes SUBROUTINE labels in the main listing and
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
446 ;sub-listings for other labels, CALL, GOTO and GOSUB statements.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
447 ;See `imenu-generic-expression' in a recent (e.g. Emacs 19.30) imenu.el
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448 ;for details.")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 ;;; *** Mode initialization *************************************************
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454 ;;;###autoload
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 (defun dcl-mode ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456 "Major mode for editing DCL-files.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 This mode indents command lines in blocks. (A block is commands between
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 THEN-ELSE-ENDIF and between lines matching dcl-block-begin-regexp and
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 dcl-block-end-regexp.)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 Labels are indented to a fixed position unless they begin or end a block.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463 Whole-line comments (matching dcl-comment-line-regexp) are not indented.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 Data lines are not indented.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 Key bindings:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 \\{dcl-mode-map}
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 Commands not usually bound to keys:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471 \\[dcl-save-nondefault-options]\t\tSave changed options
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 \\[dcl-save-all-options]\t\tSave all options
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473 \\[dcl-save-option]\t\t\tSave any option
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 \\[dcl-save-mode]\t\t\tSave buffer mode
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 Variables controlling indentation style and extra features:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478 dcl-basic-offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 Extra indentation within blocks.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 dcl-continuation-offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 Extra indentation for continued lines.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484 dcl-margin-offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485 Indentation for the first command line in a file or SUBROUTINE.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 dcl-margin-label-offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 Indentation for a label.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 dcl-comment-line-regexp
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 Lines matching this regexp will not be indented.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 dcl-block-begin-regexp
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 dcl-block-end-regexp
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 Regexps that match command lines that begin and end, respectively,
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 a block of commmand lines that will be given extra indentation.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 Command lines between THEN-ELSE-ENDIF are always indented; these variables
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 make it possible to define other places to indent.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 Set to nil to disable this feature.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 dcl-calc-command-indent-function
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 Can be set to a function that customizes indentation for command lines.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 Two such functions are included in the package:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 dcl-calc-command-indent-multiple
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 dcl-calc-command-indent-hang
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 dcl-calc-cont-indent-function
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 Can be set to a function that customizes indentation for continued lines.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 One such function is included in the package:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 dcl-calc-cont-indent-relative (set by default)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 dcl-tab-always-indent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 If t, pressing TAB always indents the current line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 If nil, pressing TAB indents the current line if point is at the left
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 margin.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 dcl-electric-characters
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 Non-nil causes lines to be indented at once when a label, ELSE or ENDIF is
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 typed.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521 dcl-electric-reindent-regexps
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522 Use this variable and function dcl-electric-character to customize
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523 which words trigger electric indentation.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
524
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
526 dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 dcl-tempo-right-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
528 These variables control the look of expanded templates.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530 dcl-imenu-generic-expression
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531 Default value for imenu-generic-expression. The default includes
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
532 SUBROUTINE labels in the main listing and sub-listings for
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533 other labels, CALL, GOTO and GOSUB statements.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535 dcl-imenu-label-labels
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 dcl-imenu-label-goto
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537 dcl-imenu-label-gosub
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538 dcl-imenu-label-call
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 Change the text that is used as sub-listing labels in imenu.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
541 Loading this package calls the value of the variable
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542 `dcl-mode-load-hook' with no args, if that value is non-nil.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
543 Turning on DCL mode calls the value of the variable `dcl-mode-hook'
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
544 with no args, if that value is non-nil.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
545
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547 The following example uses the default values for all variables:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
548
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
549 $! This is a comment line that is not indented (it matches
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
550 $! dcl-comment-line-regexp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
551 $! Next follows the first command line. It is indented dcl-margin-offset.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
552 $ i = 1
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
553 $ ! Other comments are indented like command lines.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554 $ ! A margin label indented dcl-margin-label-offset:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
555 $ label:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
556 $ if i.eq.1
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
557 $ then
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
558 $ ! Lines between THEN-ELSE and ELSE-ENDIF are
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559 $ ! indented dcl-basic-offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560 $ loop1: ! This matches dcl-block-begin-regexp...
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 $ ! ...so this line is indented dcl-basic-offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 $ text = \"This \" + - ! is a continued line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 \"lined up with the command line\"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 $ type sys$input
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565 Data lines are not indented at all.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566 $ endloop1: ! This matches dcl-block-end-regexp
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567 $ endif
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
568 $
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569 "
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
570 (interactive)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571 (kill-all-local-variables)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 (set-syntax-table dcl-mode-syntax-table)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 (make-local-variable 'indent-line-function)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575 (setq indent-line-function 'dcl-indent-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 (make-local-variable 'comment-start)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
578 (setq comment-start "!")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580 (make-local-variable 'comment-end)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581 (setq comment-end "")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
582
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
583 (make-local-variable 'comment-multi-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
584 (setq comment-multi-line nil)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586 ;; This used to be "^\\$[ \t]*![ \t]*" which looks more correct.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587 ;; The drawback was that you couldn't make empty comment lines by pressing
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588 ;; C-M-j repeatedly - only the first line became a comment line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589 ;; This version has the drawback that the "$" can be anywhere in the line,
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 ;; and something inappropriate might be interpreted as a comment.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 (make-local-variable 'comment-start-skip)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 (setq comment-start-skip "\\$[ \t]*![ \t]*")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594 (if (boundp 'imenu-generic-expression)
20459
90f306f86f5d Use imenu-case-fold-search.
Dave Love <fx@gnu.org>
parents: 17261
diff changeset
595 (progn (setq imenu-generic-expression dcl-imenu-generic-expression)
90f306f86f5d Use imenu-case-fold-search.
Dave Love <fx@gnu.org>
parents: 17261
diff changeset
596 (setq imenu-case-fold-search t)))
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597 (setq imenu-create-index-function 'dcl-imenu-create-index-function)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599 (make-local-variable 'dcl-comment-line-regexp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 (make-local-variable 'dcl-block-begin-regexp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 (make-local-variable 'dcl-block-end-regexp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602 (make-local-variable 'dcl-basic-offset)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603 (make-local-variable 'dcl-continuation-offset)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604 (make-local-variable 'dcl-margin-label-offset)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 (make-local-variable 'dcl-margin-offset)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606 (make-local-variable 'dcl-tab-always-indent)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 (make-local-variable 'dcl-electric-characters)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 (make-local-variable 'dcl-calc-command-indent-function)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 (make-local-variable 'dcl-calc-cont-indent-function)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 (make-local-variable 'dcl-electric-reindent-regexps)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
612 (setq major-mode 'dcl-mode)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613 (setq mode-name "DCL")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
614 (use-local-map dcl-mode-map)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615 (tempo-use-tag-list 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616 (run-hooks 'dcl-mode-hook))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
619 ;;; *** Movement commands ***************************************************
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
620
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
621
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
622 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623 (defun dcl-beginning-of-statement ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 "Go to the beginning of the preceding or current command line."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 (interactive)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 (re-search-backward dcl-command-regexp nil t))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 (defun dcl-end-of-statement ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 "Go to the end of the next or current command line."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632 (interactive)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633 (if (or (dcl-end-of-command-p)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 (dcl-beginning-of-command-p)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635 (not (dcl-command-p)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 (dcl-beginning-of-statement))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 (re-search-forward dcl-command-regexp nil t))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 (defun dcl-beginning-of-command ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643 "Move point to beginning of current command."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 (interactive)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 (let ((type (dcl-get-line-type)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 (if (and (eq type '$)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 (bolp))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 () ; already in the correct position
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 (dcl-beginning-of-statement))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653 (defun dcl-end-of-command ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 "Move point to end of current command or next command if not on a command."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655 (interactive)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656 (let ((type (dcl-get-line-type))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657 (start (point)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 (if (or (eq type '$)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659 (eq type '-))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 (progn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 (dcl-beginning-of-command)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 (dcl-end-of-statement))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663 (dcl-end-of-statement))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667 (defun dcl-backward-command (&optional incl-comment-commands)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668 "Move backward to a command.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669 Move point to the preceding command line that is not a comment line,
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 a command line with only a comment, only contains a `$' or only
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671 contains a label.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 Returns point of the found command line or nil if not able to move."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674 (interactive)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 (let ((start (point))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676 done
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677 retval)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 ;; Find first non-empty command line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679 (while (not done)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
680 ;; back up one statement and look at the command
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681 (if (dcl-beginning-of-statement)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
682 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683 ((and dcl-block-begin-regexp ; might be nil
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684 (looking-at (concat "^\\$" dcl-ws-r
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685 dcl-block-begin-regexp)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686 (setq done t retval (point)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
687 ((and dcl-block-end-regexp ; might be nil
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688 (looking-at (concat "^\\$" dcl-ws-r
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 dcl-block-end-regexp)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
690 (setq done t retval (point)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691 ((looking-at dcl-comment-line-regexp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692 t) ; comment line, one more loop
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693 ((and (not incl-comment-commands)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694 (looking-at "\\$[ \t]*!"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
695 t) ; comment only command, loop...
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696 ((looking-at "^\\$[ \t]*$")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697 t) ; empty line, one more loop
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698 ((not (looking-at
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
699 (concat "^\\$" dcl-ws-r dcl-label-r dcl-ws-r "$")))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 (setq done t) ; not a label-only line, exit the loop
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701 (setq retval (point))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702 ;; We couldn't go further back, and we haven't found a command yet.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703 ;; Return to the start positionn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704 (goto-char start)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705 (setq done t)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706 (setq retval nil)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
707 retval))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
708
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
711 (defun dcl-forward-command (&optional incl-comment-commands)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
712 "Move forward to a command.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
713 Move point to the end of the next command line that is not a comment line,
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
714 a command line with only a comment, only contains a `$' or only
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
715 contains a label.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
716
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
717 Returns point of the found command line or nil if not able to move."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718 (interactive)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719 (let ((start (point))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720 done
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721 retval)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
722 ;; Find first non-empty command line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
723 (while (not done)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
724 ;; go forward one statement and look at the command
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
725 (if (dcl-end-of-statement)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
727 (dcl-beginning-of-statement)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
728 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
729 ((and dcl-block-begin-regexp ; might be nil
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730 (looking-at (concat "^\\$" dcl-ws-r
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
731 dcl-block-begin-regexp)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732 (setq done t)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
733 (setq retval (point)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
734 ((and dcl-block-end-regexp ; might be nil
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
735 (looking-at (concat "^\\$" dcl-ws-r
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
736 dcl-block-end-regexp)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
737 (setq done t)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
738 (setq retval (point)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739 ((looking-at dcl-comment-line-regexp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740 t) ; comment line, one more loop
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
741 ((and (not incl-comment-commands)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742 (looking-at "\\$[ \t]*!"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
743 t) ; comment only command, loop...
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
744 ((looking-at "^\\$[ \t]*$")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
745 t) ; empty line, one more loop
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746 ((not (looking-at
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747 (concat "^\\$" dcl-ws-r dcl-label-r dcl-ws-r "$")))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
748 (setq done t) ; not a label-only line, exit the loop
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 (setq retval (point)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
750 ;; We couldn't go further back, and we haven't found a command yet.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
751 ;; Return to the start positionn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752 (goto-char start)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
753 (setq done t)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
754 (setq retval nil)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 retval))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
757
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
758 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
759 (defun dcl-back-to-indentation ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760 "Move point to the first non-whitespace character on this line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761 Leading $ and labels counts as whitespace in this case.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762 If this is a comment line then move to the first non-whitespace character
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763 in the comment.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 Typing \\[dcl-back-to-indentation] several times in a row will move point to other
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
766 `interesting' points closer to the left margin, and then back to the
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
767 rightmost point again.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
768
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
769 E.g. on the following line, point would go to the positions indicated
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 by the numbers in order 1-2-3-1-... :
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
772 $ label: command
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
773 3 2 1"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 (interactive)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 (if (eq last-command 'dcl-back-to-indentation)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776 (dcl-back-to-indentation-1 (point))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 (dcl-back-to-indentation-1)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778 (defun dcl-back-to-indentation-1 (&optional limit)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779 "Helper function for dcl-back-to-indentation"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
780
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781 ;; "Indentation points" that we will travel to
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782 ;; $ l: ! comment
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783 ;; 4 3 2 1
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
784 ;;
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
785 ;; $ ! text
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
786 ;; 3 2 1
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787 ;;
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788 ;; $ l: command !
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789 ;; 3 2 1
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
790 ;;
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
791 ;; text
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
792 ;; 1
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
793
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794 (let* ((default-limit (save-excursion (end-of-line) (1+ (point))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
795 (limit (or limit default-limit))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796 (last-good-point (point))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
797 (opoint (point)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
798 ;; Move over blanks
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799 (back-to-indentation)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
801 ;; If we already were at the outermost indentation point then we
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802 ;; start searching for the innermost point again.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
803 (if (= (point) opoint)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
804 (setq limit default-limit))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
805
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
806 (if (< (point) limit)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
807 (setq last-good-point (point)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
808
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
809 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
810 ;; Special treatment for comment lines. We are trying to allow
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811 ;; things like "$ !*" as comment lines.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
812 ((looking-at dcl-comment-line-regexp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
813 (re-search-forward (concat dcl-comment-line-regexp "[ \t]*") limit t)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814 (if (< (point) limit)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815 (setq last-good-point (point))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
816
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817 ;; Normal command line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818 ((looking-at "^\\$[ \t]*")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
819 ;; Move over leading "$" and blanks
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
820 (re-search-forward "^\\$[ \t]*" limit t)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
821 (if (< (point) limit)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822 (setq last-good-point (point)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
823
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
824 ;; Move over a label (if it isn't a block begin/end)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
825 ;; We must treat block begin/end labels as commands because
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
826 ;; dcl-set-option relies on it.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
827 (if (and (looking-at dcl-label-r)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
828 (not (or (and dcl-block-begin-regexp
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
829 (looking-at dcl-block-begin-regexp))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
830 (and dcl-block-end-regexp
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
831 (looking-at dcl-block-end-regexp)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
832 (re-search-forward (concat dcl-label-r "[ \t]*") limit t))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
833 (if (< (point) limit)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
834 (setq last-good-point (point)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
835
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
836 ;; Move over the beginning of a comment
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
837 (if (looking-at "![ \t]*")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
838 (re-search-forward "![ \t]*" limit t))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
839 (if (< (point) limit)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
840 (setq last-good-point (point)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
841 (goto-char last-good-point)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
842
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
843
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
844 ;;; *** Support for indentation *********************************************
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
845
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
846
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
847 (defun dcl-get-line-type ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
848 "Determine the type of the current line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
849 Returns one of the following symbols:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
850 $ for a complete command line or the beginning of a command line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
851 - for a continuation line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
852 $! for a comment line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
853 data for a data line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
854 empty-data for an empty line following a data line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
855 empty-$ for an empty line following a command line"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
856 (or
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
857 ;; Check if it's a comment line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
858 ;; A comment line starts with $!
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
859 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
860 (beginning-of-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
861 (if (looking-at dcl-comment-line-regexp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
862 '$!))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
863 ;; Check if it's a command line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
864 ;; A command line starts with $
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
865 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
866 (beginning-of-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867 (if (looking-at "^\\$")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
868 '$))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
869 ;; Check if it's a continuation line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
870 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
871 (beginning-of-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
872 ;; If we're at the beginning of the buffer it can't be a continuation
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
873 (if (bobp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
874 ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
875 (let ((opoint (point)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876 (dcl-beginning-of-statement)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877 (re-search-forward dcl-command-regexp opoint t)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
878 (if (>= (point) opoint)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879 '-))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880 ;; Empty lines might be different things
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
881 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
882 (if (and (bolp) (eolp))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
883 (if (bobp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
884 'empty-$
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
885 (forward-line -1)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886 (let ((type (dcl-get-line-type)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888 ((or (equal type '$) (equal type '$!) (equal type '-))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
889 'empty-$)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
890 ((equal type 'data)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
891 'empty-data))))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
892 ;; Anything else must be a data line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
893 (progn 'data)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
894 ))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
895
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
896
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
897 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
898 (defun dcl-indentation-point ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
899 "Return point of first non-`whitespace' on this line."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
900 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
901 (dcl-back-to-indentation)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
902 (point)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
903
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
904
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
905 ;;;---------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
906 (defun dcl-show-line-type ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
907 "Test dcl-get-line-type."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
908 (interactive)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
909 (let ((type (dcl-get-line-type)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
910 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
911 ((equal type '$)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
912 (message "command line"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
913 ((equal type '\?)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914 (message "?"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
915 ((equal type '$!)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
916 (message "comment line"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
917 ((equal type '-)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 (message "continuation line"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 ((equal type 'data)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
920 (message "data"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921 ((equal type 'empty-data)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 (message "empty-data"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
923 ((equal type 'empty-$)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 (message "empty-$"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
925 (t
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
926 (message "hupp"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927 )))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
928
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
929
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
930 ;;; *** Perform indentation *************************************************
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
931
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
932
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
933 ;;;---------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
934 (defun dcl-calc-command-indent-multiple
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
935 (indent-type cur-indent extra-indent last-point this-point)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
936 "Indent lines to a multiple of dcl-basic-offset.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
937
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
938 Set dcl-calc-command-indent-function to this function to customize
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
939 indentation of command lines.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
940
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
941 Command lines that need to be indented beyond the left margin are
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
942 always indented to a column that is a multiple of dcl-basic-offset, as
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
943 if tab stops were set at 4, 8, 12, etc.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
944
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
945 This supports a formatting style like this (dcl-margin offset = 2,
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
946 dcl-basic-offset = 4):
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
947
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
948 $ if cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
949 $ then
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
950 $ if cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
951 $ then
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
952 $ ! etc
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
953 "
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
954 ;; calculate indentation if it's an interesting indent-type,
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
955 ;; otherwise return nil to get the default indentation
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
956 (let ((indent))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
957 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
958 ((equal indent-type 'indent)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959 (setq indent (- cur-indent (% cur-indent dcl-basic-offset)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
960 (setq indent (+ indent extra-indent))))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
961
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
962
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
963 ;;;---------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
964 ;; Some people actually writes likes this. To each his own...
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
965 (defun dcl-calc-command-indent-hang
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
966 (indent-type cur-indent extra-indent last-point this-point)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967 "Indent lines as default, but indent THEN, ELSE and ENDIF extra.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969 Set dcl-calc-command-indent-function to this function to customize
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970 indentation of command lines.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
972 This function supports a formatting style like this:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
973
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
974 $ if cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
975 $ then
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
976 $ xxx
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
977 $ endif
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978 $ xxx
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
979
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 If you use this function you will probably want to add \"then\" to
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
981 dcl-electric-reindent-regexps and define the key \"n\" as
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
982 dcl-electric-character.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
983 "
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
984 (let ((case-fold-search t))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
985 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
986 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
987 ;; No indentation, this word is `then': +2
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
988 ;; last word was endif: -2
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
989 ((null indent-type)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
990 (or (progn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 (goto-char this-point)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
992 (if (looking-at "\\bthen\\b")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
993 (+ cur-indent extra-indent 2)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
994 (progn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
995 (goto-char last-point)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
996 (if (looking-at "\\bendif\\b")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
997 (- (+ cur-indent extra-indent) 2)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
998 ;; Indentation, last word was `then' or `else': -2
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
999 ((equal indent-type 'indent)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1000 (goto-char last-point)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1001 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1002 ((looking-at "\\bthen\\b")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1003 (- (+ cur-indent extra-indent) 2))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1004 ((looking-at "\\belse\\b")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1005 (- (+ cur-indent extra-indent) 2))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1006 ;; Outdent, this word is `endif' or `else': + 2
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1007 ((equal indent-type 'outdent)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1008 (goto-char this-point)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1009 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1010 ((looking-at "\\bendif\\b")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1011 (+ cur-indent extra-indent 2))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1012 ((looking-at "\\belse\\b")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1013 (+ cur-indent extra-indent 2))))))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1014
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1015
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1016 ;;;---------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1017 (defun dcl-calc-command-indent ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1018 "Calculate how much the current line shall be indented.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1019 The line is known to be a command line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1020
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1021 Find the indentation of the preceding line and analyze its contents to
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1022 see if the current lines should be indented.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1023 Analyze the current line to see if it should be `outdented'.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1024
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1025 Calculate the indentation of the current line, either with the default
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1026 method or by calling dcl-calc-command-indent-function if it is
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1027 non-nil.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1028
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1029 If the current line should be outdented, calculate its indentation,
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1030 either with the default method or by calling
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1031 dcl-calc-command-indent-function if it is non-nil.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1032
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1033
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 Rules for default indentation:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1035
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1036 If it is the first line in the buffer, indent dcl-margin-offset.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1037
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1038 Go to the previous command line with a command on it.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1039 Find out how much it is indented (cur-indent).
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1040 Look at the first word on the line to see if the indentation should be
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1041 adjusted. Skip margin-label, continuations and comments while looking for
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1042 the first word. Save this buffer position as `last-point'.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1043 If the first word after a label is SUBROUTINE, set extra-indent to
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1044 dcl-margin-offset.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1045
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1046 First word extra-indent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1047 THEN +dcl-basic-offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1048 ELSE +dcl-basic-offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1049 block-begin +dcl-basic-offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1050
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1051 Then return to the current line and look at the first word to see if the
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1052 indentation should be adjusted again. Save this buffer position as
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1053 `this-point'.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1054
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1055 First word extra-indent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1056 ELSE -dcl-basic-offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1057 ENDIF -dcl-basic-offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1058 block-end -dcl-basic-offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1059
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1060
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1061 If dcl-calc-command-indent-function is nil or returns nil set
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1062 cur-indent to cur-indent+extra-indent.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1063
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1064 If an extra adjustment is necessary and if
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1065 dcl-calc-command-indent-function is nil or returns nil set cur-indent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1066 to cur-indent+extra-indent.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1067
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1068 See also documentation for dcl-calc-command-indent-function.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1069 The indent-type classification could probably be expanded upon.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1070 "
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1071 ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1072 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1073 (beginning-of-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1074 (let ((is-block nil)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1075 (case-fold-search t)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1076 cur-indent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1077 (extra-indent 0)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1078 indent-type last-point this-point extra-indent2 cur-indent2
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1079 indent-type2)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1080 (if (bobp) ; first line in buffer
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1081 (setq cur-indent 0 extra-indent dcl-margin-offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1082 indent-type 'first-line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1083 this-point (dcl-indentation-point))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1084 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1085 (let (done)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1086 ;; Find first non-empty command line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1087 (while (not done)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1088 ;; back up one statement and look at the command
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1089 (if (dcl-beginning-of-statement)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1090 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1091 ((and dcl-block-begin-regexp ; might be nil
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1092 (looking-at (concat "^\\$" dcl-ws-r
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1093 dcl-block-begin-regexp)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1094 (setq done t) (setq is-block t))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1095 ((and dcl-block-end-regexp ; might be nil
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1096 (looking-at (concat "^\\$" dcl-ws-r
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1097 dcl-block-end-regexp)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1098 (setq done t) (setq is-block t))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1099 ((looking-at dcl-comment-line-regexp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1100 t) ; comment line, one more loop
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1101 ((looking-at "^\\$[ \t]*$")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1102 t) ; empty line, one more loop
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1103 ((not (looking-at
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1104 (concat "^\\$" dcl-ws-r dcl-label-r dcl-ws-r "$")))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1105 (setq done t))) ; not a label-only line, exit the loop
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1106 ;; We couldn't go further back, so this must have been the
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1107 ;; first line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1108 (setq cur-indent dcl-margin-offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1109 last-point (dcl-indentation-point))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1110 (setq done t)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1111 ;; Examine the line to get current indentation and possibly a
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1112 ;; reason to indent.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1113 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1114 (cur-indent)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1115 ((looking-at (concat "^\\$[ \t]*" dcl-label-r dcl-ws-r
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1116 "\\(subroutine\\b\\)"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1117 (setq cur-indent dcl-margin-offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1118 last-point (1+ (match-beginning 1))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1119 (t
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1120 ;; Find out how much this line is indented.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1121 ;; Look at comment, continuation character, command but not label
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1122 ;; unless it's a block.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1123 (if is-block
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1124 (re-search-forward "^\\$[ \t]*")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1125 (re-search-forward (concat "^\\$[ \t]*\\(" dcl-label-r
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1126 "\\)*[ \t]*")))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1127 (setq cur-indent (current-column))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1128 ;; Look for a reason to indent: Find first word on this line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1129 (re-search-forward dcl-ws-r)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1130 (setq last-point (point))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1131 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1132 ((looking-at "\\bthen\\b")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1133 (setq extra-indent dcl-basic-offset indent-type 'indent))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1134 ((looking-at "\\belse\\b")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1135 (setq extra-indent dcl-basic-offset indent-type 'indent))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1136 ((and dcl-block-begin-regexp ; might be nil
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137 (looking-at dcl-block-begin-regexp))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1138 (setq extra-indent dcl-basic-offset indent-type 'indent))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1139 ))))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140 (setq extra-indent2 0)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141 ;; We're back at the beginning of the original line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1142 ;; Look for a reason to outdent: Find first word on this line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1143 (re-search-forward (concat "^\\$" dcl-ws-r))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 (setq this-point (dcl-indentation-point))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1146 ((looking-at "\\belse\\b")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1147 (setq extra-indent2 (- dcl-basic-offset) indent-type2 'outdent))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1148 ((looking-at "\\bendif\\b")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1149 (setq extra-indent2 (- dcl-basic-offset) indent-type2 'outdent))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1150 ((and dcl-block-end-regexp ; might be nil
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1151 (looking-at dcl-block-end-regexp))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1152 (setq extra-indent2 (- dcl-basic-offset) indent-type2 'outdent))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 ((looking-at (concat dcl-label-r dcl-ws-r "\\(subroutine\\b\\)"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154 (setq cur-indent2 0 extra-indent2 dcl-margin-offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1155 indent-type2 'first-line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1156 this-point (1+ (match-beginning 1)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1157 ;; Calculate indent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1158 (setq cur-indent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1159 (or (and dcl-calc-command-indent-function
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1160 (funcall dcl-calc-command-indent-function
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1161 indent-type cur-indent extra-indent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1162 last-point this-point))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1163 (+ cur-indent extra-indent)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1164 ;; Calculate outdent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165 (if indent-type2
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1166 (progn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1167 (or cur-indent2 (setq cur-indent2 cur-indent))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1168 (setq cur-indent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1169 (or (and dcl-calc-command-indent-function
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1170 (funcall dcl-calc-command-indent-function
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1171 indent-type2 cur-indent2 extra-indent2
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172 last-point this-point))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1173 (+ cur-indent2 extra-indent2)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1174 cur-indent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1175 )))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1176
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1177
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1178 ;;;---------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1179 (defun dcl-calc-cont-indent-relative (cur-indent extra-indent)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180 "Indent continuation lines to align with words on previous line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1181
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1182 Indent continuation lines to a position relative to preceding
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1183 significant command line elements.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1184
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1185 Set `dcl-calc-cont-indent-function' to this function to customize
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1186 indentation of continuation lines.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1187
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1188 Indented lines will align with either:
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1189
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1190 * the second word on the command line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1191 $ set default -
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1192 [-]
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1193 * the word after an asignment
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1194 $ a = b + -
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1195 d
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1196 * the third word if it's a qualifier
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1197 $ set terminal/width=80 -
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1198 /page=24
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1199 * the innermost nonclosed parenthesis
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200 $ if ((a.eq.b .and. -
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1201 d.eq.c .or. f$function(xxxx, -
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1202 yyy)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1203 "
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1204 (let ((case-fold-search t)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1205 indent)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1206 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1207 (dcl-beginning-of-statement)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1208 (let ((end (save-excursion (forward-line 1) (point))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1209 ;; Move over blanks and label
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1210 (if (re-search-forward (concat "^\\$[ \t]*\\(" dcl-label-r
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1211 "\\)*[ \t]*") end t)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1212 (progn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1213 ;; Move over the first word (might be `@filespec')
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1214 (if (> (skip-chars-forward "@:[]<>$\\-a-zA-Z0-9_.;" end) 0)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1215 (let (was-assignment)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1216 (skip-chars-forward " \t" end)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1217 ;; skip over assignment if there is one
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1218 (if (looking-at ":?==?")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1219 (progn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1220 (setq was-assignment t)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1221 (skip-chars-forward " \t:=" end)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1222 ;; This could be the position to indent to
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1223 (setq indent (current-column))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1224
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1225 ;; Move to the next word unless we have seen an
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1226 ;; assignment. If it starts with `/' it's a
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1227 ;; qualifier and we will indent to that position
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1228 (if (and (not was-assignment)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1229 (> (skip-chars-forward "a-zA-Z0-9_" end) 0))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1230 (progn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1231 (skip-chars-forward " \t" end)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1232 (if (= (char-after (point)) ?/)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1233 (setq indent (current-column)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1234 ))))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1235 ;; Now check if there are any parenthesis to adjust to.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1236 ;; If there is, we will indent to the position after the last non-closed
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1237 ;; opening parenthesis.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1238 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1239 (beginning-of-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1240 (let* ((start (save-excursion (dcl-beginning-of-statement) (point)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1241 (parse-sexp-ignore-comments t) ; for parse-partial
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1242 (par-pos (nth 1 (parse-partial-sexp start (point)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1243 (if par-pos ; is nil if no parenthesis was found
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1244 (setq indent (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1245 (goto-char par-pos)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1246 (1+ (current-column)))))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1247 indent))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1248
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1249
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1250 ;;;---------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1251 (defun dcl-calc-continuation-indent ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1252 "Calculate how much the current line shall be indented.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1253 The line is known to be a continuation line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1254
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1255 Go to the previous command line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1256 Find out how much it is indented."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1257 ;; This was copied without much thought from dcl-calc-command-indent, so
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1258 ;; it's a bit clumsy.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1259 ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1260 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1261 (beginning-of-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1262 (if (bobp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1263 ;; Huh? a continuation line first in the buffer??
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1264 dcl-margin-offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1265 (let ((is-block nil)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1266 (indent))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1267 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1268 ;; Find first non-empty command line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1269 (let ((done))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1270 (while (not done)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1271 (if (dcl-beginning-of-statement)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1272 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1273 ((and dcl-block-begin-regexp
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1274 (looking-at (concat "^\\$" dcl-ws-r
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1275 dcl-block-begin-regexp)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1276 (setq done t) (setq is-block t))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1277 ((and dcl-block-end-regexp
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1278 (looking-at (concat "^\\$" dcl-ws-r
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1279 dcl-block-end-regexp)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1280 (setq done t) (setq is-block t))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1281 ((looking-at dcl-comment-line-regexp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1282 t)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1283 ((looking-at "^\\$[ \t]*$")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1284 t)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1285 ((not (looking-at
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1286 (concat "^\\$" dcl-ws-r dcl-label-r dcl-ws-r "$")))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1287 (setq done t)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1288 ;; This must have been the first line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1289 (setq indent dcl-margin-offset)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1290 (setq done t)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1291 (if indent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1292 ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1293 ;; Find out how much this line is indented.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1294 ;; Look at comment, continuation character, command but not label
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1295 ;; unless it's a block.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1296 (if is-block
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1297 (re-search-forward "^\\$[ \t]*")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1298 (re-search-forward (concat "^\\$[ \t]*\\(" dcl-label-r
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1299 "\\)*[ \t]*")))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1300 (setq indent (current-column))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1301 )))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1302 ;; We're back at the beginning of the original line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1303 (or (and dcl-calc-cont-indent-function
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1304 (funcall dcl-calc-cont-indent-function indent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1305 dcl-continuation-offset))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1306 (+ indent dcl-continuation-offset))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1307 ))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1308
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1309
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1310 ;;;---------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1311 (defun dcl-indent-command-line ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1312 "Indent a line known to be a command line."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1313 (let ((indent (dcl-calc-command-indent))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1314 (pos (- (point-max) (point))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1315 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1316 (beginning-of-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1317 (re-search-forward "^\\$[ \t]*")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1318 ;; Indent any margin-label if the offset is set
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1319 ;; (Don't look at block labels)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1320 (if (and dcl-margin-label-offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1321 (looking-at dcl-label-r)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1322 (not (and dcl-block-begin-regexp
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1323 (looking-at dcl-block-begin-regexp)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1324 (not (and dcl-block-end-regexp
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1325 (looking-at dcl-block-end-regexp))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1326 (progn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1327 (dcl-indent-to dcl-margin-label-offset)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1328 (re-search-forward dcl-label-r)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1329 (dcl-indent-to indent 1)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1330 )
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1331 ;;
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1332 (if (> (- (point-max) pos) (point))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1333 (goto-char (- (point-max) pos)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1334 ))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1335
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1336
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1337 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1338 (defun dcl-indent-continuation-line ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1339 "Indent a line known to be a continuation line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1340
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1341 Notice that no special treatment is made for labels. They have to be
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1342 on the first part on a command line to be taken into consideration."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1343 (let ((indent (dcl-calc-continuation-indent)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1344 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1345 (beginning-of-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1346 (re-search-forward "^[ \t]*")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1347 (dcl-indent-to indent))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1348 (skip-chars-forward " \t")))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1349
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1350
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1351 ;;;---------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1352 (defun dcl-delete-chars (chars)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1353 "Delete all characters in the set CHARS around point."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1354 (skip-chars-backward chars)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1355 (delete-region (point) (progn (skip-chars-forward chars) (point))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1356
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1357
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1358 ;;;---------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1359 (defun dcl-indent-line ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1360 "The DCL version of `indent-line-function'.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1361 Adjusts indentation on the current line. Data lines are not indented."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1362 (let ((type (dcl-get-line-type)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1363 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1364 ((equal type '$)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1365 (dcl-indent-command-line))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1366 ((equal type '\?)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1367 (message "Unknown line type!"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1368 ((equal type '$!))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1369 ((equal type 'data))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1370 ((equal type 'empty-data))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1371 ((equal type '-)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1372 (dcl-indent-continuation-line))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1373 ((equal type 'empty-$)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1374 (insert "$" )
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1375 (dcl-indent-command-line))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1376 (t
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1377 (message "dcl-indent-line: unknown type"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1378 )))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1379
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1380
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1381 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1382 (defun dcl-indent-command ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1383 "Indents the complete command line that point is on.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1384 This includes continuation lines."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1385 (interactive "*")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1386 (let ((type (dcl-get-line-type)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1387 (if (or (equal type '$)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1388 (equal type '-)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1389 (equal type 'empty-$))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1390 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1391 (indent-region (progn (or (looking-at "^\\$")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1392 (dcl-beginning-of-statement))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1393 (point))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1394 (progn (dcl-end-of-statement) (point))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1395 nil)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1396
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1397
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1398 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1399 (defun dcl-tab ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1400 "Insert tab in data lines or indent code.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1401 If `dcl-tab-always-indent' is t, code lines are always indented.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1402 If nil, indent the current line only if point is at the left margin or in
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1403 the lines indentation; otherwise insert a tab."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1404 (interactive "*")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1405 (let ((type (dcl-get-line-type))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1406 (start-point (point)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1407 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1408 ;; Data line : always insert tab
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1409 ((or (equal type 'data) (equal type 'empty-data))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1410 (tab-to-tab-stop))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1411 ;; Indent only at start of line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1412 ((not dcl-tab-always-indent) ; nil
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1413 (let ((search-end-point
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1414 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1415 (beginning-of-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1416 (re-search-forward "^\\$?[ \t]*" start-point t))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1417 (if (or (bolp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1418 (and search-end-point
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1419 (>= search-end-point start-point)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1420 (dcl-indent-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1421 (tab-to-tab-stop))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1422 ;; Always indent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1423 ((eq dcl-tab-always-indent t) ; t
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1424 (dcl-indent-line))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1425 )))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1426
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1427
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1428 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1429 (defun dcl-electric-character (arg)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1430 "Inserts a character and indents if necessary.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1431 Insert a character if the user gave a numeric argument or the flag
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1432 `dcl-electric-characters' is not set. If an argument was given,
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1433 insert that many characters.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1434
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1435 The line is only reindented if the word just typed matches any of the
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1436 regexps in `dcl-electric-reindent-regexps'."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1437 (interactive "*P")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1438 (if (or arg (not dcl-electric-characters))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1439 (if arg
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1440 (self-insert-command (prefix-numeric-value arg))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1441 (self-insert-command 1))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1442 ;; Insert the character and indent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1443 (self-insert-command 1)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1444 (let ((case-fold-search t))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1445 ;; There must be a better way than (memq t ...).
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1446 ;; (apply 'or ...) didn't work
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1447 (if (memq t (mapcar 'dcl-was-looking-at dcl-electric-reindent-regexps))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1448 (dcl-indent-line)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1449
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1450
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1451 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1452 (defun dcl-indent-to (col &optional minimum)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1453 "Like indent-to, but only indents if indentation would change"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1454 (interactive)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1455 (let (cur-indent collapsed indent)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1456 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1457 (skip-chars-forward " \t")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1458 (setq cur-indent (current-column))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1459 (skip-chars-backward " \t")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1460 (setq collapsed (current-column)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1461 (setq indent (max col (+ collapsed (or minimum 0))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1462 (if (/= indent cur-indent)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1463 (progn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1464 (dcl-delete-chars " \t")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1465 (indent-to col minimum)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1466
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1467
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1468 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1469 (defun dcl-split-line ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1470 "Break line at point and insert text to keep the syntax valid.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1471
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1472 Inserts continuation marks and splits character strings."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1473 ;; Still don't know what to do with comments at the end of a command line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1474 (interactive "*")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1475 (let (done
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1476 (type (dcl-get-line-type)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1477 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1478 ((or (equal type '$) (equal type '-))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1479 (let ((info (parse-partial-sexp
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1480 (save-excursion (dcl-beginning-of-statement) (point))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1481 (point))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1482 ;; handle some special cases
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1483 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1484 ((nth 3 info) ; in text constant
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1485 (insert "\" + -\n\"")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1486 (indent-according-to-mode)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1487 (setq done t))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1488 ((not (nth 4 info)) ; not in comment
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1489 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1490 ((and (not (eolp))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1491 (= (char-after (point)) ?\")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1492 (= (char-after (1- (point))) ?\"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1493 (progn ; a " "" " situation
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1494 (forward-char -1)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1495 (insert "\" + -\n\"")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1496 (forward-char 1)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1497 (indent-according-to-mode)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1498 (setq done t)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1499 ((and (dcl-was-looking-at "[ \t]*-[ \t]*") ; after cont mark
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1500 (looking-at "[ \t]*\\(!.*\\)?$"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1501 ;; Do default below. This might considered wrong if we're
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1502 ;; after a subtraction: $ x = 3 - <M-LFD>
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1503 )
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1504 (t
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1505 (delete-horizontal-space)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1506 (insert " -")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1507 (insert "\n") (indent-according-to-mode)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1508 (setq done t))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1509 ))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1510 ;; use the normal function for other cases
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1511 (if (not done) ; normal M-LFD action
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1512 (indent-new-comment-line))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1513
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1514
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1515 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1516 (defun dcl-delete-indentation (&optional arg)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1517 "Join this line to previous like delete-indentation.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1518 Also remove the continuation mark if easily detected."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1519 (interactive "*P")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1520 (delete-indentation arg)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1521 (let ((type (dcl-get-line-type)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1522 (if (and (or (equal type '$)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1523 (equal type '-)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1524 (equal type 'empty-$))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1525 (not (bobp))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1526 (= (char-after (1- (point))) ?-))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1527 (progn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1528 (delete-backward-char 1)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1529 (fixup-whitespace)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1530
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1531
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1532 ;;; *** Set options *********************************************************
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1533
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1534
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1535 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1536 (defun dcl-option-value-basic (option-assoc)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1537 "Guess a value for basic-offset."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1538 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1539 (dcl-beginning-of-command)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1540 (let* (;; current lines indentation
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1541 (this-indent (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1542 (dcl-back-to-indentation)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1543 (current-column)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1544 ;; previous lines indentation
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1545 (prev-indent (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1546 (if (dcl-backward-command)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1547 (progn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1548 (dcl-back-to-indentation)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1549 (current-column)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1550 (next-indent (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1551 (dcl-end-of-command)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1552 (if (dcl-forward-command)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1553 (progn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1554 (dcl-beginning-of-command)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1555 (dcl-back-to-indentation)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1556 (current-column)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1557 (diff (if prev-indent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1558 (abs (- this-indent prev-indent)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1559 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1560 ((and diff
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1561 (/= diff 0))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1562 diff)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1563 ((and next-indent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1564 (/= (- this-indent next-indent) 0))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1565 (abs (- this-indent next-indent)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1566 (t
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1567 dcl-basic-offset)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1568
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1569
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1570 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1571 (defun dcl-option-value-offset (option-assoc)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1572 "Guess a value for an offset.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1573 Find the column of the first non-blank character on the line.
17261
15216759d2a4 Minor doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17252
diff changeset
1574 Returns the column offset."
17246
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1575 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1576 (beginning-of-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1577 (re-search-forward "^$[ \t]*" nil t)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1578 (current-column)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1579
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1580
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1581 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1582 (defun dcl-option-value-margin-offset (option-assoc)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1583 "Guess a value for margin offset.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1584 Find the column of the first non-blank character on the line, not
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1585 counting labels.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1586 Returns a number as a string."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1587 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1588 (beginning-of-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1589 (dcl-back-to-indentation)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1590 (current-column)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1591
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1592
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1593 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1594 (defun dcl-option-value-comment-line (option-assoc)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1595 "Guess a value for `dcl-comment-line-regexp'.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1596 Must return a string."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1597 ;; Should we set comment-start and comment-start-skip as well?
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1598 ;; If someone wants `$!&' as a comment line, C-M-j won't work well if
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1599 ;; they aren't set.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1600 ;; This must be done after the user has given the real value in
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1601 ;; dcl-set-option.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1602 (format
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1603 "%S"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1604 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1605 (beginning-of-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1606 ;; We could search for "^\\$.*!+[^ \t]*", but, as noted above, we
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1607 ;; can't handle that case very good, so there is no point in
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1608 ;; suggesting it.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1609 (if (looking-at "^\\$[^!\n]*!")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1610 (let ((regexp (buffer-substring (match-beginning 0) (match-end 0))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1611 (concat "^" (regexp-quote regexp)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1612 dcl-comment-line-regexp))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1613
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1614
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1615 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1616 (defun dcl-guess-option-value (option)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1617 "Guess what value the user would like to give the symbol option."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1618 (let* ((option-assoc (assoc option dcl-option-alist))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1619 (option (car option-assoc))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1620 (action (car (cdr option-assoc)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1621 (value (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1622 ((fboundp action)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1623 (funcall action option-assoc))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1624 ((eq action 'toggle)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1625 (not (eval option)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1626 ((eq action 'curval)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1627 (cond ((or (stringp (symbol-value option))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1628 (numberp (symbol-value option)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1629 (format "%S" (symbol-value option)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1630 (t
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1631 (format "'%S" (symbol-value option))))))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1632 ;; format the value as a string if not already done
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1633 (if (stringp value)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1634 value
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1635 (format "%S" value))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1636
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1637
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1638 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1639 (defun dcl-guess-option ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1640 "Guess what option the user wants to set by looking around in the code.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1641 Returns the name of the option variable as a string."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1642 (let ((case-fold-search t))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1643 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1644 ;; Continued line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1645 ((eq (dcl-get-line-type) '-)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1646 "dcl-calc-cont-indent-function")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1647 ;; Comment line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1648 ((save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1649 (beginning-of-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1650 (looking-at "^\\$[ \t]*!"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1651 "dcl-comment-line-regexp")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1652 ;; Margin offset: subroutine statement or first line in buffer
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1653 ;; Test this before label indentation to detect a subroutine
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1654 ((save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1655 (beginning-of-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1656 (or (looking-at (concat "^\\$[ \t]*" dcl-label-r dcl-ws-r
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1657 "subroutine"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1658 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1659 (not (dcl-backward-command t)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1660 "dcl-margin-offset")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1661 ;; Margin offset: on command line after subroutine statement
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1662 ((save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1663 (beginning-of-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1664 (and (eq (dcl-get-line-type) '$)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1665 (dcl-backward-command)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1666 (looking-at (concat "^\\$[ \t]*" dcl-label-r dcl-ws-r
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1667 "subroutine"))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1668 "dcl-margin-offset")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1669 ;; Label indentation
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1670 ((save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1671 (beginning-of-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1672 (and (looking-at (concat "^\\$[ \t]*" dcl-label-r))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1673 (not (and dcl-block-begin-regexp
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1674 (looking-at (concat "^\\$[ \t]*"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1675 dcl-block-begin-regexp))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1676 (not (and dcl-block-end-regexp
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1677 (looking-at (concat "^\\$[ \t]*"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1678 dcl-block-end-regexp))))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1679 "dcl-margin-label-offset")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1680 ;; Basic offset
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1681 ((and (eq (dcl-get-line-type) '$) ; beginning of command
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1682 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1683 (beginning-of-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1684 (let* ((this-indent (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1685 (dcl-back-to-indentation)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1686 (current-column)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1687 (prev-indent (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1688 (if (dcl-backward-command)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1689 (progn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1690 (dcl-back-to-indentation)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1691 (current-column)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1692 (next-indent (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1693 (dcl-end-of-command)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1694 (if (dcl-forward-command)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1695 (progn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1696 (dcl-beginning-of-command)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1697 (dcl-back-to-indentation)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1698 (current-column))))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1699 (or (and prev-indent ; last cmd is indented differently
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1700 (/= (- this-indent prev-indent) 0))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1701 (and next-indent
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1702 (/= (- this-indent next-indent) 0))))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1703 "dcl-basic-offset")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1704 ;; No more guesses.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1705 (t
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1706 ""))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1707
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1708
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1709 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1710 (defun dcl-set-option (option-sym option-value)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1711 "Set a value for one of the dcl customization variables.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1712 The function tries to guess which variable should be set and to what value.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1713 All variable names are available as completions and in the history list."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1714 (interactive
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1715 (let* ((option-sym
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1716 (intern (completing-read
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1717 "Set DCL option: " ; prompt
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1718 (mapcar (function ; alist of valid values
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1719 (lambda (option-assoc)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1720 (cons (format "%s" (car option-assoc)) nil)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1721 dcl-option-alist)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1722 nil ; no predicate
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1723 t ; only value from the list OK
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1724 (dcl-guess-option) ; initial (default) value
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1725 'dcl-option-history))) ; history list
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1726 (option-value
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1727 (eval-minibuffer
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1728 (format "Set DCL option %s to: " option-sym)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1729 (dcl-guess-option-value option-sym))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1730 (list option-sym option-value)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1731 ;; Should make a sanity check on the symbol/value pair.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1732 ;; `set' instead of `setq' because we want option-sym to be evaluated.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1733 (set option-sym option-value))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1734
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1735
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1736 ;;; *** Save options ********************************************************
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1737
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1738
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1739 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1740 (defun dcl-save-local-variable (var &optional def-prefix def-suffix)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1741 "Save a variable in a `Local Variables' list.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1742 Set or update the value of VAR in the current buffers
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1743 `Local Variables:' list."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1744 ;; Look for "Local variables:" line in last page.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1745 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1746 (goto-char (point-max))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1747 (search-backward "\n\^L" (max (- (point-max) 3000) (point-min)) 'move)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1748 (if (let ((case-fold-search t))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1749 (search-forward "Local Variables:" nil t))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1750 (let ((continue t)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1751 prefix prefixlen suffix beg
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1752 prefix-string suffix-string)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1753 ;; The prefix is what comes before "local variables:" in its line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1754 ;; The suffix is what comes after "local variables:" in its line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1755 (skip-chars-forward " \t")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1756 (or (eolp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1757 (setq suffix-string (buffer-substring (point)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1758 (progn (end-of-line) (point)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1759 (goto-char (match-beginning 0))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1760 (or (bolp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1761 (setq prefix-string
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1762 (buffer-substring (point)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1763 (progn (beginning-of-line) (point)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1764
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1765 (if prefix-string (setq prefixlen (length prefix-string)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1766 prefix (regexp-quote prefix-string)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1767 (if suffix-string (setq suffix (concat (regexp-quote suffix-string)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1768 "$")))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1769 (while continue
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1770 ;; Look at next local variable spec.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1771 (if selective-display (re-search-forward "[\n\C-m]")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1772 (forward-line 1))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1773 ;; Skip the prefix, if any.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1774 (if prefix
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1775 (if (looking-at prefix)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1776 (forward-char prefixlen)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1777 (error "Local variables entry is missing the prefix")))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1778 ;; Find the variable name; strip whitespace.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1779 (skip-chars-forward " \t")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1780 (setq beg (point))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1781 (skip-chars-forward "^:\n")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1782 (if (eolp) (error "Missing colon in local variables entry"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1783 (skip-chars-backward " \t")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1784 (let* ((str (buffer-substring beg (point)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1785 (found-var (read str))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1786 val)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1787 ;; Setting variable named "end" means end of list.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1788 (if (string-equal (downcase str) "end")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1789 (progn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1790 ;; Not found. Insert a new entry before this line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1791 (setq continue nil)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1792 (beginning-of-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1793 (insert (concat prefix-string (symbol-name var) ": "
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1794 (prin1-to-string (eval var)) " "
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1795 suffix-string "\n")))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1796 ;; Is it the variable we are looking for?
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1797 (if (eq var found-var)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1798 (progn
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1799 ;; Found it: delete the variable value and insert the
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1800 ;; new value.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1801 (setq continue nil)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1802 (skip-chars-forward "^:")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1803 (forward-char 1)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1804 (delete-region (point) (progn (read (current-buffer))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1805 (point)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1806 (insert " ")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1807 (prin1 (eval var) (current-buffer))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1808 (skip-chars-backward "\n")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1809 (skip-chars-forward " \t")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1810 (or (if suffix (looking-at suffix) (eolp))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1811 (error
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1812 "Local variables entry is terminated incorrectly")))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1813 (end-of-line))))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1814 ;; Did not find "Local variables:"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1815 (goto-char (point-max))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1816 (if (not (bolp))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1817 (insert "\n"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1818 ;; If def- parameter not set, use comment- if set. In that case, make
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1819 ;; sure there is a space in a suitable position
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1820 (let ((def-prefix
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1821 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1822 (def-prefix
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1823 def-prefix)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1824 (comment-start
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1825 (if (or (equal comment-start "")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1826 (string-match "[ \t]$" comment-start))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1827 comment-start
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1828 (concat comment-start " ")))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1829 (def-suffix
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1830 (cond
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1831 (def-suffix
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1832 def-suffix)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1833 (comment-end
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1834 (if (or (equal comment-end "")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1835 (string-match "^[ \t]" comment-end))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1836 comment-end
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1837 (concat " " comment-end))))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1838 (insert (concat def-prefix "Local variables:" def-suffix "\n"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1839 (insert (concat def-prefix (symbol-name var) ": "
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1840 (prin1-to-string (eval var)) def-suffix "\n"))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1841 (insert (concat def-prefix "end:" def-suffix)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1842 )))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1843
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1844
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1845 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1846 (defun dcl-save-all-options ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1847 "Save all dcl-mode options for this buffer.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1848 Saves or updates all dcl-mode related options in a `Local Variables:'
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1849 section at the end of the current buffer."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1850 (interactive "*")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1851 (mapcar (lambda (option-assoc)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1852 (let* ((option (car option-assoc)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1853 (dcl-save-local-variable option "$! ")))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1854 dcl-option-alist))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1855
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1856
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1857 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1858 (defun dcl-save-nondefault-options ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1859 "Save changed DCL mode options for this buffer.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1860 Saves or updates all DCL mode related options that don't have their
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1861 default values in a `Local Variables:' section at the end of the
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1862 current buffer.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1863
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1864 No entries are removed from the `Local Variables:' section. This means
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1865 that if a variable is given a non-default value in the section and
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1866 later is manually reset to its default value, the variable's entry will
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1867 still be present in the `Local Variables:' section with its old value."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1868 (interactive "*")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1869 (mapcar (lambda (option-assoc)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1870 (let* ((option (car option-assoc))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1871 (option-name (symbol-name option)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1872 (if (and (string-equal "dcl-"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1873 (substring option-name 0 4))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1874 (not (equal (default-value option) (eval option))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1875 (dcl-save-local-variable option "$! "))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1876 dcl-option-alist))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1877
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1878
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1879 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1880 (defun dcl-save-option (option)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1881 "Save a DCL mode option for this buffer.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1882 Saves or updates an option in a `Local Variables:'
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1883 section at the end of the current buffer."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1884 (interactive
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1885 (let ((option (intern (completing-read "Option: " obarray))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1886 (list option)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1887 (dcl-save-local-variable option))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1888
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1889
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1890 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1891 (defun dcl-save-mode ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1892 "Save the current mode for this buffer.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1893 Save the current mode in a `Local Variables:'
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1894 section at the end of the current buffer."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1895 (interactive)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1896 (let ((mode (prin1-to-string major-mode)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1897 (if (string-match "-mode$" mode)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1898 (let ((mode (intern (substring mode 0 (match-beginning 0)))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1899 (dcl-save-option 'mode))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1900 (message "Strange mode: %s" mode))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1901
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1902
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1903 ;;; *** Templates ***********************************************************
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1904 ;; tempo seems to be the only suitable package among those included in
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1905 ;; standard Emacs. I would have liked something closer to the functionality
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1906 ;; of LSE templates...
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1907
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1908
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1909 (require 'tempo)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1910 (defvar dcl-tempo-tags nil
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1911 "Tempo tags for DCL mode.")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1912
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1913 (tempo-define-template "dcl-f$context"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1914 '("f$context" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1915 (p "context-type: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1916 (p "context-symbol: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1917 (p "selection-item: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1918 (p "selection-value: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1919 (p "value-qualifier: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1920 "f$context" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1921
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1922 (tempo-define-template "dcl-f$csid"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1923 '("f$csid" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1924 (p "context-symbol: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1925 "f$csid" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1926
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1927 (tempo-define-template "dcl-f$cvsi"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1928 '("f$cvsi" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1929 (p "start-bit: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1930 (p "number-of-bits: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1931 (p "string: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1932 "f$cvsi" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1933
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1934 (tempo-define-template "dcl-f$cvtime"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1935 '("f$cvtime" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1936 (p "[input_time]: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1937 (p "[output_time_format]: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1938 (p "[output_field]: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1939 "f$cvtime" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1940
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1941 (tempo-define-template "dcl-f$cvui"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1942 '("f$cvui" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1943 (p "start-bit: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1944 (p "number-of-bits: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1945 (p "string") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1946 "f$cvui" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1947
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1948 (tempo-define-template "dcl-f$device"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1949 '("f$device" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1950 (p "[search_devnam]: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1951 (p "[devclass]: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1952 (p "[devtype]: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1953 (p "[stream-id]: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1954 "f$device" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1955
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1956 (tempo-define-template "dcl-f$directory"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1957 '("f$directory" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1958 dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1959 "f$directory" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1960
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1961 (tempo-define-template "dcl-f$edit"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1962 '("f$edit" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1963 (p "string: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1964 (p "edit-list: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1965 "f$edit" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1966
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1967 (tempo-define-template "dcl-f$element"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1968 '("f$element" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1969 (p "element-number: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1970 (p "delimiter: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1971 (p "string: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1972 "f$element" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1973
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1974 (tempo-define-template "dcl-f$environment"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1975 '("f$environment" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1976 (p "item: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1977 "f$environment" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1978
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1979 (tempo-define-template "dcl-f$extract"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1980 '("f$extract" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1981 (p "start: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1982 (p "length: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1983 (p "string: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1984 "f$extract" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1985
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1986 (tempo-define-template "dcl-f$fao"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1987 '("f$fao" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1988 (p "control-string: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1989 ("argument[,...]: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1990 "f$fao" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1991
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1992 (tempo-define-template "dcl-f$file_attributes"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1993 '("f$file_attributes" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1994 (p "filespec: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1995 (p "item: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1996 "f$file_attributes" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1997
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1998 (tempo-define-template "dcl-f$getdvi"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1999 '("f$getdvi" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2000 (p "device-name: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2001 (p "item: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2002 "f$getdvi" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2003
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2004 (tempo-define-template "dcl-f$getjpi"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2005 '("f$getjpi" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2006 (p "pid: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2007 (p "item: ") dcl-tempo-right-paren )
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2008 "f$getjpi" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2009
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2010 (tempo-define-template "dcl-f$getqui"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2011 '("f$getqui" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2012 (p "function: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2013 (p "[item]: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2014 (p "[object-id]: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2015 (p "[flags]: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2016 "f$getqui" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2017
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2018 (tempo-define-template "dcl-f$getsyi"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2019 '("f$getsyi" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2020 (p "item: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2021 (p "[node-name]: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2022 (p "[cluster-id]: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2023 "f$getsyi" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2024
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2025 (tempo-define-template "dcl-f$identifier"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2026 '("f$identifier" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2027 (p "identifier: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2028 (p "conversion-type: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2029 "f$identifier" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2030
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2031 (tempo-define-template "dcl-f$integer"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2032 '("f$integer" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2033 (p "expression: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2034 "f$integer" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2035
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2036 (tempo-define-template "dcl-f$length"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2037 '("f$length" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2038 (p "string: ") dcl-tempo-right-paren )
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2039 "f$length" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2040
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2041 (tempo-define-template "dcl-f$locate"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2042 '("f$locate" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2043 (p "substring: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2044 (p "string: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2045 "f$locate" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2046
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2047 (tempo-define-template "dcl-f$message"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2048 '("f$message" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2049 (p "status-code: ") dcl-tempo-right-paren )
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2050 "f$message" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2051
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2052 (tempo-define-template "dcl-f$mode"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2053 '("f$mode" dcl-tempo-left-paren dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2054 "f$mode" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2055
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2056 (tempo-define-template "dcl-f$parse"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2057 '("f$parse" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2058 (p "filespec: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2059 (p "[default-spec]: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2060 (p "[related-spec]: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2061 (p "[field]: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2062 (p "[parse-type]: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2063 "f$parse" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2064
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2065 (tempo-define-template "dcl-f$pid"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2066 '("f$pid" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2067 (p "context-symbol: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2068 "f$pid" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2069
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2070 (tempo-define-template "dcl-f$privilege"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2071 '("f$privilege" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2072 (p "priv-states: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2073 "f$privilege" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2074
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2075 (tempo-define-template "dcl-f$process"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2076 '("f$process()")
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2077 "f$process" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2078
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2079 (tempo-define-template "dcl-f$search"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2080 '("f$search" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2081 (p "filespec: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2082 (p "[stream-id]: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2083 "f$search" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2084
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2085 (tempo-define-template "dcl-f$setprv"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2086 '("f$setprv" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2087 (p "priv-states: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2088 "f$setprv" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2089
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2090 (tempo-define-template "dcl-f$string"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2091 '("f$string" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2092 (p "expression: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2093 "f$string" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2094
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2095 (tempo-define-template "dcl-f$time"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2096 '("f$time" dcl-tempo-left-paren dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2097 "f$time" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2098
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2099 (tempo-define-template "dcl-f$trnlnm"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2100 '("f$trnlnm" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2101 (p "logical-name: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2102 (p "[table]: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2103 (p "[index]: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2104 (p "[mode]: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2105 (p "[case]: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2106 (p "[item]: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2107 "f$trnlnm" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2108
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2109 (tempo-define-template "dcl-f$type"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2110 '("f$type" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2111 (p "symbol-name: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2112 "f$type" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2113
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2114 (tempo-define-template "dcl-f$user"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2115 '("f$user" dcl-tempo-left-paren dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2116 "f$user" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2117
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2118 (tempo-define-template "dcl-f$verify"
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2119 '("f$verify" dcl-tempo-left-paren
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2120 (p "[procedure-value]: ") dcl-tempo-comma
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2121 (p "[image-value]: ") dcl-tempo-right-paren)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2122 "f$verify" "" 'dcl-tempo-tags)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2123
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2124
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2125
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2126
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2127 ;;; *** Unsorted stuff *****************************************************
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2128
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2129
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2130 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2131 (defun dcl-beginning-of-command-p ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2132 "Return t if point is at the beginning of a command.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2133 Otherwise return nil."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2134 (and (bolp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2135 (eq (dcl-get-line-type) '$)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2136
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2137
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2138 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2139 (defun dcl-end-of-command-p ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2140 "Check if point is at the end of a command.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2141 Return t if point is at the end of a command, either the end of an
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2142 only line or at the end of the last continuation line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2143 Otherwise return nil."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2144 ;; Must be at end-of-line on a command line or a continuation line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2145 (let ((type (dcl-get-line-type)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2146 (if (and (eolp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2147 (or (eq type '$)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2148 (eq type '-)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2149 ;; Next line must not be a continuation line
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2150 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2151 (forward-line)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2152 (not (eq (dcl-get-line-type) '-))))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2153
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2154
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2155 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2156 (defun dcl-command-p ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2157 "Check if point is on a command line.
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2158 Return t if point is on a command line or a continuation line,
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2159 otherwise return nil."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2160 (let ((type (dcl-get-line-type)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2161 (or (eq type '$)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2162 (eq type '-))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2163
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2164
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2165 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2166 (defun dcl-was-looking-at (regexp)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2167 (save-excursion
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2168 (let ((start (point))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2169 (found (re-search-backward regexp 0 t)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2170 (if (not found)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2171 ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2172 (equal start (match-end 0))))))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2173
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2174
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2175 ;;;-------------------------------------------------------------------------
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2176 (defun dcl-imenu-create-index-function ()
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2177 "Jacket routine to make imenu searches non case sensitive."
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2178 (let ((case-fold-search t))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2179 (imenu-default-create-index-function)))
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2180
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2181
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2182
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2183 ;;; *** Epilogue ************************************************************
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2184
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2185
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2186 (provide 'dcl-mode)
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2187
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2188 (run-hooks 'dcl-mode-load-hook) ; for your customizations
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2189
7f37ef17af0f Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2190 ;;; dcl-mode.el ends here