# HG changeset patch # User Glenn Morris # Date 1288945015 25200 # Node ID 672ffe8805607914b2977ccd05f43de6d7b4e41c # Parent 86b26e5fe3fc111750bfe4af1c368e4d1f9a0831 Quiet, woman. (Sorry...). * lisp/woman.el (woman0-roff-buffer, woman1-roff-buffer) (woman2-roff-buffer): Give local variable `request' a prefix. (woman0-macro): Rename argument `request' in the same way. (woman-request): New name for `request' dynamic variable. (woman-unquote, woman-forward-arg): Update for above name change. (woman1-roff-buffer): Give local variable `unquote' a prefix. (woman1-unquote): New name for `unquote' dynamic variable. (woman1-B-or-I, woman1-alt-fonts): Update for above name change. (woman-translations): Rename from `translations'. No longer global. (woman2-tr, woman-translate): Update for above name change. (woman-translate): Check for bound variable. (woman2-roff-buffer): Give local variable `translations' a prefix. diff -r 86b26e5fe3fc -r 672ffe880560 lisp/ChangeLog --- a/lisp/ChangeLog Fri Nov 05 00:41:47 2010 -0700 +++ b/lisp/ChangeLog Fri Nov 05 01:16:55 2010 -0700 @@ -1,5 +1,18 @@ 2010-11-05 Glenn Morris + * woman.el (woman0-roff-buffer, woman1-roff-buffer) + (woman2-roff-buffer): Give local variable `request' a prefix. + (woman0-macro): Rename argument `request' in the same way. + (woman-request): New name for `request' dynamic variable. + (woman-unquote, woman-forward-arg): Update for above name change. + (woman1-roff-buffer): Give local variable `unquote' a prefix. + (woman1-unquote): New name for `unquote' dynamic variable. + (woman1-B-or-I, woman1-alt-fonts): Update for above name change. + (woman-translations): Rename from `translations'. No longer global. + (woman2-tr, woman-translate): Update for above name change. + (woman-translate): Check for bound variable. + (woman2-roff-buffer): Give local variable `translations' a prefix. + * play/doctor.el: Give all local variables a prefix. Update callers. (doc$, doctor-put-meaning): Use backquote. diff -r 86b26e5fe3fc -r 672ffe880560 lisp/woman.el --- a/lisp/woman.el Fri Nov 05 00:41:47 2010 -0700 +++ b/lisp/woman.el Fri Nov 05 01:16:55 2010 -0700 @@ -2475,23 +2475,23 @@ Start at FROM and re-scan new text as appropriate." (goto-char from) (let ((woman0-if-to (make-marker)) - request woman0-macro-alist + woman-request woman0-macro-alist (woman0-search-regex-start woman0-search-regex-start) (woman0-search-regex (concat woman0-search-regex-start woman0-search-regex-end)) woman0-rename-alist) (set-marker-insertion-type woman0-if-to t) (while (re-search-forward woman0-search-regex nil t) - (setq request (match-string 1)) - (cond ((string= request "ig") (woman0-ig)) - ((string= request "if") (woman0-if "if")) - ((string= request "ie") (woman0-if "ie")) - ((string= request "el") (woman0-el)) - ((string= request "so") (woman0-so)) - ((string= request "rn") (woman0-rn)) - ((string= request "de") (woman0-de)) - ((string= request "am") (woman0-de 'append)) - (t (woman0-macro request)))) + (setq woman-request (match-string 1)) + (cond ((string= woman-request "ig") (woman0-ig)) + ((string= woman-request "if") (woman0-if "if")) + ((string= woman-request "ie") (woman0-if "ie")) + ((string= woman-request "el") (woman0-el)) + ((string= woman-request "so") (woman0-so)) + ((string= woman-request "rn") (woman0-rn)) + ((string= woman-request "de") (woman0-de)) + ((string= woman-request "am") (woman0-de 'append)) + (t (woman0-macro woman-request)))) (set-marker woman0-if-to nil) (woman0-rename) ;; Should now re-run `woman0-roff-buffer' if any renaming was @@ -2522,6 +2522,7 @@ (goto-char from) ; necessary! (woman2-process-escapes to 'numeric)) +;; request does not appear to be used dynamically by any callees. (defun woman0-if (request) ".if/ie c anything -- Discard unless c evaluates to true. Remember condition for use by a subsequent `.el'. @@ -2573,6 +2574,7 @@ (woman-if-ignore woman0-if-to request) ; ERROR! (woman-if-body request woman0-if-to (eq c negated))))) +;; request is not used dynamically by any callees. (defun woman-if-body (request to delete) ; should be reversed as `accept'? "Process if-body, including \\{ ... \\}. REQUEST is the invoking directive without the leading dot. @@ -2629,6 +2631,7 @@ (if (looking-at "[ \t]*\\{") (search-forward "\\}")) (forward-line 1)))) +;; request is not used dynamically by any callees. (defun woman-if-ignore (to request) "Ignore but warn about an if request ending at TO, named REQUEST." (WoMan-warn-ignored request "ignored -- condition not handled!") @@ -2760,15 +2763,17 @@ (beginning-of-line) ; delete .de/am line (woman-delete-line 1)) -(defun woman0-macro (request) - "Process the macro call named REQUEST." +;; request may be used dynamically (woman-interpolate-macro calls +;; woman-forward-arg). +(defun woman0-macro (woman-request) + "Process the macro call named WOMAN-REQUEST." ;; Leaves point at start of new text. - (let ((macro (assoc request woman0-macro-alist))) + (let ((macro (assoc woman-request woman0-macro-alist))) (if macro (woman-interpolate-macro (cdr macro)) ;; SHOULD DELETE THE UNINTERPRETED REQUEST!!!!! ;; Output this message once only per call (cf. strings)? - (WoMan-warn "Undefined macro %s not interpolated!" request)))) + (WoMan-warn "Undefined macro %s not interpolated!" woman-request)))) (defun woman-interpolate-macro (macro) "Interpolate (.de) or append (.am) expansion of MACRO into the buffer." @@ -2985,8 +2990,10 @@ ;;; Formatting macros that do not cause a break: -(defvar request) ; Bound locally by woman1-roff-buffer -(defvar unquote) ; Bound locally by woman1-roff-buffer +;; Bound locally by woman[012]-roff-buffer, and also, annoyingly and +;; confusingly, as a function argument. Use dynamically in +;; woman-unquote and woman-forward-arg. +(defvar woman-request) (defun woman-unquote (to) "Delete any double-quote characters between point and TO. @@ -3001,7 +3008,7 @@ (setq in-quote (not in-quote)) )) (if in-quote - (WoMan-warn "Unpaired \" in .%s arguments." request)))) + (WoMan-warn "Unpaired \" in .%s arguments." woman-request)))) (defsubst woman-unquote-args () "Delete any double-quote characters up to the end of the line." @@ -3010,7 +3017,7 @@ (defun woman1-roff-buffer () "Process non-breaking requests." (let ((case-fold-search t) - request fn unquote) + woman-request fn woman1-unquote) (while ;; Find next control line: (re-search-forward woman-request-regexp nil t) @@ -3018,14 +3025,14 @@ ;; Construct woman function to call: ((setq fn (intern-soft (concat "woman1-" - (setq request (match-string 1))))) + (setq woman-request (match-string 1))))) (if (get fn 'notfont) ; not a font-change request (funcall fn) ;; Delete request or macro name: (woman-delete-match 0) ;; If no args then apply to next line else unquote args - ;; (unquote is used by called function): - (setq unquote (not (eolp))) + ;; (woman1-unquote is used by called function): + (setq woman1-unquote (not (eolp))) (if (eolp) (delete-char 1)) ; ;; Hide leading control character in unquoted argument: ; (cond ((memq (following-char) '(?. ?')) @@ -3034,7 +3041,7 @@ ;; Call the appropriate function: (funcall fn) ;; Hide leading control character in quoted argument (only): - (if (and unquote (memq (following-char) '(?. ?'))) + (if (and woman1-unquote (memq (following-char) '(?. ?'))) (insert "\\&")))))))) ;;; Font-changing macros: @@ -3047,6 +3054,8 @@ ".I -- Set words of current line in italic font." (woman1-B-or-I ".ft I\n")) +(defvar woman1-unquote) ; bound locally by woman1-roff-buffer + (defun woman1-B-or-I (B-or-I) ".B/I -- Set words of current line in bold/italic font. B-OR-I is the appropriate complete control line." @@ -3055,7 +3064,7 @@ ;; Return to bol to process .SM/.B, .B/.if etc. ;; or start of first arg to hide leading control char. (save-excursion - (if unquote + (if woman1-unquote (woman-unquote-args) (while (looking-at "^[.']") (forward-line)) (end-of-line) @@ -3102,11 +3111,12 @@ ;; Return to start of first arg to hide leading control char: (save-excursion (setq fonts (cdr fonts)) - (woman-forward-arg unquote 'concat) ; unquote is bound above + ;; woman1-unquote is bound in woman1-roff-buffer. + (woman-forward-arg woman1-unquote 'concat) (while (not (eolp)) (insert (car fonts)) (setq fonts (cdr fonts)) - (woman-forward-arg unquote 'concat)) ; unquote is bound above + (woman-forward-arg woman1-unquote 'concat)) (insert "\\fR"))) (defun woman-forward-arg (&optional unquote concat) @@ -3123,7 +3133,7 @@ (re-search-forward "\"\\|$")) (if (eq (preceding-char) ?\") (if unquote (delete-char -1)) - (WoMan-warn "Unpaired \" in .%s arguments." request))) + (WoMan-warn "Unpaired \" in .%s arguments." woman-request))) ;; (re-search-forward "[^\\\n] \\|$") ; inconsistent (skip-syntax-forward "^ ")) (cond ((null concat) (skip-chars-forward " \t")) ; don't skip eol! @@ -3338,7 +3348,12 @@ ;;; Output translation: -(defvar translations nil) ; Also bound locally by woman2-roff-buffer +;; This is only set by woman2-tr. It is bound locally in woman2-roff-buffer. +;; It is also used by woman-translate. woman-translate may be called +;; outside the scope of woman2-roff-buffer (by experiment). Therefore +;; this used to be globally bound to nil, to avoid an error. Instead +;; we can use bound-and-true-p in woman-translate. +(defvar woman-translations) ;; A list of the form (\"[ace]\" (a . b) (c . d) (e . ?\ )) or nil. (defun woman-get-next-char () @@ -3358,8 +3373,8 @@ ;; This should be an update, but consing onto the front of the alist ;; has the same effect and match duplicates should not matter. ;; Initialize translation data structures: - (let ((matches (car translations)) - (alist (cdr translations)) + (let ((matches (car woman-translations)) + (alist (cdr woman-translations)) a b) ;; `matches' must be a string: (setq matches @@ -3381,15 +3396,15 @@ (if (= (string-to-char matches) ?\]) (substring matches 3) (concat "[" matches)) - translations (cons matches alist)) + woman-translations (cons matches alist)) ;; Format any following text: (woman2-format-paragraphs to))) (defsubst woman-translate (to) "Translate up to marker TO. Do this last of all transformations." - (if translations - (let ((matches (car translations)) - (alist (cdr translations)) + (if (bound-and-true-p woman-translations) + (let ((matches (car woman-translations)) + (alist (cdr woman-translations)) ;; Translations are case-sensitive, eg ".tr ab" does not ;; affect "A" (bug#6849). (case-fold-search nil)) @@ -3633,7 +3648,7 @@ (insert-and-inherit (symbol-function 'insert-and-inherit)) (set-text-properties (symbol-function 'set-text-properties)) (woman-registers woman-registers) - fn request translations + fn woman-request woman-translations tab-stop-list) (set-marker-insertion-type to t) ;; ?roff does not squeeze multiple spaces, but does fill, so... @@ -3649,13 +3664,13 @@ ;; Construct woman function to call: ((setq fn (intern-soft (concat "woman2-" - (setq request (match-string 1))))) + (setq woman-request (match-string 1))))) ;; Delete request or macro name: (woman-delete-match 0)) ;; Unrecognised request: ((prog1 nil - ;; (WoMan-warn ".%s request ignored!" request) - (WoMan-warn-ignored request "ignored!") + ;; (WoMan-warn ".%s request ignored!" woman-request) + (WoMan-warn-ignored woman-request "ignored!") ;; (setq fn 'woman2-LP) ;; AVOID LEAVING A BLANK LINE! ;; (setq fn 'woman2-format-paragraphs) @@ -4486,6 +4501,7 @@ (setq format (apply 'format format args)) (WoMan-log-1 (concat "** " format))) +;; request is not used dynamically by any callees. (defun WoMan-warn-ignored (request ignored) "Log a warning message about ignored directive REQUEST. IGNORED is a string appended to the log message." @@ -4557,5 +4573,4 @@ (provide 'woman) -;; arch-tag: eea35e90-552f-4712-a94b-d9ffd3db7651 ;;; woman.el ends here