diff options
| author | Zhengyi Fu <i@fuzy.me> | 2026-05-21 22:08:39 +0800 |
|---|---|---|
| committer | Sean Whitton <spwhitton@spwhitton.name> | 2026-05-24 11:18:29 +0100 |
| commit | 7cee526a8cc44dd7166108ec2718a4ca0d1ad1f1 (patch) | |
| tree | 0c81d07e7e0ff619d357d72a240b171cbf0b984f /lisp | |
| parent | 4d87d203cfb9c407930332d53b8198328236fe9b (diff) | |
Save and restore original local keymap in grep-edit-mode
* lisp/progmodes/grep.el (grep-edit-original-mode-map): New
variable.
(grep-change-to-grep-edit-mode): Save the current local map
before switching to grep-edit-mode-map.
(grep-edit-save-changes): Restore the saved local map instead of
assuming grep-mode-map (bug#81090).
Copyright-paperwork-exempt: yes
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/progmodes/grep.el | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index 72a05a082bb..a5ba32d26e8 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el @@ -1120,6 +1120,8 @@ list is empty)." (defvar grep-edit-mode-hook nil "Hooks run when changing to Grep-Edit mode.") +(defvar grep-edit-original-mode-map nil) + (defun grep-edit-mode () "Major mode for editing *grep* buffers. In this mode, changes to the *grep* buffer are applied to the @@ -1140,6 +1142,7 @@ The only editable texts in a Grep-Edit buffer are the match results." (error "Not a Grep buffer")) (when (get-buffer-process (current-buffer)) (error "Cannot switch when grep is running")) + (setq-local grep-edit-original-mode-map (current-local-map)) (use-local-map grep-edit-mode-map) (grep-edit--prepare-buffer) (setq buffer-read-only nil) @@ -1159,7 +1162,7 @@ The only editable texts in a Grep-Edit buffer are the match results." (unless (derived-mode-p 'grep-edit-mode) (error "Not a Grep-Edit buffer")) (remove-hook 'after-change-functions #'occur-after-change-function t) - (use-local-map grep-mode-map) + (use-local-map grep-edit-original-mode-map) (setq buffer-read-only t) (setq major-mode 'grep-mode) (setq mode-name "Grep") |
