diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2015-06-30 15:57:57 +0200 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2015-06-30 15:57:57 +0200 |
commit | 624389e92fd4754df7fb1e909c5c1f9e2ff10910 (patch) | |
tree | a3d21928dab338d2da4c15bc215f06b6b4f222e0 | |
parent | 3770ea2e4130223e3d48106c163b5ba124edc2a1 (diff) | |
download | sciteco-624389e92fd4754df7fb1e909c5c1f9e2ff10910.tar.gz |
updated TODO
-rw-r--r-- | TODO | 85 |
1 files changed, 60 insertions, 25 deletions
@@ -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 |