From a41284da64e27af4becf2c03069428af8c6c721e Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Mon, 13 Jan 1997 08:45:17 +0000 Subject: [PATCH] (occur-mode-map): Bind g to revert-buffer. (occur-mode): Locally bind revert-buffer-function. (occur-command-arguments): New variable. (occur-revert-function): New function. (occur): Set occur-command-arguments. --- lisp/replace.el | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/lisp/replace.el b/lisp/replace.el index 95b791aec39..086fea67455 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -241,11 +241,14 @@ Applies to lines after point." (setq occur-mode-map (make-sparse-keymap)) (define-key occur-mode-map [mouse-2] 'occur-mode-mouse-goto) (define-key occur-mode-map "\C-c\C-c" 'occur-mode-goto-occurrence) - (define-key occur-mode-map "\C-m" 'occur-mode-goto-occurrence)) + (define-key occur-mode-map "\C-m" 'occur-mode-goto-occurrence) + (define-key occur-mode-map "g" 'revert-buffer)) (defvar occur-buffer nil) (defvar occur-nlines nil) (defvar occur-pos-list nil) +(defvar occur-command-arguments nil + "Arguments that were given to `occur' when it made this buffer.") (defun occur-mode () "Major mode for output from \\[occur]. @@ -258,11 +261,21 @@ Alternatively, click \\[occur-mode-mouse-goto] on an item to go to it. (use-local-map occur-mode-map) (setq major-mode 'occur-mode) (setq mode-name "Occur") + (make-local-variable 'revert-buffer-function) + (setq revert-buffer-function 'occur-revert-function) (make-local-variable 'occur-buffer) (make-local-variable 'occur-nlines) (make-local-variable 'occur-pos-list) + (make-local-variable 'occur-command-arguments) (run-hooks 'occur-mode-hook)) +;; Handle revert-buffer for *Occur* buffers. +(defun occur-revert-function (ignore1 ignore2) + (let ((args occur-command-arguments )) + (save-excursion + (set-buffer occur-buffer) + (apply 'occur args)))) + (defun occur-mode-mouse-goto (event) "In Occur mode, go to the occurrence whose line you click on." (interactive "e") @@ -380,7 +393,9 @@ It serves as a menu to find any of the occurrences in this buffer. (occur-mode) (setq occur-buffer buffer) (setq occur-nlines nlines) - (setq occur-pos-list ())) + (setq occur-pos-list ()) + (setq occur-command-arguments + (list regexp nlines))) (if (eq buffer standard-output) (goto-char (point-max))) (save-excursion -- 2.39.2