vonshednob / pter

Manage your todo.txt in a commandline user interface (TUI)
https://vonshednob.cc/pter/
MIT License
102 stars 6 forks source link

Improvements to todo item editing #36

Closed andrei-a-papou closed 6 months ago

andrei-a-papou commented 6 months ago

I'd like to propose the following improvements to editing a todo:

  1. By way of analogy to the del-to-bol command, add a del-to-eol command. It could have a default binding of ^K -- a-la Emacs/Midnight Commander.
  2. Would it be possible to implement Ctrl + arrow keys navigation? A user holds down Ctrl and then the left/right arrow keys move a whole word at a time. When editing a longer todo, this allows moving around much more efficiently :)
  3. In the same way, would it be possible to add del-word-right and del-word-left (perhaps bound to Ctrl + Delete and Ctrl + Backspace by default) to delete one word at a time?
vonshednob commented 6 months ago

Perfect requests! Yes, these are possible to implement, but I was too lazy and was hoping for someone to come around and complain :grinning:

andrei-a-papou commented 6 months ago

Being able to use Ctrl-based bindings when editing todos is very important to me since I'm currently grooming a large todo file. So I made a patch myself :) The code is probably ugly in places if only because I know next to nothing about curses. So I'll most certainly appreciate it if you could take a look.

Things seem to be working fine after a half day of usage, but give me a couple days to test it more thoroughly in the trenches and I'll post the patches, is that OK?

vonshednob commented 6 months ago

By all means! Forking and patching is what open source is good for, after all :grin:

andrei-a-papou commented 6 months ago

I've tested my patches for a couple of days, and they seem to be stable. So here you go:

80-ctrl-key-functions-1.diff.gz 80-ctrl-key-functions-2.diff.gz 90-ctrl-key-combos.diff.gz

I'm not 100% sure the detection of Ctrl-based combinations will work on every machine (I detect values of 524, 550 and 565), so I'd be curious about your experience. Key combos in curses-based apps can be tricky due to various terminals and environments used.

Also, I've redefined ^H to work as Ctrl + Backspace rather than plain Backspace. This is a bit non-standard: e.g. bash doesn't do it, but then again bash has Alt/Meta + Backspace which we can't have in pter yet. I reasoned the user can always map <ctrl_backspace> to del-left to make both ^H and ^? act as Backspace.

vonshednob commented 6 months ago

Yeah, the keymap compatibility due to the various terminals has caused other issues, too. I have the nagging feeling that these types of issues will accumulate to a degree that might require a change of the backend… well, that’s for the future.

I’ll merge your changes with the next release! Thanks a lot!

vonshednob commented 6 months ago

Aaaand merged! Soon I'm through all pending issues and then I'll release.

I might add the configuration option word-boundary-characters or word-delimiters or something.

andrei-a-papou commented 6 months ago

Aaaand merged! Soon I'm through all pending issues and then I'll release.

Can't wait! :)

I might add the configuration option word-boundary-characters or word-delimiters or something.

Yes!

P. S. Is this a good time to also take a look at #52 and possibly merge it?

vonshednob commented 6 months ago

Absolutely! I intend to get all the open issues into the next release.

andrei-a-papou commented 6 months ago

Alright, but releasing might take a while if I keep sending you patches :) I'll stop for now :)

vonshednob commented 6 months ago

So here we go -- until the end of this weekend I'll still assign new issues to the version 3.16 milestone but every subsequent new issue will have to wait longer. This'll do the trick to get a release out, I'm sure :grin: