aboutsummaryrefslogtreecommitdiffhomepage
path: root/TODO
diff options
context:
space:
mode:
Diffstat (limited to 'TODO')
-rw-r--r--TODO76
1 files changed, 52 insertions, 24 deletions
diff --git a/TODO b/TODO
index 6801ee6..08b195c 100644
--- a/TODO
+++ b/TODO
@@ -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