annotate lisp/textmodes/nroff-mode.el @ 107189:a48b193e3b5f

(tramp-handle-insert-file-contents): Set always the permissions of the temporary file to "0600". In case the remote file has no read permissions for the owner, there might be problems otherwise. Reported by Ole Laursen <olau@iola.dk>.
author Michael Albinus <michael.albinus@gmx.de>
date Thu, 18 Feb 2010 11:03:12 +0100
parents 1d1d5d9bd884
children ad86f610b2b3 376148b31b5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
64751
5b1a238fcbb4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64084
diff changeset
3 ;; Copyright (C) 1985, 1986, 1994, 1995, 1997, 2001, 2002, 2003,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
4 ;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
845
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 814
diff changeset
5
789
71d052f72ac1 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
6 ;; Maintainer: FSF
814
38b2499cb3e9 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
7 ;; Keywords: wp
789
71d052f72ac1 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
8
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
10
94670
f4a69fedbd46 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93674
diff changeset
11 ;; GNU Emacs is free software: you can redistribute it and/or modify
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
94670
f4a69fedbd46 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93674
diff changeset
13 ;; the Free Software Foundation, either version 3 of the License, or
f4a69fedbd46 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93674
diff changeset
14 ;; (at your option) any later version.
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
15
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
19 ;; GNU General Public License for more details.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
20
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
94670
f4a69fedbd46 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93674
diff changeset
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
23
2308
f287613dfc28 Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
24 ;;; Commentary:
f287613dfc28 Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
25
f287613dfc28 Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
26 ;; 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
27 ;; 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
28 ;; 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
29 ;; 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
30 ;; 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
31
12595
cf258211ea5b (font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 10886
diff changeset
32 ;; 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
33 ;; as they should.
cf258211ea5b (font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 10886
diff changeset
34
789
71d052f72ac1 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
35 ;;; Code:
71d052f72ac1 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
36
19475
c8c9212a86a7 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18425
diff changeset
37 (defgroup nroff nil
c8c9212a86a7 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18425
diff changeset
38 "Nroff mode."
66963
a11fdee52c05 Add :link (custom-group-link font-lock-faces) to defgroup.
Juri Linkov <juri@jurta.org>
parents: 64751
diff changeset
39 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
20082
5aeeb9b32ee4 (nroff): Moved from `editing' to `wp'.
Karl Heuer <kwzh@gnu.org>
parents: 19475
diff changeset
40 :group 'wp
19475
c8c9212a86a7 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18425
diff changeset
41 :prefix "nroff-")
c8c9212a86a7 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18425
diff changeset
42
68660
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
43
19475
c8c9212a86a7 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18425
diff changeset
44 (defcustom nroff-electric-mode nil
68660
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
45 "Non-nil means automatically closing requests when you insert an open."
19475
c8c9212a86a7 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18425
diff changeset
46 :group 'nroff
c8c9212a86a7 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18425
diff changeset
47 :type 'boolean)
18425
847ee3e08152 (nroff-electric-mode): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 18383
diff changeset
48
39570
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
49 (defvar nroff-mode-map
93674
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
50 (let ((map (make-sparse-keymap))
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
51 (menu-map (make-sparse-keymap)))
39570
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
52 (define-key map "\t" 'tab-to-tab-stop)
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
53 (define-key map "\es" 'center-line)
68660
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
54 (define-key map "\e?" 'nroff-count-text-lines)
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
55 (define-key map "\n" 'nroff-electric-newline)
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
56 (define-key map "\en" 'nroff-forward-text-line)
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
57 (define-key map "\ep" 'nroff-backward-text-line)
93674
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
58 (define-key map [menu-bar nroff-mode] (cons "Nroff" menu-map))
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
59 (define-key menu-map [nn]
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
60 '(menu-item "Newline" nroff-electric-newline
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
61 :help "Insert newline for nroff mode; special if nroff-electric mode"))
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
62 (define-key menu-map [nc]
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
63 '(menu-item "Count text lines" nroff-count-text-lines
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
64 :help "Count lines in region, except for nroff request lines."))
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
65 (define-key menu-map [nf]
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
66 '(menu-item "Forward text line" nroff-forward-text-line
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
67 :help "Go forward one nroff text line, skipping lines of nroff requests"))
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
68 (define-key menu-map [nb]
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
69 '(menu-item "Backward text line" nroff-backward-text-line
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
70 :help "Go backward one nroff text line, skipping lines of nroff requests"))
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
71 (define-key menu-map [ne]
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
72 '(menu-item "Electric newline mode"
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
73 nroff-electric-mode
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
74 :help "Auto insert closing requests if necessary"
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
75 :button (:toggle . nroff-electric-mode)))
39570
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
76 map)
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
77 "Major mode keymap for `nroff-mode'.")
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
78
39570
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
79 (defvar nroff-mode-syntax-table
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
80 (let ((st (copy-syntax-table text-mode-syntax-table)))
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
81 ;; " isn't given string quote syntax in text-mode but it
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
82 ;; (arguably) should be for use round nroff arguments (with ` and
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
83 ;; ' used otherwise).
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
84 (modify-syntax-entry ?\" "\" 2" st)
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
85 ;; Comments are delimited by \" and newline.
81650
b6aa03e14a51 Groff \# comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 75347
diff changeset
86 ;; And in groff also \# to newline.
b6aa03e14a51 Groff \# comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 75347
diff changeset
87 (modify-syntax-entry ?# ". 2" st)
39570
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
88 (modify-syntax-entry ?\\ "\\ 1" st)
68660
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
89 (modify-syntax-entry ?\n ">" st)
39570
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
90 st)
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
91 "Syntax table used while in `nroff-mode'.")
12595
cf258211ea5b (font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 10886
diff changeset
92
49025
24d4032aaa07 (nroff-mode-hook): Customize.
Dave Love <fx@gnu.org>
parents: 39570
diff changeset
93 (defvar nroff-imenu-expression
24d4032aaa07 (nroff-mode-hook): Customize.
Dave Love <fx@gnu.org>
parents: 39570
diff changeset
94 ;; man headers:
24d4032aaa07 (nroff-mode-hook): Customize.
Dave Love <fx@gnu.org>
parents: 39570
diff changeset
95 '((nil "^\\.SH \"?\\([^\"\n]*\\)\"?$" 1)))
24d4032aaa07 (nroff-mode-hook): Customize.
Dave Love <fx@gnu.org>
parents: 39570
diff changeset
96
19475
c8c9212a86a7 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18425
diff changeset
97 (defcustom nroff-font-lock-keywords
12595
cf258211ea5b (font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 10886
diff changeset
98 (list
cf258211ea5b (font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 10886
diff changeset
99 ;; 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
100 ;; 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
101 ;; 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
102 ;; fontified as well.
cf258211ea5b (font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 10886
diff changeset
103 "^[.']\\s-*\\sw+"
cf258211ea5b (font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 10886
diff changeset
104 ;; 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
105 ;; like \-, \(em (standard troff) and \f[bar] (groff
cf258211ea5b (font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 10886
diff changeset
106 ;; 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
107 ;; 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
108 ;; arguments in common cases, like \f.
68599
8b39fc927b5e * textmodes/nroff-mode.el (nroff-font-lock-keywords): Don't be
Werner LEMBERG <wl@gnu.org>
parents: 66963
diff changeset
109 (concat "\\\\" ; backslash
8b39fc927b5e * textmodes/nroff-mode.el (nroff-font-lock-keywords): Don't be
Werner LEMBERG <wl@gnu.org>
parents: 66963
diff changeset
110 "\\(" ; followed by various possibilities
8b39fc927b5e * textmodes/nroff-mode.el (nroff-font-lock-keywords): Don't be
Werner LEMBERG <wl@gnu.org>
parents: 66963
diff changeset
111 (mapconcat 'identity
8b39fc927b5e * textmodes/nroff-mode.el (nroff-font-lock-keywords): Don't be
Werner LEMBERG <wl@gnu.org>
parents: 66963
diff changeset
112 '("[f*n]*\\[.+?]" ; some groff extensions
8b39fc927b5e * textmodes/nroff-mode.el (nroff-font-lock-keywords): Don't be
Werner LEMBERG <wl@gnu.org>
parents: 66963
diff changeset
113 "(.." ; two chars after (
81650
b6aa03e14a51 Groff \# comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 75347
diff changeset
114 "[^(\"#]" ; single char escape
68599
8b39fc927b5e * textmodes/nroff-mode.el (nroff-font-lock-keywords): Don't be
Werner LEMBERG <wl@gnu.org>
parents: 66963
diff changeset
115 ) "\\|")
8b39fc927b5e * textmodes/nroff-mode.el (nroff-font-lock-keywords): Don't be
Werner LEMBERG <wl@gnu.org>
parents: 66963
diff changeset
116 "\\)")
12595
cf258211ea5b (font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 10886
diff changeset
117 )
39570
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
118 "Font-lock highlighting control in `nroff-mode'."
19475
c8c9212a86a7 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18425
diff changeset
119 :group 'nroff
c8c9212a86a7 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18425
diff changeset
120 :type '(repeat regexp))
12595
cf258211ea5b (font-lock-defaults): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 10886
diff changeset
121
49025
24d4032aaa07 (nroff-mode-hook): Customize.
Dave Love <fx@gnu.org>
parents: 39570
diff changeset
122 (defcustom nroff-mode-hook nil
24d4032aaa07 (nroff-mode-hook): Customize.
Dave Love <fx@gnu.org>
parents: 39570
diff changeset
123 "Hook run by function `nroff-mode'."
24d4032aaa07 (nroff-mode-hook): Customize.
Dave Love <fx@gnu.org>
parents: 39570
diff changeset
124 :type 'hook
24d4032aaa07 (nroff-mode-hook): Customize.
Dave Love <fx@gnu.org>
parents: 39570
diff changeset
125 :group 'nroff)
24d4032aaa07 (nroff-mode-hook): Customize.
Dave Love <fx@gnu.org>
parents: 39570
diff changeset
126
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 233
diff changeset
127 ;;;###autoload
39570
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
128 (define-derived-mode nroff-mode text-mode "Nroff"
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
129 "Major mode for editing text intended for nroff to format.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
130 \\{nroff-mode-map}
233
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 36
diff changeset
131 Turning on Nroff mode runs `text-mode-hook', then `nroff-mode-hook'.
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 36
diff changeset
132 Also, try `nroff-electric-mode', for automatically inserting
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
133 closing requests for requests that are used in matched pairs."
39570
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
134 (set (make-local-variable 'font-lock-defaults)
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
135 ;; SYNTAX-BEGIN is set to backward-paragraph to avoid slow-down
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
136 ;; near the end of large buffers due to searching to buffer's
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
137 ;; beginning.
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
138 '(nroff-font-lock-keywords nil t nil backward-paragraph))
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
139 (set (make-local-variable 'outline-regexp) "\\.H[ ]+[1-7]+ ")
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
140 (set (make-local-variable 'outline-level) 'nroff-outline-level)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
141 ;; now define a bunch of variables for use by commands in this mode
39570
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
142 (set (make-local-variable 'page-delimiter) "^\\.\\(bp\\|SK\\|OP\\)")
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
143 (set (make-local-variable 'paragraph-start)
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
144 (concat "[.']\\|" paragraph-start))
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
145 (set (make-local-variable 'paragraph-separate)
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
146 (concat "[.']\\|" paragraph-separate))
97577
cc3ca7429977 (nroff-mode): Avoid auto-filling on directive lines.
Chong Yidong <cyd@stupidchicken.com>
parents: 94670
diff changeset
147 ;; Don't auto-fill directive lines starting . or ' since they normally
cc3ca7429977 (nroff-mode): Avoid auto-filling on directive lines.
Chong Yidong <cyd@stupidchicken.com>
parents: 94670
diff changeset
148 ;; have to be one line. But do auto-fill comments .\" .\# and '''.
cc3ca7429977 (nroff-mode): Avoid auto-filling on directive lines.
Chong Yidong <cyd@stupidchicken.com>
parents: 94670
diff changeset
149 ;; Comment directives (those starting . or ') are [.'][ \t]*\\[#"]
cc3ca7429977 (nroff-mode): Avoid auto-filling on directive lines.
Chong Yidong <cyd@stupidchicken.com>
parents: 94670
diff changeset
150 ;; or ''', and this regexp is everything except those. So [.']
cc3ca7429977 (nroff-mode): Avoid auto-filling on directive lines.
Chong Yidong <cyd@stupidchicken.com>
parents: 94670
diff changeset
151 ;; followed by not backslash and not ' or followed by backslash but
cc3ca7429977 (nroff-mode): Avoid auto-filling on directive lines.
Chong Yidong <cyd@stupidchicken.com>
parents: 94670
diff changeset
152 ;; then not # or "
cc3ca7429977 (nroff-mode): Avoid auto-filling on directive lines.
Chong Yidong <cyd@stupidchicken.com>
parents: 94670
diff changeset
153 (set (make-local-variable 'auto-fill-inhibit-regexp)
cc3ca7429977 (nroff-mode): Avoid auto-filling on directive lines.
Chong Yidong <cyd@stupidchicken.com>
parents: 94670
diff changeset
154 "[.'][ \t]*\\([^ \t\\']\\|\\\\[^#\"]\\)")
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
155 ;; comment syntax added by mit-erl!gildea 18 Apr 86
39570
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
156 (set (make-local-variable 'comment-start) "\\\" ")
81650
b6aa03e14a51 Groff \# comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 75347
diff changeset
157 (set (make-local-variable 'comment-start-skip) "\\\\[\"#][ \t]*")
39570
d16a58a98f40 (nroff-mode-abbrev-table, nroff-mode): Use define-derived-mode.
Gerd Moellmann <gerd@gnu.org>
parents: 35895
diff changeset
158 (set (make-local-variable 'comment-column) 24)
49025
24d4032aaa07 (nroff-mode-hook): Customize.
Dave Love <fx@gnu.org>
parents: 39570
diff changeset
159 (set (make-local-variable 'comment-indent-function) 'nroff-comment-indent)
85906
e8570ba362b2 (nroff-mode): Set comment-insert-comment-function rather than
Glenn Morris <rgm@gnu.org>
parents: 85858
diff changeset
160 (set (make-local-variable 'comment-insert-comment-function)
e8570ba362b2 (nroff-mode): Set comment-insert-comment-function rather than
Glenn Morris <rgm@gnu.org>
parents: 85858
diff changeset
161 'nroff-insert-comment-function)
49025
24d4032aaa07 (nroff-mode-hook): Customize.
Dave Love <fx@gnu.org>
parents: 39570
diff changeset
162 (set (make-local-variable 'imenu-generic-expression) nroff-imenu-expression))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
163
6075
b23452652292 (nroff-mode): Set outline-regexp and outline-level.
Richard M. Stallman <rms@gnu.org>
parents: 3143
diff changeset
164 (defun nroff-outline-level ()
b23452652292 (nroff-mode): Set outline-regexp and outline-level.
Richard M. Stallman <rms@gnu.org>
parents: 3143
diff changeset
165 (save-excursion
b23452652292 (nroff-mode): Set outline-regexp and outline-level.
Richard M. Stallman <rms@gnu.org>
parents: 3143
diff changeset
166 (looking-at outline-regexp)
b23452652292 (nroff-mode): Set outline-regexp and outline-level.
Richard M. Stallman <rms@gnu.org>
parents: 3143
diff changeset
167 (skip-chars-forward ".H ")
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 52401
diff changeset
168 (string-to-number (buffer-substring (point) (+ 1 (point))))))
6075
b23452652292 (nroff-mode): Set outline-regexp and outline-level.
Richard M. Stallman <rms@gnu.org>
parents: 3143
diff changeset
169
68660
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
170 ;; Compute how much to indent a comment in nroff/troff source.
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
171 ;; By mit-erl!gildea April 86
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
172 (defun nroff-comment-indent ()
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
173 "Compute indent for an nroff/troff comment.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
174 Puts a full-stop before comments on a line by themselves."
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
175 (let ((pt (point)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
176 (unwind-protect
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
177 (progn
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
178 (skip-chars-backward " \t")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
179 (if (bolp)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
180 (progn
85906
e8570ba362b2 (nroff-mode): Set comment-insert-comment-function rather than
Glenn Morris <rgm@gnu.org>
parents: 85858
diff changeset
181 ;; FIXME delete-horizontal-space?
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
182 (setq pt (1+ pt))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
183 (insert ?.)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
184 1)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
185 (if (save-excursion
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
186 (backward-char 1)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
187 (looking-at "^[.']"))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
188 1
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
189 (max comment-column
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
190 (* 8 (/ (+ (current-column)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
191 9) 8)))))) ; add 9 to ensure at least two blanks
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
192 (goto-char pt))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
193
79308
c9be678e700b (nroff-mode): Set indent-line-function.
Glenn Morris <rgm@gnu.org>
parents: 78482
diff changeset
194 ;; http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg01869.html
85906
e8570ba362b2 (nroff-mode): Set comment-insert-comment-function rather than
Glenn Morris <rgm@gnu.org>
parents: 85858
diff changeset
195 (defun nroff-insert-comment-function ()
e8570ba362b2 (nroff-mode): Set comment-insert-comment-function rather than
Glenn Morris <rgm@gnu.org>
parents: 85858
diff changeset
196 "Function for `comment-insert-comment-function' in `nroff-mode'."
e8570ba362b2 (nroff-mode): Set comment-insert-comment-function rather than
Glenn Morris <rgm@gnu.org>
parents: 85858
diff changeset
197 (indent-to (nroff-comment-indent))
e8570ba362b2 (nroff-mode): Set comment-insert-comment-function rather than
Glenn Morris <rgm@gnu.org>
parents: 85858
diff changeset
198 (insert comment-start))
79308
c9be678e700b (nroff-mode): Set indent-line-function.
Glenn Morris <rgm@gnu.org>
parents: 78482
diff changeset
199
68660
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
200 (defun nroff-count-text-lines (start end &optional print)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
201 "Count lines in region, except for nroff request lines.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
202 All lines not starting with a period are counted up.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
203 Interactively, print result in echo area.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
204 Noninteractively, return number of non-request lines from START to END."
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
205 (interactive "r\np")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
206 (if print
68660
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
207 (message "Region has %d text lines" (nroff-count-text-lines start end))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
208 (save-excursion
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
209 (save-restriction
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
210 (narrow-to-region start end)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
211 (goto-char (point-min))
79308
c9be678e700b (nroff-mode): Set indent-line-function.
Glenn Morris <rgm@gnu.org>
parents: 78482
diff changeset
212 (- (buffer-size) (nroff-forward-text-line (buffer-size)))))))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
213
68660
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
214 (defun nroff-forward-text-line (&optional cnt)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
215 "Go forward one nroff text line, skipping lines of nroff requests.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
216 An argument is a repeat count; if negative, move backward."
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
217 (interactive "p")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
218 (if (not cnt) (setq cnt 1))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
219 (while (and (> cnt 0) (not (eobp)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
220 (forward-line 1)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
221 (while (and (not (eobp)) (looking-at "[.']."))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
222 (forward-line 1))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
223 (setq cnt (- cnt 1)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
224 (while (and (< cnt 0) (not (bobp)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
225 (forward-line -1)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
226 (while (and (not (bobp))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
227 (looking-at "[.']."))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
228 (forward-line -1))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
229 (setq cnt (+ cnt 1)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
230 cnt)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
231
68660
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
232 (defun nroff-backward-text-line (&optional cnt)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
233 "Go backward one nroff text line, skipping lines of nroff requests.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
234 An argument is a repeat count; negative means move forward."
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
235 (interactive "p")
68660
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
236 (nroff-forward-text-line (- cnt)))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
237
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
238 (defconst nroff-brace-table
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
239 '((".(b" . ".)b")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
240 (".(l" . ".)l")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
241 (".(q" . ".)q")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
242 (".(c" . ".)c")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
243 (".(x" . ".)x")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
244 (".(z" . ".)z")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
245 (".(d" . ".)d")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
246 (".(f" . ".)f")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
247 (".LG" . ".NL")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
248 (".SM" . ".NL")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
249 (".LD" . ".DE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
250 (".CD" . ".DE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
251 (".BD" . ".DE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
252 (".DS" . ".DE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
253 (".DF" . ".DE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
254 (".FS" . ".FE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
255 (".KS" . ".KE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
256 (".KF" . ".KE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
257 (".LB" . ".LE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
258 (".AL" . ".LE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
259 (".BL" . ".LE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
260 (".DL" . ".LE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
261 (".ML" . ".LE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
262 (".RL" . ".LE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
263 (".VL" . ".LE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
264 (".RS" . ".RE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
265 (".TS" . ".TE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
266 (".EQ" . ".EN")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
267 (".PS" . ".PE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
268 (".BS" . ".BE")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
269 (".G1" . ".G2") ; grap
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
270 (".na" . ".ad b")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
271 (".nf" . ".fi")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
272 (".de" . "..")))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
273
68660
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
274 (defun nroff-electric-newline (arg)
93674
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
275 "Insert newline for nroff mode; special if nroff-electric mode.
44fab469d68d * outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
276 In `nroff-electric-mode', if ending a line containing an nroff opening request,
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
277 automatically inserts the matching closing request after point."
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
278 (interactive "P")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
279 (let ((completion (save-excursion
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
280 (beginning-of-line)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
281 (and (null arg)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
282 nroff-electric-mode
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
283 (<= (point) (- (point-max) 3))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
284 (cdr (assoc (buffer-substring (point)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
285 (+ 3 (point)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
286 nroff-brace-table)))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
287 (needs-nl (not (looking-at "[ \t]*$"))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
288 (if (null completion)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
289 (newline (prefix-numeric-value arg))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
290 (save-excursion
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
291 (insert "\n\n" completion)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
292 (if needs-nl (insert "\n")))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
293 (forward-char 1))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
294
68660
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
295 (define-minor-mode nroff-electric-mode
233
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 36
diff changeset
296 "Toggle `nroff-electric-newline' minor mode.
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 36
diff changeset
297 `nroff-electric-newline' forces Emacs to check for an nroff request at the
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 36
diff changeset
298 beginning of the line, and insert the matching closing request if necessary.
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 36
diff changeset
299 This command toggles that mode (off->on, on->off), with an argument,
78482
80e300a489d6 Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents: 78225
diff changeset
300 turns it on if arg is positive, otherwise off."
68660
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
301 :lighter " Electric"
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
302 (or (derived-mode-p 'nroff-mode) (error "Must be in nroff mode")))
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
303
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
304 ;; Old names that were not namespace clean.
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
305 (define-obsolete-function-alias 'count-text-lines 'nroff-count-text-lines "22.1")
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
306 (define-obsolete-function-alias 'forward-text-line 'nroff-forward-text-line "22.1")
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
307 (define-obsolete-function-alias 'backward-text-line 'nroff-backward-text-line "22.1")
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
308 (define-obsolete-function-alias 'electric-nroff-newline 'nroff-electric-newline "22.1")
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
309 (define-obsolete-function-alias 'electric-nroff-mode 'nroff-electric-mode "22.1")
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
310
18383
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
311 (provide 'nroff-mode)
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
312
68660
a747e863fd26 Clean up name space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68599
diff changeset
313 ;; arch-tag: 6e276340-6c65-4f65-b4e3-0ca431ddfb6c
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 233
diff changeset
314 ;;; nroff-mode.el ends here