Closed ghost closed 5 years ago
I have an idea about what might be happening. evil-magit uses visual lines by default and evil-repsect-visual-line-mode
is probably remapping that unintentionally to the command for regular lines. I recently put in a PR to evil to fix and improve evil-repsect-visual-line-mode
and that should fix this issue.
magit itself is based on real lines, so it's not ideal to use visual-line-mode
in magit anyway, but I'll assume you have a reason to do that.
That's what I assumed was happening, too. Would it make sense to just use normal line-wise movement (e.g. evil-next-line
) and leave it up the user to enable evil-respect-visual-line-mode
if they need it? I use it when viewing diffs of prose which have paragraphs as single soft-wrapped lines, with magit-diff-refine-hunk
enabled to see word diffs. Maybe this isn't the best strategy, though.
Yes, I think that makes sense. In retrospect, I don't know why I chose to use those commands in the first place. I changed it in 4b66a1d
Works perfectly now, as far as I can tell. Thanks!
By default,
evil-magit
usesevil-next-visual-line
andevil-previous-visual-line
for movement, which is what I want, but for some reason this seems to conflict with enablingevil-respect-visual-line-mode
. In my init.el, I have the following use-package declaration for evil:Normally, this configuration works, e.g. in a markdown buffer with
visual-line-mode
enabled. However, line-wise movement inmagit-mode
(e.g. an expanded diff) withvisual-line-mode
jumps between hard line breaks, as ifevil-respect-visual-line-mode
was never enabled. If I invokeM-x evil-next-visual-line
it works fine, and tells me (incorrectly) that I can run it with 'j'. If I ask for what 'j' does run withM-x describe-key
it saysevil-next-line
. If I don't enableevil-respect-visual-line-mode
then everything works as I would like, and line-wise movement properly accounts forvisual-line-mode
. Unfortunately, sinceevil-respect-visual-line-mode
has to be set before evil is loaded, I can't disable it formagit-mode
only. It's either globally enabled or disabled.