joaotavora / sly

Sylvester the Cat's Common Lisp IDE
1.27k stars 145 forks source link

sly-mrepl-mode does not inherit comint-mode-map #407

Closed hai-nc closed 3 years ago

hai-nc commented 3 years ago

It used to be the case that in the sly REPL one can isearch input history by pressing "M-r" (I think it mapped to 'comint-history-isearch-backward-regexp'), but when I used sly-20210114.912 (on Emacs 27.1debian), "M-r" no longer map to the comint's function.

At a quick look at "/sly-20210114.912/contrib/sly-mrepl.el", line 183, I saw "(set-keymap-parent sly-mrepl-mode-map nil)" which likely be the cause.

I wonder if 'sly-mrepl-mode-map' can inherit the 'comint-mode-map' (by not having line 183) so that some convenient keybindings like "M-r" can be used as before?

joaotavora commented 3 years ago

Maybe that can be done, yes. But I would need someone to do heavy testing for some time. I admit I don't know perfectly how keymap parents work or what the potential impacts would be of putting a parent keymap where there is none. So try it out it your copy of sly-mrepl and let me know.

By the way, I am a heavy user of reverse i-search, but I call it with C-r (which is not regexp-capable).

hai-nc commented 3 years ago

I would need someone to do heavy testing for some time

I guess "heavy testing" means something like daily using the repl for programming for a few months, which I am not qualified for - I use it may be once or twice every couple of days just to quicklisp-install or to call some lisp functions only.

I think I will just customize sly-mrepl-mode-map in my own dot emacs file instead. It's less risky than changing sly-mrepl.

Thanks for the C-r tip. It's very handy but sometimes my use case is to access inputs from previous sly sessions or avoid losing focus from the current view, so I need M-r as well.

joaotavora commented 3 years ago

I think that's a good idea. You can also try (set-keymap-parent sly-mrepl-mode-map comint-mode-map) in your emacs and see what that brings.

Also C-r also lets you access inputs from previous sessions.