;;; woman.el --- browse UN*X manual pages `wo (without) man'
-;; Copyright (C) 2000-2015 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2016 Free Software Foundation, Inc.
;; Author: Francis J. Wright <F.J.Wright@qmul.ac.uk>
;; Maintainer: emacs-devel@gnu.org
(defcustom woman-dired-keys t
"List of `dired' mode keys to define to run WoMan on current file.
-E.g. '(\"w\" \"W\"), or any non-null atom to automatically define
+E.g. (\"w\" \"W\"), or any non-null atom to automatically define
\"w\" and \"W\" if they are unbound, or nil to do nothing.
Default is t."
:type '(choice (const :tag "None" nil)
"Imenu support for Sections and Subsections.
An alist with elements of the form (MENU-TITLE REGEXP INDEX) --
see the documentation for `imenu-generic-expression'."
- :type 'sexp
+ :type '(alist :key-type (choice :tag "Title" (const nil) string)
+ :value-type (group (choice (string :tag "Regexp")
+ function)
+ integer))
:group 'woman-interface)
(defcustom woman-imenu nil
(defvar woman-file-regexp nil
"Regexp used to select (possibly compressed) man source files, e.g.
-\"\\.\\([0-9lmnt]\\w*\\)\\(\\.\\(g?z\\|bz2\\|xz\\)\\)?\\'\".
+\"\\.\\([0-9lmnt]\\w*\\)\\(\\.\\(g?z\\|bz2\\|xz\\)\\)?\\\\='\".
Built automatically from the customizable user options
`woman-uncompressed-file-regexp' and `woman-file-compression-regexp'.")
in the ncurses package include `toe.1m', `form.3x', etc.
Note: an optional compression regexp will be appended, so this regexp
-MUST NOT end with any kind of string terminator such as $ or \\'."
+MUST NOT end with any kind of string terminator such as $ or \\\\='."
:type 'regexp
:set 'set-woman-file-regexp
:group 'woman-interface)
"Do not change this unless you are sure you know what you are doing!
Regexp used to match compressed man file extensions for which
decompressors are available and handled by auto-compression mode,
-e.g. \"\\\\.\\\\(g?z\\\\|bz2\\\\|xz\\\\)\\\\'\" for `gzip', `bzip2', or `xz'.
-Should begin with \\. and end with \\' and MUST NOT be optional."
+e.g. \"\\\\.\\\\(g?z\\\\|bz2\\\\|xz\\\\)\\\\\\='\" for `gzip', `bzip2', or `xz'.
+Should begin with \\. and end with \\\\=' and MUST NOT be optional."
;; Should be compatible with car of
;; `jka-compr-file-name-handler-entry', but that is unduly
;; complicated, includes an inappropriate extension (.tgz) and is
(defvar woman-if-conditions-true '(?n ?e ?o)
"List of one-character built-in condition names that are true.
Should include ?e, ?o (page even/odd) and either ?n (nroff) or ?t (troff).
-Default is '(?n ?e ?o). Set via `woman-emulation'.")
+Default is (?n ?e ?o). Set via `woman-emulation'.")
\f
;;; Specialized utility functions:
;; start in 19.34!
(save-excursion
(let ((case-fold-search t))
- ;; Co-operate with auto-compression mode:
+ ;; Cooperate with auto-compression mode:
(if (and compressed
(or (eq compressed t)
(string-match-p woman-file-compression-regexp filename))
(defvar woman-emulate-tbl nil
"True if WoMan should emulate the tbl preprocessor.
This applies to text between .TE and .TS directives.
-Currently set only from '\" t in the first line of the source file.")
+Currently set only from \\='\\\" t in the first line of the source file.")
(defun woman-decode-region (from _to)
"Decode the region between FROM and TO in UN*X man-page source format."
(defsubst woman-unescape (macro)
"Replace escape sequences in the body of MACRO.
-Replaces || by |, but | by \, where | denotes the internal escape."
+Replaces || by |, but | by \\, where | denotes the internal escape."
(let (start)
(while (setq start (string-match woman-unescape-regex macro start))
(setq macro
(defun woman-strings (&optional to)
"Process ?roff string requests and escape sequences up to buffer position TO.
Strings are defined/updated by `.ds xx string' requests and
-interpolated by `\*x' and `\*(xx' escapes."
+interpolated by `\\*x' and `\\*(xx' escapes."
;; Add support for .as and .rm?
(while
;; Find .ds requests and \* escapes:
(if (> (woman-parse-numeric-value) 0) 1 0))
)))
))
-; (if (looking-at "[ \t\nRC\)\"]") ; R, C are tab types
+; (if (looking-at "[ \t\nRC)\"]") ; R, C are tab types
; ()
; (WoMan-warn "Unimplemented numerical operator `%c' in %s"
; (following-char)
;; string-to-number returns 0 if number not parsed.
(string-to-number (match-string 0)))
((looking-at "\\\\n\\([-+]\\)?\\(?:\
-\\[\\([^]]+\\)\\]\\|\(\\(..\\)\\|\\(.\\)\\)")
+\\[\\([^]]+\\)\\]\\|(\\(..\\)\\|\\(.\\)\\)")
;; interpolate number register, maybe auto-incremented
(let* ((pm (match-string-no-properties 1))
(name (or (match-string-no-properties 2)
"Find and return start of next control line.
PAT, if non-nil, specifies an additional component of the control
line regexp to search for, which is appended to the default
-regexp, \"\\(\\\\c\\)?\\n[.']\"."
+regexp, \"\\(\\\\c\\)?\\n[.\\=']\"."
(let ((pattern (concat "\\(\\\\c\\)?\n[.']" pat))
to)
(save-excursion
(defun woman2-TH (to)
".TH n c x v m -- Begin a man page. Format paragraphs upto TO.
-n is the name of the page in chapter c\; x is extra commentary\;
+n is the name of the page in chapter c; x is extra commentary;
v alters page foot left; m alters page head center.
\(Should set prevailing indent and tabs to 5.)"
(woman-forward-arg 'unquote 'concat)
(goto-char from)))
(defun woman-horizontal-line ()
- "\\l'Nc' -- Draw a horizontal line of length N using character c, default _."
+ "\\l\\='Nc\\=' -- Draw a horizontal line of length N using character c, default _."
(delete-char -1)
(delete-char 1)
(looking-at "\\(.\\)\\(.*\\)\\1")
(defun woman2-ta (to)
".ta Nt ... -- Set tabs, left type, unless t=R(right), C(centered).
-\(Breaks, but should not.) The tab stops are separated by spaces\;
+\(Breaks, but should not.) The tab stops are separated by spaces;
a value preceded by + represents an increment to the previous stop value.
Format paragraphs upto TO."
(setq tab-stop-list nil)
(provide 'woman)
-\f
-;; Local Variables:
-;; coding: utf-8
-;; End:
-
;;; woman.el ends here