Releases: joe-editor/joe
JOE 4.2
-
New or improved syntax files for the following languages:
- Dockerfile
-
Usability Enhancements
-
The top Google help searches for JOE include:
-
How do I save and exit? The startup copyright notice
has been replaced with basic help for beginners: ^K Q
to exit and ^K H for help. -
How do I dismiss the region highlighting? The traditional
way is to hit ^K B ^K K, but this is slightly non-obvious
and has always been awkward. Now Ctrl-C will do it. -
How do I close all files and exit? Now Ctrl-K Q does this.
Previously ^K Q was the same as ^C: abort a single file.
-
-
Restyle the help screens:
-
Make it more obvious that there is more than one screen:
put the help for help inline with the text instead of in
the (seemingly invisible) header. -
Mention Ctrl-Arrow region selection, status
and goto matching delimiter commands on the first screen.
-
-
Remove time and "Ctrl-K H for help" message from status bar.
Beginners often don't notice this help message, and it takes up
valuable status bar space that power users want for the context
display. -
Add ^KH for help to search and replace prompts. Many JOE users
do not know about this context sensitive help. -
Provide aborthint and helphint options so that the ^C and ^K H
hints can be customized depending on the rc file (so say ^G
for abort in jmacs, for example). -
Enable -noxon by default (disable ^S/^Q flow control). This
allows us to bind ^Q to quote and ^S / ^R to incremental search. -
Document ESC X (command prompt) in the help screens.
-
"joe --help" now prints all command line options.
-
-
Other Enhancements
-
Tags search now tries to find the tags file in parent directories
if it does not exist in the current directory and if the TAGS
environment variable was not set. -
Built-in calculator can now print and accept numbers in binary,
octal and engineering formats:
dec 12_345
eng 12.345_0e3
bin 0b11_0000_0011_1001
oct 0o3_0071
hex 0x3039 -
Built-in calculator now prints and accepts separating underscores
for clarity. For example, 4_294_967_296 instead of 4294967296. -
Enhanced calculator statistics functions:
- dev computes standard deviation with full population
- samp computes standard deviation with sample of population
- Linear regression analysis. Select a region of x
and y values, then:- lr(x) provide estimate of y given x
- rlr(y) provide estimate of x given y
- Lr, lR, LR: log, exponential, power regression
-
Calculator region functions now assume the entire buffer if no
region is set. -
Tab completion now works at the calculator prompt (and in all
prompts which allow numeric input, such as ^KL- go to line). -
Make new regex engine (from JOE 4.1) more compatible with the
classic engine. \y is now shorthand for \(\.\*\), so that it does
what \* did in the old engine. Also:- \. no longer matches newline.
- \* matches shortest match, not longest match.
-
Add -left and -right options to control the amount scrolling when
the cursor moves past the left or right edge of the screen. When
the baud rate is low these are automatically set to a large
amount. Also, these now control the manual horizontal scrolling
commands. When these are positive, they indicate number of
columns. When they are negative, they indicate a fraction of the
screen width (-2 is 1/2 the width).
-
-
Bugs fixed
-
Fix use after free bug which shows up as a crash in OpenBSD
-
Fix bug where indent step value was not shown on ^T menu
-
Fix bug where setting margin doesn't work on big-endian systems
-
Fix issue where highest valued Unicode character equivalent was
not translating to its corresponding 8-bit character. Effect
of this was that Delete key was not working in shell windows in
ASCII character set. -
Standard deviation calculator function was not producing correct
results. -
Allow koi8r and koi8-r for KOI8-R in joe_getcodeset (which is only
used if there is no setlocale). -
Guess_crlf forced UNIX line endings for new files even though
crlf was set. Now crlf is left alone if guess_crlf can not
determine the line ending. -
If cursor was at end of a long line and you switched to hex dump
display mode, then hex dump was scrolled. Now scroll offset is
reset when you switch to hex display mode.
-
JOE 4.1
-
New or improved syntax files for the following languages:
- Groovy, R, Clojure, Rust, Coffeescript, Java, Scala, Swift, D,
AVR, Ruby, Perl
- Groovy, R, Clojure, Rust, Coffeescript, Java, Scala, Swift, D,
-
New translations
- Chinese (zh_TW)
-
UTF-16 support
-
JOE can now edit UTF-16BE and UTF-16LE files. It does this
by converting them to UTF-8 during load and back to UTF-16 during
save. -
Within JOE, native byte order is called UTF-16 and reversed order
is called UTF-16R. -
If you change the encoding (with ^T E) between UTF-8, UTF-16 and UTF-16R,
JOE will convert the file to the desired encoding on save.
-
-
New regular expression engine
-
Old one was a recursive matcher, new one is compiled Thompson NFA matcher
-
JOE now supports full regular expressions (but as before special characters are
escaped by default), so:- It now supports alternative: X|Y
- It now supports grouping and submatch addressing with parenthesis: a\(inside\)b
- You can specify an explicit number of matches: X\{3} for XXX
- Or a range of matches: X\{3,5} for XXX, XXXX or XXXXX
- \! is a JOE extension: it's like \., but matches whole balanced expressions
-
JOE also supports the standard regular expression syntax where
these characters are not escaped.- Use the 'x' search & replace option for this, or use the
'-regex' global option to make it the default.
- Use the 'x' search & replace option for this, or use the
-
Standard syntax regular expressions are now used in the ftyperc
file (which is used to determine the syntax of the file by
inspecting its contents) -
Submatches within regular expressions can now be any size (up to
the size of the disk!). Before this, they were limited to 16K. -
Case conversion allowed in replacement string, as in sed:
everything between \U and \E converted to uppercase.
-
-
Unicode improvements
-
Character class database has been updated to the latest version
(Unicode 8.0.0) -
Switched to new character class data structure for faster Unicode
(uses radix search instead of binary search). -
Key sequences in the joerc file are now UTF-8 coded Unicode.
-
Also you can specify Unicode in hexadecimal like this: U+F123
-
Note that even if you are using an 8-bit locale, keys are
translated to UTF-8 before keymap lookup. This means you
must use the Unicode code for your character in the joerc
file, not the 8-bit code for the character.
-
-
Jump to matching delimiter (Ctrl-G) now supports Unicode for word
delimiters (for example, within XML tags). -
Identifiers within JOE now allow Unicode. For example, variables
at the math prompt and JOE macros can use any letter. -
JOE now displays Unicode combining characters properly
-
Syntax files are now UTF-8 coded and support Unicode syntax.
-
Character lists in syntax files and search strings (regular
expressions) now provide access to the Unicode category database
and provide some other useful character classes:-
Use \x{f123} to specify a particular character.
-
Use \p{Lu} to specify a Unicode character class: any one of
L, Lu, Ll, Lt, Lm, Lo
M, Mn, Mc, Me
N, Nd, Nl, No
P, Pc, Pd, Ps, Pe, Pi, Pf, Po
S, Sm, Sc, Sk, So
Z, Zs, Zl, Zp
C, Cc, Cf, Cs, Co, Cn
See: ftp://ftp.unicode.org/Public/5.1.0/ucd/UCD.html#General_Category_Values -
Use \p{Cherokee} to specify any character from a named Unicode block.
-
\d for a digit, \D for not a digit
-
\w for a word character, \W for not a word character
-
\s for a space character, \S for not a space character
-
\i for identifier start character, \I for not identifier start character
-
\c for identifier continuation character, \C for not identifier continuation character
-
-
-
Code clean up
-
Switch to ptrdiff_t for memory offsets and off_t for file offsets
(prior to this, int and long were used). Now you can edit files
larger than 4 GB on 32-bit systems. -
Give up trying force all strings to "unsigned char *" so that the
code is less weird. -
Clean up code so that we get a clean compile even with many more
warnings enabled. Going forward this helps find real bugs by
highlighting new warnings. -
Remove C usage which is illegal in C++ so that JOE can be compiled
by C++ compilers as well as C compilers. This is useful because
C++ compilers sometimes warn about issues that C compilers miss.
-
-
Bugs fixed
-
Fix bug where \ was not parsed correctly within syntax file
character lists unless it was at the end of the string. -
Fix bug where position cursor history operations would mix
pointers between different buffers if user had switched buffers in
a window. -
Fix bug where lockup would happen if you try querysave when the
only buffer left is the startup log. -
Default locale
- If no locale set, default to C / POSIX, not ISO-8859-1
- If locale is C / POSIX, set language to en_US (for aspell).
-
Improve performance where JOE would seem to lock up if you tried
to reformat a very long single word due to O(n^3) algorithm. -
Prevent filt and blkdel from modifying read-only buffers. This
could happen if you run them from modifyable buffer but with block
set in a read-only buffer. -
Fixed issue when recording paste in a macro. If you tried to
play the macro, the pasted text is not inserted and JOE is
stuck waiting for the bracketed paste end string. -
Fixed issue where syntax could not be set on command line with
-syntax.
-
-
Minor enhancements
-
Tab completion now works for the command and its file arguments
after '!' in file prompts. Tab completion now works for the
filename after '>>' in file write prompts. -
Tab completion now handles directory and file names with spaces
in them. -
Backspace now jumps back to parent menu in ^T submenus (and
remembers the cursor position within the parent) -
Macros after :def are now allowed to cross lines in the joerc file
-
Make ^K ^SPACE same as ^K SPACE
-
Quoted insert of TAB always inserts a TAB character, even when
smart indent is enabled. -
Add options to control sending of bracketed paste mode command
to terminal emulator (brpaste) and detection of paste by timing
(pastehack). -
Modified ftyperc file syntax to reduce redundancy
-
Added file type (as defined in ftyperc) setting option. For
example, with "joe -type c fred" JOE will assume fred is a C
language file. Use ^T F to change the file type from within JOE. -
Highlighter enhancement: when % is used in place of a character
list, it matches the save_c delimiting character as-is (vs. &
which matches the opposite character). For example, if save_c has
{, then % matches { while & matches }. This allows JOE to
highlight q{hello { there } } in Perl.
-
-
jmacs fixes:
-
^X b / ^X ^B were reversed
-
^X 0 printed an exit message for no reason
-
^X 0 now can pop shell windows
-
M-^ deleted indentation but did not join with previous line
-
Ignore case for letter commands: ^X i and ^X I are the same
-
Fix bug where regular expressions were not working in incremental
search when wrap is enabled (which is the case in jmacs).
-
-
ESC g (grep/find) and ESC c (compile) improvements
-
Tab completion now works for the command and its arguments
-
Change to the current directory before running the command
-
Show the current directory in the compile window
-
Show the exit status in the compile window
-
Provide more consistent window setup during compile
-
Parse "Entering directory `/home/xxxxxx'" messages to determine
the directory containing the file with an error message.
-
JOE 4.0
-
JOE now has pop-up shell windows with full terminal emulation and shell commands
that can control the editor. Hit F1 - F4 to bring up a shell window.
See Pop-up shell feature for a full description. -
The status command (^K SPACE) can now be customized using the same syntax
as the status bar. Look for smsg and zmsg in joerc to see how to do this. -
parserr (the error parser) will parse only the highlighted block if it's set. Before it always parsed the entire buffer.
-
Now there is a per-buffer concept of current directory. This was added to
make the pop-up shell windows work better, but it's useful in general. -
At file prompts you can begin a new anchored path without having to delete
the old one. It means that ~jhallen/foo//etc/passwd is translated to /etc/passwd.
Prompt windows are now highlighted to indicate which parts of the path are
being dropped. There is a syntax file for this: filename.jsf -
The error parser now ignores ANSI sequences (some versions of grep
color their results, now JOE can still parse it). -
Temporary messages are now dismissed by keyboard input only. Before, they
could also be dismissed by shell input. -
Tags search now supports multiple matches. ^K ; can be configured to
either provide a menu of the matches or to cycle through them. -
Tags search will now match on the member name part of member functions
('fred' will match 'myclass::fred'). -
Tags search will prepend the path to the tags file file name in the tags
file. This is important when JOE finds the tags file via the TAGS
environment variable. -
Remove ` as quote character from incremental search.
-
Clean up documentation, convert much of it to Markdown.
JOE 3.8
-
Search JOE image for :include files referenced by the joerc file.
Include ftyperc file in the JOE image. -
Change default indent from 2 to 4. Add quick menu to change to common
indent values: ^T = (1, 2, 4, or 8). Switch to + and - for definitively
setting or clearing options so that 0 and 1 can be use for quick select. -
Added option to suppress DEADJOE file
-
Jump to matching delimiter (Ctrl-G) has been improved. It can now use the
syntax files to parse the document in order to identify strings and
comments which should be skipped during the matching delimiter search.
(patch by Charles Tabony). -
When 'notite' mode is enabled, JOE now emits linefeeds to preserve the
screen contents in the terminal emulator's scrollback buffer. This can be
suppressed with a new flag: nolinefeeds. -
JOE now starts up quiet (prints no extra messages when starting).
Messages are collected in a startup log (view with ESC x showlog). -
There is a new flag 'noexmsg' which, when set, makes JOE quiet when it shuts
down (suppresses "File not changed so no update needed" message). -
Use 80th column if terminal has xn capability (patch by pts and Egmont
Koblinger). -
Support italic text (on some terminal emulators) with "\l" (patch by
Egmont Koblinger) -
Support bracketed paste (patch by Egmont Koblinger)
-
Fix line number in syntax highlighter error output
-
Prevent infinite loops caused by buggy syntax definitions.
-
New and improved syntax definitions for:
- Ant: contributed by Christian Nicolai
- Batch files: contributed by John Jordan
- C#: contributed by John Jordan
- Debian apt sources.list: contributed by Christian Nicolai
- Elixir: contributed by Andrew Lisin
- Erlang: contributed by Christian Nicolai, Jonas Rosling, Andrew Lisin
- git-commit messages: contributed by Christian Nicolai
- Go: contributed by Matthias S. Benkmann
- HAML: contributed by Christian Nicolai
- INI: contributed by Christian Nicolai
- iptables: contributed by Christian Nicolai
- Javascript: contributed by Rebecca Turner, Christian Nicolai
- json: contributed by Rebecca Turner
- Markdown: contributed by Christian Nicolai, Jonas Rosling
- Powershell: contributed by Oskar Liljeblad
- Prolog: contributed by Christian Nicolai
- Puppet: contributed by Christian Nicolai, Eric Eisenhart
- Sieve: contributed by Christian Nicolai
- YAML: contributed by Christian Nicolai
(from github.com/cmur2/joe-syntax)
-
Syntax definition fixes for: C, Python, Java, Lua, sh, Ruby, PHP, TeX,
CSS, and XML -
Save/restore utf-8 and crlf modes when changing in/out of hex edit for
better display -
Fix autocomplete for paths containing spaces
-
Accept mouse events beyond column 208 (patch by Egmont Kobligner)
-
Adjust guess_indent behavior based on user feedback
-
Fix infinite loop in search and replace
-
Add a new command 'timer' which executes a macro every n seconds. I use
this for periodically injecting a command into a shell window for
overnight testing of some device. -
Convert double to long long (if we have it) when printing hexadecimal.
-
Fix bug where undo was acting strangely in shell windows.
-
Fix crash when hitting -----------.. wordwrap bug.
-
Check for math functions
-
Use *joerc if *fancyjoerc not there.
-
fix segfault from -orphan
-
fix window size detection bug: can't take out types.h
from tty.c -
update status line immediately on resize.
-
va_copy fix.
-
don't smartbackspace when smartbacks is off.
JOE 3.8 for Windows
-
Search JOE image for :include files referenced by the joerc file.
Include ftyperc file in the JOE image. -
Change default indent from 2 to 4. Add quick menu to change to common
indent values: ^T = (1, 2, 4, or 8). Switch to + and - for definitively
setting or clearing options so that 0 and 1 can be use for quick select. -
Added option to suppress DEADJOE file
-
Jump to matching delimiter (Ctrl-G) has been improved. It can now use the
syntax files to parse the document in order to identify strings and
comments which should be skipped during the matching delimiter search.
(patch by Charles Tabony). -
When 'notite' mode is enabled, JOE now emits linefeeds to preserve the
screen contents in the terminal emulator's scrollback buffer. This can be
suppressed with a new flag: nolinefeeds. -
JOE now starts up quiet (prints no extra messages when starting).
Messages are collected in a startup log (view with ESC x showlog). -
There is a new flag 'noexmsg' which, when set, makes JOE quiet when it shuts
down (suppresses "File not changed so no update needed" message). -
Use 80th column if terminal has xn capability (patch by pts and Egmont
Koblinger). -
Support italic text (on some terminal emulators) with "\l" (patch by
Egmont Koblinger) -
Support bracketed paste (patch by Egmont Koblinger)
-
Fix line number in syntax highlighter error output
-
Prevent infinite loops caused by buggy syntax definitions.
-
New and improved syntax definitions for:
- Ant: contributed by Christian Nicolai
- Batch files: contributed by John Jordan
- C#: contributed by John Jordan
- Debian apt sources.list: contributed by Christian Nicolai
- Elixir: contributed by Andrew Lisin
- Erlang: contributed by Christian Nicolai, Jonas Rosling, Andrew Lisin
- git-commit messages: contributed by Christian Nicolai
- Go: contributed by Matthias S. Benkmann
- HAML: contributed by Christian Nicolai
- INI: contributed by Christian Nicolai
- iptables: contributed by Christian Nicolai
- Javascript: contributed by Rebecca Turner, Christian Nicolai
- json: contributed by Rebecca Turner
- Markdown: contributed by Christian Nicolai, Jonas Rosling
- Powershell: contributed by Oskar Liljeblad
- Prolog: contributed by Christian Nicolai
- Puppet: contributed by Christian Nicolai, Eric Eisenhart
- Sieve: contributed by Christian Nicolai
- YAML: contributed by Christian Nicolai
(from github.com/cmur2/joe-syntax)
-
Syntax definition fixes for: C, Python, Java, Lua, sh, Ruby, PHP, TeX,
CSS, and XML -
Save/restore utf-8 and crlf modes when changing in/out of hex edit for
better display -
Fix autocomplete for paths containing spaces
-
Accept mouse events beyond column 208 (patch by Egmont Kobligner)
-
Adjust guess_indent behavior based on user feedback
-
Fix infinite loop in search and replace
-
Add a new command 'timer' which executes a macro every n seconds. I use
this for periodically injecting a command into a shell window for
overnight testing of some device. -
Convert double to long long (if we have it) when printing hexadecimal.
-
Fix bug where undo was acting strangely in shell windows.
-
Fix crash when hitting -----------.. wordwrap bug.
-
Check for math functions
-
Use *joerc if *fancyjoerc not there.
-
fix segfault from -orphan
-
fix window size detection bug: can't take out types.h
from tty.c -
update status line immediately on resize.
-
va_copy fix.
-
don't smartbackspace when smartbacks is off.