kautz@allegra.UUCP (Henry Kautz) (09/02/88)
Here's a nice addition to the manual-entry command for unix systems which support the "man -k" option. -------------------------------- cut ----------------------------------------- ;;; unix-apropos command ;; USE: ;; M-x unix-apropos ;; prompts for keywords, and invokes man -k. Pops up window of possible ;; unix documentation. Move cursor to desired command and hit RETURN. ;; Command also bound to C-h u. ;;; This file is not part of the GNU Emacs distribution (yet). ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY. No author or distributor ;; accepts responsibility to anyone for the consequences of using it ;; or for whether it serves any particular purpose or works at all, ;; unless he says so in writing. Refer to the GNU Emacs General Public ;; License for full details. ;; Everyone is granted permission to copy, modify and redistribute ;; this file, but only under the conditions described in the ;; GNU Emacs General Public License. A copy of this license is ;; supposed to have been given to you along with GNU Emacs so you ;; can know your rights and responsibilities. It should be in a ;; file named COPYING. Among other things, the copyright notice ;; and this notice must be preserved on all copies. ;;; MODIFICATION HISTORY: ;;; 9/1/88, created by Henry Kautz ;;; uucp: allegra!kautz (provide 'unix-apropos) (global-set-key "\C-hu" 'unix-apropos) (defvar unix-apropos-map nil) (defun unix-apropos-get-man () "Get the manual entry for the current line" (interactive) (let (topic section) (interactive) (beginning-of-line 1) (looking-at "\\w*") (setq topic (buffer-substring (match-beginning 0) (match-end 0))) (re-search-forward "(\\([^)]*\\))") (setq section (downcase (buffer-substring (match-beginning 1) (match-end 1)))) (beginning-of-line 1) (manual-entry topic section) ) ) (defun unix-apropos (topic) "Display apropos for TOPIC" (interactive "sUnix apropos: ") (pop-to-buffer "*Unix Apropos*") (unix-apropos-mode)) (defun unix-apropos-mode () "<return> get manual entry; <space> next line; <delete> previous line a = unix apropos; h = describe mode" (setq buffer-read-only nil) (erase-buffer) (buffer-flush-undo (current-buffer)) (if (null unix-apropos-map) (progn (setq unix-apropos-map (make-sparse-keymap)) (define-key unix-apropos-map "\C-M" 'unix-apropos-get-man) (define-key unix-apropos-map " " 'next-line) (define-key unix-apropos-map "\C-?" 'previous-line) (define-key unix-apropos-map "u" 'unix-apropos) (define-key unix-apropos-map "a" 'unix-apropos) (define-key unix-apropos-map "h" 'describe-mode) (define-key unix-apropos-map "?" 'describe-mode) ) ) (use-local-map unix-apropos-map) (setq mode-name "Apropos") (setq major-mode 'unix-apropos-mode) (call-process "man" nil t nil "-k" topic) (setq buffer-read-only t) (goto-char (point-min)) )