From: Dan Nicolaescu Date: Tue, 4 Apr 2006 16:46:03 +0000 (+0000) Subject: * man.el (Man-mode-map): Restore the \r binding. X-Git-Tag: emacs-pretest-22.0.90~3329 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=707f55b0d621c9b1815588420a0bdf3baf4273e1;p=emacs.git * man.el (Man-mode-map): Restore the \r binding. (Man-abstract-xref-man-page): If Man-target-string is a function, call it. (Man-highlight-references): Use Man-default-man-entry to get the target. Deal with xrefs too. (Man-highlight-references0): Don't call the target function. * woman.el (WoMan-xref-man-page): Strip the section number, woman cannot deal with it. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 532dc341c14..4eea80ee200 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,15 @@ +2006-04-04 Dan Nicolaescu + + * man.el (Man-mode-map): Restore the \r binding. + (Man-abstract-xref-man-page): If Man-target-string is a function, + call it. + (Man-highlight-references): Use Man-default-man-entry to get the + target. Deal with xrefs too. + (Man-highlight-references0): Don't call the target function. + + * woman.el (WoMan-xref-man-page): Strip the section number, woman + cannot deal with it. + 2006-04-04 Daiki Ueno * pgg-gpg.el: Clean up process buffers every time gpg processes diff --git a/lisp/man.el b/lisp/man.el index 706961b0450..77c089b9d8d 100644 --- a/lisp/man.el +++ b/lisp/man.el @@ -416,6 +416,9 @@ Otherwise, the value is whatever the function (define-key Man-mode-map "k" 'Man-kill) (define-key Man-mode-map "q" 'Man-quit) (define-key Man-mode-map "m" 'man) + ;; Not all the man references get buttons currently. The text in the + ;; manual page can contain references to other man pages + (define-key Man-mode-map "\r" 'man-follow) (define-key Man-mode-map "?" 'describe-mode)) ;; buttons @@ -423,10 +426,13 @@ Otherwise, the value is whatever the function 'follow-link t 'help-echo "mouse-2, RET: display this man page" 'func nil - 'action (lambda (button) (funcall - (button-get button 'func) - (or (button-get button 'Man-target-string) - (button-label button))))) + 'action (lambda (button) + (funcall + (button-get button 'func) + (let ((func (button-get button 'Man-target-string))) + (if func + (if (functionp func) (funcall func) func) + (button-label button)))))) (define-button-type 'Man-xref-man-page :supertype 'Man-abstract-xref-man-page @@ -929,15 +935,14 @@ default type, `Man-xref-man-page' is used for the buttons." (setq Man-arguments "")) (if (string-match "-k " Man-arguments) (progn - (Man-highlight-references0 nil Man-reference-regexp 1 nil + (Man-highlight-references0 nil Man-reference-regexp 1 + 'Man-default-man-entry (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))) + 'Man-default-man-entry (or xref-man-type 'Man-xref-man-page))) - (Man-highlight-references0 Man-see-also-regexp Man-reference-regexp 1 nil + (Man-highlight-references0 Man-see-also-regexp Man-reference-regexp 1 + 'Man-default-man-entry (or xref-man-type 'Man-xref-man-page)) (Man-highlight-references0 Man-synopsis-regexp Man-header-regexp 0 2 'Man-xref-header-file) @@ -966,7 +971,7 @@ default type, `Man-xref-man-page' is used for the buttons." ((numberp target) (match-string target)) ((functionp target) - (funcall target)) + target) (t nil))))))) (defun Man-cleanup-manpage (&optional interactive) diff --git a/lisp/woman.el b/lisp/woman.el index 22fcc0e3f62..1aa5ce25716 100644 --- a/lisp/woman.el +++ b/lisp/woman.el @@ -428,7 +428,13 @@ (require 'button) (define-button-type 'WoMan-xref-man-page :supertype 'Man-abstract-xref-man-page - 'func 'woman) + 'func (lambda (arg) + (woman + ;; `woman' cannot deal with arguments that contain a + ;; section name, like close(2), so strip the section name. + (if (string-match Man-reference-regexp arg) + (subqstring arg 0 (match-end 1)) + arg)))) (eval-when-compile ; to avoid compiler warnings (require 'dired)