preservim / vim-pencil

Rethinking Vim as a tool for writing

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Normal Mode unexpected cursor behavior

alice-sawatzky opened this issue · comments

commented

With pencil in the "soft" wrap mode, in normal mode I'm able to place the cursor after the last character in a line. This goes against the normal vim behavior, and breaks some workflows (pressing $ and then x would normally delete the last character in a line, but now does nothing, append and insert now do the same thing at the end of the line, etc.). Is this intended behavior? if so, can you provide a configuration option to disable it?

Wondering if anyone has looked at this, also experiencing this behavior with x not deleting backwards.

commented

last commit was 2 years ago, i'm guessing if we want it fixed one of us is gonna have to fork it. do you happen to know vimscript? i can give it a try but i'll be starting from scratch knowledge-wise.

I've recently stepped in to help maintain this plugin. This is something I've noticed myself and have been meaning to look into. That being said I will be traveling for a couple weeks and probably won't have time to find this before then. I'm just dropping a comment here to let you guys know there is some motion on this plugin again and any contributions would be welcome! If either of you found what is causing this I'd love to hear about it before I try to dig into it myself. And of course PR's will be getting reviewed if anybody has something to contribute.

commented

awesome, thanks for stepping up like that!

I wouldn't be surprised if this behavior is an intentional feature, since it seems more intuitive for new vim users (i know i would always trip over the default vim behavior, i'd do something like $i and expect to be inserting at the end of the line, it took a while for me to get over that (IMO more vim tutorials should emphasize a earlier on))

anyways, i expect this is probably not a bug, just an annoying feature, so we should probably leave it enabled by default and just provide a way to turn it off, and mention it prominently in the docs

@alice-sawatzky This is controlled by the plugin adding onemore to the virtualedit setting. You can read about its use in :help virtualedit. I'm sure you can manually kill this off yourself with -= in an auto command, but I think it would be nice to ⓐ document that this is an optional feature and ⓑ make it an option that can be disabled. On by default probably makes sense.

commented

thanks, the autocommand approach didn't work (i don't know the nuances of autocmd timing so it's probably still possible), however, now that i had a name to work with, i skimmed through the plugin source and discovered i could disable it by disabling the "cursorwrap" feature. My setup for now if anyone wants to copy:

let g:pencil#wrapModeDefault = 'soft'
let g:pencil#cursorwrap = 0 "<-----|this line|-----
augroup pencil
  autocmd!
  autocmd FileType markdown,mkd call pencil#init()
  autocmd FileType text         call pencil#init()
augroup END