Menu

[7c54b3]: / joe / TODO  Maximize  Restore  History

Download this file

1243 lines (918 with data), 30.2 kB

help screen with 8-bit character set chart does not show properly
 - show it on 8-bit locales?

only "brpaste" shows up in a macro when I paste: I rather have the text..

old joe is messing up state file of new joe

Add unicode normalization option to search

Regex in ftyperc is weird because character set of file is not yet know. 
For now we assume ascii_map..

ftyperc improvements:
  Can we highlight backup files? files ending in .in?

Allow user to provide a regex for error parsing

Make joerc file so we load system and local customizations
- rc file format needs revamping:  You can not put comments on lines with string
  arguments.

long paths not working with cd command in shell windows?

1218708  ? for unknown characters is not informative (at least highlight the ?)
Show as hex <34>?
   For byte coded unused character: display character as we do in C. [we do
this already]

1304794  X at end of line is changed to space when character above 128 in utf-8
  - check this one

check all type-like functions- make sure they expect unicode!
hmm.. we always convert to unicode on input, but do we convert to the 8-bit
charset of the buffer? check this.

We could try go beyond tab and space.. but it's not so important...
   - Need to parse utf8 in options.c and rc.c..
   - Need to find all other places where we hand check for space and TAB
   - Right now we can use brc on joe_isblank because the characters are all
     one byte

 parse_string not utf8? Should be OK: it's only used with emit_string.

fixed buffer size is not good for some parse_ functions.. for example it
limits the size of keyboard macros.  umtext is not good.. uses fixed buffer
during print

path.c: rmatch.. should depend on locale (character class)

look at texec..

- hex edit mode
    - force switch to overtype mode?
   hex is screwed up.  utf-8 file encoding needs to be off for hex mode.
   also crlf mode.
 - Review this: other things should be disabled also


valgrind run: look for leaks.

Prebuilt radix trees for character classes to avoid startup overhead?  We
could do this..

Digit values
[wrote function, but not using it]

Added some more convenient classes:
   see http://www.w3.org/TR/xml11/#NT-NameStartChar
   see http://www.w3.org/TR/xmlschma11-2/#regexs

	\d	Digit: same as \p{Nd}
	\D	opposite
	\s	space, tab, newline, return
	\S	opposite
	\w	word character: [\x{0}-\x{10ffff}]-[\p{P}\p{Z}\p{C}]
	\W	opposite
	\p{block-name}

	\i	NameStartChar
			: A-Z _ a-z C0-D6 D8-F6 F8-2FF 370-37D 37F-1FFF 200C-200D 2070-218F 2C00-2FEF 3001-D7FF F900-FDCF FDF0-FFFD 10000-EFFFF
	\I	opposite
	\c	NameChar
			\i - . 0-9 B7 0300-036F 203F-2040
	\C	opposite


Java:
  isJavaIdentifierStart: \p{Nl} \p{L} \p{Pc} \p{Sc}
  isJavaIdentifierPart: isJavaIdentifierStart \p{Mn} \p{Mc} \p{Nd} ignorable
  ignorable: 0x00-0x08, 0x0e-0x1b, 0x7f-0x9F


cursor position history probably not working
when buffers switch in windows.

Scratch always pushes.  Do we want this?  It's weird for ESC c.  Maybe have
a no-push version of scratch.

jmacs vs. mg vs gnu-emacs:

	c-x b  jmacs: nbuf, gnu: offers prompt with next buffer [fixed, before in jmacs this was bufed]
	c-x c-b	jmacs: bufed prompt.  gnu: menu. [fixed, before in jmacs this was nbuf]
	c-x 0  (delete window) prints exit message even when we are not abandoning the file - why? [fixed]
	M-^: jmacs: deletes indentation, blank lines below.  gnu: deletes indentation, blank line above- pulls current line to end of previous [fixed]

	c-x c-s	jmacs: saves file.  gnu: prompts before saving.
	c-x c-v jmacs: reload original.  gnu: prompts with original as default.
	c-x d: jmacs: nothing.  gnu: menu.
	c-x c-r: jmacs: nothing.  gnu: load file in read-only mode.

	esc m  back to indentation (math in joe	Non-standard:

	c-x g  is goto line in mg, is goto matching delimiter in jmacs, udf gnu
	c-x p  previous window in mg  (prev error in jmacs), udf gnu
	c-x n  other window in mg   (next error in jmacs), udf gnu
	esc s search forwards   (suspend in jmacs, submenus in gnu)
	esc r  search backwards  (move to center line in jmacs and gnu)

Timing fix for bracketed paste should disable spaces.  We should have a mode
to disable the timing fix.

cd command: if you leave out the trailing / it ignores it
cd command: should canonicalized version of path be stored in history?

in ^KE: any nicer way to clear the current path other than Ctrl-Y?

 Should ^K E pop the shell window?
    if current is scratch it should pop
    popedit will not be needed then..

- better grep-find (trigger in ^KE)


vt Improvements:

 Long bash lines not quite working correctly...

 'parse' can't be used with commands with pipe symbol

 Keys for parserr and release?

 Preserve position in parser in case we re-parse (for very long compile we
want to start looking at errors before it's done)

 It would be nice if ^G was goto instead of ESC space (when parserr is active?)
  (no good way to do this.)

 edit command in shell window does not work with '!pgm' if there is a
current directory set.

 joe command in shell only works as an alias, not a real program.  This
means when mercurial or p4 invokes an editor the wrong thing is done.

 We don't use lattr for ansi mode since we are not allowing colors to cross
 lines.  Save CPU cycles by not generating lattr for this case.

 Ansi effects not crossing lines means text doesn't remain properly colored
over edit operations, like insert new line (para format).

 Mode to start joe with shell window.

 Save per-shell window current directory in joe state file and
 restore it next time?

 Would be nice if there was history for each virtual console.
    Can be done with environement variable HISTFILE.
    We need an argument to be passed to shell.sh for this: maybe vtbknd
    asks for an argument?

 Add magic joe command: append list of buffers.  Some way for ESC SP to jump
 to one of them.

 Context help for shell window?

 check querysave and nbuf/pbuf interactions with new buffer stack

Hex mode probably doesn't mix correctly with vt

- - - -
maybe grep and build need to clear the block?
   they don't because they clear markb/markk in process of clearing scratch
   buffer


[done: buffer stack]
 Not sure about switching to orphan mode.. but how can we have F1.F4 without it?

   If we keep orphan mode, make it more like regular joe:
    Do better when hitting ^C.. pop back to previous buffer in window?  Keep
    history list for this?

    Trouble when we switch to orphan mode:
	^K I does not put orphaned buffers on screen...
	Have to get users used to ^[ u and ^[ v

When you use grep in a buffer, you can parserr.. but grep output can be
highlighted with escape sequences.. parserr includes them in the file names.
	(done- you can now hit ESC SPACE in a shell window: would like it to
be ^G.. also it would be nice buffer was parsed... maybe with progressive
parsing?)

Who owns keyboard, application or joe?
	Usually we want it to work the old way..
	It was nice when ` uparw actually worked..
		(there is one sneaky way to make ` work the old way...  have
		it mean quote only if it's the first thing in the read buffer)
	(done- but check other rc files...)

Need ^K ' to make a new window... (how to go to it? Have one for grep?
Compile?)
	We have F1 - F4
		If you exit shell and hit F2 again it messes up... (need
better way to detect it's a shell window- filename compare, perhaps).

Note: termcap emulation functions are gone from curses..
	No, ncurses-devel was missing on ubuntu..

Even then, a window should only be a master if the cursor matches the vt
cursor.  This helps with the problem of closing a window and switching to
another where cursor is far away.

  - using vtmaster to pick one to be the master...
     - how to switch it (for example if a window is closed)? maybe overall screen refresh has to watch for this?

- - - -

For JOE-3.6

	auto reload of modified files?  a mode for this?

	tab completion should escape file names for joe

          mode where wordwrap wraps rest of paragraph?

          mode where all editing wraps rest of paragraph?

	handling of bullets could be better, but conflicts with C comments

	a common operation is search&replace within a selected block. 
	possibly cursor should go to start of block after each operation.

	a common operation is macro execution to end of selected block.	
	abort macro when it reaches ^K K? EMACS has "narrow to region"
	concept to deal with this.

	a common operation is clearing a shell buffer: make a key for this?




Immediate:

 full path needs to go in line number restore code?

 ^C breaks in Cygwin when piping into joe

 empty syntax file crashes?

startup log should pop up whenever syntax files are loaded.

joerc file messages are funny because of the :include

autodetect xterm?  it doesn't give enough information.

did shell window in joe-3.2 3.2 create a new window?

  bugs?

    grep ... | joe     missing lots sometime

    pipe into joe is broken.   If it's a regular file, we should just load it.

  Make joerc merge program and run it on joerc.ru

=-=-=-=-=

option for compile window size (or make mfit prompt for the size)

multi-file search & replace: check for deleted 'B *'.

Compiling:
----------

Key to bring up help on word under cursor:
  like pop up window with man page, or google search
  for the function.

    man -P cat -S 2:3 printf

work with cscope?  hit F1 to look up man entry for function?

Tags file search should auto-run ctags if there is no tags file.
It should update it if any files have changed...

gdb inteface?
  run  (when segfault, jump to given source location)
  run-to
  step-over
  step-into
  eval  (to look at variables)
  peek up stack frame

allow options after string and istring? -just note it for now.

1218701  report character offset in ^K-<space> (not just byte offset).

1323285  joe does not repeatedly wrap searches (add an option for this?)

1218686  syntax hightlight in hex mode (sheesh!)

1211243  long $HOME causes joe to crash

531899   joe +23 is weird: cursor on startup line

1413863  sigwinch breaks tcsetsw which messes up keyboard?  I haven't seen this

Garbage collect line attribute databases.

Parse xterm version number.

we should store location of menu. menu_above could change while menu is
open (but menu could be deleted, so this raises other problems).

performace:
 getcontext causes huge cpu usage for very large functions (xp_useq.v for
 example).


Short (infinite) list for 3.4:

-smart bs/tab is driving me up the wall:

       if (sdfjklhsdfkjhsdfjkh
           sdflks dfkjshdf sd
           sdfkjhsdkjfhsdkhsd)
           . <- thinks this is indentation point.

-tab should default to tab?

- improve mnew/mold etc so we can gzip/gunzip files being
  edited (maybe recursive call to file recognizer with .gz removed).

- when lock is stolen under us, we don't tell anyone.

- reformat/reindent function on ^KJ
- insert last word (last word typed/copied/etc.).
- orthogonal jump
- safer hex edit mode
- win32? DOS?
- man page

- cygwin- make sure we put files in the right place.
- dynamic spell checking with highlighter- there should be a way
- smart-end key


Mouse issues:

- autoscroll: keep track of selection type (double-click or triple-click)
- just scroll window with right button down?

  help screen mouse commands?
  double-click at prompts hits enter?
  double-click empty prompt, hits tab?
  right-click pops directory?
  right-click is cancel?
  double-click is yes?

- - - -

Dangerous situations:
  assume maint->curwin->object is a BW *
  call interactive functions (like doedit) and expect them
  to leave maint a buffer window (it could start a prompt).

  should check plain file checking.

  vs, zstring, cstring, there are too many, each with its own
  memory management.

- - - - - - - -

- backspace in picture mode
  (it jumps to end of line - should it be like left-arrow?)

- - - - - - - -

- name keyboard macro and append it to .joerc file

- - - - - - - -

- security hole with spell checker: abs path to checker needed.

- - - - - - - -

- commands should be as deterministic as possible for
  easier macro writing.
     (some prompts give defaults sometime... this is bad)
     (psh should save all possible state information)

- merge math with macro language
- tab at math prompt should go through variables, functions.
- eliminate need for : separator
- add loops, user defined functions with local variables
- add comments
- user should be able to bring up a program and hit 'eval'.
- use ivy?

- - - - - - - -

- highlight all words which match during search?

- - - - - - - -

    (a user asked: can it periodically reload log file like tail -f)?
    (just run tail -f in shell window)

- - - - - - - -

  exemac for first change: it should be run with cursor in window.

  -orphan will break -mnew, -mold macros (because macros are run without a
window on the screen).

- - - - - - - -

- .joe_state file:
 - try for previous screen configuration?
 - multiple joes: the last one who exits wins: merge them

- - - - - - - -

Completion list build could take a long time
in general we should be able to abort long operations...

- - - - - - - -

Others:


- completion list of internal commands brings up documentation

- rectangular blocks: make this a local file option?

- do not use ^[^[ for anything.  it prevents Alt-arrow
  from being useful.  It's usually bound to options, so at least
  make options pass unknown characters back to keysequence parser.

options are screwed up: we copy window to buffer (to get buffer options
to the buffer).  But if we have multiple windows, buffer options will have
stale data.

we are missing many query and prompt window abort handlers, which cause
small memory leaks.

can't load terminfo- should switch to termcap or provide compiled
ANSI terminfo built in.

Improvements for programming
----------------------------
Jump to definition (tags does this)

Show list of references

Diff mode (need vertical window)

Tie in with CVS

Refactoring

Support for more languages:

 Reformat paragraph should reformat C function if we're editing C.

File loading/storing:

 Unnamed buffers should be in bufed list (was fixed in the lost joe 2.9)

Jmacs:

 search and replace 'fred' to 'foo':
    find 'Fred', gets 'Foo'.

 Rectangle mode for emacs yank system

 Overtype mode works for yank

 exiting options and i-search with ESC is not pretty
 (it isn't in emacs either)

jmacs glitches:
    history for incremental search
    ^S return supposed to be normal search
    ^[ 0 ^K  delete line bkwd (arg set)
    ^[ @   set mark arg words away
    ^X ^P  mark page

    ^X .  set left margin (fill prefix)
           (better off not setting this: JOE automatically sets
	    the fill prefix).
   

Documentation:

 Include documentation for joe hackers.  I wrote a lot of this
 some time, I need to find it.

 joe should open tty earlier in startup sequence because ^Y
 is suspend character on sun.

UTF-8/Internationalization
--------------------------

byte to byte conversions?
UTF-8 decoder right at input instead of in qw and utype?

- right-left mode for Hebrew/Arabic?

  There is no good way to do this.  For all rtol, you could use a reversed
xterm.  For mixed, you need tags to indicate direction.



Use memory mapped files to fast load large files.  Have to not
count no. lines in each buffer on startup.

Emulate other editors?  Brief, EDT?  CUA?


Prompts:

 HTML-style thing for option selection?

Terminal handling:

 Emit ESC c to reset terminal on startup?


Major new display modes:

 Fixed record length mode


Major code improvements:

 Vertical windows (optionally lock-stepped).


Major new features:

 Folding

Other requests:

 -cleanup (delete extra lines and extra spaces at ends of lines).


Do something with these keys:

-------
ssh 3.2
-------
Arrow:    
Home: [2~ (uhg!)
End: [4~
Pgup: [5~
Pgdn: [6~
Ins: [2~
Del: 
F1: [11~
F2: [12~
F3: [13~
F4: [14~
F5: [15~
F6: [17~
F7: [18~
F8: [19~
F9: [20~
F10: [21~
F11: [23~
F12: [24~

Ctrl-arrow: -
Alt-arrow: - (can set Alt=ESC mode, but doesn't work with arrow keys)
Shift-arrow: -

-----
PuTTY
-----

Arrow:    
Home: [1~
End: [4~
Pgup: [5~
Pgdn: [6~
Ins: [2~
Del: [3~
F1: [11~
F2: [12~
F3: [13~
F4: [14~
F5: [15~
F6: [17~
F7: [18~
F8: [19~
F9: [20~
F10: [21~
F11: [23~
F12: [24~

Ctrl-arrow: OC OD OA OB
Ctrl-home: -
Ctrl-end: -
Ctrl-pgup: putty scroll back
Ctrl-pgdn: putty scroll fwrd
Ctrl-ins: -
Ctrl-del: -

Alt-arrow:    
Alt-pgup: [5~
Alt-pgdn: [6~
Alt-home: [1~
Alt-end: [4~
Alt-ins: [2~
Alt-del: [3~

Shift-arrow:    
Shift-home: [1~
Shift-end: [4~
Shift-pgup: putty scroll back
Shift-pgdn: putty scroll fwrd
Shift-ins: 
Shift-del: [3~

-----
XTerm
-----

Arrow:    
Home: 
End: 
PgUp: [5~
PgDn: [6~
Ins: [2~
Del: [3~
F1: OP
F2: OQ
F3: OR
F4: OS
F5: [15~
F6: [17~
F7: [18~
F8: [19~
F9: [20~
F10: [21~
F11: [23~
F12: [24~

Ctrl-arrow:    
Ctrl-home: 
Ctrl-end: 
Ctrl-pgup: [5;5~
Ctrl-pgdn: [6;5~
Ctrl-ins: [2;5~
Ctrl-del: [3;5~

Shift-arrow:    
Shift-home: 
Shift-end: 
Shift-pgup: -
Shift-pgdn: -
Shift-ins: ttp://www.gush-shalom.org/archives/kurdi_eng.html
Shift-del: [3;2~

Shift-ctrl-arrow:    

Alt-ctrl-arrow:    

Alt-shift-arrow:    

Alt-shift-ctrl-arrow:    

Alt-arrow:    
Alt-home: 
Alt-end: 
Alt-pgup: [5;3~
Alt-pgdn: [6;3~
Alt-ins: [2;3~
Alt-del: [3;3~

----
rxvt
----
Arrow:    
Home: [7~
End: [8~
Pgup: [5~
Pgdn: [6~
Ins: [2~
Del: [3~

F1: [11~
F2: [12~
F3: [13~
F4: [14~
F5: [15~
F6: [17~
F7: [18~
F8: [19~
F9: [20~
F10: [21~
F11: [23~
F12: [24~

Ctrl-arrow: Oc Od Oa Ob
Ctrl-home: [7^
Ctrl-end: [8^
Ctrl-pgup: [5^
Ctrl-pgdn: [6^
Ctrl-ins: [2^
Ctrl-del: [3^

Shift-arrow:    

Shift-ctrl-arrow:    

Alt-ctrl-arrow: Oc Od Oa Ob

Alt-shift-arrow:    

Alt-arrow:    

--------------
gnome-terminal
--------------

Arrows:    
Home: OH
End: OF
PgUp: [5~
PgDn: [6~
Ins: [2~
Del: [3~
F1: -
F2: OQ
F3: OR
F4: OS
F5: [15~~
F6: [17~~
F7: [18~~
F8: [19~
F9: [20~
F10: -
F11: [23~
F12: [24~

Ctrl-arrow:    
Ctrl-home: OH
Ctrl-end: OF
Ctrl-pgup: -
Ctrl-pgdn: -
Ctrl-ins: [2;5~
Ctrl-del: [3;5~

Shift-arrows:    
Shift-home: -
Shift-end: -
Shift-pgup: -
Shift-pgdn: -
Shift-ins: -
Shift-del: [3;2~

Alt-arrows:    
Alt-home: OH
Alt-end: OF
Alt-PgUp: [5;3~
Alt-PgDn: [6;3~
Alt-Insert: [2;3~
Alt-Delete: [3;3~

Ctrl-Alt-arrows: - (window manager takes)
Ctrl-Shift-arrows:    
Ctrl-Shift-Alt-arrows:    
 
-------
konsole
-------
Arrows:    
Home: 
End: 
PgUp: [5~
PgDn: [6~
Ins: [2~
Del: [3~
F1: OP
F2: OQ
F3: OR
F4: OS
F5: [15~
F6: [17~
F7: [18~
F8: [19~
F9: [20~
F10: [21~
F11: [23~
F12: [24~

Ctrl-arrows:    
Ctrl-home: 
Ctrl-end: 
Ctrl-PgUp: [5~
Ctrl-PgDn: [6~
Ctrl-ins: [2~
Ctrl-del: [3~

Shift-arrows: -
Shift-home: 
Shift-end: 
Shift-PgUp: -
Shift-PgDn: -
Shift-Ins: -
Shift-Del: [3;2~

Alt-arrows:     
Alt-home: 
Alt-end: 
Alt-PgUp: [5~
Alt-PgDn: [6~
Alt-Ins: [2~
Alt-Del: [3~

-------------
linux console
-------------
Arrows:    
Home: [1~
End: [4~
PgUp: [5~
PgDn: [6~
Ins: [2~
Del: [3~
F1: [[A
F2: [[B
F3: [[C
F4: [[D
F5: [[E
F6: [17~
F7: [18~
F8: [19~
F9: [20~
F10: [21~
F11: [23~
F12: [24~

Ctrl-arrows:    
Ctrl-home: [1~
Ctrl-end: [4~
Ctrl-pgup: [5~
Ctrl-pgdn: [6~
Ctrl-ins: [2~
Ctrl-del: [3~

Shift-arrows: 
Shift-home: [1~

Alt-arrows: - (switches console)
Alt-home: [1~

--------------
cygwin console
--------------
Arrows:    
Home: [1~
End: [4~
PgUp: [5~
PgDn: [6~
Ins: [2~
Del: [3~
F1: [[A
F2: [[B
F3: [[C
F4: [[D
F5: [[E
F6: [17~
F7: [18~
F8: [19~
F9: [20~
F10: [21~
F11: [23~
F12: [24~

Ctrl-arrows: -
Shift-arrows: -

Alt-enything: prefixed with ESC

-----------------------
jstar missing sequences
-----------------------
^O options (supposed to be set tab width)
^P print
^U undo (supossed to be unerase)
^^ autoindent on/off
^\ meta (supposed to be refresh screen)
ESC =  insert math result
ESC $  insert math result money formatted
ESC #  insert math equation
ESC m  Memorandum
ESC s  isearch fwrd (supposed to be Sincerely)
ESC c  compile (supposed to be center line)
^Q U   align paragraph (don't know what this does)
^Q ^Q  repeat next command once every second
^Q O   spell check entered word
^Q W   scroll up- repeat once every second
^Q Z   scroll down- repeat once every second
^Q Ins  it does something...
^Q Home  scroll up repeating
^Q End   scroll down repeating
^K M     math
^K F     run dos comment
^K N     column mode on
^K I     column replace mode on
^K O     copy file
^K E     rename file
^K J     erase file
^K L     change drive
^K uparw  rename file
^K dnarw  save and exit
^K ltarw  save
^K rtarw  ^K D save
^K Ins    move
^K Home   quit
^K End    quit
^K '      to markk
-----------------------

-----------------
notepad/cua mode?
-----------------
- ^A	select all
- ^F	find
- ^G	goto line
X ^H	replace
X ^J	return
- ^N	new blank file
- ^O	edit file (asks to save current)
^P	print
- ^S	save
- ^V	paste
- ^Z	undo
- ^X	cut
- ^C	copy
- F3	find next
- F5	date/time

===============================================
Done:

 Fix it so all options appear in ^T.  Maybe make hook function
 to handle major changes.
[done, we can assign mactos to ^T]

 Look into clearing right-most column.
[done, we now use it]

Shell windows:
 Better environment settings for shell windows.
[done- we now have vt mode]

Perl compatible regex search.
[done!]

regex: character classes? a-z matches any letter?
[done!]

- save all files without asking thing for quick compile
[done! Use ESC c to save all]

- shell window intercept should be smarter.  hit ^K ^H- the ^H is going to the
  shell window.
[done, we now have a context for this]

  define characters which make up words
    There are some A-Zs in tomatch (should use i18n).
[done: fixed with i18n project]

- better editing in shell windows: use for calculator mode too?
[done, we have vt mode]

- update man page
[done, but keep it up to date]

622978   use last column
[done]

- need current directory for grep-find.
[done]

should force -Wall if compiler is gcc
[there is no way to do this]

	document ` in 'txt' (format test as status line)
	additional formatting things in status line
		`%n		filename
		`%dd		day
		`%dm		month
		`%dY		year
		`%Ename%	environment variable
[done]

UTF-8 between 0x40000000 - 0x7FFFFFFF is not displayed correctly because of
ANSI_BIT.  joe_wcwidth return 0 width for these, but it should be zero width
only in ansi mode.
 [done: we just changed ANSI_BIT to 0x80000000]

Unicode:
  Support combining characters properly.  
[done]

Can we find an updated version of wcwidth?
[done- but do more checking]

Rtree gets very big before calling rtree_opt.. (we were exceeding 32K leaf
nodes, overflowing short)
  We need to optimize while we build...
  [done]

Get rid of cmap, use rtree instead in kbd.c/kbd.h.  [cmap may have been
better for this, but it does help debug rtrees...]
[done]

Auto generate the toupper / tolower from i18n.c  Eliminate i18n.c
[done]
Accept character classes, not just UTF-8 in syntax files.
[done]

Improve speed of regex? Compile to perfect hash? At least sort the
intervals?
[done]

[fixed]
we parse strings, which does escape processing.
  but then we call parse_class on the parse string which also does escape processing.
build should report return value of make
[done]

grep and build should switch to the current directory first.
   "scratch" needs to inherit current directory
     hmm..
     [done- also load "* Startup Log *" first to prevent inheriting- for
example when we start shell windows]

   "grep" and "build" need to change directory before running
     [fixed]
   parse already does the right thing

 parsed file names with spaces not working correctly
 parse file names with no line numbers?
 [fixed]

 add shell commands to other rc files
 [done]

 status command should use status line escape sequences
 [done]

 messages from shell windows sometimes do not show up.  The issue is that
when we close a prompt window, we resize the shell window.  This causes bash
to redraw the line.  This input counts as typing and causes the message to
be erased (it just causes a screen update which notices the updtab flag
set).. We need some other way (than setting updtab) to clear the message-
maybe set updtab on next user input.
 [fixed- now we remove message only on user input, not shell input]

 security hole with "math"
 [fixed]

 parserr - it would be nice if parsing was limited to a block
 [done]

 parserr - no way to turn off highlighting line (but ESC space is OK).
 [fixed: added release command]

 'parserr' leaving many copies of buffer?
 [fixed]

 message printed when we close last window and switch to orphan buffer
 [fixed- now we always do it, but can turn off with noexmsg]

 shell joe command doesn't work with absolute path if prefix is added.
 this doesn't work well with ^KE either (need to clear path manually)
   emacs does some magic here.. if it detects // it ignores prefix
     two parts:
       it displays prefix with { }
       when opening file, it starts with the /
 [fixed- now we do same as emacs]

 when we 'edit' in a shell window, it should pop before loading the new one.
  otherwise we get a bunch of copies of the shell window I think
 [fixed]

 Esc sequences could be optimized out: delete one if it results in same
 attributes that already exist
 [done]

 check for n^2 algorithms
 [done]

Pgetc() does not now always return a character... this breaks paragraph
formatter and anything that expect binsc(pgetc) to work.
 [fixed: we assign a code for each ansi sequence]

 clean up macro execute for magic shell commands:
   only execute shell_ ones...
   only execute if window is on screen...
   how do we allow "file"?  it should only be allowed in prompts, and not
   allowed to be typed into the shell.
 [done]

 Need per-shell window current directory.
  Logbuf?  Sometimes?
 [done: the buffer records the current directory]

 color on status line gets messed up when shell text is colored.. how can
this even happen?
 [fixed] 

 cursor in wrong position when I abort a window and shell window gets pulled
on.. need EFIXXCOL, but joe crashes when I enable it for abort command.
 abort a window and shell window replaces it:
   cursor is wrong. we need EFFIXCOL on abort.. any others?
  [fixed]

 'joe' in a shell window should edit a file.
[done]

Think more about keeping cursor in sync: from shell window, edit file, ^C,
we're back in shell window but cursor is in the wrong place.
 [fixed- we were not keeping cursor up to date in orphan windows]

nbuf/pbuf do not call resize, so swapping in a shell window is not properly resized.
 [seems to be fixed, but not sure where resize is getting called..]

multiple windows open on one shell window is kind of broken (you get
conflicting resize events from each of them).  There should be a concept
of the master window.
 [fixed, we use the last one]

Need raw mode which works the old way.. (mostly for debugging joe..)
  [done]

Resize needs more testing.  Resize with 'man ls' not quite working.
Weird things will happen with multiple window with synchronized cursors.
   [fixed- was due to scrolling region not being resized]

Resize not working when you kill other window?
 [seems to be ok]

^K V should jump to vt cursor... (done)

UTF-8 syntax files?
[done]

utils.c:parse_ident not using utf8?
[done: now allows utf8 identifiers]

move getcodeset stuff from utf8.c -> charmap
[done]

Ctrl-G logic bugs:
  xml with utf-8 chars: does not jump to first char, we must be assuming
chars are bytes
  there is delimiter buffer but it's bytes, not chars
[done]

tomatch_xml: does not handle unicode names
[done]

umath use joe_isalpha_? problem is we eval a char buffer, not an editor
buffer.
 [fixed]

fwrd_c and utf8_decode_fwrd output is not directly compatible with joe_is
functions.  But pgetc and brch output is.
[done- now they return UTF8_XXX which is outside of negative character range]

  - check all other users of joe_is...
     - options.c, rc.c
     - sometimes we use brc and brch for joe_isblank
   [done]

check yncheck..
[modifed to convert to locale if necessary]

macros.c: unescape seems broken
 [fixed - but it would be nice if the buffer sizes were not limited]

"-wrap" is messing up isrch somehow
[fixed]


New regex engine:
      add case ignore:
          done, however right now we do simple folding for classes and full
          folding outside of classes.  I think maybe better to do simple
          folding for both?  Any point of full folding without
          normalization?

      unicode normalization, ugh.  Maybe this should be optional.
      have an option 'n' for normalized search?

      check performance and memory leaks

      add \c
      [done]

      optional standard regex syntax?
      [done]

      add code to allow use of boyer-moore
      [done: we even do it on utf-8 if we can (if there is no case folding)]

      handle byte encoding correctly- we are only handling unicode
        - what happens if you search/replace across file with different
          encodings? maybe recompile for each file?  Actually we are already
          recompiling for this case. [nope, we give an error if you try it]
      [Done: character classes are converted to byte code]

      syntax ok? update help if it is..
      [done]

      check char to int promotions [done].

Now that we have new regex engine:
      switch to it for ftyperc? [done]

Reformat long line is too slow
 [improved, but look into prgetc improvement also]

Improve syntax files to work with unicode.
[done (but we can always do more..)]

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.