Mercurial > emacs
diff lisp/man.el @ 90261:7beb78bc1f8e
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-97
Merge from emacs--cvs-trunk--0
Patches applied:
* emacs--cvs-trunk--0 (patch 616-696)
- Add lisp/mh-e/.arch-inventory
- Update from CVS
- Merge from gnus--rel--5.10
- Update from CVS: lisp/smerge-mode.el: Add 'tools' to file keywords.
- lisp/gnus/ChangeLog: Remove duplicate entry
* gnus--rel--5.10 (patch 147-181)
- Update from CVS
- Merge from emacs--cvs-trunk--0
- Update from CVS: lisp/mml.el (mml-preview): Doc fix.
- Update from CVS: texi/message.texi: Fix default values.
- Update from CVS: texi/gnus.texi (RSS): Addition.
author | Miles Bader <miles@gnu.org> |
---|---|
date | Mon, 16 Jan 2006 08:37:27 +0000 |
parents | 0ca0d9181b5e 8d679b71e742 |
children | d88caeac70d7 |
line wrap: on
line diff
--- a/lisp/man.el Mon Jan 16 06:59:21 2006 +0000 +++ b/lisp/man.el Mon Jan 16 08:37:27 2006 +0000 @@ -262,7 +262,7 @@ (defvar Man-name-regexp "[-a-zA-Z0-9_+][-a-zA-Z0-9_.:+]*" "Regular expression describing the name of a manpage (without section).") -(defvar Man-section-regexp "[0-9][a-zA-Z+]*\\|[LNln]" +(defvar Man-section-regexp "[0-9][a-zA-Z0-9+]*\\|[LNln]" "Regular expression describing a manpage section within parentheses.") (defvar Man-page-header-regexp @@ -286,9 +286,13 @@ This regular expression should start with a `^' character.") (defvar Man-reference-regexp - (concat "\\(" Man-name-regexp "\\)(\\(" Man-section-regexp "\\))") + (concat "\\(" Man-name-regexp "\\)[ \t]*(\\(" Man-section-regexp "\\))") "Regular expression describing a reference to another manpage.") +(defvar Man-apropos-regexp + (concat "\\\[\\(" Man-name-regexp "\\)\\\][ \t]*(\\(" Man-section-regexp "\\))") + "Regular expression describing a reference to manpages in \"man -k output\".") + (defvar Man-synopsis-regexp "SYNOPSIS" "Regular expression for SYNOPSIS heading (or your equivalent). This regexp should not start with a `^' character.") @@ -300,7 +304,7 @@ (defvar Man-include-regexp "#[ \t]*include[ \t]*" "Regular expression describing the #include (directive of cpp).") -(defvar Man-file-name-regexp "[^<>\" \t\n]+" +(defvar Man-file-name-regexp "[^<>\", \t\n]+" "Regular expression describing <> in #include line (directive of cpp).") (defvar Man-normal-file-prefix-regexp "[/~$]" @@ -421,7 +425,8 @@ 'func nil 'action (lambda (button) (funcall (button-get button 'func) - (button-label button)))) + (or (button-get button 'Man-target-string) + (button-label button))))) (define-button-type 'Man-xref-man-page :supertype 'Man-abstract-xref-man-page @@ -914,36 +919,55 @@ (defun Man-highlight-references (&optional xref-man-type) "Highlight the references on mouse-over. References include items in the SEE ALSO section, -header file (#include <foo.h>) and files in FILES. -If XREF-MAN-TYPE is used as the button type for items -in SEE ALSO section. If it is nil, default type, -`Man-xref-man-page' is used." - (let ((dummy 0)) - (Man-highlight-references0 - Man-see-also-regexp Man-reference-regexp 1 dummy - (or xref-man-type 'Man-xref-man-page)) - (Man-highlight-references0 - Man-synopsis-regexp Man-header-regexp 0 2 - 'Man-xref-header-file) - (Man-highlight-references0 - Man-files-regexp Man-normal-file-regexp 0 0 - 'Man-xref-normal-file))) +header file (#include <foo.h>), and files in FILES. +If optional argument XREF-MAN-TYPE is non-nil, it used as the +button type for items in SEE ALSO section. If it is nil, the +default type, `Man-xref-man-page' is used for the buttons." + ;; `Man-highlight-references' is used from woman.el, too. + ;; woman.el doesn't set `Man-arguments'. + (unless Man-arguments + (setq Man-arguments "")) + (if (string-match "-k " Man-arguments) + (progn + (Man-highlight-references0 nil Man-reference-regexp 1 nil + (or xref-man-type 'Man-xref-man-page)) + (Man-highlight-references0 nil Man-apropos-regexp 1 + (lambda () + (format "%s(%s)" + (match-string 1) + (match-string 2))) + (or xref-man-type 'Man-xref-man-page))) + (Man-highlight-references0 Man-see-also-regexp Man-reference-regexp 1 nil + (or xref-man-type 'Man-xref-man-page)) + (Man-highlight-references0 Man-synopsis-regexp Man-header-regexp 0 2 + 'Man-xref-header-file) + (Man-highlight-references0 Man-files-regexp Man-normal-file-regexp 0 0 + 'Man-xref-normal-file))) -(defun Man-highlight-references0 (start-section regexp button-pos target-pos type) +(defun Man-highlight-references0 (start-section regexp button-pos target type) ;; Based on `Man-build-references-alist' - (when (Man-find-section start-section) - (forward-line 1) - (let ((end (save-excursion - (Man-next-section 1) - (point)))) - (back-to-indentation) + (when (or (null start-section) + (Man-find-section start-section)) + (let ((end (if start-section + (progn + (forward-line 1) + (back-to-indentation) + (save-excursion + (Man-next-section 1) + (point))) + (goto-char (point-min)) + (point-max)))) (while (re-search-forward regexp end t) (make-text-button (match-beginning button-pos) (match-end button-pos) 'type type - 'Man-target-string (match-string target-pos) - ))))) + 'Man-target-string (cond + ((numberp target) + (match-string target)) + ((functionp target) + (funcall target)) + (t nil))))))) (defun Man-cleanup-manpage (&optional interactive) "Remove overstriking and underlining from the current buffer.