non-nil if the buffer is to be saved), and any other non-@code{nil}
value means that all buffers should be saved without asking.
- In addition to the normal compilation mode commands (for
-next/previous match and so on), two additional commands are available
-for accessing the @command{grep} command history. @kbd{l}
-(@code{grep-backward-history}) will re-run successively the previous
-@command{grep} commands, and @kbd{r} (@code{grep-forward-history}
-will go ``forward'' in the command history.
-
@findex grep-find
@findex find-grep
The command @kbd{M-x grep-find} (also available as @kbd{M-x
** The new function 'buffer-hash' has been added, and can be used to
compute a fash, non-consing hash of the contents of a buffer.
-+++
-** The grep mode now has a command history that you can access via the
-`r' and `l' commands.
-
---
** 'fill-paragraph' no longer marks the buffer as changed unless it
actually changed something.
dynamically. Any third-party code that changes these templates should
be updated accordingly.
-+++
** The grep/rgrep/lgrep functions will now ask about saving files
before running. This is controlled by the 'grep-save-buffers'
variable.
(define-key map "{" 'compilation-previous-file)
(define-key map "}" 'compilation-next-file)
(define-key map "\t" 'compilation-next-error)
- (define-key map "r" 'grep-forward-history)
- (define-key map "l" 'grep-backward-history)
(define-key map [backtab] 'compilation-previous-error)
;; Set up the menu-bar
(define-key map [menu-bar grep compilation-next-error]
'(menu-item "Next Match" next-error
:help "Visit the next match and corresponding location"))
- (define-key map [menu-bar grep grep-backward-history]
- '(menu-item "Previous Command" grep-backward-history
- :help "Run the previous grep command from the command history"))
- (define-key map [menu-bar grep grep-forward-history]
- '(menu-item "Next Command" grep-forward-history
- :help "Run the next grep command from the command history"))
map)
"Keymap for grep buffers.
`compilation-minor-mode-map' is a cdr of this.")
grep-error-screen-columns)
(add-hook 'compilation-filter-hook 'grep-filter nil t))
-(defvar grep--command-history nil)
-(defvar grep--history-inhibit nil)
-(defvar grep--history-place 0)
-
-(defun grep--save-history (command)
- (unless grep--history-inhibit
- (push (cons default-directory command) grep--command-history)
- (setq grep--history-place 0)
- ;; Don't let the history grow without bounds.
- (when (> (length grep--command-history) 100)
- (setcdr (nthcdr 100 grep--command-history) nil))))
-
-(defun grep-forward-history ()
- "Go to the next result in the grep command history.
-Also see `grep-backward-history'."
- (interactive)
- (let ((elem (and (> grep--history-place 0)
- (nth (1- grep--history-place) grep--command-history)))
- (grep--history-inhibit t))
- (unless elem
- (error "Nothing further in the command history"))
- (cl-decf grep--history-place)
- (let ((default-directory (car elem)))
- (grep (cdr elem)))))
-
-(defun grep-backward-history ()
- "Go to the previous result in the grep command history.
-Also see `grep-forward-history'."
- (interactive)
- (let ((elem (nth (1+ grep--history-place) grep--command-history))
- (grep--history-inhibit t))
- (unless elem
- (error "Nothing further in the command history"))
- (cl-incf grep--history-place)
- (let ((default-directory (car elem)))
- (grep (cdr elem)))))
-
(defun grep--save-buffers ()
(when grep-save-buffers
(save-some-buffers (and (not (eq grep-save-buffers 'ask))
(if current-prefix-arg default grep-command)
'grep-history
(if current-prefix-arg nil default))))))
- (grep--save-history command-args)
+
(grep--save-buffers)
;; Setting process-setup-function makes exit-message-function work
;; even when async processes aren't supported.