From: Masatake YAMATO Date: Sun, 6 Nov 2005 18:01:34 +0000 (+0000) Subject: Improve man -k support. X-Git-Tag: emacs-pretest-22.0.90~6030 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=30abc4f43e8696fc0e6696acd372187139e6a596;p=emacs.git 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 --git a/lisp/ChangeLog b/lisp/ChangeLog index 2dafec8dcd6..6c36e3ae86b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -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 --git a/lisp/man.el b/lisp/man.el index c54a00d3663..30ab44efad0 100644 --- a/lisp/man.el +++ b/lisp/man.el @@ -286,9 +286,13 @@ This regexp should not start with a `^' character.") 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 @@ Otherwise, the value is whatever the function '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 @@ header file (#include ) 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)) + (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 @@ in SEE ALSO section. If it is nil, default type, 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.