Mercurial > emacs
changeset 12595:cf258211ea5b
(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.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Tue, 18 Jul 1995 21:43:16 +0000 |
parents | 1d30a1c68e44 |
children | ffe0de415152 |
files | lisp/textmodes/nroff-mode.el |
diffstat | 1 files changed, 43 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/textmodes/nroff-mode.el Tue Jul 18 21:41:16 1995 +0000 +++ b/lisp/textmodes/nroff-mode.el Tue Jul 18 21:43:16 1995 +0000 @@ -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 @@ (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)