| * It is interesting to see this written in "modern" C++. * Those input handlers (you have three) are terrible; pattern matching is the wrong way to go about this. * You could no doubt get more imaginative with the progress bar using block characters. * Users will no doubt ask for the ability to suspend such a program; which, note, has to properly tear the whole UI down and set it back up again. * Users will also no doubt want this to work properly with the full range of Unicode text; you have not accounted for differing character widths, that I can see. Note that there exist zero-width characters and double-width characters. * vi sentence, paragraph, and section motions are of course actually {, }, (, ), [[, and ]]. Some help: * https://unix.stackexchange.com/a/499139/5132 * https://unix.stackexchange.com/a/444270/5132 * http://jdebp.eu./Softwares/nosh/guide/commands/TERM.xml * http://jdebp.eu./Softwares/nosh/guide/commands/TerminalCapab... * https://github.com/jdebp/nosh/blob/master/source/ECMA48Decod... * https://github.com/jdebp/nosh/blob/master/source/TUIInputBas... * https://github.com/neovim/libtermkey/blob/master/driver-csi.... * https://vt100.net/emu/dec_ansi_parser |