On Thu, Mar 7, 2024 at 6:32 AM Oliver Webb via Toybox <[email protected]> wrote: > > Looking at vi.c again, (I _know_ I can write code better then I did in > October, and > since the cleanup pass hasn't happened yet I thought I'd start improving > things now) > noticed there was no support for merging lines when doing a backspace at the > start > of a line (e.g. deleting blank lines by pressing backspace) So I added that. > There > is a bug where it will delete the last character of the line you are merging > into, > Still. That behavior is considerably better than nothing (And dunno how to > debug it, > vi_join isn't doing it's job for some reason) so I added it into the patch.
Well I am unsure what backspace should do on vi, I dont remember why I even added it. If i look vi man page there is no mention of backspace existing. I dont personally backspace except while typing on insert mode or ex mode and only the data I am about to insert not the data already inside buffer. Perhaps I added backspace delete for buffer stuff since someone request it on mailinglist, but cant find who, when, and why. If looking other vi clones by just using them, and comparing backspace behavior nvi does the thing how i originally intended, backspace can only be used to cut your typo out of your ongoing insert, not to delete stuff from buffer. and it does not move your cursor backward inside buffer vim on :set compatible; behaves almost same as nvi. it does not delete stuff from buffer but it allows you to move cursor left while in normal mode, but only up until newline vim on :set nocompatible deletes stuff from buffer if in insert mode, and goes backward on normal mode, but jumps into previous line busybox vi, has bit similar behavior as vim in compatible mode, but it has its own weirdness too (I backspaced around, press undo 2 times and it inserted some garbage into my open buffer. ) Feel free to fix it up, some other features are simpler since you can just read the man page and make it behave accordingly, but backspace is maybe not very trivial one since its either you follow heirloom vi, or make some educated assumption how average person would want to use it. To me this patch is not necessarily fixing it, but making it behave the way you want, maybe more vim way? About join lines function I dont see any issues with original version, its doing what it supposed to do, searching newline and taking it out, (with some buffer management magic called piece table method, here is some info if you interested on how it works https://www.cs.unm.edu/~crowley/papers/sds.pdf) My original idea was to make vi as simple as possible: move with simple motions, delete, yank and push and insert few words with insert mode. Kinda rescue editor, in 1000 lines of code and leave it to Rob to clean up, (or yank out and rewrite.) Then people started using it, at least as rescue editor, so some quality of life patches came in, and now its near 2000 lines. br Jarno > > As far as ex commands go, this patch removes the function get_endline, and > replaces it with directly > probing the buffer. Which is much faster then redrawing the page 2 times. > > Other then that, This replaces a couple of variable names and removes a > unnecessary goto > > - Oliver Webb <[email protected]> > _______________________________________________ > Toybox mailing list > [email protected] > http://lists.landley.net/listinfo.cgi/toybox-landley.net _______________________________________________ Toybox mailing list [email protected] http://lists.landley.net/listinfo.cgi/toybox-landley.net
