All releases and notable changes will be documented here, using a format similar to the one described by Keep a Changelog.
Released on 2023-03-01.
Additions:
- Added a
show setenv
sub-command. - Added an
-m
flag to theundo
command, to allow moving to the last change without undoing it. - Added support for Super (
s-
) and Hyper (H-
) modifiers in key bindings. - Added a syntax highlighter for Coccinelle "semantic patch" (
*.cocci
) files. - Added rules for handling CDATA sections to the XML syntax highlighter.
- Added auto-completion for command flags.
Fixes:
- Fixed a bug that was causing key bindings to not work properly when the Num Lock and/or Caps Lock modifiers were in effect in terminals supporting the kitty keyboard protocol.
- Fixed the
save
command, to avoid breaking hard links when writing to existing files. - Fixed an issue in the build system causing
make distcheck
to fail.
Other changes:
- Changed built-in filetype detection so that a
dot_
filename prefix is equivalent to a.
prefix, or more specificallydot_bashrc
is now treated the same way as.bashrc
. - Changed the
default
command indte-syntax
files to show an error if there are duplicate arguments. - Removed the built-in
xsel
alias.
Downloads:
Released on 2023-01-21.
Additions:
- Added 15 new command flags:
- Added a new
exec
command, (this replacesrun
,filter
,pipe-from
,pipe-to
,eval
,exec-open
andexec-tag
, which are now just built-in aliases ofexec
). - Added
overwrite
andoptimize-true-color
options. - Added built-in
$RFILE
,$FILEDIR
and$COLNO
variables. - Added
hi
,msg
andset
arguments to theshow
command. - Added a number argument to the
msg
command. - Added support for 3-digit
#rgb
colors to thehi
command (in addition to the existing#rrggbb
support). - Added support for binding
F13
-F20
keys. - Added support for parsing alternate encodings of
F1
-F4
keys (e.g.CSI P
) sent by some terminals. - Added support for the Kitty keyboard protocol (which significantly increases the number of bindable key combos).
- Added syntax highlighters for JSON, Go Module (
go.mod
), G-code and.gitignore
files. - Added support for binary literals and hex float literals to the C syntax highlighter.
- Added support for escaped newlines in string literals to the C syntax highlighter.
- Added support for
<<-EOF
heredocs to the shell syntax highlighter. - Added support for template literals to the JavaScript syntax highlighter.
- Added support for terminal "synchronized updates" (both the DCS-based
variant and the private mode
2026
variant). - Added documentation for the
bookmark
command. - Added
$PATH
,$PWD
,$OLDPWD
and$DTE_VERSION
to the environment section of thedte
man page. - Added extended support for Contour and WezTerm terminals.
- Added an AppStream metadata file, which is installed by default when
running
make install
(except on macOS).
Improvements:
- Updated Unicode support to version 15.
- Allowed
alias
anderrorfmt
entries to be removed, by running the commands with only 1 argument. - Improved command auto-completion for
alias
,bind
,cd
,redo
,move-tab
andquit
commands. - Improved documentation for
alias
.tag
,hi
,msg
andwsplit
commands. - Changed
quit -p
to display the number of modified/unsaved buffers in the dialog prompt. - Excluded
.
and..
from filename auto-completions. - Allowed
-c <command>
options to be used multiple (up to 8) times. - Allowed
+lineno,colno
command-line arguments (in addition to+lineno
). - Extended
line
command to accept alineno,colno
argument (in addition tolineno
). - Limited the size of
.editorconfig
files to 32MiB. - Enabled "enhanced" regex features on macOS, by using the
REG_ENHANCED
flag when callingregcomp(3)
. - Improved support for the
modifyOtherKeys
keyboard mode (which increases the number of bindable key combos somewhat), by emitting the escape sequence to enable it at startup. - Various improvements to built-in filetype detection.
- Various performance/efficiency improvements.
Fixes:
- Fixed a bug that caused searches started by
search -r
to be incorrectly recorded bymacro record
. - Fixed a bug that caused "broken pipe" errors to occur if the terminal
was resized during certain long-running commands (e.g.
compile
). - Fixed several regular expressions in built-in configs that were using
non-portable regex features (
\s
,\b
and\w
) and causing errors on some systems. - Fixed a portability issue that was causing execution of external commands to fail with "function not implemented" errors on some systems (notably Debian GNU/kFreeBSD).
Breaking changes:
- Changed the default Ctrl+v key binding to
paste -a
(previouslypaste -c
). - Removed the
display-invisible
global option. - Removed the
-b
flag from theselect
command. - Renamed the built-in
coffeescript
filetype tocoffee
. - Made the
str
command indte-syntax
files produce an error if used with single-byte arguments (char
should be used instead). - The
pipe-from
-s
flag was effectively renamed to-n
, as part of the changes made for the newexec
command.
Other changes:
- Increased the minimum GNU Make version requirement to 4.0.
- Increased the minimum GCC version requirement to 4.8.
Downloads:
Released on 2021-04-03.
Additions:
- Added 7 new commands:
blkdown
blkup
delete-line
exec-open
(note: replaced byexec
in v1.11)exec-tag
(note: replaced byexec
in v1.11)macro
match-bracket
- Added 12 new command flags:
- Added 2 new global options:
- Added an optional exitcode argument to the
quit
command. - Added
color
,command
,env
,errorfmt
,ft
,macro
,option
,search
andwsplit
arguments to theshow
command. - Added support for the
\e
escape sequence in double-quoted command arguments. - Added syntax highlighting for Lisp and Scheme files.
- Added an Alt+Enter key binding to search mode, for performing plain-text searches.
- Added a Shift+Tab key binding to command mode, for iteratating auto-completions in reverse order.
- Added
%b
,%N
and%S
statusline format specifiers. - Added a large confirmation dialog, shown when
quit -p
is run with unsaved changes. - Added the ability to exclude individual commands from command history (by prepending a space character when in command mode).
Improvements:
- Updated Unicode support to version 13.
- Bound Ctrl+c to
copy -k
by default. - Re-introduced built-in support for rxvt Ctrl/Alt/Shift key combinations.
- Fixed the handling of optional capture groups in
errorfmt
patterns. - Improved the legibility of the default color scheme on a wider range of terminals.
- Changed the
filter
andpipe-from
commands to set$LINES
/$COLUMNS
to the current window height/width, before running the specified program. - Clarified which command flags in the
dterc
man page are mutually exclusive (by separating them with|
). - Fixed signal handling, to allow interrupting unresponsive/deadlocked child processes with Ctrl+c.
- Fixed command-line auto-completion to work properly when option flags are present.
- Improved the documentation for
tag
,replace
, anderrorfmt
. - Various syntax highlighting improvements.
- Various terminal compatibility improvements.
- Various performance improvements.
Breaking changes:
- Removed support for linking to the system terminfo library. The terminfo database has only been used as a last resort source of information for several releases now. Most terminals that people are likely to be using already have built-in support in the editor, including several capabilities not available from terminfo. This is listed as a breaking change because it may break support for a few archaic hardware terminals (primarily those that aren't ECMA-48 compatible or whose terminfo strings contain mandatory padding).
- Removed support for vertical tab bars (the
tab-bar
option was changed from an enum to a Boolean).
Downloads:
Released on 2019-09-29.
Changes:
- Fixed
make check
when running from a release tarball.
Downloads:
Released on 2019-09-21.
Additions:
- Added a new
pipe-to
command, to complement the existingpipe-from
andfilter
commands. - Added a new
show
command, which can be used to introspect the current values of aliases and bindings. - Added a
-k
flag to thecopy
command, to allow keeping the current selection after copying. - Added a man page entry for the (previously undocumented)
eval
command. - Added new
$FILETYPE
and$LINENO
special variables. - Added a
display-invisible
global option, to allow visible rendering of otherwise invisible Unicode characters. - Added an
-s
command-line flag, for validating custom syntax files. - Added a compile-time
ICONV_DISABLE=1
option, which disables linking to the system iconv library (but makes the editor UTF-8 only). - Added a Desktop Entry file, which can be installed using
make install-desktop-file
.
Improvements:
- Updated Unicode support to version 12.1.
- Modified the
errorfmt
command, to allow sub-match groups in the regexp pattern to be ignored. - Various improvements to syntax highlighting and filetype detection.
- Various performance optimizations.
Fixes:
- Fixed a bug that would sometimes cause files to be saved as UTF-8, even if another encoding was specified.
Downloads:
Released on 2019-04-23.
Changes:
- Fixed makefile to work with GNU Make 3.81 (which is still used by OS X and Ubuntu 14.04).
Downloads:
Released on 2019-04-22.
Fixes:
- Fixed parsing of escaped special characters in command arguments (which was causing Lua syntax highlighting to fail).
- Removed use of
rep
(repeat character) control sequence, due to problems caused by certain terminal emulators that claim to be "xterm" but don't support the full set of features in the xtermterminfo(5)
entry (notably, the FreeBSD 12 console).
Additions:
- Show a confirmation prompt if Ctrl+q (quit) is pressed with unsaved changes, instead of a cryptic error message.
Downloads:
Released on 2019-04-18.
Additions:
- Added support for 24-bit RGB terminal colors.
- Added support for
strikethrough
terminal attribute. - Added support for
alias
names containing multi-byte Unicode characters. - Added
refresh
command (to force a full screen redraw). - Added
dte -K
command-line option (for keycode debugging). - Added support for reading a buffer from
stdin
at startup. - Added support for binding Ctrl/Alt/Shift + F1-F12 on xterm-like terminals.
- Added
-s
flag tobol
command, to allow moving to beginning of indented text, before moving to beginning of line (a.k.a "smart home"). - Added
-c
flag to all cursor movement commands, to allow selecting characters while moving. - Added
-l
flag toup
,down
,pgup
andpgdown
commands, to allow selecting whole lines while moving. - Added default bindings for various Shift+key combinations, for doing GUI-style text selections.
- Added key bindings to command mode for deleting/erasing whole words (Alt+Delete and Alt+Backspace).
Improvements:
- Optimized built-in filetype detection.
- Fixed cursor interaction with Unicode combining characters.
- Improved handling of Unicode whitespace and unprintable characters.
- Updated character class lookup tables to Unicode 11.
- Expanded documentation for
hi
andcompile
commands. - Optimized code to reduce editor startup and input latency.
Breaking changes:
- Changed the
bind
command to be much more strict when parsing key strings and show an error message when invalid. The caret (^
) modifier can now only be used alone (not in combination with other modifiers) and theC-
,M-
andS-
modifiers must be uppercase. - Removed support for chained key bindings (e.g.
bind '^X c' ...
). Commands that aren't bound to simple key combinations can just be accessed via command mode. - Removed support for recognizing some Ctrl/Alt/Shift key combinations
produced by the
rxvt
terminal emulator. The key codes produced byrxvt
violate the ECMA-48 specification. Users of such terminals are encouraged to configure the key codes to mimicxterm
instead.
Downloads:
Released on 2018-05-08.
Changes:
- Added support for opening multiple files using glob patterns
(e.g.
open -g *.[ch]
). - Added support for binding more xterm extended key combinations (Ctrl/Meta/Shift + PageUp/PageDown/Home/End).
- Improved compiler error parsing for newer versions of GCC.
- Improved handling of underline/dim/italic terminal attributes
(including support for the
ncv
terminfo capability). - Many other small bug fixes and code improvements.
Downloads:
Released on 2017-12-20.
Changes:
- Added new, default
dark
color scheme. - Added Ctrl+G key binding to exit command mode.
- Added Ctrl+H key binding for
erase
command. - Added syntax highlighting for TeX and roff (man page) files.
- Improved syntax highlighting of Python numeric literals.
- Improved syntax highlighting for CSS files.
- Added
ft -b
command for detecting file types from file basenames. - Converted user documentation to Markdown format.
- Created new website for online documentation.
- Added support for terminfo extended (or "user-defined") capabilities.
- Added built-in support for
st
andrxvt
terminals. - Fixed some built-in regex patterns to avoid non-portable features.
- Fixed compiler warnings on NetBSD.
- Removed tilde expansion of
~username/
fromdterc
commands, in order to avoid usinggetpwnam(3)
and thereby allow static linking with glibc on Linux.
Downloads:
Released on 2017-11-03.
Changes:
- Added syntax highlighting for Nginx config files.
- Added some POSIX and C11 features to the C syntax highlighter.
- Added new command-line flags for listing (
-B
) and dumping (-b
) built-in rc files. - Moved some of the documentation from the
dte(1)
man page to a separatedterc(5)
page. - Fixed a terminal input bug triggered by redirecting
stdin
. - Fixed some memory and file descriptor leaks.
- Fixed a few portability issues.
Downloads:
Released on 2017-10-16.
Changes:
- Changed the build system to compile all default configs and syntax
highlighting files into the
dte
binary instead of installing and loading them from disk. The$PKGDATADIR
variable is now removed. - Added syntax highlighting for the Vala and D languages.
- Added the ability to bind additional, xterm-style key combinations
(e.g.
bind C-M-S-left ...
) when$TERM
istmux
(previously only available forxterm
andscreen
). - Added an option to compile without linking to the curses/terminfo
library (
make TERMINFO_DISABLE=1
), to make it easier to create portable, statically-linked builds.
Downloads:
Released on 2017-08-27.
Changes:
- Added support for binding Ctrl+Alt+Shift+arrows in xterm/screen/tmux.
- Added support for binding Ctrl+delete/Shift+delete in xterm/screen/tmux.
- Added the ability to override the default user config directory via
the
DTE_HOME
environment variable. - Added syntax highlighting for the Markdown, Meson and Ruby languages.
- Improved syntax highlighting for the C, awk and HTML languages.
- Fixed a bug with the
close -wq
command when using split frames (wsplit
). - Fixed a segfault bug in
git-open
mode when not inside a git repo. - Fixed a few cases of undefined behaviour and potential buffer overflow inherited from dex.
- Fixed all compiler warnings when building on OpenBSD 6.
- Fixed and clarified various details in the man pages.
- Renamed
inc-home
andinc-end
commands tobolsf
andeolsf
, for consistency with other similar commands. - Renamed
dte-syntax.7
man page todte-syntax.5
(users with an existing installation may want to manually deletedte-syntax.7
).
Downloads:
Released on 2017-07-30.
Changes:
- Unicode 10 rendering support.
- Various build system fixes.
- Coding style fixes.
Downloads:
Released on 2017-07-29.
Changes:
- Renamed project from "dex" to "dte".
- Changed default key bindings to be more like most GUI applications.
- Added
-n
flag todelete-eol
command, to enable deleting newlines if the cursor is at the of the line. - Added
-p
flag tosave
command, to open a prompt if the current buffer has no existing filename. - Added
inc-end
andinc-home
commands that move the cursor incrementally to the end/beginning of the line/screen/file. - Added a command-line option to jump to a specific line number after opening a file.
- Added syntax highlighting for
ini
,robots.txt
andDockerfile
languages. - Fixed a compilation error on OpenBSD.
- Replaced quirky command-line option parser with POSIX
getopt(3)
.
Downloads:
Released on 2015-04-28.
This is identical to the v1.0
release of dex (the editor
from which this project was forked).
Downloads:
A detached PGP signature file is provided for each release. The public
key for verifying these signatures is available to download at
https://craigbarnes.gitlab.io/pubkey/0330BEB4.asc
or from the keyserver at hkps://keys.openpgp.org
.
A list of SHA256 checksums for all release tarballs and signatures is available at https://craigbarnes.gitlab.io/dist/dte/dte-sha256sums.txt.
Some pre-built, portable binaries are available for Linux. They're statically-linked with musl libc and require nothing of the host system except a somewhat recent kernel.
Note: only x86_64
builds are available for now. Feel free to open an
issue if you need builds for other architectures.