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