aboutsummaryrefslogtreecommitdiffhomepage
path: root/TODO
diff options
context:
space:
mode:
Diffstat (limited to 'TODO')
-rw-r--r--TODO348
1 files changed, 252 insertions, 96 deletions
diff --git a/TODO b/TODO
index f0d4487..b2f5821 100644
--- a/TODO
+++ b/TODO
@@ -1,7 +1,37 @@
Tasks:
* Have a look at TECO-86.
+ * VEDIT and PMATE for MS-DOS
+ * Scintilla: upstream 2 patches
Known Bugs:
+ * OBS GTK builds sometimes fail: "cannot open display"
+ Obviously, xvfb-run isn't reliable or has race conditions.
+ * 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.
+ * 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: 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.
@@ -16,6 +46,7 @@ Known Bugs:
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:
@@ -24,7 +55,25 @@ Known Bugs:
Affects both PDCurses/WinGUI and Gtk.
This no longer happens with ECbash -c 'while true; do true; done'$.
However ECping -t 8.8.8.8$ still cannot be interrupted.
+ * Win32 builds cannot work with the /mingw64 path as used in MSYS/MinGW.
+ 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.
+ idlok(FALSE) is apparently ignored.
+ * NetBSD: Very slow, even the redrawing.
+ This does not happen with ncurses on NetBSD.
* 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
@@ -36,7 +85,7 @@ Known Bugs:
when using Solarized. Affects e.g. the message line which uses the
reverse of STYLE_DEFAULT.
Perhaps we must call init_color() before initializing color pairs
- (currently done by Scinterm).
+ (currently done first by Scinterm).
* Saving another user's file will only preserve the user when run as root.
Generally, it is hard to ensure that a) save point files can be created
and b) the file mode and ownership of re-created files can be preserved.
@@ -83,10 +132,6 @@ Known Bugs:
There is also MoveFileEx(file, NULL, MOVEFILE_DELAY_UNTIL_REBOOT).
* Windows has file system forks, but they can be orphaned just
like ordinary files but are harder to locate and clean up manually.
- * Setting window title is broken on ncurses/XTerm.
- The necessary capabilities are usually not in the Terminfo database.
- Perhaps do some XTerm magic here. We can also restore
- window titles on exit using XTerm.
* The XTerm OSC-52 clipboard feature appears to garble Unicode characters.
This is apparently an XTerm bug, probably due to 8-bit-uncleanliness.
It was verified by `printf "\e]52;c;?\a"` on the command line.
@@ -121,10 +166,6 @@ Known Bugs:
be set/disabled.
This doesn't even work with SCI_SETPROPERTY, probably since
we do lexing "in the container".
- * Mac OS: The colors are screwed up with the terminal.tes color scheme
- (and with --no-profile) under Mac OS terminal emulators.
- This does not happen under Linux with Darling.
- See https://github.com/rhaberkorn/sciteco/issues/12
* File name autocompletion should take glob patterns into account.
The simple reason is that if a filename really contains glob characters
and you are trying to open it with EB, you might end up not being
@@ -132,9 +173,9 @@ Known Bugs:
escaped glob patterns.
Unfortunately, this would be very tricky to do right.
* The git.blame macro is broken, at least on Git v2.45.2 and v2.25.1. Compare
- cat sample.teco_ini | git blame --incremental --contents - -- sample.teco_ini | grep -E '^[a-f0-9]{40}'
+ cat fallback.teco_ini | git blame --incremental --contents - -- fallback.teco_ini | grep -E '^[a-f0-9]{40}'
(which is wrong and does not even contain all commits) with
- git blame --incremental --contents sample.teco_ini -- sample.teco_ini | grep -E '^[a-f0-9]{40}'
+ git blame --incremental --contents fallback.teco_ini -- fallback.teco_ini | grep -E '^[a-f0-9]{40}'
which is correct. Without --incremental even the formatting is broken.
This could well be a Git bug.
* Margins, identions and the like are not configured on the unnamed
@@ -155,16 +196,43 @@ Known Bugs:
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:
+ * Wine: The Windows GTK version no longer works:
"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
+ * Wine: --stdin is broken:
+ "g_io_channel_read_chars: assertion 'channel->is_readable' failed"
+ This among other things prevents bootstrapping and test suite runs under Wine when cross-compiling
+ from Linux or FreeBSD.
+ Therefore Windows cross compilations are currently included in .fmsbw/10-freebsd14-msys-sciteco.
+ https://bugs.winehq.org/show_bug.cgi?id=58745
+ https://gitlab.gnome.org/GNOME/glib/-/issues/3793
* 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.
+ * repl.tes terminates when encountering the first error.
+ This requires error catching to be fixed.
+ 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.
Features:
+ * Should we support *.sgml files with the HTML lexer?
+ Old Docbook documents are sometimes SGML based.
+ * Folding support: Perhaps there should also be builtin commands
+ [:]F+ and [:]F-
+ The mouse events in fnkeys.tes would have to edit the
+ commandline, though.
* Gtk: special key macros for drag-and-drop interactions?
+ This could be used to send the tabs of one SciTECO process into another
+ instance and close the sender instance.
+ * The opposite is also useful and could be done now already:
+ A macro that takes the current buffer (or a buffer range?)
+ and opens a new SciTECO instance with it. If successful, the
+ given buffer is removed from the ring.
+ This would work with the Curses version as well.
+ Could we also send tabs into an existing SciTECO instance?
+ Would probably require some kind of server...
* opener.tes should try to center the opened line
(SCI_SETFIRSTVISIBLELINE).
* Rubout of SCI_GOTOPOS could also restore the vertical
@@ -180,8 +248,6 @@ Features:
insert commands with default escape chars.
Then this could be part of fnkeys.tes.
* :$ and :$$ to pop/return only single values
- * allow top-level macros to influence the proces return code.
- This can be used in macros to call $$ or ^C akin to exit(1).
* Special macro assignment command.
It could use the SciTECO parser for finding the end of the
macro definition which is more reliable than @^Uq{}.
@@ -203,9 +269,6 @@ Features:
be no more real need for command variants with disabled
string building (as string building will naturally always
be disabled in parser-terminator-mode).
- Instead, a special string building character for disabling
- string building character processing can be introduced,
- and all the command variants like EI and EU can be repurposed.
Q-Reg specs should support alternative balanced escapes as well
for symmetry.
* Numbers could be separate states instead of stack operating
@@ -242,6 +305,7 @@ Features:
and it's good to keep true integers around.
* Having a separate number parser state will slightly simplify
number syntax highlighting (see teco_lexer_getstyle()).
+ * The first application of floats could be for U[lexer.font].
* ^H as shortcut for 16^R. ^H is backspace, but it won't be
necessary to type very often.
* Key macro masking flag for the beginning of the command
@@ -259,6 +323,10 @@ Features:
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.
* 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
@@ -271,24 +339,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
- * 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,
- We will need flags like and --quiet with
- single-letter forms to make it possible to write hash-bang
- lines like #!...sciteco -q8iom
- Command line arguments should then also be handled
- differently, passing them in an array or single string
- register, so they no longer affect the unnamed buffer.
- * Once we've got --stdout, it makes sense to ship a version of
- tecat written in SciTECO.
- This is useful as a git diff textconv filter.
- See https://gist.github.com/rhaberkorn/6534ecf1b05de6216d0a9c33f31ab5f8
- * For third-party macro authors, it is useful to know
- the standard library path (e.g. to install new lexers).
- There could be a --print-path option, or with the --quiet
- and --stdout options, one could write:
- sciteco -qoe 'G[$SCITECOPATH]'
* Now that we have redo/reinsertion:
When ^G modifier is active, normal inserts could insert
between effective and rubbed out command line - without
@@ -302,25 +352,24 @@ Features:
rubbed out command line).
* some missing useful VideoTECO/TECO-11 commands and unnecessary
incompatibilities:
- * EF with buffer id
- * ER command: read file into current buffer at dot
- * nEW to save a buffer by id
- * EI is used to open an indirect macro file in classic TECO.
- EM should thus be renamed EI.
- EM (position magtape in classic TECO) would be free again,
- e.g. for execute macro with string argument or as a special version
- of EI that considers $SCITECOPATH.
- Current use of EI (insert without string building) will have
- to move, but it might vanish anyway once we can disable string building
- with a special character, eg. you could write I^C instead.
+ * EI$ would "resume" command input from the terminal in TECO-11.
+ But how is that different from ^C/$$ in SciTECO?
+ * In TECOC, <EI> searches the TEC_LIBRARY and ignores the file extension.
+ This is generally very useful to have, how to force a file name verbatim?
+ You can always add a leading `./` of course.
+ * <^C> actually returns all the way back to the command-line in
+ TECO-11, ie. it aborts the current command string.
+ This cannot be fully reproduced in SciTECO, but we could
+ return from all the stack frames up to the toplevel macro.
* <I> doesn't have string building enabled in classic TECO.
Changing this would perhaps be a change too radical.
Also, we would then need a string-building variant like <:I>.
- * <FN> as a search-replace variant of <N>.
* FB for bounded search and FC for bounded search-replace.
One advantage in comparison to ::S
(which also supports arguments in SciTECO), would be the ability
to bound comparisons by line with n:FB.
+ * FRtext$ is equivalent to ^SDItext$ in DEC TECO.
+ If we adopt these semantics we should of course prefer ^YDItext$.
* Searches can extend beyond the given bounds in DEC TECO
as long as they start within the range.
That's why ::S is equivalent to .,.:FB in DEC TECO.
@@ -328,29 +377,38 @@ Features:
just like in Video TECO.
The DEC behavior could be achieved by always searching till the end
of the buffer, but excluding all matches beyond the target range.
- * ^A, :Gq, T and stdio in general
- * nA returned -1 in case of invalid positions (similar to SciTECO's ^E)
- instead of failing in DEC TECO.
- The failing <A> command is inherited from Video TECO.
- * ^W was an immediate action command to repaint the screen.
- This could be a regular command to allow refreshing in long loops.
- Video TECO had ET for the same purpose.
- TECO 10 had a ^W regular command for case folding all strings,
- but I don't think it's worth supporting.
* MSUTECO for MS-DOS had ^P for giving the number of characters
until the next matching ( ) { } [ ] < > " '.
However there is no single way to get brace skipping right,
so this might be prime candidate for a macro.
- * There should be a string building character for including
- a character by code. Currently, there is only ^EUq where
- q must be set earlier.
- This would be useful when searching in binary files or
- to include Unicode characters by code point.
- Unfortunately its syntax cannot depend on the string argument's
- encoding, as that could confuse parse-only mode.
- TECO-11 has ^E<nnn> for octal-only, which is extended by Video TECO
- to support the typical strtoul() semantics.
- This is probably what we want as well.
+ * Video TECO's <EC> updates the display when reading from
+ long running processes. This might be useful as well, at least
+ when detecting interactive invocation.
+ But perhaps there should rather be a global configurable delay/refresh
+ that could be considered by all loops etc.
+ * Video TECO: EQq...$ and ER...$ accepts glob patterns and reads
+ all files into the register. But we probably won't want to have that.
+ * :EB -> Bool on Video TECO.
+ * Video TECO: EV as an alias for EB, but create read-only buffer.
+ * EN behaves differently on TECO-11.
+ We could only emulate it by immediately traversing the entire
+ directory. EN however is also heavily overloaded on SciTECO
+ and we probably don't want to loose these features.
+ * ET for controlling stdio. Currently you must execute stty.
+ This would require binding the UNIX-specific tcsetattr(),
+ as Curses APIs won't be available in Gtk.
+ Does it also make sense to perform echoing of control codes
+ in ^A as TECO-11 does by default?
+ * Add flag to allow redirecting output to stderr.
+ * ^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.
+ * <F?> Return a random value between 1 and n
+ Could automatically work with floats.
* n:"x to leave <n> on the stack (i.e. only peek). This simplifies
expressions like Qa"N Qa ...
* Perhaps there should be a pattern match construct for word characters
@@ -394,24 +452,16 @@ Features:
* 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.
- * multiline commandline
- * Perhaps use Scintilla view as mini buffer.
- This means patching Scintilla, so it does not break lines
- on new line characters and we can use character representations
- (extend SCI_SETLINEENDTYPESALLOWED?).
- Also, we cannot currently force ^I to be rendered with representations.
- cmdline.c can then directly operate on the Scintilla document.
- * A Scintilla view will allow syntax highlighting
- * These Scintilla enhancements will also improve hex mode (M#hx).
+ * EF is currently disallowed when editing a Q-Reg unless a numeric
+ argument is specified.
+ On Video TECO it appears to free the current Q-Reg, which probably
+ makes more sense than the current semantics.
+ Should be changed along with implementing FQq.
* command line could highlight dead branches (e.g. gray them out)
* Perhaps add a ^E register analogous to ":", but working with
byte offsets. This would mainly be useful in ^E\^E.
* EL command could also be used to convert all EOLs in the current
buffer.
- * nEL should perhaps dirtify the buffer, at least when automatic
- EOL translation is active, or always (see above).
- The dirty flag exists to remind users to save their buffers and
- nEL changes the result of a Save.
* exclusive access to all opened files/buffers (locking):
SciTECO will never be able to notice when a file has been
changed externally. Also reversing a file write will overwrite
@@ -439,13 +489,14 @@ Features:
* Touch restored save point files - should perhaps be configurable.
This is important when working with Makefiles, as make looks
at the modification times of files.
- * There should really be a backup mechanism. It would be relatively
- easy to implement portably, by using timeout() on Curses.
- The Gtk version can simply use a glib timer.
- Backup files should NOT be hidden and the timeout should be
- configurable (EJ?).
+ * Could we somehow offer to open #recovery# files?
+ This would require a hook on interactive startup and/or after
+ 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.
* Error handling in SciTECO macros: Allow throwing errors with
- e.g. [n]ET<description>$ where n is an error code, defaulting
+ 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
defaults. All internal error classes use defined codes.
Errors could be catched using a structured try-catch-like construct
@@ -454,11 +505,12 @@ Features:
We will have to go through all the command implementations as well
since must no longer rely on undo token execution after
throwing errors.
+ * Error codes should probably be logged to the console
+ as well. Perhaps adopt a style similar to DEC TECO: Exxxx
* Backtracking execution semantics, bringing the power of SNOBOL
(and more!).
This can be a variant of a structured error handling construct.
This will also require managing our own function call stack.
- See https://github.com/rhaberkorn/sciteco/issues/26#issuecomment-2449983076
* Once we have our own function call stack,
it will be possible, although not trivial, to add support for
user-definable macros that accept string arguments, eg.
@@ -514,11 +566,6 @@ 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):
- * 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
* Mac OS Arm64 builds either separately or via universal binary.
See https://codetinkering.com/switch-homebrew-arm-x86/
Target flag: `-target arm64-apple-macos11`
@@ -528,6 +575,12 @@ Features:
* Get into mentors.debian.net. First step to being adopted
into the Debian repositories.
* Get meta-rhaberkorn into https://layers.openembedded.org
+ * AppImage via OBS.
+ Apparently the AppImage repo is based on openSUSE 15.6.
+ I have to fix openSUSE 15.6 builds.
+ * CircleCI could be used for Windows and Mac OS builds.
+ Supposedly it works from arbitrary (self-hosted) Git repositories.
+ https://circleci.com/docs/guides/plans-pricing/plan-free/
* Bash completions.
* FreeBSD: rctl(8) theoretically allows setting up per-process actions
when exceeding the memory limit.
@@ -550,10 +603,7 @@ Features:
to XOR, allowing for the idiom `Qa~Qb"=` when checking for equality
that is faster than using `-` and works for floats as well.
* ^& could be a NAND operator.
- * Perhaps ignore whitespace after @ as does TECO-64.
- There is little benefit in using spaces or tabs as string delimiters,
- but ignoring whitespace may increase readability. Eg.
- @^Ua {...}
+ * ^< left shift, ^> right shift
* 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).
@@ -676,11 +726,81 @@ Features:
i.e. typically shell-like languages with "$var" constructs.
* Install autocompletion scripts. They will have to be preprocessed,
though. See also
- https://github.com/rhaberkorn/sciteco/wiki/Shell-auto-completions
+ https://sciteco.fmsbw.de/knowledge/Shell%20auto%20completions/
* There should perhaps we a --revision siteconfig option, to pass
in a Git revision, that's printed by `sciteco --help`.
But it would have to work with tarballs as well, so it has to be
written into a separate header, that can be distributed.
+ * Perhaps undefined operations like -(X) should check X for MININT.
+ * m,nQq to get a list of codepoints from char m to n.
+ This would ease subscripting, e.g. to remove the last character:
+ 0,:Qq-1Qq^Uq$
+ There should also be m,nA for consistency.
+ * Sort order in Q-register autocompletions should be numeric,
+ so ^A11 comes after ^A1.
+ * FFI interface: There could be a command nFXlib$func$str$
+ to call C function func() from lib with a string argument and numeric
+ arguments. Would allow extending SciTECO with external libraries
+ as well.
+ * Solaris libxcurses (/usr/include/xpg4/curses.h)
+ is X/Open compatible and could be supported.
+ * Go-to labels cannot practically contain commas since when used with the <O>
+ command it would be interpreted as a label list.
+ This could be worked around by expecting label lists only if an integer
+ is given (ie. no longer imply 0).
+ However, it would be nice if we could include commas in labels of
+ the <nO> variant as well.
+ Also, labels cannot contain `!`.
+ The "," and "!" restrictions are mainly relevant when using computed
+ gotos in O^EQ[label]$ as you cannot match arbitrary strings.
+ * pad,n\ to format number with padding.
+ Allowing `\` to format multiple numbers when called with a list
+ of numbers makes little sense.
+ I find myself wanting to pad numbers, especially hexadecimal numbers,
+ often. If <pad> is negative it might perform a right padding with
+ spaces.
+ 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(),
+ which cannot be reliably identified as small horizontal lines.
+ We'd have to patch Scintilla APIs as well.
+ * Auto-completion popup should perhaps be above the line with the cursor
+ in multi-line command lines.
+ This would be tricky to do in Gtk, though since we're currently using
+ an overlay.
+ * <EB> could create directories on demand and clean them up on rubout.
+ Unless additional files appeared in the meantime, in which case we should
+ output a warning.
+ * Savepoint and recovery files could fall back to ~/ if writing in the same
+ directory is not possible.
+ Or savepoint files should perhaps fall back to /tmp.
+ * ^E@q could be a generic escape mechanism instead of having separate
+ constructs like ^E@q and ^ENq (for globbing).
+ You rarely need both in the same command and we would need potentially
+ many more variants, especially for escaping search patterns.
+ So ^E@q could just do the right thing in the right context via a
+ teco_state_expectstring_t callback (defaulting to ^EQq).
+ On Windows without POSIX-Shell emulation, it could also properly
+ escape for cmd.exe.
+ On the downside, ^E@q could no longer be used to construct shell
+ scripts in the buffer or Q-registers.
+ * session.tes: Allow sessions to be opened after startup and
+ navigating into the correct directory with FG.
+ This would help with non-terminal-based workflows.
+ * There could be a key macro script for my Russian-phonetic
+ keyboard layout. This would probably require some new
+ key macro states as well.
Optimizations:
* Use SC_DOCUMENTOPTION_STYLES_NONE in batch mode.
@@ -721,6 +841,9 @@ Optimizations:
using __VA_OPT__().
* A few macros like TECO_CTL_KEY() could be turned into
constexpr functions.
+ * teco_state_t should be a constexpr, so that static
+ assertions are guaranteed to work on them.
+ This means you can get rid of the TECO_ASSERT_SAFE() hack.
* Compound literals could be abused for default values in the
Scintilla SSM functions. All the wrapper functions would have to be
turned into macros, though.
@@ -761,6 +884,7 @@ Optimizations:
are defined.
But how to even test for glibc's ptmalloc?
Linux could use musl as well for instance.
+ * Evaluate TLSF allocator.
* Resolve Coverity Scan issues.
If this turns out to be useful, perhaps we can automatically
upload builds via CI?
@@ -781,6 +905,25 @@ Optimizations:
priorities, so we can call the interface cleanup last.
Unfortunately, destructor-priorities are not supported on all targets.
atexit() callbacks are apparently called before the destructors.
+ * Are there any numerical warnings we could activate?
+ There have been quite some bugs due to numeric issues.
+ -Wsign-compare -Wconversion
+ Even -Werror?
+ * Add build system support for some static code analyzer.
+ scan-build, clang-tidy or CodeChecker?
+ Or run scan-build in CI with a selection of fatal warnings.
+ * The unix.Malloc check unfortunately produces countless bogus warnings
+ due to g_auto.
+ * Refactor control flow commands into flow-commands.c.
+ * fnkeys.tes: Don't insert (0C) or (0R).
+ * tecat.tes is too slow even though it doesn't even use Q-reg strings.
+ An ideal test case to study.
+ * the process_edit_cmd() callbacks from cmdline.c should probably
+ be in a separate compilation unit.
+ * Perhaps EOL normalization can be avoided by letting teco_view_glyphs2bytes() &
+ co take care of it.
+ However insertion commands would also have to take care of expanding
+ LF to the buffers EOL sequence.
Documentation:
* Doxygen docs could be deployed on Github pages
@@ -816,3 +959,16 @@ Documentation:
installed along with other documents.
Then however we'd have to tweak it, so the CI-generated
file always looks good.
+ * We probably do not declare FOSS licenses properly.
+ Except for the Debian package.
+ Should all the licenses be mentioned in COPYING as well?
+ We definitely have to ship licensing information in the binary
+ distributions, so adding everything to COPYING would be easiest.
+ On the other side, in binary distros we have to include licenses
+ for all the shipped DLLs as well.
+ * sciteco(7) should document the difference between state
+ controlled by the SciTECO language and other state (scroll
+ position, window size, folding) and what that all means
+ for writing robust macros.
+ * Knowledge Base: Document how to open SciTECO from file managers,
+ so that sessions are initialized correctly.