209 lines
No EOL
10 KiB
Markdown
209 lines
No EOL
10 KiB
Markdown
Release 0.4.0
|
|
|
|
Celebrating 1000 github stars!
|
|
|
|
New Features:
|
|
|
|
- **File type configuration** - File types are now user configurable. Flow comes with a built-in
|
|
list of file types that you can now modify and save to the configuration directory with the
|
|
`Edit file type configuration` command. You can also create whole new file types simply by adding
|
|
new files to the configuration directory in the `file_type` folder. The file type configuration
|
|
defines the name, icon, description, formatter and language server, extensions and first line
|
|
matching rules for a file type.
|
|
|
|
- **Auto Save** - Enable auto save for the current buffer with the `Toggle auto save` command. This
|
|
will automatically save the current buffer on every change. Debounce time is the currently
|
|
configured frame rate. You can also enable auto save globally with the `enable_auto_save`
|
|
configuration option, and limit which file type have auto save automatically enabled with the
|
|
`limit_auto_save_file_types` configuration option (which is a list of file types, e.g.
|
|
`["zig","rust"]`)
|
|
|
|
- **Highlight columns** - Use the `Toggle highlight columns` (`toggle_highlight_columns`) command
|
|
(bound to shift+f11 in flow mode) to enable a background dim effect at the configured column
|
|
positions. The columns to highlight are configured via the `highlight_columns` configuration
|
|
option.
|
|
|
|
- **Smart insert & delete** - Brace pairs like (), [], {} and "" are now handled intelligently like
|
|
in most code editors. Also, leading whitespace is now intelligently deleted in `indent_size`
|
|
steps.
|
|
|
|
- **Format on save toggle** - Format on save can now be toggled for the current buffer with the
|
|
`Toggle format on save` command (`toggle_format_on_save`).
|
|
|
|
- **Git support** - The status bar now shows a summary of the project's git status include current
|
|
branch, number of changed files and number of unpushed/unpulled/stashed commits. Also, Flow now
|
|
respects all of git's file ignore machanisms. Diffs do not yet use git, but that is planned.
|
|
|
|
- **Auto create parent directories** - Flow will now automatically create parent directies if
|
|
necessary when creating new files.
|
|
|
|
- **Tilde expansion** - The `Open file` and `Save as` commands now correctly support expanding `~`
|
|
to the user's home directory.
|
|
|
|
- **Improved panic handling** - Flow now has much improved panic handling and will leave the
|
|
terminal in a known good state for all panics and segfaults. Additionally, release and nightly
|
|
builds are now available with full debug information that will produce fully detailed backtraces
|
|
on crash. This should help catch and fix those rare but pesky crashes. Please submit issues!
|
|
Additionally, there is a configuration option to automatically start and connect gdb to a
|
|
crashing flow instance. (linux only)
|
|
|
|
- **Terminal support** - Flow now supports the kitty explicit text width protocol. This improves
|
|
unicode character rendering on terminals that support it and superceeds `wcwidth` when available.
|
|
|
|
- **Language server protocol** - Flow language server protocol backend is now fully asynchronous.
|
|
This means that slow language servers cannot cause pauses while editing.
|
|
|
|
- **Language support**
|
|
- Added powershell syntax highlighting
|
|
- Added hurl syntax highlighting
|
|
- Added rpmspec syntax highlighting
|
|
- Added protobuf syntax highlighting
|
|
- Added uxntal syntax highlighting
|
|
- Added protobuf syntax highlighting
|
|
- Added C# formatter (csharpier)
|
|
- Added PHP language server (intelephense)
|
|
|
|
- **Themes**
|
|
- Themes can now be customized with the `Customise theme` command
|
|
- Added the entire base16 theme collection
|
|
- Added the hypersubatomic theme
|
|
|
|
- **Home screen** - The home screen text and list of commands can now be customized. Also, the
|
|
current build version and build type are now shown in the bottom right corner of the home screen.
|
|
|
|
- **tree-sitter** - Queries are now biniary compiled and stored in the flow executable. This
|
|
greatly improves load times and reduces binary size. Also, incremental tree-sitter parsing is
|
|
now checked for parsing errors and will fallback to a full re-parse if errors occur.
|
|
|
|
- **Integer arguments** - Flow now supports integer arguments to many commands similar to emacs and
|
|
vim. Related bindings have been added to Flow, Emacs, Vim and Helix modes. Pending integer
|
|
arguments are shown in the status bar.
|
|
|
|
- **Vim mode improvements** - Insert mode now produces automic undo steps, much more like Vim. Many
|
|
vim mode bindings have been improved to more closely match Vim in their behaviour. Visual line
|
|
mode was added.
|
|
|
|
- **Helix mode improvements** - Many helinx mode bindings have been improved to more closely match
|
|
Helix in their behaviour.
|
|
|
|
- **New keybindings**
|
|
- **Flow mode**
|
|
`home`/`end` now work in palettes
|
|
`ctrl+shift+F5` => reload file
|
|
|
|
- **Vim mode**
|
|
`ctrl-c` => exit insert mode
|
|
`:e!` => reload file
|
|
`gt` => next tab
|
|
`gT` => previous tab
|
|
`ctrl-v` => enter visual block mode
|
|
`<` => unindent
|
|
`>` => indent
|
|
'*' => find work at cursor
|
|
'J' => join line
|
|
'dgg' => cut to beginning of buffer
|
|
'dG' => cut to end of buffer
|
|
'f' => move/select forward to char
|
|
'F' => move/select backwards to char
|
|
't' => move/select forward until char
|
|
'T' => move/select backwards until char
|
|
'N' => goto previous match
|
|
'cc' => change whole line
|
|
'C' => change to end of line
|
|
'D' => delete to end of line
|
|
'cw' => change word right
|
|
'cb' => change word left
|
|
'zz' => scroll view to center
|
|
'w' => [VISUAL] select word right (vim)
|
|
'W' => [VISUAL] select word right
|
|
'e' => [VISUAL] select to end of word right (vim)
|
|
'b' => [VISUAL] select word left (vim)
|
|
'B' => [VISUAL] select word left
|
|
'gg' => [VISUAL] select to beginning of buffer
|
|
'G' => [VISUAL] select to end of buffer
|
|
'c' => [VISUAL] change word right
|
|
'C' => [VISUAL] change to end of line
|
|
'D' => [VISUAL] delete to end of line
|
|
|
|
- **New & updated commands**
|
|
- copy_file_name => [NEW] Copy the current buffer file name (and optionally line number) to the
|
|
clipboard.
|
|
- reload_file => [NEW] Reload the current file from disk (mainting undo).
|
|
- find_file => [NEW] Alias for open_recent.
|
|
- save_file_with_formatting => [NEW] Format and save the current file. Independant of the current
|
|
value of `enable_format_on_save`.
|
|
- save_file_without_formatting => [NEW] Save the current file without first formatting it.
|
|
Independant of the current value of `enable_format_on_save`.
|
|
- open_file => [UPDATED] Open file will now detect if the current selection contains a valid file
|
|
path, including optional line number. If it does, it will be opened immediately without first
|
|
prompting.
|
|
- join_next_line => [UPDATED] Join next line will now collapse whitespace.
|
|
- shell_execute_stream_output => [UPDATED] Will now follow output tail if cursor is at buffer
|
|
end.
|
|
|
|
- **Command line improvements**
|
|
- `--new-file` => Create a new file when starting Flow.
|
|
- `--scratch` => Create a new scratch (ephemeral) buffer when starting Flow.
|
|
- `--exec` => You can now pass string arguments to commands by separating them from the command
|
|
name with a colon.
|
|
|
|
- **UI improvements** - Many minor usability and visual UI improvments
|
|
- The results pane now closes if `Find in files` mode is cancelled
|
|
- The clock widget now supports multiple digit styles
|
|
- Status bar widgets can support parameters for width or style depending on the widget
|
|
- Scrollbars and file icons can be enabled/disabled via configuration options
|
|
- Inline diagnostics (and gutter symbols) can now be toggled with the
|
|
`Toggle display of diagnostics inline` command
|
|
- Line numbers can now be displayed in various styles (toggled via middle click and/or config)
|
|
|
|
|
|
Fixes:
|
|
- Add legacy input encoding compatible undo keybinding in emacs mode
|
|
- Allow .cmd along with .exe for Windows executables
|
|
- Fixed broken shifted keybinds for Helix mode
|
|
- Fix palette crashing when its items's length is exceeded
|
|
- Fix restoring of last_find_query from editor state
|
|
- Fix make keybind module respect command.suppressed_errors list
|
|
- Allow font names longer than 31 characters in win32
|
|
- Fix panic on extra long plane names
|
|
- Don't stop unindenting on blank or full unindented lines
|
|
- Make sure to show_home if no files are opened via command line
|
|
- Add workaround for LSPs sending junk null messages (omnisharp)
|
|
- Don't truncate scratch buffer names in tabs and terminal title
|
|
- Prevent unexpected message errors on missing LSP binary
|
|
- Replace std.unicode.utf8Decode with safe function that cannot panic on invalid UTF-8 input
|
|
- nudge_delete should handle cursor moving to same line as delete
|
|
- Remove multithreaded buffer access in background async differ
|
|
- Remove multithreaded buffer access in project_manager
|
|
- Word/line wise dragging should keep the original word/line selected
|
|
- Remove prefix from paths in ripgrep results
|
|
- Use iso date format for default date instert keybind
|
|
- Workaround broken dir.statFile on WSL1
|
|
- Left an right movements jump to selection boundary
|
|
- Prefer targetSelectionRange over targeRange if both are provided by LSP
|
|
- Fix flicker: home screen should not load if we have a file to open
|
|
- Update thespian to fix subprocess file descriptor race
|
|
- Force ripgrep to never try search stdin
|
|
- Bracketed paste should check for ctrl+j and insert \n
|
|
- Render control codes in mini buffer input with unicode control code symbols
|
|
- Proactive close subprocesses on early exit in shell module
|
|
- Fix paste in goto mode
|
|
- Don't match against legacy unshifted keys when we have extended input text
|
|
- Remove blocking project manager call on startup
|
|
- Never double free LSP init queue
|
|
- Remove arbitrary limit to command buffer size
|
|
- Remove ctrl+p command palette binding
|
|
- Stop after removing widget in Widget.remove (fixes ReleaseFast crash)
|
|
- Fix potention dangling pointer in mainview on view list realloc
|
|
- MRU position should not override line numbers on command line
|
|
- Don't restore editor view rows and cols
|
|
- Prevent task palette from being too short to show palette label
|
|
- Refresh hover on tab changes
|
|
- Add workaround for conpty ul color escape sequence parser bug
|
|
- get_mru_position should not hang if file not found in project
|
|
- Fix row & column in get_mru_position
|
|
- Remove initial empty frame render on startup
|
|
- Make move_cursor_up/_down fallback to move_begin/_end
|
|
- Don't get stuck in an overlay mode if it is triggered from the command line
|
|
- Update cursor target column after nudge_insert/_delete
|
|
|