1

My setup

GNU Emacs GUI (version 24.4.51.1 (x86_64-w64-mingw32) compiled from Harroogan Emacs.)

Package key-chord.el

Package Evil-mode

Situation

I use the Evil mode. I tried to solve my issue with the maintainer (Frank Fischer is a hero, for maintaining an awesome package) in the past: https://bitbucket.org/lyro/evil/issues/505/proper-error-handling-in-case-of-custom

So basically, I don't like the idea behind the package key-chord, because you need to press your keys simultaneously, instead rolling or typing. It will hurt your fingers in the long term, and it's not comfortable (with typing, you're rolling with your fingers). I tried to solve it with

(setq key-chord-two-keys-delay 0.4)

Ok, when typing fast, it would be workable. But if I want to jump to awindow with keys on the home-row of the keyboard, I could configure it with

(key-chord-define-global "fj" 'evil-window-down)

So, when you want to go to another window down, you're just typing fj, and you * jumps * into another window. Okay. But when you want to find the charachter j? Just press f, then wait 600 miliseconds, then press j. Simple.

Problem

This is where the problem arises. When you want to go down one line, the j key in Evil becomes terribly slow (because of the key-delay). So I'm wondering if there a package exists, that does looks only to the first character, instead all the characters in the key-binding? Any suggestion?

6
  • 2
    My solution: use tiny delays like .02 seconds and have all your chords use the space bar. I find chords like space+j and space+i to be incredibly comfortable to press and with the tiny delay you won't ever have problems. Jul 8, 2015 at 20:53
  • 1
    Out of curiosity, do you have linum or its related linum-relative package enabled? Does the navigation delay on hitting j go away if you unbind that fj key chord? Jul 9, 2015 at 1:47
  • 1
    I haven't tried it but does this answer by Jordon to a similar emacs.SE question help? Jul 9, 2015 at 2:11
  • 1
    Looks like someone made a package key-seq.. probably based on that answer (my earlier comment)? Jul 9, 2015 at 2:15
  • @kaushalmodi, I don't use linum or linum-relative package. But 'key-seq`seems to solve my question. The package is fairly young, when I was searching earlier, I couldn't find it. Thanks for your help! I wished I could mark your answer als the right one...
    – ReneFroger
    Jul 9, 2015 at 7:41

1 Answer 1

2

Thanks to Kaushalmodi for the reference, the package key-seq solved my question!

I set it up as following:

(key-seq-define evil-normal-state-map "fl" 'evil-window-right)
(key-seq-define evil-normal-state-map "fh" 'evil-window-left)
(key-seq-define evil-normal-state-map "fj" 'evil-window-down)
(key-seq-define evil-normal-state-map "fk" 'evil-window-up)

Which solved my issue. If you want to find the character j or l for example, just press f and then wait 400 milliseconds, then you press the character j for example. Or you can switch to windows when you're typing normally.

1
  • Please explain how key-seq solves the problem so that the answer is self-contained.
    – Dan
    Jul 9, 2015 at 17:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.