# HG changeset patch # User Masatake YAMATO # Date 1131300094 0 # Node ID 66a34cb7272dcdbfec2d4436fd384b8c12b6bc65 # Parent c0f0ecaa0096c7040280106a3e0ec80cdf87cdc9 Improve man -k support. (Man-reference-regexp): Accpet spaces between `Man-name-regexp' and `Man-section-regexp'. (Man-apropos-regexp): New variable. (Man-abstract-xref-man-page): Use value for `Man-target-string' if available. (Man-highlight-references, Man-highlight-references0): Handle the case when `Man-arguments' includes "-k". (Man-highlight-references0): Rename the argument `TARGET-POS' to `TARGET'. `TARGET' can be a number, function or nil. diff -r c0f0ecaa0096 -r 66a34cb7272d lisp/ChangeLog --- a/lisp/ChangeLog Sun Nov 06 13:32:42 2005 +0000 +++ b/lisp/ChangeLog Sun Nov 06 18:01:34 2005 +0000 @@ -1,3 +1,15 @@ +2005-11-07 Masatake YAMATO + + * man.el (Man-reference-regexp): Accpet spaces between + `Man-name-regexp' and `Man-section-regexp'. + (Man-apropos-regexp): New variable. + (Man-abstract-xref-man-page): Use value for `Man-target-string' + if available. + (Man-highlight-references, Man-highlight-references0): Handle + the case when `Man-arguments' includes "-k". + (Man-highlight-references0): Rename the argument `TARGET-POS' to + `TARGET'. `TARGET' can be a number, function or nil. + 2005-11-06 Nick Roberts * progmodes/gdb-ui.el (gdb-var-create-handler, gdb-var-delete) diff -r c0f0ecaa0096 -r 66a34cb7272d lisp/man.el --- a/lisp/man.el Sun Nov 06 13:32:42 2005 +0000 +++ b/lisp/man.el Sun Nov 06 18:01:34 2005 +0000 @@ -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.") @@ -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 @@ -918,9 +923,20 @@ 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)) + (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 dummy + 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 @@ -929,21 +945,30 @@ 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.