diff options
Diffstat (limited to 'TODO')
| -rw-r--r-- | TODO | 165 |
1 files changed, 99 insertions, 66 deletions
@@ -1,7 +1,7 @@ Tasks: * Have a look at TECO-86. * VEDIT and PMATE for MS-DOS - * Scintilla: upstream 2 patches + * Make sure that fmsbw.de is indexed by Google Known Bugs: * OBS GTK builds sometimes fail: "cannot open display" @@ -9,48 +9,36 @@ Known Bugs: * In multiline command lines, the asterisk can scroll out of view. Perhaps it has to be drawn independently of Scinterm. * FreeBSD's `crontab -e` is not compatible with SciTECO's savepoint mechanism. - * ncurses: GNOME Terminal and Xterm produces BUTTON3_PRESSED (without BUTTON3_RELEASED) - events when scrolling horizontally. - This is fixed upstream in ncurses and there is a workaround for - older ncurses versions which limits the effects of this bug. - * ncurses: st and Xterm produce BUTTON2_RELEASED, followed by BUTTON2_PRESSED - when clicking the middle button. - We also *sometimes* get it in the correct order. - This bug has been fixed upstream and there is a workaround for - older ncurses versions. You may loose the distinction between - pressed and release events, though. + * Gnome Terminal: You can see hardware cursor flickering when deleting + lines repeatedly (if it's enabled of course). This is also visible in Aerc. + Scroll regions are already used, but only when scrolling. + Disabling the hardware cursor around doupdate() causes flickering + of the cursor on some terminals. * Upgrade to Scintilla 5.5.7 requires charconv header which bumps the minimum GCC version to 8.1 (officially 9). This breaks OpenSUSE 15.5-15.6 builds. * Build problems on Fedora 41: See mail from Blake McBride. - * @^Um{-$$} Mm= should probably return -1. * {@I/$$23=/} doesn't insert anything after $$. - This would be necessary for an interactive screen editing script, - that leaves you in <I> always. This would require some refactoring. + * GTK on Haiku: CTRL and AltGr-combinations do not work. + The modifiers are not delivered properly and it appears to affect all Gtk apps + on Haiku. * Gtk: The control characters in tutorial.woman are still styled with the variable-width font since its rendered in STYLE_CONTROLCHAR (36), which is reset in woman.tes. Perhaps it should always be in lexer.font. - * The current horizontal position (set by 4EJ via SCI_GETCOLUMN) is - often wrong, i.e. pressing the up-cursor key can get you into the - wrong column. - Character representations obviously take always one column. - This would have to be fixed in Scintilla's SCI_GETCOLUMN. * Excessively long lines slow down SciTECO too much, especially when enabling SCI_SETWRAPMODE(SC_WRAP_CHAR). In some cases, the internal redrawing blocks SciTECO forever. * @ES/SCI_CLEARALLREPRESENTATIONS// does nothing. Might be a Scintilla bug. - * PDCurses/Wincon does not report button released events. - We try to work around this with click detection, - but it still behaves a bit oddly. - See https://github.com/Bill-Gray/PDCursesMod/issues/330 - Waiting for PDCurses in MSYS to be updated. - * 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: - https://github.com/Bill-Gray/PDCursesMod/issues/322 + * Some operations can be hard to interrupt because they result + in costly calculations within Scintilla. + For instance interrupting ECcat /dev/zero$ can hang in + the Scintilla Undo operation. + This particular hang could be avoided by getting rid of + Scintilla undo actions in teco_view_load_from_channel() and spawn.c. + We can probably only get rid of undo actions completely and globally. * Win32: Interrupting <EC> will sometimes hang. Affects both PDCurses/WinGUI and Gtk. This no longer happens with ECbash -c 'while true; do true; done'$. @@ -59,28 +47,23 @@ Known Bugs: However the UNIX path translation appears to be a Cygwin feature. If SciTECO would do that, it might break other things (e.g. you might want to refer directory C:\mingw64 instead). - * Win32/Wincon: cat ... | sciteco -i - "Redirection is not supported." - PR: https://github.com/Bill-Gray/PDCursesMod/pull/344 - Waiting for an MSYS package releae. - * PDCurses/Win32: Both Wincon and WinGUI crash when you press *any* - non-ANSI character. This is fixed since PDCurses v4.5.2: - https://github.com/Bill-Gray/PDCursesMod/issues/335 - We're waiting for an MSYS package upgrade. - It could also be worked around by using wget_wch() instead of wgetch(). * PDCurses/Win32: Crashes sometimes without any error message. * NetBSD Curses: scrolling apparently uses hardware idl capabilities - resulting in graphical glitches on slow terminals. + without scroll regions resulting in graphical glitches on slow terminals. idlok(FALSE) is apparently ignored. - * NetBSD: Very slow, even the redrawing. + * NetBSD Curses: Very slow, even the redrawing. This does not happen with ncurses on NetBSD. + Do they have immedok(TRUE) enabled by default? * dlmalloc's malloc_trim() does not seem to free any resident memory after hitting the OOM limit, eg. after <%a>. Apparently an effect of HAVE_MORECORE (sbrk()) - some allocation is always left at the end. * S<LF>^ES^N<$ does not find the first line that does not begin with "<". This is because \s+ backtracks and can match shorter sequences. - Perhaps ^ES should always be translated to \s++ (possessive quantifier)? + TECO-11 patterns do not backtrack apparently. + Perhaps ^ES should always be translated to \s++ (possessive quantifier). + On the other hand, we would have to extend the pattern syntax to allow + backtracking. * Colors are still wrong in Linux console even if TERM=linux-16color when using Solarized. Affects e.g. the message line which uses the reverse of STYLE_DEFAULT. @@ -105,6 +88,7 @@ Known Bugs: 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 would also be possible to port hxrex to UTF-8 and add it as a submodule. * 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 @@ -215,6 +199,27 @@ Known Bugs: Also, the command-line redrawing is still broken in GNOME Terminal. * When config.status is run as a consequence of touching configure.ac, config.h will be wrong, forcing us to rerun ./configure. + * Does not scroll at the end of a multiline command-line + (the first character on a scrolled line will not be visible). + On Curses the hardware cursor will still stay at the end of the window of course. + Obviously a Scintilla bug. + Break on EditView::DisplayFromPosition + Perhaps the problem is in Editor::MaxScrollPos(). + As a workaround, we set SCI_SETENDATLASTLINE(0). + * OBS builds do not provide Ubuntu i586 since subversion is obviously no longer + packaged, breaking obs-service-tar-scm. + Is there any third-party build? + * GTK: too much flickering in tank mode when shooting. + This is because my font doesn't contain the correct glyph. + Try: I ^E<10041>$ + Perhaps we should use more widespread glyphs. + https://groups.google.com/g/scintilla-interest/c/ZgLik8tNyjM + * There are still potentially blocking syscalls that could result in + SciTECO hanging. Curses/UNIX can rely on SIGINT, but this won't + help on any other platform. + All blocking operations must be within an event loop and call into + teco_interface_is_interrupted() to potentially drive the UI and + detect CTRL+C presses. Features: * Should we support *.sgml files with the HTML lexer? @@ -235,6 +240,7 @@ Features: Would probably require some kind of server... * opener.tes should try to center the opened line (SCI_SETFIRSTVISIBLELINE). + However, this would require a new ED hook, so we can query SCI_LINESONSCREEN. * Rubout of SCI_GOTOPOS could also restore the vertical scrolling position (SCI_SETFIRSTVISIBLELINE). So e.g. rubbing out ZJ restores the exact view. @@ -312,21 +318,11 @@ Features: line. May be useful e.g. for solarized's F5 key (i.e. function key macros that need to terminate the command line as they cannot be rubbed out properly). - * Key macros could support special escape sequences - that allow us to modify the parser state reliably. - E.g. one construct could expand to the current string argument's - termination character (which may not be Escape). - In combination with a special key macro state - effective only in the start state of the string building - state machine, perhaps only in insertion commands, this - could be used to make the cursor movement keys work in - insertion commands by automatically terminating the command. - Even more simple, the function key flag could be effective - only when the termination character is $. - Instead of reserving a character, we could also reserverve - a bit in the function key maks. - It's however impossible to reliably return to the start state - from arbitrary parser states. + * Key macro flag to automatically terminate insertion commands + (or everywhere where it's safe). + Should be used to make the cursor movement keys (fnkeys.tes) + automatically terminate string arguments. + Will probably require a new state callback. * Support more function keys. We can define more function keys via define_key(3NCURSES). Unfortunately they are not really standardized - st and urxvt for instance @@ -403,7 +399,6 @@ Features: * ^A currently doesn't flush the output. Perhaps flushing should be controlled by the language. Perhaps via the ET flags. - * Mini game where you can drive a tank around your source code. * `@]q` to pop keeping the numeric part of q intact. Perhaps `@@]q` to overwrite __only__ the numeric part, but keeping the string intact. @@ -494,7 +489,12 @@ Features: command-line termination. Also, we'd need a command to fetch the modification timestamp as well. - * Recovery files should probably be hidden during auto completions. + * Curses: Dump recovery files on SIGTERM and SIGHUP as well. + Useful when we are unexpectedly but gracefully terminated, + Could only be done on Curses by setting a small timeout and + returning from getch() frequently to check whether the signal + ocurred. + On Wincon we could also react to window closes. * Error handling in SciTECO macros: Allow throwing errors with e.g. [n]^F<description>^F where n is an error code, defaulting to 0 and description is the error string - there could be code-specific @@ -607,6 +607,7 @@ Features: * It should be possible to disable auto-completions of one-character register names, so that we can map the idention macro to M<TAB>. * Add a configure-switch for LTO (--enable-lto). + All of the packages will have to be adapted as well. * There should be a string building construct for escaping search patterns. Since string building is performed immediately before @@ -614,9 +615,12 @@ Features: search for a Q-Register verbatim. * Tweak the Makefile lexer for Automake support. In the simplest case, just add the *.am file extension. - * Add an fnkeys.tes alternative where moving cursor keys + * Add key macros where moving cursor keys leaves you in the insert (I) command. That will behave very similar to classical editors. + See n00b.tes. + This still requires an ED hook for new command lines and + FQ to remove Q-registers. * Lexing via SciTECO macros? They would have to be in their own parser instance since Scintilla could ask us to restyle at any time and within string arguments, @@ -713,6 +717,9 @@ Features: ^U[^L0]SciTECO ^XI <^XT> ^XF$ As a first step, customizing the window title might be the most useful, as often, you don't need the "SciTECO - <Buffer>" prefix. + * Would also allow the configuration of "powerline" symbols at least + for the Curses variant. + https://github.com/ryanoasis/powerline-extra-symbols * Until we have customizeable layouts, it may make sense to hardcode the current line+column in to the message line. * With Unicode icon support, we might want to replace a few more @@ -762,14 +769,6 @@ Features: To format a hex byte, you would write 16^R 2,Qa\ ^D. The same extension might not be desirable for =/==/===, unless they are colon-modified?. - * Curses: allow freely using RGB colors instead of only the constants - corresponding with the 16 default curses colors. - Scinterm v5.5 supports that. This means we also need a hash map for - mapping RGB color values to curses color numbers, analoguous to what - Scinterm does. - The problem of Scinterm reusing the same color namespace both for - arbitrary RGB values and for predefined special constants however - hasn't been solved yet. * Scinterm: INDIC_PLAIN and INDIC_STRIKE could theoretically be supported. PDCurses has A_STRIKETHROUGH. This would require Scintilla API changes, though, as it currently calls SurfaceImpl::FillRectangle(), @@ -801,6 +800,40 @@ Features: * There could be a key macro script for my Russian-phonetic keyboard layout. This would probably require some new key macro states as well. + * Allow the hardware cursor (CARETSTYLE_CURSES) on the main view as well. + We'd have to handle an overlapping info popup, though. + Should we deactivate the hardware cursor via curs_set(0) if it overlaps + the popup? + * ncurses: Support default colors (use_default_colors()). + Instead of drawing a black background and white foreground + we could use pair number -1. + This means you don't suddenly become white-on-black on terminals + that use black-on-white by default. + On the other hand, not all color schemes might look good, + so this would have to be a setting (ED flag). + Also, Scinterm would have to support it as well. + This also appears to be responsible for the greyish background + on Haiku and GNOME Terminal: They don't have a true black as color 0 + even if the default terminal background is a true black. + * Ctags support + Perhaps can be Video TECO compatible. + https://github.com/universal-ctags/ctags + * Non-spacing code points would currently be handled as separate + SciTECO characters. + On the one hand, this means you can remove accents from characters. + On the other hand, it may be inconvinient in texts with many accents. + What do Asian scripts like Hangul do? + * :^Q should perhaps return a status code, so you can check for + invalid line ranges. + The current :^Q (dot to line) would have to be renamed to + something else, like ^L. + Or alternatively @^Q could simply ignore out of range + arguments. + * Perhaps add math.tes with primitives from my Project Euler + solutions to the standard library. + * :^W should perhaps inhibit the caret scrolling. + When using ^W purely as a wait command, this could be undesirable. + Also, it is undesirable for some animations (e.g. shooting in tank.tes). Optimizations: * Use SC_DOCUMENTOPTION_STYLES_NONE in batch mode. |
