Mercurial > emacs
annotate lisp/textmodes/nroff-mode.el @ 26059:2a7f35e0072b
(Fminibuffer_complete_and_exit): Supply value for new
ESCAPE_FROM_EDGE parameter to Ffield_beginning.
(Fminibuffer_complete_word): Use
Ffield_beginning to find the prompt end.
(Fminibuffer_complete_and_exit): Test for an empty
input string by seeing where the field begins, instead of
looking at text-properties.
(read_minibuf): Don't save minibuffer prompt length on
minibuf_save_list.
Don't initialize minibuffer prompt length.
Wrap prompt text-properties around the entire prompt.
Add 'prompt text-property to prompt.
Get final value with Ffield_string instead of make_buffer_string.
(read_minibuf_unwind): Don't restore minibuffer prompt length from
minibuf_save_list.
(do_completion): Get minibuffer input with Ffield_string
instead of Fbuffer_string.
Erase minibuffer input with Ferase_field instead of erase_buffer.
(Fminibuffer_complete_and_exit): Likewise.
Test whether buffer is empty by looking for the 'prompt text
property at the end.
Set prompt length by looking for the end of the prompt text property,
and save prompt length for later use (since there is no longer a
buffer variable to get it from).
(Fminibuffer_prompt_width, Fminibuffer_prompt_end): Functions removed.
(syms_of_minibuf): Remove initializations of
Sminibuffer_prompt_width and Sminibuffer_prompt_end.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Sun, 17 Oct 1999 12:55:49 +0000 |
parents | 5aeeb9b32ee4 |
children | 3fb24c8e721b |
rev | line source |
---|---|
659
505130d1ddf8
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
233
diff
changeset
|
1 ;;; nroff-mode.el --- GNU Emacs major mode for editing nroff source |
789
71d052f72ac1
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
659
diff
changeset
|
2 |
12595
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
3 ;; Copyright (C) 1985, 1986, 1994, 1995 Free Software Foundation, Inc. |
845 | 4 |
789
71d052f72ac1
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
659
diff
changeset
|
5 ;; Maintainer: FSF |
814
38b2499cb3e9
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
807
diff
changeset
|
6 ;; Keywords: wp |
789
71d052f72ac1
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
659
diff
changeset
|
7 |
36 | 8 ;; This file is part of GNU Emacs. |
9 | |
10 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
11 ;; it under the terms of the GNU General Public License as published by | |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
789
diff
changeset
|
12 ;; the Free Software Foundation; either version 2, or (at your option) |
36 | 13 ;; any later version. |
14 | |
15 ;; GNU Emacs is distributed in the hope that it will be useful, | |
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 ;; GNU General Public License for more details. | |
19 | |
20 ;; You should have received a copy of the GNU General Public License | |
14169 | 21 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
23 ;; Boston, MA 02111-1307, USA. | |
36 | 24 |
2308
f287613dfc28
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
25 ;;; Commentary: |
f287613dfc28
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
26 |
f287613dfc28
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
27 ;; This package is a major mode for editing nroff source code. It knows |
f287613dfc28
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
28 ;; about various nroff constructs, ms, mm, and me macros, and will fill |
f287613dfc28
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
29 ;; and indent paragraphs properly in their presence. It also includes |
f287613dfc28
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
30 ;; a command to count text lines (excluding nroff constructs), a command |
f287613dfc28
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
31 ;; to center a line, and movement commands that know how to skip macros. |
f287613dfc28
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
32 |
12595
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
33 ;; Paragraph filling and line-counting currently don't respect comments, |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
34 ;; as they should. |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
35 |
789
71d052f72ac1
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
659
diff
changeset
|
36 ;;; Code: |
71d052f72ac1
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
659
diff
changeset
|
37 |
19475 | 38 (defgroup nroff nil |
39 "Nroff mode." | |
20082
5aeeb9b32ee4
(nroff): Moved from `editing' to `wp'.
Karl Heuer <kwzh@gnu.org>
parents:
19475
diff
changeset
|
40 :group 'wp |
19475 | 41 :prefix "nroff-") |
42 | |
36 | 43 (defvar nroff-mode-abbrev-table nil |
44 "Abbrev table used while in nroff mode.") | |
6488
c6cb2f4a7ae8
(nroff-mode-abbrev-table): Call define-abbrev-table.
Karl Heuer <kwzh@gnu.org>
parents:
6273
diff
changeset
|
45 (define-abbrev-table 'nroff-mode-abbrev-table ()) |
36 | 46 |
19475 | 47 (defcustom nroff-electric-mode nil |
48 "*Non-nil means automatically closing requests when you insert an open." | |
49 :group 'nroff | |
50 :type 'boolean) | |
18425
847ee3e08152
(nroff-electric-mode): New defvar.
Richard M. Stallman <rms@gnu.org>
parents:
18383
diff
changeset
|
51 |
36 | 52 (defvar nroff-mode-map nil |
233 | 53 "Major mode keymap for nroff mode.") |
36 | 54 (if (not nroff-mode-map) |
55 (progn | |
56 (setq nroff-mode-map (make-sparse-keymap)) | |
57 (define-key nroff-mode-map "\t" 'tab-to-tab-stop) | |
58 (define-key nroff-mode-map "\es" 'center-line) | |
59 (define-key nroff-mode-map "\e?" 'count-text-lines) | |
60 (define-key nroff-mode-map "\n" 'electric-nroff-newline) | |
61 (define-key nroff-mode-map "\en" 'forward-text-line) | |
62 (define-key nroff-mode-map "\ep" 'backward-text-line))) | |
63 | |
12595
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
64 (defvar nroff-mode-syntax-table nil |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
65 "Syntax table used while in nroff mode.") |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
66 |
19475 | 67 (defcustom nroff-font-lock-keywords |
12595
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
68 (list |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
69 ;; Directives are . or ' at start of line, followed by |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
70 ;; optional whitespace, then command (which my be longer than |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
71 ;; 2 characters in groff). Perhaps the arguments should be |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
72 ;; fontified as well. |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
73 "^[.']\\s-*\\sw+" |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
74 ;; There are numerous groff escapes; the following get things |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
75 ;; like \-, \(em (standard troff) and \f[bar] (groff |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
76 ;; variants). This won't currently do groff's \A'foo' and |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
77 ;; the like properly. One might expect it to highlight an escape's |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
78 ;; arguments in common cases, like \f. |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
79 (concat "\\\\" ; backslash |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
80 "\\(" ; followed by various possibilities |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
81 (mapconcat 'identity |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
82 '("[f*n]*\\[.+]" ; some groff extensions |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
83 "(.." ; two chars after ( |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
84 "[^(\"]" ; single char escape |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
85 ) "\\|") |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
86 "\\)") |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
87 ) |
19475 | 88 "Font-lock highlighting control in nroff-mode." |
89 :group 'nroff | |
90 :type '(repeat regexp)) | |
12595
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
91 |
659
505130d1ddf8
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
233
diff
changeset
|
92 ;;;###autoload |
36 | 93 (defun nroff-mode () |
94 "Major mode for editing text intended for nroff to format. | |
95 \\{nroff-mode-map} | |
233 | 96 Turning on Nroff mode runs `text-mode-hook', then `nroff-mode-hook'. |
97 Also, try `nroff-electric-mode', for automatically inserting | |
36 | 98 closing requests for requests that are used in matched pairs." |
99 (interactive) | |
100 (kill-all-local-variables) | |
101 (use-local-map nroff-mode-map) | |
102 (setq mode-name "Nroff") | |
103 (setq major-mode 'nroff-mode) | |
12595
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
104 (if nroff-mode-syntax-table |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
105 () |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
106 (setq nroff-mode-syntax-table (copy-syntax-table text-mode-syntax-table)) |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
107 ;; " isn't given string quote syntax in text-mode but it |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
108 ;; (arguably) should be for use round nroff arguments (with ` and |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
109 ;; ' used otherwise). |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
110 (modify-syntax-entry ?\" "\" 2" nroff-mode-syntax-table) |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
111 ;; Comments are delimited by \" and newline. |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
112 (modify-syntax-entry ?\\ "\\ 1" nroff-mode-syntax-table) |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
113 (modify-syntax-entry ?\n "> 1" nroff-mode-syntax-table)) |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
114 (set-syntax-table nroff-mode-syntax-table) |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
115 (make-local-variable 'font-lock-defaults) |
cf258211ea5b
(font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
10886
diff
changeset
|
116 (setq font-lock-defaults '(nroff-font-lock-keywords nil t)) |
36 | 117 (setq local-abbrev-table nroff-mode-abbrev-table) |
118 (make-local-variable 'nroff-electric-mode) | |
3143
40f18bdaf972
(nroff-mode): Don't leave nroff-electric-mode void.
Richard M. Stallman <rms@gnu.org>
parents:
2308
diff
changeset
|
119 (setq nroff-electric-mode nil) |
6075
b23452652292
(nroff-mode): Set outline-regexp and outline-level.
Richard M. Stallman <rms@gnu.org>
parents:
3143
diff
changeset
|
120 (make-local-variable 'outline-regexp) |
b23452652292
(nroff-mode): Set outline-regexp and outline-level.
Richard M. Stallman <rms@gnu.org>
parents:
3143
diff
changeset
|
121 (setq outline-regexp "\\.H[ ]+[1-7]+ ") |
b23452652292
(nroff-mode): Set outline-regexp and outline-level.
Richard M. Stallman <rms@gnu.org>
parents:
3143
diff
changeset
|
122 (make-local-variable 'outline-level) |
6273
e645df5b5148
(nroff-mode): Deleted garbage character.
Karl Heuer <kwzh@gnu.org>
parents:
6075
diff
changeset
|
123 (setq outline-level 'nroff-outline-level) |
36 | 124 ;; now define a bunch of variables for use by commands in this mode |
125 (make-local-variable 'page-delimiter) | |
126 (setq page-delimiter "^\\.\\(bp\\|SK\\|OP\\)") | |
127 (make-local-variable 'paragraph-start) | |
10886
7872c31968be
(nroff-mode): Remove ^ from paragraph-start & paragraph-separate.
Boris Goldowsky <boris@gnu.org>
parents:
7300
diff
changeset
|
128 (setq paragraph-start (concat "[.']\\|" paragraph-start)) |
36 | 129 (make-local-variable 'paragraph-separate) |
10886
7872c31968be
(nroff-mode): Remove ^ from paragraph-start & paragraph-separate.
Boris Goldowsky <boris@gnu.org>
parents:
7300
diff
changeset
|
130 (setq paragraph-separate (concat "[.']\\|" paragraph-separate)) |
36 | 131 ;; comment syntax added by mit-erl!gildea 18 Apr 86 |
132 (make-local-variable 'comment-start) | |
133 (setq comment-start "\\\" ") | |
134 (make-local-variable 'comment-start-skip) | |
135 (setq comment-start-skip "\\\\\"[ \t]*") | |
136 (make-local-variable 'comment-column) | |
137 (setq comment-column 24) | |
2307
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
845
diff
changeset
|
138 (make-local-variable 'comment-indent-function) |
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
845
diff
changeset
|
139 (setq comment-indent-function 'nroff-comment-indent) |
36 | 140 (run-hooks 'text-mode-hook 'nroff-mode-hook)) |
141 | |
6075
b23452652292
(nroff-mode): Set outline-regexp and outline-level.
Richard M. Stallman <rms@gnu.org>
parents:
3143
diff
changeset
|
142 (defun nroff-outline-level () |
b23452652292
(nroff-mode): Set outline-regexp and outline-level.
Richard M. Stallman <rms@gnu.org>
parents:
3143
diff
changeset
|
143 (save-excursion |
b23452652292
(nroff-mode): Set outline-regexp and outline-level.
Richard M. Stallman <rms@gnu.org>
parents:
3143
diff
changeset
|
144 (looking-at outline-regexp) |
b23452652292
(nroff-mode): Set outline-regexp and outline-level.
Richard M. Stallman <rms@gnu.org>
parents:
3143
diff
changeset
|
145 (skip-chars-forward ".H ") |
b23452652292
(nroff-mode): Set outline-regexp and outline-level.
Richard M. Stallman <rms@gnu.org>
parents:
3143
diff
changeset
|
146 (string-to-int (buffer-substring (point) (+ 1 (point)))))) |
b23452652292
(nroff-mode): Set outline-regexp and outline-level.
Richard M. Stallman <rms@gnu.org>
parents:
3143
diff
changeset
|
147 |
36 | 148 ;;; Compute how much to indent a comment in nroff/troff source. |
149 ;;; By mit-erl!gildea April 86 | |
150 (defun nroff-comment-indent () | |
151 "Compute indent for an nroff/troff comment. | |
152 Puts a full-stop before comments on a line by themselves." | |
153 (let ((pt (point))) | |
154 (unwind-protect | |
155 (progn | |
156 (skip-chars-backward " \t") | |
157 (if (bolp) | |
158 (progn | |
159 (setq pt (1+ pt)) | |
160 (insert ?.) | |
161 1) | |
162 (if (save-excursion | |
163 (backward-char 1) | |
164 (looking-at "^[.']")) | |
165 1 | |
166 (max comment-column | |
167 (* 8 (/ (+ (current-column) | |
168 9) 8)))))) ; add 9 to ensure at least two blanks | |
169 (goto-char pt)))) | |
170 | |
171 (defun count-text-lines (start end &optional print) | |
172 "Count lines in region, except for nroff request lines. | |
173 All lines not starting with a period are counted up. | |
174 Interactively, print result in echo area. | |
175 Noninteractively, return number of non-request lines from START to END." | |
176 (interactive "r\np") | |
177 (if print | |
178 (message "Region has %d text lines" (count-text-lines start end)) | |
179 (save-excursion | |
180 (save-restriction | |
181 (narrow-to-region start end) | |
182 (goto-char (point-min)) | |
183 (- (buffer-size) (forward-text-line (buffer-size))))))) | |
184 | |
185 (defun forward-text-line (&optional cnt) | |
186 "Go forward one nroff text line, skipping lines of nroff requests. | |
187 An argument is a repeat count; if negative, move backward." | |
188 (interactive "p") | |
189 (if (not cnt) (setq cnt 1)) | |
190 (while (and (> cnt 0) (not (eobp))) | |
191 (forward-line 1) | |
192 (while (and (not (eobp)) (looking-at "[.'].")) | |
193 (forward-line 1)) | |
194 (setq cnt (- cnt 1))) | |
195 (while (and (< cnt 0) (not (bobp))) | |
196 (forward-line -1) | |
197 (while (and (not (bobp)) | |
198 (looking-at "[.'].")) | |
199 (forward-line -1)) | |
200 (setq cnt (+ cnt 1))) | |
201 cnt) | |
202 | |
203 (defun backward-text-line (&optional cnt) | |
204 "Go backward one nroff text line, skipping lines of nroff requests. | |
205 An argument is a repeat count; negative means move forward." | |
206 (interactive "p") | |
207 (forward-text-line (- cnt))) | |
208 | |
209 (defconst nroff-brace-table | |
210 '((".(b" . ".)b") | |
211 (".(l" . ".)l") | |
212 (".(q" . ".)q") | |
213 (".(c" . ".)c") | |
214 (".(x" . ".)x") | |
215 (".(z" . ".)z") | |
216 (".(d" . ".)d") | |
217 (".(f" . ".)f") | |
218 (".LG" . ".NL") | |
219 (".SM" . ".NL") | |
220 (".LD" . ".DE") | |
221 (".CD" . ".DE") | |
222 (".BD" . ".DE") | |
223 (".DS" . ".DE") | |
224 (".DF" . ".DE") | |
225 (".FS" . ".FE") | |
226 (".KS" . ".KE") | |
227 (".KF" . ".KE") | |
228 (".LB" . ".LE") | |
229 (".AL" . ".LE") | |
230 (".BL" . ".LE") | |
231 (".DL" . ".LE") | |
232 (".ML" . ".LE") | |
233 (".RL" . ".LE") | |
234 (".VL" . ".LE") | |
235 (".RS" . ".RE") | |
236 (".TS" . ".TE") | |
237 (".EQ" . ".EN") | |
238 (".PS" . ".PE") | |
239 (".BS" . ".BE") | |
240 (".G1" . ".G2") ; grap | |
241 (".na" . ".ad b") | |
242 (".nf" . ".fi") | |
243 (".de" . ".."))) | |
244 | |
245 (defun electric-nroff-newline (arg) | |
246 "Insert newline for nroff mode; special if electric-nroff mode. | |
233 | 247 In `electric-nroff-mode', if ending a line containing an nroff opening request, |
36 | 248 automatically inserts the matching closing request after point." |
249 (interactive "P") | |
250 (let ((completion (save-excursion | |
251 (beginning-of-line) | |
252 (and (null arg) | |
253 nroff-electric-mode | |
254 (<= (point) (- (point-max) 3)) | |
255 (cdr (assoc (buffer-substring (point) | |
256 (+ 3 (point))) | |
257 nroff-brace-table))))) | |
258 (needs-nl (not (looking-at "[ \t]*$")))) | |
259 (if (null completion) | |
260 (newline (prefix-numeric-value arg)) | |
261 (save-excursion | |
262 (insert "\n\n" completion) | |
263 (if needs-nl (insert "\n"))) | |
264 (forward-char 1)))) | |
265 | |
266 (defun electric-nroff-mode (&optional arg) | |
233 | 267 "Toggle `nroff-electric-newline' minor mode. |
268 `nroff-electric-newline' forces Emacs to check for an nroff request at the | |
269 beginning of the line, and insert the matching closing request if necessary. | |
270 This command toggles that mode (off->on, on->off), with an argument, | |
271 turns it on iff arg is positive, otherwise off." | |
36 | 272 (interactive "P") |
273 (or (eq major-mode 'nroff-mode) (error "Must be in nroff mode")) | |
274 (or (assq 'nroff-electric-mode minor-mode-alist) | |
275 (setq minor-mode-alist (append minor-mode-alist | |
276 (list '(nroff-electric-mode | |
277 " Electric"))))) | |
278 (setq nroff-electric-mode | |
279 (cond ((null arg) (null nroff-electric-mode)) | |
280 (t (> (prefix-numeric-value arg) 0))))) | |
281 | |
18383 | 282 (provide 'nroff-mode) |
283 | |
659
505130d1ddf8
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
233
diff
changeset
|
284 ;;; nroff-mode.el ends here |