Closed halbtuerke closed 8 years ago
Are you using evil-local-mode, if so this could be the same problem as #5. I think it's fixed in the latest version (not on melpa yet).
No, I'm activating evil-mode via (evil-mode t)
in my config, so it should not be using evil-local-mode.
I see. It could still be related though. I think it's some loading issue. I'm still working on it. But, just to get going if you do a C-h f
evil-mc-execute-for
and then in open the file that you see in the doc evil-mc-command-execute.el
and eval it, then the cursors should start working.
Yes, this makes all the cursors move.
What does not seem to work is highlighting and then deleting something with d
. Also highlighting and changing with c
does not seem to work. dw
and cw
also do not work. Is this expected behavior?
No, there's definitely something wrong. I'm not sure what yet. It's quite strange because the tests pass. I still think it's some loading issue but I have to investigate more.
I think this is fixed on master. At least it was working fine for me in a sandbox. But melpa hasn't been updated for a while so you should try the github version if possible. .
This is still not fixed. The cursors work fine when loading the files directly, but not when using the compiled version from melpa.
I'm using the following code snippet to load and configure evil-mc and the cursor movement works:
(use-package evil-mc
:load-path "~/.emacs.d/non-elpa/evil-mc"
:config
(global-evil-mc-mode 1))
What still does not work e.g. is using d
or something likedw
.
The use-package
macro expands to the following:
(progn
(eval-and-compile
(push "~/.emacs.d/non-elpa/evil-mc" load-path))
(if
(not
(require 'evil-mc nil 'noerror))
(ignore
(message
(format "Could not load %s" 'evil-mc)))
(condition-case-unless-debug err
(global-evil-mc-mode 1)
(error
(ignore
(display-warning 'use-package
(format "%s %s: %s" "evil-mc" ":config"
(error-message-string err))
:error))))
t))
Ok, so if you load it that way it should work. That's how I load it. It's strange that delete doesn't work. Do you get any errors at all?
No, there aren't any errors. Here's a log:
evil-mc Created 3 cursors matching "\_<some\_>"
evil-mc Command evil-backward-word-begin b
evil-mc Record-begin ((:undo-list-pointer-pre nil (1 . 78) (t . 0)) (:evil-state-begin . normal) (:keys-pre-with-count nil evil-backward-word-begin [98] nil) (:keys-pre . [98]) (:name . evil-backward-word-begin))
evil-mc Record-finish ((:undo-list-pointer-post nil (1 . 78) (t . 0)) (:keys-post-raw . [98]) (:keys-post . [98]) (:last-input . 98) (:evil-state-end . normal) (:undo-list-pointer-pre nil (1 . 78) (t . 0)) (:evil-state-begin . normal) (:keys-pre-with-count nil evil-backward-word-begin [98] nil) (:keys-pre . [98]) (:name . evil-backward-word-begin)) evil-backward-word-begin
evil-mc Record-done evil-backward-word-begin pre b post b keys-motion keys-operator count nil keys b
evil-mc Execute evil-backward-word-begin for all cursors
evil-mc Execute evil-backward-word-begin with evil-mc-execute-default-call-with-count [2 times]
evil-mc Command evil-backward-word-begin b
evil-mc Record-begin ((:undo-list-pointer-pre nil (1 . 78) (t . 0)) (:evil-state-begin . normal) (:keys-pre-with-count nil evil-backward-word-begin [98] nil) (:keys-pre . [98]) (:name . evil-backward-word-begin))
evil-mc Record-finish ((:undo-list-pointer-post nil (1 . 78) (t . 0)) (:keys-post-raw . [98]) (:keys-post . [98]) (:last-input . 98) (:evil-state-end . normal) (:undo-list-pointer-pre nil (1 . 78) (t . 0)) (:evil-state-begin . normal) (:keys-pre-with-count nil evil-backward-word-begin [98] nil) (:keys-pre . [98]) (:name . evil-backward-word-begin)) evil-backward-word-begin
evil-mc Record-done evil-backward-word-begin pre b post b keys-motion keys-operator count nil keys b
evil-mc Execute evil-backward-word-begin for all cursors
evil-mc Execute evil-backward-word-begin with evil-mc-execute-default-call-with-count [2 times]
evil-mc Command evil-forward-word-begin w
evil-mc Record-begin ((:undo-list-pointer-pre nil (1 . 78) (t . 0)) (:evil-state-begin . normal) (:keys-pre-with-count nil evil-forward-word-begin [119] nil) (:keys-pre . [119]) (:name . evil-forward-word-begin))
evil-mc Record-finish ((:undo-list-pointer-post nil (1 . 78) (t . 0)) (:keys-post-raw . [119]) (:keys-post . [119]) (:last-input . 119) (:evil-state-end . normal) (:undo-list-pointer-pre nil (1 . 78) (t . 0)) (:evil-state-begin . normal) (:keys-pre-with-count nil evil-forward-word-begin [119] nil) (:keys-pre . [119]) (:name . evil-forward-word-begin)) evil-forward-word-begin
evil-mc Record-done evil-forward-word-begin pre w post w keys-motion keys-operator count nil keys w
evil-mc Execute evil-forward-word-begin for all cursors
evil-mc Execute evil-forward-word-begin with evil-mc-execute-default-call-with-count [2 times]
evil-mc Command evil-visual-char v
evil-mc Record-begin ((:undo-list-pointer-pre nil (1 . 78) (t . 0)) (:evil-state-begin . normal) (:keys-pre-with-count nil evil-visual-char [118] nil) (:keys-pre . [118]) (:name . evil-visual-char))
evil-mc Record-finish ((:undo-list-pointer-post nil (1 . 78) (t . 0)) (:keys-post-raw . [118]) (:keys-post . [118]) (:last-input . 118) (:evil-state-end . visual) (:undo-list-pointer-pre nil (1 . 78) (t . 0)) (:evil-state-begin . normal) (:keys-pre-with-count nil evil-visual-char [118] nil) (:keys-pre . [118]) (:name . evil-visual-char)) evil-visual-char
evil-mc Record-done evil-visual-char pre v post v keys-motion keys-operator count nil keys v
evil-mc Execute evil-visual-char for all cursors
evil-mc Execute evil-visual-char with evil-mc-execute-visual-char [2 times]
evil-mc Command evil-forward-word-end e
evil-mc Record-begin ((:undo-list-pointer-pre nil (1 . 78) (t . 0)) (:evil-state-begin . visual) (:keys-pre-with-count nil evil-forward-word-end [101] nil) (:keys-pre . [101]) (:name . evil-forward-word-end))
evil-mc Record-finish ((:undo-list-pointer-post nil (1 . 78) (t . 0)) (:keys-post-raw . [101]) (:keys-post . [101]) (:last-input . 101) (:evil-state-end . visual) (:undo-list-pointer-pre nil (1 . 78) (t . 0)) (:evil-state-begin . visual) (:keys-pre-with-count nil evil-forward-word-end [101] nil) (:keys-pre . [101]) (:name . evil-forward-word-end)) evil-forward-word-end
evil-mc Record-done evil-forward-word-end pre e post e keys-motion keys-operator count nil keys e
evil-mc Execute evil-forward-word-end for all cursors
evil-mc Execute evil-forward-word-end with evil-mc-execute-visual-call-with-count [2 times]
evil-mc Command evil-cp-delete d [2 times]
I have 3 cursors but after pressing d
only the selection of the "main" cursor gets deleted.
I think it's because when pressing d
it's trying to run evil-cp-delete
which I think it's coming from evil-cleverparens
. Try disabling that mode temporarily just to see if that fixes it.
:+1:
That's it. Disabling evil-cleverparens solved the issue.
OK, I'll probably add evil-cleverparens to the incompatible modes so that it gets disabled automatically whenever there are active cursors.
@gabesoft I'd like to use evil-cleverparens together with evil-mc. What will it take to make them work together, and how can I help?
Basically evil-cleverparens replaces some evil commands with evil-cp commands, e.g. evil-cp-delete
replaces evil-delete
, so would using for evil-cp the same handler for the equivalent original evil command be enough? (e.g. using evil-mc-execute-default-evil-delete
handler for evil-cp-delete
)
Yes I think adding all relevant evil-cp
commands to evil-mc-known-commands
should be enough to make evil-cleverparens
compatible with evil-mc
. The handlers used for the default evil commands should work in theory.
Looks like it works in practice too :smile: at least for casual use, I haven't done comprehensive testing. I've started the work at #14 and will continue when I have some more free time. Meanwhile I've encountered #13 too.
Hi,
I just installed evil-mc and it's not working as expected. When I move the cursor the other cursors don't follow (see GIF animation). Anything I have to configure to make this work?
I'm using GNU Emacs 25.0.50.1 2015-08-15 on OS X.
Here's the debug log: