X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/61e938eb8bc86570c2d86ba23c67300145f85181..4b57301e7e3d5bd4701ce705a5dc7dddb37cb1e1:/lisp/finder.el diff --git a/lisp/finder.el b/lisp/finder.el index 0bd001752f..d1438dbf17 100644 --- a/lisp/finder.el +++ b/lisp/finder.el @@ -1,6 +1,7 @@ ;;; finder.el --- topic & keyword-based code finder -;; Copyright (C) 1992, 1997, 1998, 1999, 2001 Free Software Foundation, Inc. +;; Copyright (C) 1992, 1997, 1998, 1999, 2001, 2002, 2003, +;; 2004, 2005, 2006, 2007 Free Software Foundation, Inc. ;; Author: Eric S. Raymond ;; Created: 16 Jun 1992 @@ -11,7 +12,7 @@ ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) +;; the Free Software Foundation; either version 3, or (at your option) ;; any later version. ;; GNU Emacs is distributed in the hope that it will be useful, @@ -21,8 +22,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -61,7 +62,7 @@ (calendar . "calendar and time management support") (comm . "communications, networking, remote access to files") (convenience . "convenience features for faster editing") - (data . "support editing files of data") + (data . "support for editing files of data") (docs . "support for Emacs documentation") (emulations . "emulations of other editors") (extensions . "Emacs Lisp language extensions") @@ -87,25 +88,27 @@ (outlines . "support for hierarchical outlining") (processes . "process, subshell, compilation, and job control support") (terminals . "support for terminal types") - (tex . "code related to the TeX formatter") + (tex . "supporting code for the TeX formatter") (tools . "programming tools") - (unix . "front-ends/assistants for, or emulators of, UNIX features") + (unix . "front-ends/assistants for, or emulators of, UNIX-like features") ;; Not a custom group and not currently useful. ;; (vms . "support code for vms") (wp . "word processing") )) -(defvar finder-mode-map nil) -(or finder-mode-map - (let ((map (make-sparse-keymap))) - (define-key map " " 'finder-select) - (define-key map "f" 'finder-select) - (define-key map [mouse-2] 'finder-mouse-select) - (define-key map "\C-m" 'finder-select) - (define-key map "?" 'finder-summary) - (define-key map "q" 'finder-exit) - (define-key map "d" 'finder-list-keywords) - (setq finder-mode-map map))) +(defvar finder-mode-map + (let ((map (make-sparse-keymap))) + (define-key map " " 'finder-select) + (define-key map "f" 'finder-select) + (define-key map [follow-link] 'mouse-face) + (define-key map [mouse-2] 'finder-mouse-select) + (define-key map "\C-m" 'finder-select) + (define-key map "?" 'finder-summary) + (define-key map "n" 'next-line) + (define-key map "p" 'previous-line) + (define-key map "q" 'finder-exit) + (define-key map "d" 'finder-list-keywords) + map)) ;;; Code for regenerating the keyword list. @@ -131,7 +134,7 @@ no arguments compiles from `load-path'." (insert ";; Don't edit this file. It's generated by finder.el\n\n") (insert ";;; Code:\n") (insert "\n(setq finder-package-info '(\n") - (mapcar + (mapc (lambda (d) (when (file-exists-p (directory-file-name d)) (message "Directory %s" d) @@ -176,14 +179,14 @@ no arguments compiles from `load-path'." \(provide '" (file-name-sans-extension (file-name-nondirectory generated-finder-keywords-file)) ") -;;; Local Variables: -;;; version-control: never -;;; no-byte-compile: t -;;; no-update-autoloads: t -;;; End: -;;; " (file-name-nondirectory generated-finder-keywords-file) " ends here\n") +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; End: +\;;; " (file-name-nondirectory generated-finder-keywords-file) " ends here\n") (kill-buffer "*finder-scratch*") - (eval-current-buffer) ;; So we get the new keyword list immediately + (eval-buffer) ;; So we get the new keyword list immediately (basic-save-buffer)))) (defun finder-compile-keywords-make-dist () @@ -204,7 +207,7 @@ no arguments compiles from `load-path'." (defun finder-mouse-face-on-line () "Put `mouse-face' and `help-echo' properties on the previous line." (save-excursion - (previous-line 1) + (forward-line -1) (unless finder-help-echo (setq finder-help-echo (let* ((keys1 (where-is-internal 'finder-select @@ -302,11 +305,13 @@ FILE should be in a form suitable for passing to `locate-library'." (finder-summary))) (defun finder-current-item () - (if (and finder-headmark (< (point) finder-headmark)) - (error "No keyword or filename on this line") - (save-excursion - (beginning-of-line) - (current-word)))) + (let ((key (save-excursion + (beginning-of-line) + (current-word)))) + (if (or (and finder-headmark (< (point) finder-headmark)) + (= (length key) 0)) + (error "No keyword or filename on this line") + key))) (defun finder-select () "Select item on current line in a finder buffer." @@ -336,13 +341,13 @@ FILE should be in a form suitable for passing to `locate-library'." \\[finder-select] more help for the item on the current line \\[finder-exit] exit Finder mode and kill the Finder buffer." (interactive) + (kill-all-local-variables) (use-local-map finder-mode-map) (set-syntax-table emacs-lisp-mode-syntax-table) (setq mode-name "Finder") (setq major-mode 'finder-mode) - (make-local-variable 'finder-headmark) - (setq finder-headmark nil) - (run-hooks 'finder-mode-hook)) + (set (make-local-variable 'finder-headmark) nil) + (run-mode-hooks 'finder-mode-hook)) (defun finder-summary () "Summarize basic Finder commands." @@ -367,5 +372,5 @@ finder directory, \\[finder-exit] = quit, \\[finder-summary] = help"))) (provide 'finder) -;;; arch-tag: ec85ff49-8cb8-41f5-a63f-9131d53ce2c5 +;; arch-tag: ec85ff49-8cb8-41f5-a63f-9131d53ce2c5 ;;; finder.el ends here