Releases · joe-editor/joe

14 min read Original article ↗

JOE 4.8

  • Enhancements

    • Allow notmod in prompt windows: if you set it in a macro, this
      suppresses adding the prompt to the history. Good for keeping
      history clean.

    • Save block filter prompt history in state file.

    • Add parserr_homeonly option: compiler error parser will ignore
      errors from files outside of user's home directory- suppresses
      references to system include files.

  • Bugs fixed

    • Fix tags file security vulnerability: Someone could share a tags
      file that tricks a user into executing a shell command by using
      JOE's '!' filename syntax. This fix prevents '!' from working
      when opening files specified in the tags file.

    • Fix some build issues involving deprecated autoconf RETSIGTYPE.

    • Do not use unicode arrow in tooltips for new syntax debugging
      feature

    • Fix a number of minor syntax coloring issues: sh, m4, debian, rust

    • Fix integer global option setting issue

    • Prevent segfault when referring to certain boolean options

    • Fix issue where block filtering does not work if JOE is reading
      from stdin pipe

    • Fix asymmetric ^X / ^Z

    • Fix selection glitches during Ctrl-Shift-Right / -Left

    • Fix compiler error parser: it was not handling "new" (as of 9
      years ago) delimiters from make

Full Changelog: releases/joe-4.7...releases/joe-4.8

JOE 4.7

  • Enhancements

    • Visual debugging of syntax files (^T More options / debug
      options). When enabled, tool tips show the highlighter state when
      you hover over any character on the screen.

    • Simplified hex edit / binary mode: JOE now assumes that file is
      binary if comma suffix "filename,START,SIZE" is used. Use
      "filename,0" as shorthand for "--guess_utf16 --guess_utf8
      -encoding ascii -hex filename".

    • JOE now has the full set of navigation and edit keys
      (Ctrl-arrow selection has changed):
      Ctrl-left, Ctrl-right: go to previous or next word
      Ctrl-up, Ctrl-down: scroll by one line
      Ctrl-Del, Shift-Del: Cut selection or delete word or line
      (Del remains delete character, and Ins remains insert space)
      Shift-arrow: select by line or character
      Shift-PgUp, Shift-PgDn: select by page
      Shift-Home, Shift-End: select to beginning or end of line
      Ctrl-Shift-left, Ctrl-Shift-right: select by words
      Ctrl-Shift-up, Ctrl-Shift-down: select by paragraphs

    • JOE now follows XDG Base Directory Standard:
      Put state file in ~/.local/state/joe/ instead of ~/.joe_state
      Put config and rc files in ~/.config/joe/ instead of ~/.joe
      (but JOE will find the files in the old places as well)

    • Visible whitespace mode: option to subtly display tabs, spaces and
      newlines

    • Improve indent shift: preserve original whitespace

    • Upgrade to Unicode 17.0.0. Configure script variable allows
      you to select Unicode 8.0.0, 9.0.0, 10.0.0, 13.0.0, 15.0.0,
      15.1.0, 16.0.0 or 17.0.0

    • Consider 'Tc' terminfo flag when determining whether a terminal supports 24-bit color

    • Improved or added highlighters for: Verilog, SystemVerilog, C,
      C++, PHP, Markdown, Python, Debian

    • -purify now cleans excess whitespace instead of no-opping

    • Improve shell script recognition (contributed by Darren Salt)

    • -keepup produces fewer updates during mouse input and similar

  • Bugs fixed

    • Fix destructive multi-line bracketed paste: pasting multi-line input was destructive to pre-existing text

    • Bracketed paste now counts as a single change for undo

    • Fix screen corruption when pasting with line-numbers activated

    • Fix macOS build and C99 correctness

    • Fix a number of bugs involved with piping data into JOE:

      • Make piping into JOE binary clean. For example, in: "echo -e 'a\0b' | joe" the NUL was missing.

      • Fix bug where 'New File' was displayed in "echo hi | joe -"

      • Fix bug where closing the copying process didn't cause the other end of the pipe feeding stdin from seeing SIGPIPE.

      • Fix bug where window resize will cause copying process to stop (needed to retry on EINTR).

    • Revert ^K Q behavior (by popular demand!)

    • Improve localized decimal point handling in calculator

    • Fix not "not changed" undo record bug after saving file

    • Fix jmacs help keybindings (contributed by Peter Salvi)

    • Fix ^G to handle multiple #elifs correctly

Full Changelog: releases/joe-4.6...releases/joe-4.7

JOE 4.6 for Windows

  • Enhancements

    • Upgrade to Unicode 10.0.0. Add configure environment variable
      that allows you select Unicode 8.0.0, 9.0.0 or 10.0.0.

    • Install Gnome .desktop files for JOE. This allows you to use JOE
      in GUI "Open With" mouse actions.

    • Support strikeout and double-underline attributes for the few terminal
      emulators that support them. Use "stricken" and "dunderline" in
      the syntax files, or \s and \z in help screens and status line.

  • Bugs fixed

    • Fix bug where JOE would sometimes crash when editing shell
      scripts. This was due to an obscure bug in the syntax highlighter:
      'reset' command (used for default state) was incorrectly messing
      with stack.

    • -highlighter_context was missing from many file types, which
      negated some improvements from the previous version.

    • Fixed signed char overflow with old style mouse events in large
      windows

    • Fix bug where path restart (//) was being applied to block filter
      command prompt. Strange things would happen if you had adjacent
      slashes in command arguments.

    • Allow ~ expansion but suppress path restart (//) in compiler error
      parsing.

    • Restore default handling of SIGPIPE and SIGINT for shell commands.
      This fixes an issue where SIGPIPE doesn't terminate a process as
      expected, for example by the head -n 10 in: ^K R !sh -c 'while :;
      do echo y; done' | head -n 10. This issue only occurred in
      read/write to !, JOE already did the right thing for shell windows
      and the filter region through shell command.

    • Improve screen update algorithm so that spaces at the ends of
      lines are always emitted. This allows them to be preserved when
      cutting text with the mouse from a terminal emulator window.

    • Improve efficiency of screen update algorithm: JOE had been
      resetting attributes such as background color before performing
      cursor motions (probably as work around for bugs in old terminal
      emulators). This made screen update slow when there were many
      attributes, as with syntax highlighting and color schemes. It was
      also repeatedly emitting ESC [ K.

    • Switch JOE to issue scrolling commands, even at high baud rates
      (before this, JOE issued scrolling commands only at 19200 and
      below because it used to be that simple screen refresh was faster
      than scrolling in terminal emulators. But this is no longer true
      with complex screens involving color schemes, unicode and
      highlighting).

  • Windows version

    • Fix file access checks. Inaccessible files due to ACL's weren't
      correctly detected. This was a regression in 4.5.

    • Check the correct (Windows) path in the home directory for color
      schemes. This was not re-implemented properly in 4.5.

JOE 4.6

  • Enhancements

    • Upgrade to Unicode 10.0.0. Add configure environment variable
      that allows you select Unicode 8.0.0, 9.0.0 or 10.0.0.

    • Install Gnome .desktop files for JOE. This allows you to use JOE
      in GUI "Open With" mouse actions.

    • Support strikeout and double-underline attributes for the few terminal
      emulators that support them. Use "stricken" and "dunderline" in
      the syntax files, or \s and \z in help screens and status line.

  • Bugs fixed

    • Fix bug where JOE would sometimes crash when editing shell
      scripts. This was due to an obscure bug in the syntax highlighter:
      'reset' command (used for default state) was incorrectly messing
      with stack.

    • -highlighter_context was missing from many file types, which
      negated some improvements from the previous version.

    • Fixed signed char overflow with old style mouse events in large
      windows

    • Fix bug where path restart (//) was being applied to block filter
      command prompt. Strange things would happen if you had adjacent
      slashes in command arguments.

    • Allow ~ expansion but suppress path restart (//) in compiler error
      parsing.

    • Restore default handling of SIGPIPE and SIGINT for shell commands.
      This fixes an issue where SIGPIPE doesn't terminate a process as
      expected, for example by the head -n 10 in: ^K R !sh -c 'while :;
      do echo y; done' | head -n 10. This issue only occurred in
      read/write to !, JOE already did the right thing for shell windows
      and the filter region through shell command.

    • Improve screen update algorithm so that spaces at the ends of
      lines are always emitted. This allows them to be preserved when
      cutting text with the mouse from a terminal emulator window.

    • Improve efficiency of screen update algorithm: JOE had been
      resetting attributes such as background color before performing
      cursor motions (probably as work around for bugs in old terminal
      emulators). This made screen update slow when there were many
      attributes, as with syntax highlighting and color schemes. It was
      also repeatedly emitting ESC [ K.

    • Switch JOE to issue scrolling commands, even at high baud rates
      (before this, JOE issued scrolling commands only at 19200 and
      below because it used to be that simple screen refresh was faster
      than scrolling in terminal emulators. But this is no longer true
      with complex screens involving color schemes, unicode and
      highlighting).

JOE 4.5 for Windows

  • Enhancements

    • New color scheme feature, which can be accessed with ^T S or
      by setting the -colors option.

    • 24-bit color support
      can be enabled by setting the COLORTERM environment variable to
      truecolor or 24bit.

    • Several schemes included in-the-box:

      • gruvbox by Pavel Pertsev

      • ir_black by Todd Werth

      • molokai by Tomas Restrepo

      • solarized by Ethan Schoonover

      • wombat by Lars H. Nielsen

      • xoria by Dmitriy Y. Zotikov

      • zenburn by Jani Nurminen

    • The current line can be highlighted by pressing ^T U or by
      enabling the -hiline option.

    • The gutter containing line numbers has a dynamic size based on the
      length of the file, rather than a fixed size of 10.

    • Updated all language syntax files to use comment_todo and
      string/comment contexts where appropriate.

    • Now pass character which invoked a macro to each macro step and
      call. If a macro step happens to be the 'type' command, the
      character which invoked the macro will be typed in. For example,
      this macro will type three 'X's. Before this change you got three
      NULs.

      type,type,type X

  • Bugs fixed

    • Fix exsave: (^K ^X) should close file when a block is present in
      the window, and the file is unmodified (regression from ^C change
      in 4.2).

    • Fix regex assertions: they were not working because the character
      before the search position was not being loaded.

    • For jmacs: ^Q^J now again inserts \n in the string replace prompt.
      This broke beginning with JOE 4.0.

    • Don't try to open files for writing to check file access. This
      behaves better on unionfs mounts.

    • Fix stray blocks created after find/replace.

  • Windows version

    • Fix inability to set indent step to 1 from menu.

    • Add support for math functions, fix engineering display.

    • Fix backslash escapes in find/replace.

    • Support italicized text.

JOE 4.5

  • Enhancements

    • New color scheme feature, which can be accessed with ^T S or
      by setting the -colors option.

    • 24-bit color support
      can be enabled by setting the COLORTERM environment variable to
      truecolor or 24bit.

    • Several schemes included in-the-box:

      • gruvbox by Pavel Pertsev

      • ir_black by Todd Werth

      • molokai by Tomas Restrepo

      • solarized by Ethan Schoonover

      • wombat by Lars H. Nielsen

      • xoria by Dmitriy Y. Zotikov

      • zenburn by Jani Nurminen

    • The current line can be highlighted by pressing ^T U or by
      enabling the -hiline option.

    • The gutter containing line numbers has a dynamic size based on the
      length of the file, rather than a fixed size of 10.

    • Updated all language syntax files to use comment_todo and
      string/comment contexts where appropriate.

    • Now pass character which invoked a macro to each macro step and
      call. If a macro step happens to be the 'type' command, the
      character which invoked the macro will be typed in. For example,
      this macro will type three 'X's. Before this change you got three
      NULs.

      type,type,type X

  • Bugs fixed

    • Fix exsave: (^K ^X) should close file when a block is present in
      the window, and the file is unmodified (regression from ^C change
      in 4.2).

    • Fix regex assertions: they were not working because the character
      before the search position was not being loaded.

    • For jmacs: ^Q^J now again inserts \n in the string replace prompt.
      This broke beginning with JOE 4.0.

    • Don't try to open files for writing to check file access. This
      behaves better on unionfs mounts.

    • Fix stray blocks created after find/replace.

JOE 4.4 for Windows

  • Bugs fixed

    • Fix segfault due to buffer overrun. This happens if a line
      with many backslashes appears in the status line context display.

    • Fix jmacs: ^X ^F and ^X ^B were not working

    • Build fixes for Solaris

    • Improve php highlighter: allow numbers in substitution variable names

    • Unicode tweak: treat private use characters (Co) as printable

    • Dockerfile highlighter: Add Docker new commands from 1.12,
      mark bad strings in arrays

    • Fix loading external charmaps

  • Windows version

    • Fix crashing bug when using incremental search

JOE 4.4

  • Bugs fixed

    • Fix segfault due to buffer overrun. This happens if a line
      with many backslashes appears in the status line context display.

    • Fix jmacs: ^X ^F and ^X ^B were not working

    • Build fixes for Solaris

    • Improve php highlighter: allow numbers in substitution variable names

    • Unicode tweak: treat private use characters (Co) as printable

    • Dockerfile highlighter: Add Docker new commands from 1.12,
      mark bad strings in arrays

    • Fix loading external charmaps

JOE 4.3 for Windows

  • Bugs fixed

    • Fixed a missed merge that prevented some options menu items from
      being changed (tab width, tab char, etc).

    • Fixed bugs updating the title bar.

    • Minor memory leak/performance fix in subprocess communication.

    • (from newer version) Fix segfault due to buffer overrun. This
      happens if you a line with many backslashes appears in the status
      line context display.

  • Enhancements

    • Improve memory usage by shrinking buffer header size and
      highlighter state size.

    • Improve performance of status line context display (which shows
      the first line of the function that the cursor is currently in).
      This feature was making JOE very slow on extremely large files with
      auto indent enabled (typically JSON or XML data files). Now
      the syntax highlighter computes the context display (using a new
      syntax named context.jsf).

    • Add a mode 'title' to enable or disable the status line context
      display (previously autoindent mode was overloaded to do this).

    • Disable syntax highlighting and context display in very large
      files

    • Force more appropriate modes when we enter hex dump display:
      enable overtype, disable autoindent, wordwrap, ansi, picture.

    • Handle middle mouse button in "joe -mouse" mode (before it did
      nothing). It's treated as paste (copy region to mouse) as
      expected. (patch from Petr Olsak).

  • Bugs fixed

    • Do not kill region highlighting during incremental search (patch
      from Petr Olsak).

    • Negative numbers were not being recognized in blocks

    • PgUp/PgDn would try to scroll menu if the window above is a menu
      (it should do this only for completion menus associated with
      prompts)

    • Use 'LC_ALL=C sed' to get JOE to compile in OS X.

    • Forward direction delimiter matching where the delimiters do
      not begin with special characters (for example in Verilog
      "begin" / "end") was not working.

    • Get mouse to work in menus: this broke in 4.1

    • Character classes with ranges were not working for UTF-8 (as in \[a-z])

    • Apply spec highlighting to .spec files

    • Gracefully handle short terminals: fix segfaults which occur when
      trying to shrink terminal while many windows are on the screen or
      while turning on help with a short terminal. Fix similar bugs
      involving the skiptop option. JOE now works even if the terminal
      height is only one line.

JOE 4.3

  • Enhancements

    • Improve memory usage by shrinking buffer header size and
      highlighter state size.

    • Improve performance of status line context display (which shows
      the first line of the function that the cursor is currently in).
      This feature was making JOE very slow on extremely large files with
      auto indent enabled (typically JSON or XML data files). Now
      the syntax highlighter computes the context display (using a new
      syntax named context.jsf).

    • Add a mode 'title' to enable or disable the status line context
      display (previously autoindent mode was overloaded to do this).

    • Disable syntax highlighting and context display in very large
      files

    • Force more appropriate modes when we enter hex dump display:
      enable overtype, disable autoindent, wordwrap, ansi, picture.

    • Handle middle mouse button in "joe -mouse" mode (before it did
      nothing). It's treated as paste (copy region to mouse) as
      expected. (patch from Petr Olsak).

  • Bugs fixed

    • Do not kill region highlighting during incremental search (patch
      from Petr Olsak).

    • Negative numbers were not being recognized in blocks

    • PgUp/PgDn would try to scroll menu if the window above is a menu
      (it should do this only for completion menus associated with
      prompts)

    • Use 'LC_ALL=C sed' to get JOE to compile in OS X.

    • Forward direction delimiter matching where the delimiters do
      not begin with special characters (for example in Verilog
      "begin" / "end") was not working.

    • Get mouse to work in menus: this broke in 4.1

    • Character classes with ranges were not working for UTF-8 (as in \[a-z])

    • Apply spec highlighting to .spec files

    • Gracefully handle short terminals: fix segfaults which occur when
      trying to shrink terminal while many windows are on the screen or
      while turning on help with a short terminal. Fix similar bugs
      involving the skiptop option. JOE now works even if the terminal
      height is only one line.