Closed oscarfv closed 10 years ago
I don't concur this is related to #2.
But on to the issue: As workaround you could test this advice:
(defadvice evil-leader-mode (around maybe-no-non-normal-prefix activate)
(let ((evil-leader/non-normal-prefix (if (member major-mode '(magit-mode))
""
evil-leader/non-normal-prefix)))
ad-do-it))
Adjust the mode list to the modes you don't want to be prefixed.
For the longterm, I think your idea is useful but I'm unsure about the way to tackle it:
or the more flexible approach
Michael Markert notifications@github.com writes:
I don't concur this is related to #2.
The reporter wanted to use the leader mechanism (without prefix) on all buffers and your reason for deciding that that is not okay was:
"In theory you could customize the prefix to "" but I'd advise against it as you can't type a , in a normal way anymore."
We can easily work-around that problem with
(evil-leader/set-key evil-leader/leader '(lambda () (insert evil-leader/leader))
Thus, if evil-leader/leader
is \
, pressing \\
would insert a
backslash. Furthermore, evil-leader could detect the binding for
\\
and reassign it to \\
. I'm not sure that the order of keymap
creation, minor mode activation, hook calls, etc allows this, though.
This has some problems (the user might change evil-leader/leader
afterwards, or maybe he wants \\
to do something different...) but
evil-leader is so convenient that it is worth to (optionally) extend its
use to the maximum possible extend.
I guess that you'll say that all this is a good reason for me submitting a pull request :-)
As for your suggested advice that addresses my question, it works. Thank you.
For the longterm, I think your idea is useful but I'm unsure about the way to tackle it:
- Use a list like the one above to exclude major-modes from prefix treatment,
or the more flexible approach
- allow major-mode specific prefixes (including none).
IMO a list of regexps is most practical. Magit, for instance, may create multiple buffers with different major modes. The name of those major modes are "magit-.*-mode". Explicitly enumerating all of them in a list may be tiresome and require updates from time to time as magit evolves. A regexp solves the problem nicely.
BTW, I don't think it is a good idea to disable the prefix on the
buffers where the leader is not applicable (i.e. normal mode.) We gain
nothing from ignoring C-evil-leader/leader
where evil-leader/leader
is acceptable.
Thanks again for evil-leader and for solving my request.
Thansk @cofi for implementing evil-leader/no-prefix-mode-rx
.
There is a small typo on the FAQ:
in the insert and emacs states which means you can’t type the char <leader> stands for (\ by default).
I think the opening parenthesis is misplaced:
in the insert and emacs states which means you can’t type the char <leader> (stands for \ by default).
OTOH, on the discussion above I suggested a list of regexps, not a single regexp. The reason is that a single regexp can quickly turn into something difficult to read. Compare
"magit-.*-mode\\|elfeed-mode\\|gnus-.*-mode"
with
(list "magit-.*-mode" "elfeed-mode" "gnus-.*-mode")
But this is a minor detail (and Emacs uses variables holding regexps on quite a few places.)
Thanks again.
Re paren: Well, it was intended but I rephrased it now.
I changed it now to a list of regex but I'm not exactly with your reasoning there.
mapconcat #'identity '(put your regexp here) "\\|")
and you are done) rx
now.Michael Markert notifications@github.com writes:
Re paren: Well it was intended but I rephrased it now.
Uh, sorry. I see that the original phrasing is idiomatic English indeed.
I changed it now to a list of regex but I'm not exactly with your reasoning there.
- It's easy to do so yourself (
mapconcat #'identity '(put your regexp here) "\\|")
and you are done)
Sure, but not everybody is so Elisp-savvy as us :-)
- You can't use
rx
now.
I wasn't aware of the existence of rx
. After reading how it works on
EmacsWiki I'll say that I prefer to write regexps directly :-) But I
think that you can use it anyways:
(list (rx ...) (rx ...) ...)
Thanks for being so responsive (even on the cases where you are right!)
Hello, one happy user here.
Some non-editing major modes that run in Emacs mode (magit, for instance) could put evil-leader to good use without requiring to punch
non-normal-prefix
. Thus, ",b" would work on magit as if it were in normal mode.Something like
My question is: what should
<?>
be for achieving what I want? I hope there is a trick with keymappings that achieves that.BTW, this is somewhat related to https://github.com/cofi/evil-leader/issues/2