evil-magit icon indicating copy to clipboard operation
evil-magit copied to clipboard

MagitPopup without evil bindings

Open decoursin opened this issue 10 years ago • 11 comments

As above, MagitPopup (or magit-popup-mode) doesn't have evil bindings yet. However, this works instead so far:

(evil-set-initial-state 'magit-popup-mode 'normal)

Thanks!

decoursin avatar Nov 22 '15 06:11 decoursin

The magit popup is mostly TAB and RET, no?

justbur avatar Nov 22 '15 14:11 justbur

Well, I like everything to have evil mode. For example while within MagitPopup, I can use evil bindings to scroll up and down to see options that I couldn't see otherwise because the screen is too small. Once I'm in it, then, I can use all of evil bindings to easily switch windows, close this window, and all the other stuff my personalized evil can do.

But the solution above works great, so maybe we don't need to change anything.

decoursin avatar Nov 22 '15 15:11 decoursin

I wasn't sure there was much value to doing something more with the pop ups but I'm open to suggestions. On Sun, Nov 22, 2015 at 7:37 AM Nick DeCoursin [email protected] wrote:

Well, I like everything to have evil mode. For example while within MagitPopup, I can use evil bindings to scroll up and down to see options that I couldn't see otherwise because the screen is too small. Once I'm in it, then, I can use all of evil bindings to easily switch windows, close this window, and all the other stuff my personalized evil can do.

But the solution above works great, so maybe we don't need to change anything.

— Reply to this email directly or view it on GitHub https://github.com/justbur/evil-magit/issues/8#issuecomment-158768855.

justbur avatar Nov 22 '15 15:11 justbur

Great thank you. I don't actually have any suggestions.

decoursin avatar Nov 22 '15 21:11 decoursin

I can do C-bfud for scrolling that shouldn't be a problem. hjkl is a problem because it would mask the magit functions, unless you went to modal editing which I think would be weird in a popup

justbur avatar Nov 23 '15 22:11 justbur

Yup, I'm using modal editing. I have to press i for insert mode then press the key, but it's worth it for me for the power and flexibility of being able to use all my evil bindings like switching windows or closing the current window. Not everyone would appreciate that though, so the current implementation would be better than modal-editing for the mass.

Actually, I think the best would be normal-mode (or whatever you want to call it that is just one mode where all my evil bindings work) with shift-key or ctrl-key for the option. This is different than how it currently stands which is just key for the option (e.g. d for --dwim.) This probably wouldn't work out-of-the-box for most configurations that depend on ctrl (or shift.) However, semicolon key might work? The only compromise is if there's some way to configure-it.

decoursin avatar Nov 25 '15 02:11 decoursin

We could try a leader key approach. Hit the leader key then the option. The magit popups are a little odd in how they implement key bindings though and I haven't completely dug into them yet.

justbur avatar Nov 25 '15 18:11 justbur

That would be really cool.

decoursin avatar Nov 25 '15 18:11 decoursin

Try this:

(dolist (char (number-sequence ?! ?z))
  (evil-define-key 'normal magit-popup-mode-map
    (concat ";" (char-to-string char)) 'magit-invoke-popup-action))

Be careful though. I'm not positive this will work everywhere, but it allows for ; as a leader.

justbur avatar Mar 22 '16 02:03 justbur

Thanks, I gave it a try. It doesn't work for the switches and options, unless I'm doing something wrong. Anyways, ";" as a leader, for me, isn't much better than going into insert mode first.

Ctrl or shift might be better (hold ctrl then click option, for example), but it's probably not worth it. Thank you for giving this attention, but I'm going to close it because it's not worth anymore. I'm satisfied with changing the default initial state and using insert mode.

decoursin avatar Mar 24 '16 00:03 decoursin

I had to set

(general-define-key
 :states 'emacs
 :keymaps 'magit-popup-mode-map
 "j" 'forward-button
 "k" 'backward-button
 )

In general.el. it would be nice to be able to use emacs-state keybindings for magit-popup-mode in normal-state, but I guess that would cause a lot of overlapping.

A6GibKm avatar Jan 25 '18 20:01 A6GibKm