>> Is this overriding map there just so that `isearch-mode-map' takes >> precedence over other minor mode maps? If so, couldn't this be achieved >> by manipulating minor-mode-map-alist to put Isearch's map at the top? >> Maybe that can be done buffer-locally. > > According to (info "(elisp) Searching Keymaps") the next keymap to try is > `overriding-local-map`. It can be set buffer-locally. Actually, overriding-local-map can't be used, because it prioritizes global-map over local maps, so e.g. in Dired typing C-o exits isearch and calls open-line instead of dired-display-file. According to (info "(elisp) Searching Keymaps"), the next available keymap is emulation-mode-map-alists. The following patch added a single line: (add-to-list 'emulation-mode-map-alists `((isearch-mode . ,isearch-mode-map))) then removed all mentions of overriding-terminal-local-map, removed all 156 lines of the monstrous macro with-isearch-suspended, added a single line to the end of isearch-edit-string: (isearch-search-and-update) and then M-e edits the search string without exiting isearch. And it's trivial to use isearch commands without exiting the minibuffer with e.g. (with-minibuffer-selected-window (isearch-repeat-forward)) And everything works fine. It's too good to be true, but I don't see where's the catch.