aboutsummaryrefslogtreecommitdiffhomepage
path: root/TODO
diff options
context:
space:
mode:
Diffstat (limited to 'TODO')
-rw-r--r--TODO165
1 files changed, 99 insertions, 66 deletions
diff --git a/TODO b/TODO
index b2f5821..678121d 100644
--- a/TODO
+++ b/TODO
@@ -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.