Suppress spurious second invocation of before-change-functions
[bpt/emacs.git] / lisp / finder.el
index e72424a..682fc1d 100644 (file)
@@ -1,7 +1,7 @@
 ;;; finder.el --- topic & keyword-based code finder
 
 ;; Copyright (C) 1992, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005,
-;;   2006, 2007, 2008  Free Software Foundation, Inc.
+;;   2006, 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
 
 ;; Author: Eric S. Raymond <esr@snark.thyrsus.com>
 ;; Created: 16 Jun 1992
@@ -87,7 +87,8 @@
     ))
 
 (defvar finder-mode-map
-  (let ((map (make-sparse-keymap)))
+  (let ((map (make-sparse-keymap))
+       (menu-map (make-sparse-keymap "Finder")))
     (define-key map " "        'finder-select)
     (define-key map "f"        'finder-select)
     (define-key map [follow-link] 'mouse-face)
     (define-key map "p" 'previous-line)
     (define-key map "q"        'finder-exit)
     (define-key map "d"        'finder-list-keywords)
+
+    (define-key map [menu-bar finder-mode]
+      (cons "Finder" menu-map))
+    (define-key menu-map [finder-exit]
+      '(menu-item "Quit" finder-exit
+                 :help "Exit Finder mode"))
+    (define-key menu-map [finder-summary]
+      '(menu-item "Summary" finder-summary
+                 :help "Summary item on current line in a finder buffer"))
+    (define-key menu-map [finder-list-keywords]
+      '(menu-item "List keywords" finder-list-keywords
+                 :help "Display descriptions of the keywords in the Finder buffer"))
+    (define-key menu-map [finder-select]
+      '(menu-item "Select" finder-select
+                 :help "Select item on current line in a finder buffer"))
     map))
 
 (defvar finder-mode-syntax-table
@@ -141,7 +157,7 @@ no arguments compiles from `load-path'."
     (setq buffer-undo-list t)
     (erase-buffer)
     (insert (autoload-rubric generated-finder-keywords-file
-                             "keyword-to-package mapping"))
+                             "keyword-to-package mapping" t))
     (search-backward "\f")
     (insert "(setq finder-package-info '(\n")
     (let (processed summary keywords)
@@ -286,7 +302,6 @@ FILE should be in a form suitable for passing to `locate-library'."
     (or str (error "Can't find any Commentary section"))
     ;; This used to use *Finder* but that would clobber the
     ;; directory of categories.
-    (delete-other-windows)
     (pop-to-buffer "*Finder-package*")
     (setq buffer-read-only nil
           buffer-undo-list t)
@@ -333,8 +348,7 @@ FILE should be in a form suitable for passing to `locate-library'."
 (defun finder-mouse-select (event)
   "Select item in a finder buffer with the mouse."
   (interactive "e")
-  (save-excursion
-    (set-buffer (window-buffer (posn-window (event-start event))))
+  (with-current-buffer (window-buffer (posn-window (event-start event)))
     (goto-char (posn-point (event-start event)))
     (finder-select)))