;; Copyright (C) 2000 Free Software Foundation, Inc.
-;; Author: Francis J. Wright <F.J.Wright@Maths.QMW.ac.uk>
-;; Maintainer: Francis J. Wright <F.J.Wright@Maths.QMW.ac.uk>
-;; Keywords: help, man, UN*X, manual
-;; Adapted-By: Eli Zaretskii <eliz@is.elta.co.il>
-;; Version: see `woman-version'
-;; URL: http://centaur.maths.qmw.ac.uk/Emacs/WoMan/
+;; Author: Francis J. Wright <F.J.Wright@Maths.QMW.ac.uk>
+;; Maintainer: Francis J. Wright <F.J.Wright@Maths.QMW.ac.uk>
+;; Keywords: help, man, UN*X, manual
+;; Adapted-By: Eli Zaretskii <eliz@is.elta.co.il>
+;; Version: see `woman-version'
+;; URL: http://centaur.maths.qmw.ac.uk/Emacs/WoMan/
;; This file is part of GNU Emacs.
:group 'woman)
(defcustom woman-man.conf-path
- '("/etc" "/usr/local/lib")
+ '("/etc" "/etc/manpath.config" "/usr/local/lib")
"*List of dirs to search and/or files to try for man config file.
Default is '(\"/etc\" \"/usr/local/lib\") [for GNU/Linux, Cygwin resp.]
A trailing separator (`/' for UNIX etc.) on directories is optional
Look in `woman-man.conf-path' and return a value for `woman-manpath'.
Concatenate data from all lines in the config file of the form
-MANPATH /usr/man"
+ MANPATH /usr/man
+
+or
+
+ MANDATORY_MANPATH /usr/man"
;; Functionality suggested by Charles Curley.
(let ((path woman-man.conf-path)
file manpath)
(with-temp-buffer
(insert-file-contents file)
(while (re-search-forward
- "^[ \t]*MANPATH[ \t]+\\(\\S-+\\)" nil t)
- (setq manpath (cons (match-string 1) manpath)))
+ "^[ \t]*\\(MANDATORY_\\)?MANPATH[ \t]+\\(\\S-+\\)" nil t)
+ (setq manpath (cons (match-string 2) manpath)))
manpath))
))
(setq path (cdr path)))
(or
(and manpath (woman-parse-colon-path manpath))
(woman-parse-man.conf)
- '("/usr/man" "/usr/local/man")
+ '("/usr/man" "/usr/share/man" "/usr/local/man")
))
"*List of DIRECTORY TREES to search for UN*X manual files.
Each element should be the name of a directory that contains
:type 'boolean
:group 'woman-faces)
+;; This is overkill! Troff uses just italic; Nroff uses just underline.
+;; You should probably select either italic or underline as you prefer, but
+;; not both, although italic and underline work together perfectly well!
(defface woman-italic-face
- `((t (:italic t :underline t :foreground "red")))
- "Face for italic font in man pages.
-Default: italic, underlined, foreground red.
-This is overkill! Troff uses just italic\; Nroff uses just underline.
-You should probably select either italic or underline as you prefer,
-but not both, although italic and underline work together perfectly well!"
+ `((((background light)) (:italic t :underline t :foreground "red"))
+ (((background dark)) (:italic t :underline t)))
+ "Face for italic font in man pages."
:group 'woman-faces)
(defface woman-bold-face
- '((t (:bold t :foreground "blue")))
- "Face for bold font in man pages.
-Default: bold, foreground blue."
+ '((((background light)) (:bold t :foreground "blue"))
+ (((background dark)) (:bold t :foreground "green2")))
+ "Face for bold font in man pages."
:group 'woman-faces)
+;; Brown is a good compromise: it is distinguishable from the default
+;; but not enough so to make font errors look terrible. (Files that use
+;; non-standard fonts seem to do so badly or in idiosyncratic ways!)
(defface woman-unknown-face
- '((t (:foreground "brown")))
- "Face for all unknown fonts in man pages.
-Default: foreground brown.
-Brown is a good compromise: it is distinguishable from the default but
-not enough so to make font errors look terrible. (Files that use
-non-standard fonts seem to do so badly or in idiosyncratic ways!)"
+ '((((background light)) (:foreground "brown"))
+ (((background dark)) (:foreground "cyan")))
+ "Face for all unknown fonts in man pages."
:group 'woman-faces)
(defface woman-addition-face
Default: foreground orange."
:group 'woman-faces)
-(defun woman-colour-faces ()
- "Set foreground colours of italic and bold faces to red and blue."
+(defun woman-default-faces ()
+ "Set foreground colours of italic and bold faces to their default values."
(interactive)
- (set-face-foreground 'woman-italic-face "Red")
- (set-face-foreground 'woman-bold-face "Blue"))
+ (face-spec-set 'woman-italic-face
+ (face-user-default-spec 'woman-italic-face))
+ (face-spec-set 'woman-bold-face (face-user-default-spec 'woman-bold-face)))
-(defun woman-black-faces ()
- "Set foreground colours of italic and bold faces both to black."
+(defun woman-monochrome-faces ()
+ "Set foreground colours of italic and bold faces to that of the default face.
+This is usually either black or white."
(interactive)
- (set-face-foreground 'woman-italic-face "Black")
- (set-face-foreground 'woman-bold-face "Black"))
+ (set-face-foreground 'woman-italic-face 'unspecified)
+ (set-face-foreground 'woman-bold-face 'unspecified))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Experimental font support, initially only for MS-Windows.
["Use Full Frame Width" woman-toggle-fill-frame
:active t :style toggle :selected woman-fill-frame]
["Reformat Last Man Page" woman-reformat-last-file t]
- ["Use Coloured Main Faces" woman-colour-faces t]
- ["Use Black Main Faces" woman-black-faces t]
+ ["Use Monochrome Main Faces" woman-monochrome-faces t]
+ ["Use Default Main Faces" woman-default-faces t]
["Make Contents Menu" (woman-imenu t) (not woman-imenu-done)]
"--"
["Describe (Wo)Man Mode" describe-mode t]
;; Highlight reference when mouse is over it.
;; (NB: WoMan does not hyphenate!)
;; [See (elisp)Clickable Text]
- (put-text-property (match-beginning 1) (match-end 1)
- 'mouse-face 'highlight)
+ (add-text-properties (match-beginning 1) (match-end 1)
+ '(mouse-face highlight
+ help-echo "mouse-2: display this man page"))
))))
\f
logging the message."
(save-excursion
(set-buffer (get-buffer-create "*WoMan-Log*"))
+ (setq buffer-read-only nil)
(goto-char (point-max))
(or end (insert " ")) (insert string "\n")
(if end