-
The
setcommand behavior has been enhanced and it now shows a preview of the config values being modified. -
The
buffer-replaceandbuffer-replace-regexcommands show a summary list (similar tobuffer-grep) of the matches being replaced. -
The summary list in
buffer-grepandbuffer-replacecommands can now toggled visible or collapsed usingctrl_s. -
When browsing a directory in the
opencommand,ctrl_rnow refreshes the directory list. -
A bug with the command line text overflow has been fixed. The command line now grows vertically and wraps text if it is too long.
-
Added buffer status indicators in titlebar as a quick indicator of when the buffer is modified. These are only shown if config.buffer_icons is true.
- A major rewrite of the command line and interaction modules has been implemented. The new system internals are describe here: https://github.com/howl-editor/howl/wiki/The-Command-Interaction-Refactor. The changes are backwards incompatible. An upgrade guide is available at doc/upgrading.md.
-
Added
navigate-go-tocommand, for going back to a specific previous location. -
Added support for a "journal" buffer showing the Howl log, available via
open-journal. -
Ensure loaded buffers contain valid UTF-8 at all times
-
C: Support for lexing raw strings
-
Rust: Improved lexing
-
Added support for specifying line and column when opening files, e.g.
$ howl my-file:10
$ howl my-file:10:2Works both when opening a file locally or remotely using --reuse.
-
Added support for custom user fonts (place them in /fonts, e.g. ~/.howl/fonts)
-
Added
project-switch-buffercommand that displays open buffers within the current project. -
Added two inspectors and a command for documentation to the Go mode
-
Moving cursor left or right with a selection active now cancels the selection, leaving the cursor at the corresponding end.
-
Added proper structure support for C/C++ mode
-
Base scheme support on the newer lisp mode instead of old basic mode
-
Added the
**popup_menu_accept_keyoption, for controlling which key accepts the current option for a popup menu, such as the completion popup. Valid values are 'enter' (the default) or 'tab'. -
Close completion popup when user activity warrants it (e.g. direction keys, clicking in another location using the mouse, etc.)
-
Added new built-in theme: Dracula
-
Added integrated and fast project file search functionality via two new commands:
project-file-searchandproject-file-search-list -
Javascript: Support for ES6 templates and new keywords and operators
-
Performance and functionality improvements for the matcher, used in Howl selection lists, enabling fast matching across much larger data sets.
-
Performance improvements for recursive file selections (
project-openand ordinary recursiveopencommand): Between 30x and 32x faster. -
Respect use_tabs option when commenting
-
Ensure scrolling works correctly for Gtk+ 3.4
-
Dart bundle enhancements: improved syntax highlighting
-
Added support for activities - potentially longer running activities that should run in a apparently blocking way to the user. Example: Loading files from larger directories will now be run as a user visible and user cancellable operation if it takes to long to complete.
-
Added a new commandline flag,
--run-async, for running a particular file in a asynchronous Howl context. -
Added support for shared, low precision after timers
-
Added options for controlling scrolling speed
-
Add support for smooth scrolling events (needed for Wayland with two-finger scrolling)
-
Fixed background drawing for Wayland/Weston/CSD environments (borders outside of the window).
-
Requested that titlebar is hidden for newer versions of Gnome 3.
-
Added support for navigating back and forth in a list of previously visited locations. Two new commands,
navigate-backandnavigate-forwardwere added, bound toctrl_<andctrl_>respectively. -
Improved key translation for keys when caps lock is on.
-
Better Python lexing
-
Added two new commands,
editor-newline-aboveandeditor-newline-below, that insert a new line above/below the current line. Bound these commands toctrl_shift_returnandctrl_return. -
Auto detect line endings when opening a file if possible
- Issues as seen on Github
Added a workaround for a Gtk issue with scrollbars.
- Fixed a bug manifesting in a SIGSEGV on OpenBSD.
-
Corrected version number given by
--versionflag -
Dart lexer fixes
-
New Dart bundle for Dart code.
-
Make fixes to let OpenBSD build cleanly (thanks @oficial)
-
Various improvements for VI mode
-
Code inspection support for Lua using luacheck
-
Code inspection support for Ruby using Ruby interpreter
-
Code inspection support for Moonscript using moonpick
-
Support for a new inspections framework (i.e. linting).
-
New Rust bundle provides syntax and structure support for Rust code.
-
Added
--versioncommand line flag. -
Bundles can now declare dependencies on other modules using the
require_bundlehelper function. -
Bundles can now expose modules using
provide_modulehelper function. -
LuaJIT was updated to LuaJIT-2.1.0-beta3
-
Theme compatibility fixes for newer Gtk versions
-
Quiet Gtk size allocation warnings in newer Gtk versions
-
Added support for X11 primary selection (e.g. copy & paste using middle button).
-
New Cython bundle provides syntax and structure support for Cython code.
-
breaking - Default for
line-paddingsetting has been changed to0. If you've relied on it: set it explicitly to its' previous value1in your Howl configuration. -
breaking - Overhauled the configuration system to use a flexible scope and layer structure. Replaced all 'set*' commands with a new
setcommand as part of this. See the documentation for more details. -
Added
config.save_config_on_exitvariable to automatically save global configuration to~/.howl/system/config.lua. -
Added the
save-configcommand that saves the current global configuration to~/.howl/system/config.lua. -
Changed undo coalescing to not be as greedy (e.g. coalescing pastes and ordinary edit revisions).
-
Added
custom_drawflair type (highlight.CUSTOM). -
Added command line help which is invoked by pressing
f1while any interactive command is running. This displays a popup containing information about the command. -
Added new commands
editor-move-text-leftandeditor-move-text-right, bound toalt_leftandalt_rightby default. These move the current character or selected text left or right by one character while preserving the selection. -
Added new commands
editor-move-lines-upandeditor-move-lines-down, bound toalt_upandalt_downby default. These move the current or selected lines up (or down) by one line while preserving the selection. -
Bundled all required dependencies for running specs:
./bin/howl-speccan now be run without any type of external dependecy. -
Upgrade Moonscript to 0.5.0
-
Added new command,
editor-replace-exec, for replacing selection or buffer content with the result of piping it to an external command.
- Issues as seen on Github
-
Make scrollbars themeable (on newer Gtk versions). Avoids the problem where a theme with black scrollbars would make the scrollbars effectively invisible.
-
Makefile fixes for FreeBSD (thanks @maxc01)
-
Compatibility fixes for certain Gtk versions and window managers where the window would end up with a lot of extra outer padding.
-
Added a new theme 'Blueberry Blend'
-
New Pascal bundle (lexing, indentation support, etc). Replaces the old basic Pascal mode.
-
Added a new command,
cursor-goto-bracefor moving cursor to matching brace. -
Changed brace highlighting logic to match braces of same styles only.
-
New Go bundle (lexing, autocompletion and formatting).
-
Added icons for buffer listings.
-
Undo now resets the buffer modified flag if it reaches the original revision.
-
Added a new theme,
monokai. This will be the new default theme, starting with the 0.4 release. -
Added a new theme,
steinom. -
Added a new function
sys.time()which returns the POSIX time for the system with microsecond resolution. -
Added a new module, 'janitor', which automatically closes old buffers and tries to release memory back to the OS. The buffer closing is controlled by two new configuration variables,
cleanup_min_buffers_openandcleanup_close_buffers_after. -
Added a new command,
cursor-goto-linefor going to a specified line. -
Added Timer.on_idle, for performing operations upon idle.
-
Added a new property, Application.idle, for determining how long the application has been idle.
-
Added new configuration variable,
undo_limit, for controlling the maximum number of revisions for each buffer. -
Added the
open-recentcommand, bound toctrl_shift_o, to show a list of recently closed files and let the user select one to re-open. -
Added
buffer-grep-exactandbuffer-grep-regexcommands similar tobuffer-grepbut using exact and regular expression matches, respectively. -
Changed how Howl loads files specified on the command line. Previously files were loaded in different views, and now they're all loaded with one file being shown (issue #123).
-
Added recursive listing feature to file interactions. Pressing
ctrl_sin theopencommand now toggles between recursive and regular list of files. -
Added custom font support and Font Awesome icons for file listings.
-
Added two new configuration variables for line wrapping:
- line_wrapping_navigation
- line_wrapping_symbol
-
Upgrade LuaJIT to LuaJIT-2.1.0-beta1
-
Added new bundle, 'mail-mode'.
-
Added support for loading user configuration from a XDG Base Directory compliant directory. It's not the default, but will be used if
~/.howlis not present and the XDG directory is. -
Added previews for the
opencommand. -
Replaced the old editing engine Scintilla with a new custom written engine, code-named
aullar. -
The
howl-moon-evalcommand was improved by automatically adjusting the indentation levels to work as a stand-alone code chunk.
- Changed
ctrl_wto runbuffer-closeinstead ofview-close. Addedctrl_shift_wforview-close.
- Issues as seen on Github
-
The
on_selection_changecallback for interactions has been renamed toon_changeand triggers even when selection stays the same but the text changes. -
The theming support has been updated. Custom themes for previous versions will have to be updated for 0.4, which is easiest done by looking at the built-in themes shipping with Howl.
-
Added a new command,
project-buildthat executes a pre-configured command from the projects root directory (using the command configured in the newproject_build_commandvariable). -
New Nim bundle (lexing, structure, etc)
-
New Python bundle (lexing, structure, etc). Replaces the old basic Python mode.
-
Lexer fixes: Ruby, C/C++, HTML, HAML
-
Lisp and sub modes: Better indentation support
-
Added previews for the
switch-bufferandproject-opencommands. -
HTML mode: Sub lex inline styling
-
Upgrade to LuaJIT 2.0.4
-
Upgrade to Moonscript 0.3.1
-
Replaced the readline and input system with a new command line and interactions system resulting in new API.
-
Updated the
buffer-replacecommand and added a newbuffer-replace-regexcommand. Both show live previews of replacements and allow selective exclusion. -
Command history is now recorded and can be viewed by using the
upkey from the command line. Previously run commands can be re-run by selecting them from the history. -
New PHP bundle, featuring a new PHP mode with advanced syntax highlighting.
-
The
describe-keycommand now shows the commands bound to the key press. -
Added indirect bindings support to keymaps using the
binding_forfield. -
Added a new comprehensive API for launching and controlling external processes (howl.io.Process).
-
Added two new commands for launching external processes:
execandproject-exec. The former opens up a prompt for launching an external process from the directory of the current file (if available), whereas the latter launches an external process from the base directory of the current project. Both opens up a new process buffer for displaying any process output (ANSI color sequences supported). -
Substituted certain key names to avoid ambiguity, e.g.
alt_lnow gets substituted foraltLso that pressing left alt is distinguishable from pressing alt + l (issue #29) -
VI:
- Refuse to enter INSERT mode for a read-only buffer
- Bind
?tobuffer-search-backward
-
Added new method,
Buffer.save_as(file), for associating with and saving a buffer's content to a specified file. -
Added new function,
bindings.binding_for, for finding a binding for a particular action. -
Added a new StyledText (howl.ui.StyledText) class in the API, used for holding a chunk of text along with corresponding styles. ActionBuffer now supports inserting or appending such instances. Along with this a new simple markup parser was added (Howl Markup, howl.ui.markup.howl) that can be used to easily create StyledText instances.
-
Added a new command
buffer-search-backwardthat implements an interactive search for the text typed by the user, backwards from the cursor position. Bound this command toctrl_r. -
Enabled jumping to the next or previous match while an interactive search is running. The bindings for
buffer-search-backwardorbuffer-search-forward(ctrl_randctrl_fby default) are used for this while either command is active. -
Added two new commands
buffer-search-word-backwardandbuffer-search-word-forwardthat do an exact word match, using the configured word pattern, for the current word at cursor. Bound these commands toctrl_commaandctrl_period. -
Updated interactive
buffer-search-backwardandbuffer-search-forwardcommands to highlight all matches on screen in addition to the primary match. Added a new highlight style calledsearch_secondaryfor the non primary matches. -
Ruby: Update lexer to properly lex bare general delimited strings, e.g.
my_string = %{string here}.
-
A slew of issues as seen on Github
-
Fix highlighting of "bad braces", i.e. braches for which no match could be found.
-
The old readline API was significantly revamped for this release, with changes too numerous to list here. The documentation for the new readline module is a good starting point for seeing how the new API looks.
-
Buffer.file: Assigning a new file causes the buffer contents to always be reloaded, regardless of the modification status. If the file does not exist, the buffer's contents will be emptied. -
Buffer.reload():reloadnow takes an additional parameter,force, that allows reloading a buffer even if the buffer is currently modified. -
Buffer.find(),Buffer.rfind(): new methods that implement forward and reverse search on the entire buffer text, or starting atinitargument if provided. These methods work with character offsets. -
ustring.urfind(),ustring.rfind(): new methods that implement reverse search for a given string within the string. Theurfindmethod uses character offsets whilerfinduses byte offsets.
Command names deprecated in the 0.2 release have now been removed.
-
Added a new command
editor-cycle-casethat changes the case of the current word or selection. The new case is automatically chosen based on the current case. The command cycles through lowercase -> uppercase -> titlecase. -
Prompt before saving a buffer if the file on disk was modified (issue #25)
-
Moonscript: Fix incorrect lexing of
nil,true, andfalsewhen they are prefixes of an identifier. -
Haml: Properly lex attribute lists after class and id declarations
-
editor-pastenow cuts any existing selection before pasting (issue #26) -
Cairo error introduced with patch for flickering on Gtk 3 in 0.2, that was seen on Gtk 3.4.2 (issue #28)
-
Sporadic and rare LuaJIT "bad callback" panic should be fixed.
-
Avoid having the readline grow and shrink as much, which is annoying since it requires the eyes to move up and down. Now the readline will only grow during one read() invocation, and will keep the same fixed size regardless of the amount of items in the completion list.
-
Added howl.clipboard, new module for handling multiple clipboard items. A new command,
editor-paste.., was added as well that allows for pasting a selected clip from the clipboard. -
Added a new configuration variable,
line_padding, which allows for setting extra padding for lines (issue #14) -
Removed fuzzy matching. It was noisy, and added little value.
-
Added case boundary matching (e.g. 'cc' now match against 'CreditCard' and 'camelCase').
-
Improved buffer-grep and buffer-structure commands:
- They are now about an order of magnitude faster for large files (issue #7)
- They now provide live previews by automatically showing the currently selected line in the buffer with the search highlighting (issue #15)
-
opencommand: Completing a directory with/now changes directory automatically (issue #5). -
Better structure view for Python mode (issue #12)
-
Scrolling is now remembered for buffers, in addition to the position that was previously remembered.
-
Command key bindings can contain partial text, enabling bindings such as
open /bin, which for the example would open the readline with the open command displaying the contents of/bin. -
Added a new config variable,
completion_skip_auto_within, which allows for specifying a list of styles for which the completion list should not automatically pop up. -
save-ascommand now prompts before overwriting an existing file. -
References to home directory are now shortened to '~' in the file prompt.
-
HAML: Filters are sub lexed where possible (e.g. JavaScript)
-
Added proper CoffeeScript support
Includes extensive lexing, indentation and structure support. Also supports literate CoffeeScript.
- Improve code block completions when the start and end delimiters are the same
E.g. /// for CoffeeScript, or fenced code blocks for Markdown.
- Fix pasting of line block yanks (i.e. //)
- Fix count handling for yank
- Fix to yank current line correctly
- Support '<' and '>' in visual mode
- New bindings: 'H', 'L', 'M'
- Pulled in upstream Scintilla patch for bug where the cursor could end up invisible when switching from insert to command
-
Completion popup now closes upon entering a non-character (issue #9)
-
Brace matching of braces before the cursor are now highlighted correctly (issue #16)
-
Buffer grep fixed for buffers with empty lines
-
Byte code compilation no longers requires a $DISPLAY
-
Overly long lines in the readline caused horizontal scrolling (issue #8)
-
buffer-replacecommand failed to handle empty replacement strings -
Boundary matching was not working correctly in all cases
-
Pasting in the readline did not update completions (issue #6)
-
Lib directory not found when binary was invoked without path (issue #17)
-
Readline keeps focus, avoids weird state e.g. when clicking in an editor while in the readline (issue #23).
-
Ruby: Avoid over-eager lexing of regexes
-
HTML mode: Don't lex strings within HTML content
-
Flickering for Gtk+-3 versions 3.9.2 or greater was alleviated. It's still pending a fully satisfactory fix however.
In order to streamline the naming of commands, the below commands have been renamed:
-
toggle-fullscreen -> window-toggle-fullscreen
-
toggle-maximized -> window-toggle-maximized
-
reflow-paragraph -> editor-reflow-paragraph
-
search-forward -> buffer-search-forward
-
repeat-search -> buffer-repeat-search
-
replace -> buffer-replace
-
replace-pattern -> buffer-replace-pattern
-
reload-buffer -> buffer-reload
-
force-mode -> buffer-mode
-
mode-set -> set-for-mode
-
buffer-set -> set-for-buffer
-
new-view-above -> view-new-above
-
new-view-below -> view-new-below
-
new-view-left-of -> view-new-left-of
-
new-view-right-of -> view-new-right-of
In addition, the following alias has been deprecated:
- fill-paragraph (alias for editor-reflow-paragraph)
The old command names are still present and working, but are deprecated and will be removed in a future release.
- howl.fs.File is now at howl.io.File
The old path is deprecated and will be removed in future releases, but still works as of now.
- Fix incompatibility with older Gtk versions.
First public release.