aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2015-06-30 15:57:57 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2015-06-30 15:57:57 +0200
commit624389e92fd4754df7fb1e909c5c1f9e2ff10910 (patch)
treea3d21928dab338d2da4c15bc215f06b6b4f222e0
parent3770ea2e4130223e3d48106c163b5ba124edc2a1 (diff)
downloadsciteco-624389e92fd4754df7fb1e909c5c1f9e2ff10910.tar.gz
updated TODO
-rw-r--r--TODO85
1 files changed, 60 insertions, 25 deletions
diff --git a/TODO b/TODO
index 5932ec4..559e69f 100644
--- a/TODO
+++ b/TODO
@@ -3,10 +3,13 @@
Also gspawn helpers should probably link with -all-static when compiling
a static glib. Why would be build a static glib but have the programs
depend on other libraries?
- * Scintilla fix has been merged into upstream - we should update
- to Scinterm 1.6.
+ * Wiki page about creating and maintaining lexer configurations.
+ Also mention how to use the "lexer.test..." macros in the
+ "edit" hook.
+ * OS X port (macports and/or homebrew)
Known Bugs:
+ * 0A at end of buffer should fail
* Null-byte in strings not always handled transparently
* 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
@@ -16,20 +19,21 @@ Known Bugs:
* crashes on large files: S^EM^X$ (regexp: .*)
* the glib allocators are fundamentally broken:
throwing exceptions is unsafe from C-linkage callbacks.
- * Batch mode is broken in PDCurses/win32. Apparently, there is no
- way to initialize curses without clearing the screen.
- * PDCurses/win32a defines a default function key CTRL+V that
- pastes the clipboard into the keyboard queue.
- Unfortunately, the declarations for turning off that feature
- are in the internal pdcwin.h.
- Also batch mode is broken in PDCurses/win32 - endwin() does not
- work.
+ We should abandon the custom allocators and rely on
+ SciTECO's memory limiting.
* 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 ValueStack as a stack of
macro strings and implement our own function calling.
Features:
+ * Use "SHUT_DOWN" function key on PDCurses/Win32a (see pdcwin.h).
+ * Some command to query the dirty-status of buffers (e.g. EJ).
+ This allows us to save all modified buffers. See #4.
+ * Mouse support. Not that hard to implement. Mouse events
+ use a pseudo function key macro as in Curses.
+ Using some special command, macros can query the current
+ mouse state (this maps to an Interface method).
* 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,
@@ -48,10 +52,26 @@ Features:
* some missing useful VideoTECO/TECO-11 commands:
* EF with buffer id
* ER command: read file into current buffer at dot
- * $$, ^C: return from macro
+ * $$, ^C: return from macro. $ should probably be a "complex"
+ command with two states, whereas the second character
+ determines the action. This will also improve command-line
+ termination which is now sometimes too early.
+ A lookahead is possible for "$" since it does not have
+ to be executed immediately - there's no side-effect visible
+ to the user until the second key has been pressed.
* nEW to save a buffer by id
- * use CRTP for RBTrees
- * "~" expansion in file names
+ * use CRTP for RBTrees to avoid unnecessary virtual method calls.
+ This means that like the original BSD headers, implementations
+ of the rbtree ops will be generated for every usage.
+ Since currently, only QRegister tables and goto tables are
+ RBTrees, the binary size overhead should be minimal.
+ There's another possible optimization: RBTrees define an entry
+ field for storing node color. This can be avoided on most
+ platforms where G_MEM_ALIGN > 1 by encoding the color in the
+ lowest bit of one of the pointers.
+ The parent pointer is not required for RBTrees in general,
+ but we do use the PREV/NEXT ops to iterate prefixes which requires
+ the parent pointer to be maintained.
* Buffer ids should be "circular", i.e. interpreted modulo the
number of buffers in the ring. This allows "%*" to wrap at the
end of the buffer list.
@@ -62,14 +82,23 @@ Features:
* link against libncursesw if possible
* translate documents to Unicode strings
* a position refers to a character/codepoint
- * Progress indication in commandline cursor
- * Command to free Q-Register (remove from table)
+ * Progress indication in commandline cursor:
+ Perhaps blinking or invisible?
+ * Command to free Q-Register (remove from table).
+ e.g. FQ (free Q). :FQ could free by QRegister prefix name.
* autocompletion of long Q-Reg names
- * Q-Register aliasing/linking
* TECO syntax highlighting
* multiline commandline
- * perhaps use Scintilla view as mini buffer
+ * perhaps use Scintilla view as mini buffer.
+ This means patching Scintilla, so it does not break lines
+ on new line characters.
+ * A Scintilla view will allow syntax highlighting
+ * command line could highlight dead branches (e.g. gray them out)
* improve GTK interface
+ * shell-like popup widget
+ * proper command-line widget (best would be a Scintilla view, s.a.)
+ * speed improvements
+ * color schemes
* backup files, or even better Journal files:
could write a Macro file for each modified file containing
only basic commands (no loops etc.). it is removed when the file is
@@ -81,8 +110,6 @@ Features:
dot on the QReg stack
* :EL command could also be used to convert all EOLs in the current
buffer.
- * command to change the current working directory. This will
- influence tab-completion and relative file names.
* 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
@@ -105,11 +132,12 @@ Features:
better methods (e.g. PDCurses has clipboard extensions, GTK+
has native clipboard support). On ncurses/UNIX we can fall back
to spawning xclip or copy xclip's functionality.
+ Unfortunately, not every UNIX has X11 (e.g. linux console,
+ OS X). What do we do on those systems?
This will also allow us to reverse clipboard modifications.
- * Program termination should be handled more elaborately.
- We should register a SIGTERM handler and react window close
- button presses. PDCurses/win32a allows that by defining a
- "SHUT_DOWN" function key (see pdcwin.h).
+ * Add a test suite. Most bugs can be tested for regressions
+ using a simple test suite that calls sciteco.
+ Use Autotest for instance.
Optimizations:
* Curses UI: Command line window can be modelled as a pad
@@ -129,8 +157,15 @@ Optimizations:
speed up things, especially Q-Register handling and the undo
stack.
This compiler capability should be checked by the build system.
+ C++11 already allows sized allocators in a class.
+ Testing shows that this does not speed up things on Linux
+ and prevents freeing memory on command line termination
+ (it would be glibc-specific).
+ We should test whether it brings any benefit on Windows
+ and implement with a build-time option.
* Scintilla: SETDOCPOINTER resets representations, so we
- have to set SciTECO representations up again often
+ have to set SciTECO representations up again often.
+ This should be patched in Scintilla.
* commonly used (special) Q-Registers could be cached,
saving the q-reg table lookup
* refactor search commands (create proper base class)
@@ -148,5 +183,5 @@ Optimizations:
significant side effects.
Documentation:
- * Code docs (Doxygen)
+ * Code docs (Doxygen). It's slowly getting better...
* clean up/fix generate-docs.tes