aboutsummaryrefslogtreecommitdiffhomepage
path: root/TODO
blob: 4acc828759eade32698abbda6f7fdee5a4215929 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Known Bugs:
 * ??? Dot is not always restored properly (e.g. after closing file)
   need test case!!!
 * Null-byte in strings not always handled transparently
 * saving another user's file will only preserve the user when run as root
   (WON'T FIX!?)
 * Scintilla/Scinterm: sometimes <TAB> indents too much (see e.g. state declarations)

Features:
 * protect ED hook executions (process like "(<x>M0$)")
 * Progress indication in commandline cursor
 * catch OOM errors (can happen easily due to infinite loops)
 * undo-tokens per char limit (additional infinite loop safety)
 * Function-key support, configurable
   * generic function-key substitution, or
   * function-key encoding (e.g. Page-down -> ^FPD), or
   * function-key to ASCII/UTF mapping (as command executes macro of the same name)
 * Command to free Q-Register (remove from table)
 * autocompletion of long Q-Reg names
 * Q-Register aliasing/linking
 * EC command
   * perhaps support Bash completions
 * TECO syntax highlighting
 * multiline commandline
   * perhaps use Scintilla view as mini buffer
 * improve GTK interface
 * modifier for toggling string building processing
 * ??? optional modified-detection based on hash sums ???
 * 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
   saved. in case of an abnormal program termination the
   journal file can be replayed.

Optimizations:
 * refactor search commands (create proper base class)
 * refactor match-char state machine using MicroStateMachine class
 * simplify parser (static jump tables are unnecessary!)
 * search and other commands can be significantly optimized:
   in batch mode, or in loops/macros there is no need to rematch every character!
   -> immediate vs. non-immediate command execution
   * can be handled automatically in StateExpectString
 * batch mode can be optimized by preventing unnecessary allocations/deallocations
   for UNDO token creation. Check for undo.enabled in constructors like
   undo.push_msg|var() where the undo token destruction does not have any
   significant side effects.
 * use "friend" functions for C-linkage callbacks that must access a class'
   member instead of making that member public
 * when setting/getting Q-Reg string, use special dummy Scintilla view

Documentation:
 * Code docs (Doxygen)
 * Language reference?
 * Command reference