aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorKarl Heuer1997-09-30 07:36:28 +0000
committerKarl Heuer1997-09-30 07:36:28 +0000
commitf3b330d6d810be33ddf73e1b5375b602e086497b (patch)
tree7445af6887986ee953a5483e18cb45a39f53585c /lisp
parent274c59c95c6eb90a3eed5adba9c213a8a0e5d9c0 (diff)
downloademacs-f3b330d6d810be33ddf73e1b5375b602e086497b.tar.gz
emacs-f3b330d6d810be33ddf73e1b5375b602e086497b.zip
(finder-mode-map): Bind [mouse-2].
(finder-compile-keywords): Match compressed file names, but don't put compression extension in the output. (finder-find-library): Deleted. (finder-commentary): Use locate-library, not finder-find-library. (finder-mouse-select): New function. (finder-summary): Mention mouse binding. (finder-exit): Kill "*Finder Category*" buffer too. Avoid error from deleting sole window.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/finder.el59
1 files changed, 35 insertions, 24 deletions
diff --git a/lisp/finder.el b/lisp/finder.el
index 57f5d331b0e..19929e080fb 100644
--- a/lisp/finder.el
+++ b/lisp/finder.el
@@ -1,6 +1,6 @@
1;;; finder.el --- topic & keyword-based code finder 1;;; finder.el --- topic & keyword-based code finder
2 2
3;; Copyright (C) 1992 Free Software Foundation, Inc. 3;; Copyright (C) 1992, 1997 Free Software Foundation, Inc.
4 4
5;; Author: Eric S. Raymond <esr@snark.thyrsus.com> 5;; Author: Eric S. Raymond <esr@snark.thyrsus.com>
6;; Created: 16 Jun 1992 6;; Created: 16 Jun 1992
@@ -87,6 +87,7 @@
87 (let ((map (make-sparse-keymap))) 87 (let ((map (make-sparse-keymap)))
88 (define-key map " " 'finder-select) 88 (define-key map " " 'finder-select)
89 (define-key map "f" 'finder-select) 89 (define-key map "f" 'finder-select)
90 (define-key map [mouse-2] 'finder-mouse-select)
90 (define-key map "\C-m" 'finder-select) 91 (define-key map "\C-m" 'finder-select)
91 (define-key map "?" 'finder-summary) 92 (define-key map "?" 'finder-summary)
92 (define-key map "q" 'finder-exit) 93 (define-key map "q" 'finder-exit)
@@ -117,7 +118,12 @@ arguments compiles from `load-path'."
117 (lambda (d) 118 (lambda (d)
118 (mapcar 119 (mapcar
119 (lambda (f) 120 (lambda (f)
120 (if (and (string-match "^[^=.].*\\.el$" f) 121 (if (and (or (string-match "^[^=].*\\.el$" f)
122 ;; Allow compressed files also. Fixme:
123 ;; generalize this, especially for
124 ;; MS-DOG-type filenames.
125 (and (string-match "^[^=].*\\.el\\.\\(gz\\|Z\\)$" f)
126 (require 'jka-compr)))
121 (not (member f processed))) 127 (not (member f processed)))
122 (let (summary keystart keywords) 128 (let (summary keystart keywords)
123 (setq processed (cons f processed)) 129 (setq processed (cons f processed))
@@ -130,7 +136,10 @@ arguments compiles from `load-path'."
130 (setq summary (lm-synopsis)) 136 (setq summary (lm-synopsis))
131 (setq keywords (lm-keywords))) 137 (setq keywords (lm-keywords)))
132 (insert 138 (insert
133 (format " (\"%s\"\n " f)) 139 (format " (\"%s\"\n "
140 (if (string-match "\\.\\(gz\\|Z\\)$" f)
141 (file-name-sans-extension f)
142 f)))
134 (prin1 summary (current-buffer)) 143 (prin1 summary (current-buffer))
135 (insert 144 (insert
136 "\n ") 145 "\n ")
@@ -215,23 +224,9 @@ arguments compiles from `load-path'."
215 (shrink-window-if-larger-than-buffer) 224 (shrink-window-if-larger-than-buffer)
216 (finder-summary))) 225 (finder-summary)))
217 226
218;; Search for a file named FILE the same way `load' would search.
219(defun finder-find-library (file)
220 (if (file-name-absolute-p file)
221 file
222 (let ((dirs load-path)
223 found)
224 (while (and dirs (not found))
225 (if (file-exists-p (expand-file-name (concat file ".el") (car dirs)))
226 (setq found (expand-file-name file (car dirs)))
227 (if (file-exists-p (expand-file-name file (car dirs)))
228 (setq found (expand-file-name file (car dirs)))))
229 (setq dirs (cdr dirs)))
230 found)))
231
232(defun finder-commentary (file) 227(defun finder-commentary (file)
233 (interactive) 228 (interactive)
234 (let* ((str (lm-commentary (finder-find-library file)))) 229 (let* ((str (lm-commentary (locate-library file))))
235 (if (null str) 230 (if (null str)
236 (error "Can't find any Commentary section")) 231 (error "Can't find any Commentary section"))
237 (pop-to-buffer "*Finder*") 232 (pop-to-buffer "*Finder*")
@@ -261,9 +256,17 @@ arguments compiles from `load-path'."
261(defun finder-select () 256(defun finder-select ()
262 (interactive) 257 (interactive)
263 (let ((key (finder-current-item))) 258 (let ((key (finder-current-item)))
264 (if (string-match "\\.el$" key) 259 (if (string-match "\\.el$" key)
265 (finder-commentary key) 260 (finder-commentary key)
266 (finder-list-matches key)))) 261 (finder-list-matches key))))
262
263(defun finder-mouse-select (event)
264 (interactive "e")
265 (save-excursion
266 (set-buffer (window-buffer (posn-window (event-start event))))
267 (goto-char (posn-point (event-start event)))
268 (let ((key (finder-current-item)))
269 (finder-select))))
267 270
268(defun finder-by-keyword () 271(defun finder-by-keyword ()
269 "Find packages matching a given keyword." 272 "Find packages matching a given keyword."
@@ -289,13 +292,21 @@ arguments compiles from `load-path'."
289 (interactive) 292 (interactive)
290 (message "%s" 293 (message "%s"
291 (substitute-command-keys 294 (substitute-command-keys
292 "\\<finder-mode-map>\\[finder-select] = select, \\[finder-list-keywords] = to finder directory, \\[finder-exit] = quit, \\[finder-summary] = help"))) 295 "\\<finder-mode-map>\\[finder-select] = select, \\[finder-mouse-select] = select, \\[finder-list-keywords] = to finder directory, \\[finder-exit] = quit, \\[finder-summary] = help")))
293 296
294(defun finder-exit () 297(defun finder-exit ()
295 "Exit Finder mode and kill the buffer" 298 "Exit Finder mode and kill the buffer"
296 (interactive) 299 (interactive)
297 (delete-window) 300 (condition-case nil ; might be sole window
298 (kill-buffer "*Finder*")) 301 (delete-window)
302 (error nil))
303 ;; Can happen in either buffer -- kill each of the two that exists
304 (condition-case nil
305 (kill-buffer "*Finder*")
306 (error nil))
307 (condition-case nil
308 (kill-buffer "*Finder Category*")
309 (error nil)))
299 310
300(provide 'finder) 311(provide 'finder)
301 312