diff options
author | Richard M. Stallman <rms@gnu.org> | 1995-07-18 21:43:16 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1995-07-18 21:43:16 +0000 |
commit | 21416d04a456e0183da1a8a51caf497d562583b6 (patch) | |
tree | dd5f0eb80e554de9265ab6a1bace564dd51012e2 | |
parent | f02af339d6a55d5859e887990a432ec3915f9cb0 (diff) | |
download | emacs-21416d04a456e0183da1a8a51caf497d562583b6.tar.gz |
(font-lock-defaults): New variable.
(nroff-mode-syntax-table): New variable to provide comment syntax
for font-lock; I'm not sure if this is (or should be) necessary in
19.29 with font-lock-defaults.
(nroff-font-lock-keywords): New variable.
(nroff-mode): Install nroff syntax table and font lock keywords.
Comment about comments in filling and line-counting.
-rw-r--r-- | lisp/textmodes/nroff-mode.el | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/lisp/textmodes/nroff-mode.el b/lisp/textmodes/nroff-mode.el index b3258f38e11..15d5fd32c24 100644 --- a/lisp/textmodes/nroff-mode.el +++ b/lisp/textmodes/nroff-mode.el @@ -1,6 +1,6 @@ ;;; nroff-mode.el --- GNU Emacs major mode for editing nroff source -;; Copyright (C) 1985, 1986, 1994 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1986, 1994, 1995 Free Software Foundation, Inc. ;; Maintainer: FSF ;; Keywords: wp @@ -29,6 +29,9 @@ ;; a command to count text lines (excluding nroff constructs), a command ;; to center a line, and movement commands that know how to skip macros. +;; Paragraph filling and line-counting currently don't respect comments, +;; as they should. + ;;; Code: (defvar nroff-mode-abbrev-table nil @@ -47,6 +50,32 @@ (define-key nroff-mode-map "\en" 'forward-text-line) (define-key nroff-mode-map "\ep" 'backward-text-line))) +(defvar nroff-mode-syntax-table nil + "Syntax table used while in nroff mode.") + +(defvar nroff-font-lock-keywords + (list + ;; Directives are . or ' at start of line, followed by + ;; optional whitespace, then command (which my be longer than + ;; 2 characters in groff). Perhaps the arguments should be + ;; fontified as well. + "^[.']\\s-*\\sw+" + ;; There are numerous groff escapes; the following get things + ;; like \-, \(em (standard troff) and \f[bar] (groff + ;; variants). This won't currently do groff's \A'foo' and + ;; the like properly. One might expect it to highlight an escape's + ;; arguments in common cases, like \f. + (concat "\\\\" ; backslash + "\\(" ; followed by various possibilities + (mapconcat 'identity + '("[f*n]*\\[.+]" ; some groff extensions + "(.." ; two chars after ( + "[^(\"]" ; single char escape + ) "\\|") + "\\)") + ) + "Font-lock highlighting control in nroff-mode.") + ;;;###autoload (defun nroff-mode () "Major mode for editing text intended for nroff to format. @@ -59,7 +88,19 @@ closing requests for requests that are used in matched pairs." (use-local-map nroff-mode-map) (setq mode-name "Nroff") (setq major-mode 'nroff-mode) - (set-syntax-table text-mode-syntax-table) + (if nroff-mode-syntax-table + () + (setq nroff-mode-syntax-table (copy-syntax-table text-mode-syntax-table)) + ;; " isn't given string quote syntax in text-mode but it + ;; (arguably) should be for use round nroff arguments (with ` and + ;; ' used otherwise). + (modify-syntax-entry ?\" "\" 2" nroff-mode-syntax-table) + ;; Comments are delimited by \" and newline. + (modify-syntax-entry ?\\ "\\ 1" nroff-mode-syntax-table) + (modify-syntax-entry ?\n "> 1" nroff-mode-syntax-table)) + (set-syntax-table nroff-mode-syntax-table) + (make-local-variable 'font-lock-defaults) + (setq font-lock-defaults '(nroff-font-lock-keywords nil t)) (setq local-abbrev-table nroff-mode-abbrev-table) (make-local-variable 'nroff-electric-mode) (setq nroff-electric-mode nil) |