diff options
Diffstat (limited to 'TODO')
-rw-r--r-- | TODO | 76 |
1 files changed, 52 insertions, 24 deletions
@@ -4,9 +4,6 @@ Tasks: "edit" hook. Known Bugs: - * Solaris/OmniOS: There are groff build errors. - * Gtk sometimes allows scrolling with the mouse when it shouldn't. - All mouse events should currently be blocked. * PDCurses/WinGUI: There is still some flickering, but it got better since key macros update the command line only once. Could already be fixed upstream, see: @@ -42,6 +39,11 @@ Known Bugs: We need something based on a non-backtracking Thompson's NFA with Unicode (UTF-8), see https://swtch.com/~rsc/regexp/ Basically only RE2 would check all the boxes. + RE2 doesn't have a native C API, so we would also have to import the + https://github.com/marcomaggi/cre2/ wrapper. + re2 should be an optional dependency, so we can still build against the + glib APIs. + Optionally, I could build a PCRE-compatible wrapper for Rust's regex crate. * It is still possible to crash SciTECO using recursive functions, since they map to the C program's call stack. It is perhaps best to use another stack of @@ -137,7 +139,12 @@ Known Bugs: commands for ALL of the Scintilla messages involved. Automatically running EF EB...$ in the "save" hook could also have unwanted side effects. + * Solaris/OmniOS: There are groff build errors. * session.vcs does not properly work in MSYS2 environments. + * The Windows GTK version no longer works under Wine: + "Failed to translate keypress (keycode: 88) for group 0 (00000409) because we could not load the layout." + Also, all Windows builds have problems executing ECdir$ (under Wine!). + See also https://github.com/fontforge/fontforge/issues/5031#issuecomment-1143098230 * At least the GTK version with --xembed is prone to unexpected crashes. Interestingly, while this does leave orphaned savepoint files around, it does not produce a core dump. @@ -230,12 +237,6 @@ Features: keys and Alt and Ctrl modifiers. See also https://stackoverflow.com/questions/31379824/how-to-get-control-characters-for-ctrlleft-from-terminfo-in-zsh https://gist.github.com/rkumar/1237091 - * Mouse support. Not that hard to implement. Mouse events - use a pseudo key macro as in Curses. - Using some special command, macros can query the current - mouse state (this maps to an Interface method). - This should be configurable via an ED flag as it changes - the behavior of the terminal. * Support loading from stdin (--stdin) and writing to the current buffer to stdout on exit (--stdout). This will make it easy to write command line filters, @@ -341,7 +342,7 @@ Features: Perhaps blinking or invisible? The problem is, this won't work so easily once we use a Scintilla minibuffer everywhere. - Gtk could at the very least use the hourglass cursor. + Gtk already sets the "wait" cursor when busy. * Command to free Q-Register (remove from table). e.g. FQ (free Q). :FQ could free by QRegister prefix name for the common use case of Q-Register subtables and lists. @@ -453,30 +454,20 @@ Features: special. Even if we always increased the nest_level, that variable does not discern Ifs and Whiles. * Possible Nightly Build improvements (and therefore releases): - * Build 32-bit Ubuntu packages * Push nightly builds into the Ubuntu PPA. We should probably create a new PPA sciteco-nightly. A new private key has already been registered on Launchpad and Github. We just need to integrate with CI. See also https://github.com/marketplace/actions/import-gpg - * 64-bit Windows builds * Mac OS Arm64 builds either separately or via universal binary. See https://codetinkering.com/switch-homebrew-arm-x86/ Target flag: `-target arm64-apple-macos11` - * Get into appimage.github.io and AppImageHub. - See https://github.com/AppImage/appimage.github.io/pull/3402 + * A pkgsrc port could be based on the FreeBSD port and would benefit + NetBSD, Mac OS, but can also be used on practically all other + UNIX-like platforms. * Get into mentors.debian.net. First step to being adopted into the Debian repositories. * Get meta-rhaberkorn into https://layers.openembedded.org - * sample.teco_ini: Support opening files on certain lines - (filename:line). - Theoretically, this could also be added to the <EB> syntax, - although the colon character is allowed in filenames under Windows. - In principe there is little need for that in interactive mode, - but it would ease opening filenames copied from compiler errors - or grep -n results. - Other editors use the +line[,col] syntax (see nano). - * <:EF> for saving and closing a buffer, similar to <:EX>. * Bash completions. * FreeBSD: rctl(8) theoretically allows setting up per-process actions when exceeding the memory limit. @@ -484,9 +475,13 @@ Features: * Auto-completions customization via external programs. This among other things could be used to integrate LSPs-driven autocompletions. - * Whereever we take buffer positions (nJ; n,mD; nQ...), + * Wherever we take buffer positions (nJ; n,mD; nQ...), negative numbers could refer to the end of the buffer or Q-Register string. + * Wherever we take a buffer range (e.g. n,mD), we could relax + the requirement that n < m and automatically sort the indexes. + In this case, right-click+drag would no longer have to sort the buffer + pointers. * Support extended operators like in TECO-64: https://github.com/fpjohnston/TECO-64/blob/master/doc/oper.md However, instead of introducing a separate parser state, better @@ -541,6 +536,7 @@ Features: There are two ways this could be implemented: * Either all sorts of commands automatically iconv from/to the configured encoding. + This would be very difficult and inefficient. * Or we iconv once to UTF-8 when loading the file and iconv back when saving. This is probably easier but means, you have to @@ -549,6 +545,10 @@ Features: We could say that nEB...$ specifies the code page if the string argument is nonempty. On the other hand, iconv uses symbolic identifiers. + Perhaps there should be FBfilename$codepage$ and EEcodepage$ commands + or an "EE" Q-Register. + Unfortunately, glib or POSIX iconv() doesn't return a list of + supported codepages, that could be used for auto-completions. * Perhaps the Unicode "icons" should be configurable via TECO. In the easiest case there could simply be 2 Q-Reg namespaces: ^F... for filenames and ^E... for extensions. @@ -584,9 +584,20 @@ Features: syntax highlighted. I am not sure however how that could be done without a special ED hook. + * SciTECO syntax highlighting improvements: + * The { } escapes should be styled as SCE_SCITECO_OPERATOR. + * There should be two SCE_SCITECO_STRING[12] styles and second + string arguments could be styled SCE_SCITECO_STRING2. + * Alternatively, string building constructs could be styled with the + alternate string style. + * Erroneous constructs could be highlighted up to the previous + start state. E.g. when redefining labels, the entire label would be + highlighted. * Instead of defaulting to nothing in the absence of ~/.teco_ini, we should load the installed sample.teco_ini, which gives a more user-friendly experience. + Or perhaps even simpler, should the profile be missing, just log + a warning on startup. * NLS (Native Language Support). I could at least add German and Russian. There aren't many localizable strings in SciTECO. Should be optional. @@ -649,6 +660,11 @@ Optimizations: On the other hand, this imports tons of sh*t into the repository and chains us to Autotools. * Does it make sense to import glib-2.0.m4? + * MinGW might now support weak symbols which would be useful + in interface.c to provide some default functions and avoid + a little bit of preprocessor madness in the implementations. + However, weak symbols might still be unsupported on other + potential targets. * According to ChatGPT (sic) the glibc and jemalloc malloc_usable_size() do not change during the lifetime of an object, although this is an implementation detail. @@ -661,6 +677,18 @@ Optimizations: If this turns out to be useful, perhaps we can automatically upload builds via CI? https://scan.coverity.com/projects/rhaberkorn-sciteco + * <1;> and similar commands could be sped up if we cached the loop + end PC in teco_loop_context_t. + * Instead of introducing a streaming byte code compiler with all + of its consequences and complications, we could translate + macros into special strings where all whitespace characters, + comments and labels are stripped. + Every parser input byte has a second byte/word which stores + the length of the symbol (including stripped bytes) in the source + macro. This information is used to retrieve source macro locations + in case of errors. + Also, this "hint" word could cache PCs of <|> and <'>. + On the downside, this scheme does not allow all kinds of optimizations. Documentation: * Doxygen docs could be deployed on Github pages |