joe-3.1jupp31.tgz (die zweite Klappe…)
[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-enything: 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)
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
371   Update documentation.
372
373 shift/alt/ctrl arrow key stuff. (partially done)
374
375 regex: character classes? a-z matches any letter?
376
377   parse *rc file only once?
378
379   different symbol for 'joe' directory
380
381   can't load terminfo- should switch to termcap or provide compiled
382   ANSI terminfo built in.
383
384
385 New features:
386 -----------------------
387
388   move *rc files to .etc/jupp directory? Or XDG, see below.
389
390   check all instances of 'chars': use unicode to locale symbols instead.
391   EBCDIC ?
392     - we assume '\n' is line terminator.
393     - there are many references to '\t' and ' '.
394     - EBCDIC used to be fixed record length (80 columns) anyway.
395
396 Math: octal(?), more functions. (-lm?)
397
398 Perl compatible regex search.
399 (Ugh. But grouping like \+\(foo\+ \) would be cool.)
400 (Also, alternatives and/or backreferences, think ^Q=)
401
402 Improvements for regular text
403 -----------------------------
404 mode where wordwrap wraps rest of paragraph?
405
406 mode where all editing wraps rest of paragraph?
407
408 soft wrap (i.e. wrap on screen but not in the file)!
409
410 Improvements for programming
411 ----------------------------
412
413 Jump to definition (tags does this)
414
415 Show list of references
416
417 Diff mode (need vertical window)
418
419 Tie in with CVS
420
421 Refactoring
422
423 Syntax Highlighting:
424 --------------------
425
426 Support for more languages:
427
428  Paragraph reformat mode for TeX files.
429
430  ^G Matching for verilog begin ... end, html tags, etc.
431
432  Reformat paragraph should reformat C function if we're editing C.
433
434 File loading/storing:
435
436  Should have switch buffers in current window as more fundamental joe key
437  sequence (it's ^[ u and ^[ v for now).
438
439  Unnamed buffers should be in bufed list (was fixed in the lost joe 2.9)
440
441 Jmacs/Jstar/Jpico:
442
443  search and replace 'fred' to 'foo':
444     find 'Fred', gets 'Foo'.
445
446  Rectangle mode for emacs yank system
447
448  Overtype mode works for yank
449
450  ESC args should work differently in emacs
451
452  many negative args do not work properly
453
454  exiting options and i-search with ESC is not pretty
455  (it isn't in emacs either)
456
457 Shell windows:
458
459  Better environment settings for shell windows.
460
461 Documentation:
462
463  Include documentation for joe hackers.  I wrote a lot of this
464  some time, I need to find it.
465
466  joe should open tty earlier in startup sequence because ^Y
467  is suspend character on sun.
468
469 UTF-8/Internationalization
470 --------------------------
471
472 - right-left mode for Hebrew/Arabic?
473
474   There is no good way to do this.  For all rtol, you could use a reversed
475 xterm.  For mixed, you need tags to indicate direction.
476
477
478 UI for changing colors in the editor (or at least dark/light mode)
479
480 More colors: UI for using 256 color xterms.
481
482
483  Lock files being edited?
484   one person gets write lock
485
486
487  Don't understand:  optionally break hardlinks on save?  what is "tla"?
488
489  Use memory mapped files to fast load large files.  Have to not
490  count no. lines in each buffer on startup.
491
492
493  Emulate other editors?  Brief, EDT?
494
495
496 Prompts:
497
498  Sort should be column wise, not row wise?
499
500  HTML-style thing for option selection?
501
502
503 Terminal handling:
504
505  Emit ESC c to reset terminal on startup?
506  -> no, this power-cycles a hardware DEC VT420 (takes 1-2 minutes)
507
508  Look into clearing right-most column.
509
510 Macros:
511
512  Interactive macros during file load are broken.  Think about multiple
513  stack hack (otherwise template based C++ callbacks).
514
515
516 Mouse:
517
518  ` and autoindent mode are a problem for drag and drop.
519  any way we can distinguish normal typing from a drop?
520
521  xterm can actually do that: it's called bracketed paste mode:
522  you send ^[ [ ? 2 0 0 4 h then any pastes you receive begin
523  with ^[ [ 2 0 0 ~ and end with ^[ [ 2 0 1 ~ until you send
524  ^[ [ ? 2 0 0 4 l but it only works with recent xterm and, while
525  you can wrap the requests between ^[ P and ^[ \ to make them
526  pass GNU screen it would wreck havoc with the other tabs, so
527  we make this conditional on $TERM being xterm-xfree86 offering
528  a generic paste mode in addition via :paste keymap
529
530  mouse mode: mouse can position cursor.  Would be good for
531  jcua...
532
533 Major new modes:
534
535  Fixed record length mode
536
537
538 Major code improvements:
539
540  Vertical windows (optionally lock-stepped).
541
542
543 Major new features:
544
545  Folding
546
547
548 Options
549
550  Fix it so all options appear in ^T.  Maybe make hook function
551  to handle major changes.  Need this for major mode change for
552  hex edit mode.
553
554 Other requests:
555
556  -cleanup (delete extra lines and extra spaces at ends of lines).
557
558  -show no. utf characters, not no. bytes
559
560
561 ┌───────────┐
562 │ jupp TODO │
563 └───────────┘
564
565 • replace all int with size_t where applicable
566 • merge syntax handling code from joe-3.7+
567 • merge math from joe-3.7+
568 • add group support to regex code
569 • make -Wcast-qual clean
570 • write a jupp(1) mdoc page
571 • use mirkev (better code for hashtables)
572 • attach labels to ftypes; allow ftypes to inherit from these
573   labels, instead of fdefault; add UI to apply an ftype, including
574   fdefault, to the current buffer (requested by Wayne Cuddy)
575 • regex needs groups like 「\+\(foo\)」
576 • bracketed paste mode should disable autoindent, wordwrap,
577   updating the status line, …(?) ⇐ implemented using a “paste”
578   labeled ftype that is switched to using the UI (command)
579 • switch from autoconf to mirtoconf2
580 • ANSI syntax highlighting; auto-turn it on in shell windows (‽)
581   ⇒ would need to hide the ANSI chars, yet enable backspacing
582 • handle combining characters in the scrn array somehow
583 • add a soft line break flag: display as line-wrapped, do not
584   save any newlines introduced by that
585 • perhaps wrap at U+00AD?
586 • put all configuration files into /usr/share; use XDG dirs for
587   overriding (HOME, maybe site?)
588 • rc.c: struct glopts.set (int*) violates the strict aliasing
589   rule as it’s treated as (unsigned char *) for type 2 (global
590   option string), consider a union instead (check local types!)
591 • plug memory leaks (Valgrind reports a few)
592 • …
593
594 __________________________________________________________________
595 $MirOS: contrib/code/jupp/TODO,v 1.40 2017/08/09 01:15:24 tg Exp $