another update from CVS HEAD, for QA
[alioth/jupp.git] / TODO
1 F-keys:
2
3                 F1    F2    F3    F4    F5     F6     F7     F8    F9    F10   F11   F12
4 MirBSD console  ^[[11~^[[12~^[[13~^[[14~^[[15~ ^[[17~ ^[[18~ ^[[19~^[[20~^[[21~^[[23~^[[24~     also “ssh 3.2”, PuTTY, rxvt below
5 xterm           ^[OP  ^[OQ  ^[OR  ^[OS  ^[[15~ ^[[17~ ^[[18~ ^[[19~^[[20~^[[21~^[[23~^[[24~     also cygwin abusch, st izabera
6 gnome-t. below    -   ^[OQ  ^[OR  ^[OS  ^[[15~~^[[17~~^[[18~~^[[19~^[[20~  -   ^[[23~^[[24~
7 konsole         ^[OP  ^[OQ  ^[OR  ^[OS  ^[[15~ ^[[17~ ^[[18~ ^[[19~^[[20~^[[21~  -   ^[[24~     also yakuake
8 linux console   ^[[[A ^[[[B ^[[[C ^[[[D ^[[[E  ^[[17~ ^[[18~ ^[[19~^[[20~^[[21~^[[23~^[[24~     also cygwin console below
9
10
11 Do something with these keys:
12
13 -------
14 ssh 3.2
15 -------
16 Arrow: \e[C \e[D \e[A \e[B
17 Home: \e[2~ (uhg!)
18 End: \e[4~
19 Pgup: \e[5~
20 Pgdn: \e[6~
21 Ins: \e[2~
22 Del: \7f
23
24 Ctrl-arrow: -
25 Alt-arrow: - (can set Alt=ESC mode, but doesn't work with arrow keys)
26 Shift-arrow: -
27
28 -----
29 PuTTY
30 -----
31
32 Arrow: \e[C \e[D \e[A \e[B
33 Home: \e[1~
34 End: \e[4~
35 Pgup: \e[5~
36 Pgdn: \e[6~
37 Ins: \e[2~
38 Del: \e[3~
39
40 Ctrl-arrow: \eOC \eOD \eOA \eOB
41 Ctrl-home: -
42 Ctrl-end: -
43 Ctrl-pgup: putty scroll back
44 Ctrl-pgdn: putty scroll fwrd
45 Ctrl-ins: -
46 Ctrl-del: -
47
48 Alt-arrow: \e\e[C \e\e[D \e\e[A \e\e[B
49 Alt-pgup: \e\e[5~
50 Alt-pgdn: \e\e[6~
51 Alt-home: \e\e[1~
52 Alt-end: \e\e[4~
53 Alt-ins: \e\e[2~
54 Alt-del: \e\e[3~
55
56 Shift-arrow: \e[C \e[D \e[A \e[B
57 Shift-home: \e[1~
58 Shift-end: \e[4~
59 Shift-pgup: putty scroll back
60 Shift-pgdn: putty scroll fwrd
61 Shift-ins: \13
62 Shift-del: \e[3~
63
64 -----
65 XTerm
66 -----
67
68 Arrow: \e[C \e[D \e[A \e[B
69 Home: \e[H
70 End: \e[F
71 PgUp: \e[5~
72 PgDn: \e[6~
73 Ins: \e[2~
74 Del: \e[3~
75
76 Ctrl-arrow: \e[1;5C \e[1;5D \e[1;5A \e[1;5B
77 Ctrl-home: \e[1;5H
78 Ctrl-end: \e[1;5F
79 Ctrl-pgup: \e[5;5~
80 Ctrl-pgdn: \e[6;5~
81 Ctrl-ins: \e[2;5~
82 Ctrl-del: \e[3;5~
83
84 Shift-arrow: \e[1;2C \e[1;2D \e[1;2A \e[1;2B
85 Shift-home: \e[1;2H
86 Shift-end: \e[1;2F
87 Shift-pgup: -
88 Shift-pgdn: -
89 Shift-ins *DOES NOT WORK* but inserts the X PRIMARY SELECTION
90 Shift-del: \e[3;2~
91
92 Shift-ctrl-arrow: \e[1;6C \e[1;6D \e[1;6A \e[1;6B
93
94 Alt-ctrl-arrow: \e[1;7C \e[1;7D \e[1;7A \e[1;7B
95
96 Alt-shift-arrow: \e[1;4C \e[1;4D \e[1;4A \e[1;4B
97
98 Alt-shift-ctrl-arrow: \e[1;8C \e[1;8D \e[1;8A \e[1;8B
99
100 Alt-arrow: \e[1;3C \e[1;3D \e[1;3A \e[1;3B
101 Alt-home: \e[1;3H
102 Alt-end: \e[1;3F
103 Alt-pgup: \e[5;3~
104 Alt-pgdn: \e[6;3~
105 Alt-ins: \e[2;3~
106 Alt-del: \e[3;3~
107
108 ----
109 rxvt
110 ----
111 Arrow: \e[C \e[D \e[A \e[B
112 Home: \e[7~
113 End: \e[8~
114 Pgup: \e[5~
115 Pgdn: \e[6~
116 Ins: \e[2~
117 Del: \e[3~
118
119 Ctrl-arrow: \eOc \eOd \eOa \eOb
120 Ctrl-home: \e[7^
121 Ctrl-end: \e[8^
122 Ctrl-pgup: \e[5^
123 Ctrl-pgdn: \e[6^
124 Ctrl-ins: \e[2^
125 Ctrl-del: \e[3^
126
127 Shift-arrow: \e[c \e[d \e[a \e[b
128
129 Shift-ctrl-arrow: \e[c \e[b \e[a \e[b
130
131 Alt-ctrl-arrow: \e\eOc \e\eOd \e\eOa \e\eOb
132
133 Alt-shift-arrow: \e\e[c \e\e[d \e\e[a \e\e[b
134
135 Alt-arrow: \e\e[C \e\e[D \e\e[A \e\e[B
136
137 --------------
138 gnome-terminal
139 --------------
140
141 Arrows: \e[C \e[D \e[A \e[B
142 Home: \eOH
143 End: \eOF
144 PgUp: \e[5~
145 PgDn: \e[6~
146 Ins: \e[2~
147 Del: \e[3~
148
149 Ctrl-arrow: \e[5C \e[5D \e[5A \e[5B
150 Ctrl-home: \eOH
151 Ctrl-end: \eOF
152 Ctrl-pgup: -
153 Ctrl-pgdn: -
154 Ctrl-ins: \e[2;5~
155 Ctrl-del: \e[3;5~
156
157 Shift-arrows: \e[2C \e[2D \e[2A \e[2B
158 Shift-home: -
159 Shift-end: -
160 Shift-pgup: -
161 Shift-pgdn: -
162 Shift-ins: -
163 Shift-del: \e[3;2~
164
165 Alt-arrows: \e[3C \e[3D \e[3A \e[3B
166 Alt-home: \eOH
167 Alt-end: \eOF
168 Alt-PgUp: \e[5;3~
169 Alt-PgDn: \e[6;3~
170 Alt-Insert: \e[2;3~
171 Alt-Delete: \e[3;3~
172
173 Ctrl-Alt-arrows: - (window manager takes)
174 Ctrl-Shift-arrows: \e[6C \e[6D \e[6A \e[6B
175 Ctrl-Shift-Alt-arrows: \e[8C \e[8D \e[8A \e[8B
176
177 -------
178 konsole
179 -------
180 Arrows: \e[C \e[D \e[A \e[B
181 Home: \e[H
182 End: \e[F
183 PgUp: \e[5~
184 PgDn: \e[6~
185 Ins: \e[2~
186 Del: \e[3~
187
188 Ctrl-arrows: \e[C \e[D \e[A \e[B
189 Ctrl-home: \e[H
190 Ctrl-end: \e[F
191 Ctrl-PgUp: \e[5~
192 Ctrl-PgDn: \e[6~
193 Ctrl-ins: \e[2~
194 Ctrl-del: \e[3~
195
196 Shift-arrows: -
197 Shift-home: \e[2H
198 Shift-end: \e[2F
199 Shift-PgUp: -
200 Shift-PgDn: -
201 Shift-Ins: -
202 Shift-Del: \e[3;2~
203
204 Alt-arrows: \e\e[C \e\e[D \e\e[A  \e\e[B
205 Alt-home: \e\e[H
206 Alt-end: \e\e[F
207 Alt-PgUp: \e\e[5~
208 Alt-PgDn: \e\e[6~
209 Alt-Ins: \e\e[2~
210 Alt-Del: \e\e[3~
211
212 -------------
213 linux console
214 -------------
215 Arrows: \e[C \e[D \e[A \e[B
216 Home: \e[1~
217 End: \e[4~
218 PgUp: \e[5~
219 PgDn: \e[6~
220 Ins: \e[2~
221 Del: \e[3~
222
223 Ctrl-arrows: \e[C \e[D \e[A \e[B
224 Ctrl-home: \e[1~
225 Ctrl-end: \e[4~
226 Ctrl-pgup: \e[5~
227 Ctrl-pgdn: \e[6~
228 Ctrl-ins: \e[2~
229 Ctrl-del: \e[3~
230
231 Shift-arrows: \e[C
232 Shift-home: \e[1~
233
234 Alt-arrows: - (switches console)
235 Alt-home: \e[1~
236
237 --------------
238 cygwin console
239 --------------
240 Arrows: \e[C \e[D \e[A \e[B
241 Home: \e[1~
242 End: \e[4~
243 PgUp: \e[5~
244 PgDn: \e[6~
245 Ins: \e[2~
246 Del: \e[3~
247
248 Ctrl-arrows: -
249 Shift-arrows: -
250
251 Alt-anything: prefixed with ESC
252
253 -----------------------
254 jstar missing sequences
255 -----------------------
256 ^O options (supposed to be set tab width)
257 ^P print
258 ^U undo (supossed to be unerase)
259 ^^ autoindent on/off
260 ^\ meta (supposed to be refresh screen)
261 ESC $  insert math result money formatted
262 ESC m  Memorandum
263 ESC s  isearch fwrd (supposed to be Sincerely)
264 ESC c  compile (supposed to be center line) — actually ^OC but ncih…
265 ^Q U   align paragraph (don't know what this does)
266 ^Q ^Q  repeat next command once every second
267 ^Q O   spell check entered word
268 ^Q W   scroll up- repeat once every second
269 ^Q Z   scroll down- repeat once every second
270 ^Q Ins  it does something...
271 ^Q Home  scroll up repeating
272 ^Q End   scroll down repeating
273 ^K M     math
274 ^K F     run dos comment
275 ^K N     column mode on
276 ^K I     column replace mode on
277 ^K O     copy file
278 ^K E     rename file
279 ^K J     erase file
280 ^K L     change drive
281 ^K uparw  rename file
282 ^K dnarw  save and exit
283 ^K ltarw  save
284 ^K rtarw  ^K D save
285 ^K Ins    move
286 ^K Home   quit
287 ^K End    quit
288 ^K '      to markk
289 -----------------------
290
291 -----------------
292 notepad/cua mode?
293 -----------------
294 ^A      select all
295 ^F      find
296 ^G      goto line
297 ^H      replace
298 ^J      return
299 ^N      new blank file
300 ^O      edit file (asks to save current)
301 ^P      print
302 ^S      save
303 ^V      paste           (done)
304 ^Z      undo            (done)
305 ^X      cut             (done)
306 ^C      copy            (done)
307 F3      find next
308 F5      date/time
309
310 - shell window intercept should be smarter.  hit ^K ^H- the ^H is going to the
311   shell window.
312
313 - do not use ^[^[ for anything.  it prevents Alt-arrow
314   from being useful.
315
316 - search should automatically use 'k' mode if block is
317   selected.  Cursor should jump to top of block when done.  Jump
318   back to start mode?
319
320
321 - save all files without asking thing for quick compile
322
323 - better parsing of compile messages
324
325
326 - continued search mode for jpico?
327
328 - smarter highlighter- need char and string storage.
329
330 - make ^K F prompt with previous text (PICO)?
331
332 ^K X leads to segfault?
333
334 if I use ^K C to move search string into search prompt, it says not found
335 even though it found it.
336
337 options are screwed up: we copy window to buffer (to get buffer options
338 to the buffer).  But if we have multiple windows, buffer options will have
339 stale data.
340
341 we are missing many query and prompt window abort handlers, which cause
342 small memory leaks.
343
344 - update help screens: some things have changed (emacs is more like emacs).
345
346
347 Fix for next release highlight:
348
349   other windows why
350   lose state during page down?
351   perl highlighter
352   more syntax files
353
354   byte to byte conversions?
355   UTF-8 decoder right at input instead of in qw and utype?
356
357  Update man page.
358
359  Reload modified files (or current window)
360
361   don't use -notite by default. (why? we switched back to -notite…)
362
363 Watch loaded file for changes
364
365 Save all history buffers and keyboard macros in ~/.joe_state file?
366 Although, if merged, it must be disabled by default like mksh’s HISTFILE is:
367   18:48⎜«asarch» That would be for a wish list then: to keep the
368        ⎜    list of all opened files with their last position
369   Natureshadow agrees with me that this is a JOE antifeature
370    but then desires the file directory path history
371
372   Update documentation.
373
374 shift/alt/ctrl arrow key stuff. (partially done)
375
376 regex: character classes? a-z matches any letter?
377
378   parse *rc file only once?
379
380   different symbol for 'joe' directory
381
382   can't load terminfo- should switch to termcap or provide compiled
383   ANSI terminfo built in.
384
385
386 New features:
387 -----------------------
388
389   check all instances of 'chars': use unicode to locale symbols instead.
390   EBCDIC ?
391     - we assume '\n' is line terminator.
392     - there are many references to '\t' and ' '.
393     - EBCDIC used to be fixed record length (80 columns) anyway.
394
395 Math: octal(?), more functions. (-lm?)
396
397 Perl compatible regex search.
398 (Ugh. But grouping like \+\(foo\+ \) would be cool.)
399 (Also, alternatives and/or backreferences, think ^Q=)
400
401 Improvements for regular text
402 -----------------------------
403 mode where wordwrap wraps rest of paragraph?
404
405 mode where all editing wraps rest of paragraph?
406
407 soft wrap (i.e. wrap on screen but not in the file)!
408
409 Improvements for programming
410 ----------------------------
411
412 Jump to definition (tags does this)
413
414 Show list of references
415
416 Diff mode (need vertical window)
417
418 Tie in with CVS
419
420 Refactoring
421
422 Syntax Highlighting:
423 --------------------
424
425 Support for more languages:
426
427  Paragraph reformat mode for TeX files.
428
429  ^G Matching for verilog begin ... end, html tags, etc.
430
431  Reformat paragraph should reformat C function if we're editing C.
432
433 File loading/storing:
434
435  Should have switch buffers in current window as more fundamental joe key
436  sequence (it's ^[ u and ^[ v for now).
437
438  Unnamed buffers should be in bufed list (was fixed in the lost joe 2.9)
439
440 Jmacs/Jstar/Jpico:
441
442  search and replace 'fred' to 'foo':
443     find 'Fred', gets 'Foo'.
444
445  Rectangle mode for emacs yank system
446
447  Overtype mode works for yank
448
449  ESC args should work differently in emacs
450
451  many negative args do not work properly
452
453  exiting options and i-search with ESC is not pretty
454  (it isn't in emacs either)
455
456 Shell windows:
457
458  Better environment settings for shell windows.
459
460 Documentation:
461
462  Include documentation for joe hackers.  I wrote a lot of this
463  some time, I need to find it.
464
465  joe should open tty earlier in startup sequence because ^Y
466  is suspend character on sun.
467
468 UTF-8/Internationalization
469 --------------------------
470
471 - right-left mode for Hebrew/Arabic?
472
473   There is no good way to do this.  For all rtol, you could use a reversed
474 xterm.  For mixed, you need tags to indicate direction.
475
476
477 UI for changing colors in the editor (or at least dark/light mode)
478
479 More colors: UI for using 256 color xterms.
480
481
482  Lock files being edited?
483   one person gets write lock
484
485
486  Don't understand:  optionally break hardlinks on save?  what is "tla"?
487
488  Use memory mapped files to fast load large files.  Have to not
489  count no. lines in each buffer on startup.
490
491
492  Emulate other editors?  Brief, EDT?
493
494
495 Prompts:
496
497  Sort should be column wise, not row wise?
498
499  HTML-style thing for option selection?
500
501
502 Terminal handling:
503
504  Emit ESC c to reset terminal on startup?
505  -> no, this power-cycles a hardware DEC VT420 (takes 1-2 minutes)
506
507  Look into clearing right-most column.
508
509 Macros:
510
511  Interactive macros during file load are broken.  Think about multiple
512  stack hack (otherwise template based C++ callbacks).
513
514
515 Mouse:
516
517  ` and autoindent mode are a problem for drag and drop.
518  any way we can distinguish normal typing from a drop?
519
520  xterm can actually do that: it's called bracketed paste mode:
521  you send ^[ [ ? 2 0 0 4 h then any pastes you receive begin
522  with ^[ [ 2 0 0 ~ and end with ^[ [ 2 0 1 ~ until you send
523  ^[ [ ? 2 0 0 4 l but it only works with recent xterm and, while
524  you can wrap the requests between ^[ P and ^[ \ to make them
525  pass GNU screen it would wreck havoc with the other tabs, so
526  we make this conditional on $TERM being xterm-xfree86 offering
527  a generic paste mode in addition via :paste keymap
528
529  mouse mode: mouse can position cursor.  Would be good for
530  jcua...
531
532 Major new modes:
533
534  Fixed record length mode
535
536
537 Major code improvements:
538
539  Vertical windows (optionally lock-stepped).
540
541
542 Major new features:
543
544  Folding
545
546
547 Options
548
549  Fix it so all options appear in ^T.  Maybe make hook function
550  to handle major changes.  Need this for major mode change for
551  hex edit mode.
552
553 Other requests:
554
555  -show no. utf characters, not no. bytes
556  (if so, both need to be available)
557
558
559 ┌───────────┐
560 │ jupp TODO │
561 └───────────┘
562
563 • replace all int with size_t where applicable
564 • merge syntax handling code from joe-3.7+
565 • merge math from joe-3.7+
566 • make -Wcast-qual clean
567 • write a jupp(1) mdoc page
568 • use mirkev (better code for hashtables)
569 • attach labels to ftypes; allow ftypes to inherit from these
570   labels, instead of fdefault; add UI to apply an ftype, including
571   fdefault, to the current buffer (requested by Wayne Cuddy)
572 • regex needs groups like 「\+\(foo\)」
573 • regex needs alternative modes (POSIX BRE, ERE; PCRE optional?)
574   because of the \0 vs. \1 confusion (and WTF @ \N letters!)
575 • ^KE could offer the last directory from a file that was saved
576   with a / somewhere (file_prompt in joe 4.4 wmkpw)
577 • bracketed paste mode should disable autoindent, wordwrap,
578   updating the status line, …(?) ⇐ implemented using a “paste”
579   labeled ftype that is switched to using the UI (command)
580 • switch from autoconf to mirtoconf2
581 • ANSI syntax highlighting; auto-turn it on in shell windows (‽)
582   ⇒ would need to hide the ANSI chars, yet enable backspacing
583 • handle combining characters in the scrn array somehow
584 • add a soft line break flag: display as line-wrapped, do not
585   save any newlines introduced by that
586 • perhaps wrap at U+00AD?
587 • put all configuration files into /usr/share; use XDG dirs for
588   overriding (HOME, maybe site?)
589 • plug memory leaks (Valgrind reports a few)
590 • …
591
592 __________________________________________________________________
593 $MirOS: contrib/code/jupp/TODO,v 1.44 2017/12/07 00:05:08 tg Exp $