1427 lines (1051 with data), 37.8 kB
yes
Projects:
Horizontal scrolling:
We tried to keep offset at a multiple of scroll amount.. is
it needed?
When prompt window has to scroll it should also jump. But this is
only one line, so not as important.
Calculator:
Stay at math prompt for better calculator mode? But I'm so used to
hitting ESC m
"math" command in cygwin not working.
something like eng mode, but with a requested exponent. Expand math
formatting options? For example if user want to make a table..
Degrees mode? Grad mode? (how to display?)
degree/rad/grad entry mode? 90deg gives pi/2 in radians mode.
Decimal-Sexagesimal conversion (how to display?)
Rectangular/Polar conversion (how to show two number result?)
covariance, correlation coefficient?
permutations = n ! / (n - r)!
combinations = n ! / (r! * (n - r)!)
user defined functions, loops?
Revamp help and status line system. Merge status line and help renderers so
that status line escapes can be used in the help screens and so that
help screen formating can be used in status line (eliminating the need
for right and left status strings- use springs instead). Also:
Take into account the post gettext substition for helphint and aborthint.
Enhance help command so that you can supply a topic name argument.
Provide help for each edit function (use edit function name as the
help context name).
Maybe provide a hierarchical help system: but this means turning help
screen into a kind of buffer...
Replace single character names like %e with %encoding;
Use c_comment, cpp_comment etc. from Ctrl-G to tell regex \! how to
parse (vs. now, where it assumes C).
Allow arguments after commands in ESC x, so we can say "cd foo". During
macro parse, collect arguments and save them in an array. Modify pw.c to
read arguments from this array. If there are no more arguments, prompt
the user instead. Issues: Completion at the ESC x prompt is complex...
which character set should be used? It depends on the command..
Unify ESC x and ESC m (commands and math). Replace math with ivy as a
real extension language for JOE? Make sure each option is visible from
within the script (like options.autoindent).
Make joerc file so we load system one and then apply local customizations
(instead of loading an entire local one).
Revamp rc file syntax: You can not put comments on lines with string
arguments. Maybe rc file becomes an ivy language source file...
Fix the macro system so that it is properly event driven. It means query
command does not recursively call edloop- instead it returns a contination
structure. The pain with this is to fix all locations which called
a macro as a subroutine to generate a continuation (or use co-routines).
Improve completion some more: for example in the build command, complete
command after | or ;. To do this well we need intelligent parsing. (for
example, ignore ; in quotes). Also complete quotes arguments like 'foo'
Fix filename quoting. The problem is that the ! and , syntax was a mistake.
The current work-around is to allow user to quote these characters. I think we
are de-quoting too much or something because filenames with \ in them don't really
work. Anyway, find some other syntax to specify that the program is a command, or
to load only a certain part of it. 'joe *' should always work, even if the files
in the current directory after '!', ',' or '\' in them.
the buffer name should be in the clear, not quoted..
then we would not have to dequote on save
in particular, we need to handle ! differently... probably it should be
an options flag.
so: on command line, no special meaning for !
at edit prompt: we remove the ! and convert it into a flag.. it probably
makes no sense to have this flag, or to even name the buffer
In some of the newer syntax files we check for balanced parenthesis (color extra
paren in red). Implement this in all syntax files where it makes sense.
Provide a command to save an HTML version of the file, rendered as our syntax
highlight does. VIM has this, and it would be easy to implement.
Document the rules for coloring in the call and return transition. Make it
more convenient (I think recolor doesn't work during call, for example).
Create a regex highlighter for JOE's search and replace prompts.
Provide an xjoe script which runs joe in an xterm in the install. This
way something exists for the "open this file with" prompts in windowing
systems.
In multi-file search and replace, we error if the character encoding
changes. Do something better here: convert the search/repace string?
Search/replace anyway even if the encoding is different? Error only if we
are outside ascii range? Record the encoding along with each history
line? Ugh..
Add unicode normalization to search/replace.
Do something better with the 8-bit character table help screen.
Ftyperc improvements: automatically try to determine file type for .in and
backup~ files.
Allow user to specify a regex for parsing errors.
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. Can we not use vs for all of this?
Prebuild radix trees for character classes to avoid startup overhead? We
could do this..
review options setting system:
why is encoding / syntax not a command, but a mode? (I think these probably should be commands)
why is ftype a command instead of a mode?
can we set encoding/syntax/ftype on command line: joe -ftype c fred
how it works now:
1. load file with bfind
A. this calls setopt to determine ftype type, then applies options from OPTIONS to B using lazy_opts
In particular, it looks up encoding and syntax based on names.
2. copy b->o to bw->o in bwmk
3. apply local options to bw->o
replace bw->o if ftype is given here?
4. use lazy_opts to propogate them back to bw->b->o
Special processing for: readonly (we get it from b->rdonly, and stick it back after options)
charmap (we delay lookup
encoding (we delay lookup, also we try to learn it in lazyopt: should probably be in bload along with utf16 stuff)
bw->o options: hex, ansi, syntax, zmsg, smsg, mfirst, autoindent, wordwrap
spaces, mnew, mold, linums, crlf?, overtype, rmsg, purify,
indentc, tab, istep, indentc, indentfirst, smarthome,
smartbacks, *comment,
bw->b->o options:
charmap, highlight?, text_delimiters, ansi?, syntax?
when we set any particular option using mode command:
we set it bw->o
we then copy bw->o to bw->b->o.
encoding / syntax also do this.
ceslide patch?
old joe is messing up state file of new joe
Regex in ftyperc is weird because character set of file is not yet known.
For now we assume ascii_map..
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.
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.
Digit values
[wrote function, but not using it]
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)
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) to help find the file I want to load.
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: [C [D [A [B
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: [C [D [A [B
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: [C [D [A [B
Alt-pgup: [5~
Alt-pgdn: [6~
Alt-home: [1~
Alt-end: [4~
Alt-ins: [2~
Alt-del: [3~
Shift-arrow: [C [D [A [B
Shift-home: [1~
Shift-end: [4~
Shift-pgup: putty scroll back
Shift-pgdn: putty scroll fwrd
Shift-ins:
Shift-del: [3~
-----
XTerm
-----
Arrow: [C [D [A [B
Home: [H
End: [F
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: [1;5C [1;5D [1;5A [1;5B
Ctrl-home: [1;5H
Ctrl-end: [1;5F
Ctrl-pgup: [5;5~
Ctrl-pgdn: [6;5~
Ctrl-ins: [2;5~
Ctrl-del: [3;5~
Shift-arrow: [1;2C [1;2D [1;2A [1;2B
Shift-home: [1;2H
Shift-end: [1;2F
Shift-pgup: -
Shift-pgdn: -
Shift-ins: ttp://www.gush-shalom.org/archives/kurdi_eng.html
Shift-del: [3;2~
Shift-ctrl-arrow: [1;6C [1;6D [1;6A [1;6B
Alt-ctrl-arrow: [1;7C [1;7D [1;7A [1;7B
Alt-shift-arrow: [1;4C [1;4D [1;4A [1;4B
Alt-shift-ctrl-arrow: [1;8C [1;8D [1;8A [1;8B
Alt-arrow: [1;3C [1;3D [1;3A [1;3B
Alt-home: [1;3H
Alt-end: [1;3F
Alt-pgup: [5;3~
Alt-pgdn: [6;3~
Alt-ins: [2;3~
Alt-del: [3;3~
----
rxvt
----
Arrow: [C [D [A [B
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: [c [d [a [b
Shift-ctrl-arrow: [c [b [a [b
Alt-ctrl-arrow: Oc Od Oa Ob
Alt-shift-arrow: [c [d [a [b
Alt-arrow: [C [D [A [B
--------------
gnome-terminal
--------------
Arrows: [C [D [A [B
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: [5C [5D [5A [5B
Ctrl-home: OH
Ctrl-end: OF
Ctrl-pgup: -
Ctrl-pgdn: -
Ctrl-ins: [2;5~
Ctrl-del: [3;5~
Shift-arrows: [2C [2D [2A [2B
Shift-home: -
Shift-end: -
Shift-pgup: -
Shift-pgdn: -
Shift-ins: -
Shift-del: [3;2~
Alt-arrows: [3C [3D [3A [3B
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: [6C [6D [6A [6B
Ctrl-Shift-Alt-arrows: [8C [8D [8A [8B
-------
konsole
-------
Arrows: [C [D [A [B
Home: [H
End: [F
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: [C [D [A [B
Ctrl-home: [H
Ctrl-end: [F
Ctrl-PgUp: [5~
Ctrl-PgDn: [6~
Ctrl-ins: [2~
Ctrl-del: [3~
Shift-arrows: -
Shift-home: [2H
Shift-end: [2F
Shift-PgUp: -
Shift-PgDn: -
Shift-Ins: -
Shift-Del: [3;2~
Alt-arrows: [C [D [A [B
Alt-home: [H
Alt-end: [F
Alt-PgUp: [5~
Alt-PgDn: [6~
Alt-Ins: [2~
Alt-Del: [3~
-------------
linux console
-------------
Arrows: [C [D [A [B
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: [C [D [A [B
Ctrl-home: [1~
Ctrl-end: [4~
Ctrl-pgup: [5~
Ctrl-pgdn: [6~
Ctrl-ins: [2~
Ctrl-del: [3~
Shift-arrows: [C
Shift-home: [1~
Alt-arrows: - (switches console)
Alt-home: [1~
--------------
cygwin console
--------------
Arrows: [C [D [A [B
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..)]
quote tab should insert a tab
[done]
txt should insert literal tabs.. BTW, txt is broken.. assumes 8-bit
[done]
only "brpaste" shows up in a macro when I paste: I rather have the text..
[fixed]
replacement string:
provide a way to convert to upper/lower or otherwise modify
selection: sed has \u \U \l \L \E
[done]
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
[done]
take brpaste disable patch
[done- added brpaste mode]
need shell-like tab completion in compile/grep prompt
[done]
take ftyperc patch..
[done- created ftype command, rearranged ftyperc]
This is broken for setting the syntax on the command line: we look in bw->o for it, not bw->b->o.
[fixed]
Timing fix for bracketed paste should disable spaces. We should have a mode
to disable the timing fix.
[done]
Long paths not working with cd command in shell windows? How about spaces
in shell window cd command?
[fixed: but the problem is fixed length buffers: vt->buf, mparse->bf]
In syntaxes (Ruby, Perl) which allow interpolation (or substition)
recusively call the highlighter. We did in the some of the newer ones.
[done]
Should ESC < and ESC > scroll by the amounts given in the left and
right parameters? [Yes, implemented it.]
Should negative values of left and right refer to screen fraction?
So -2 means 1/2, -4 means 1/4? [Yes, implemented.]
Do we really need left & right? Why not just scroll amount? [Hmm.. keep it,
I had right = 1, and left = 10 before].