Vifm v0.14.4
xaizek
released this
Thanks for the bug reports. This is another (likely the last one) bugfix release for the v0.14.x series. The changes included in this release expand or correct documentation, update text of messages, adjust sample vifmrc files or fix bugs.
Vifm v0.14.3
xaizek
released this
Thanks for the bug reports. The 'trashdir' saga continues, sorry for the inconveniences.
Documentation
- Improved documentation on the use of registers. Thanks to aleksejrs.
Menus and dialogs
- Say
primaryinstead ofdefaultin the title of:colorschememenu.
Other changes
- Provided more details on file handlers and viewers in sample
vifmrcfiles.
Fixes
- Fixed picking trash directory when rooted trash is included in
'trashdir'and root is writable. Regression in v0.14.2 (unfortunately, testing this automatically is problematic). - Fixed unlimited growth of directory histories when
'history'is set to its default value or not set at all invifmrc. Thanks to zoj613. - Fixed abort due to assertion on displaying a statusbar message with a newline when
'shortmess'includesT. Thanks to agguser.
Vifm v0.14.2
xaizek
released this
Thanks for the bug reports. This is a follow-up on v0.14.1 which revealed an issue with %r in 'trashdir' when root file-system is read-only (like on macOS) and also broke build with musl libc.
Two other fixes
-
Trash directories specified via an absolute path and containing
%uweren't created with700permissions. -
Don't use
strverscmp()of musl if it doesn't sort things correctly (Amust be greater than0). This avoids numerical sorting results looking different with musl.
See the ChangeLog file for the full list of changes and by whom they were suggested or implemented.
Vifm v0.14.1
xaizek
released this
This is a bugfix release of v0.14, thanks for the bug reports.
Highlights
-
Fixes
Fixed a preview-related crash on Windows easily reproducible using binary files.
Fixed a tree-related crash when using
{fileext}or{ext}columns.Fixed
'trashdir'with%rnot working on BSD-like systems.Fixed
vifm path/to/fileincorrectly running file handling in current working directory.Restored terminal access for commands that use
%imacro (so:!echo ... %ican affect the terminal as before v0.12.1). Use%i &for ignoring output while denying terminal accesses.Fixed occasional incorrect truncation of wide characters on drawing columns broken while introducing column-specific highlighting in v0.14-beta.
-
Documentation updates
Clarified information on comments after :commands. Provided some information on copy-on-write file copying. Improved documentation on leaving compare and custom views.
See the change log for the full list of changes and by whom they were suggested or implemented.
Vifm v0.14
xaizek
released this
Thanks to everyone who tried out the beta.
Highlights
-
Somewhat incompatible changes
This release contains a number of changes which are technically non-backwards compatible. However, all of them should have very little negative impact (i.e., hard to notice the change without reading the changelog).
At the same time, a bug, fixing which is likely to have an impact on user configuration, has been identified but not yet fixed to give a chance to update all affected
vifmrcfiles. If a bug is likely to be relied on by the configuration, a dialog with the explanation and instructions will appear. -
Sorting and non-Latin characters
Until this release Vifm has always used byte sorting (effectively, sorting of UTF-8 byte sequences). From now on a form of Unicode normalization is applied to strings when sorting views and completion results. The change can be expanded to other cases in future releases. The measured performance impact is negligible (several percent).
Practically, this means that characters like
aandäare now grouped together regardless of the way in which diacritic is being encoded. Some characters can still appear in weird non-alphabetic positions because full Unicode normalization results in losing case sensitivity and is therefore not applied. -
Addressing some longtime woes
For one reason or another some inconvenient peculiarities have accumulated over the years. Time has come to replace workarounds with something better:
- global variables (
g:var) replace the use of environmental variables for internal purposes, thus avoiding polluting environment of child processes - use of
:letto invoke a builtin function discarding its result is superseded by a proper:callcommand - use of
execute 'normal! gl'to run selection now has:opencommand as a better alternative - size of selection can now be queried via
selected()(previous releases requiredexpand('%c') == expand('%f')or an equivalent trick) %{expression}macro in'statusline'can now have}embedded as\}(\\still means two slashes)- dialogs now recognize
EnterandEscapekeys as "yes" and "no" replies
- global variables (
-
More useful menus
:copenrecalled last navigation menu for years, but that's not always enough. Now up to 25 such menus are stored after their use and can be navigated to via:chistory/:colder/:cnewer.In addition,
:grepor:findcan be rerun on the same set of commands right from the menu which previously required leaving the menu just to get back to it.History of command-line in menus is now also managed and stored, making staying in menu mode for longer a more pleasant experience.
-
UI improvements
Navigation between views/tabs via new
:wingocommand with optional incremental completion thanks to new'wildinc'option (applicable to any other command or all of them at once).Ability to highlight a view column (
:highlight column:size ...), specify how highlighting applies ('hloptions'), set a separator between miller columns inset fillchars+=millersep:'|', shorten columns in the middle (^in'viewcolumn').Also, displaying of CJK characters on Windows should have much fewer issues now.
-
Lua API
Slowly adding new functionality. This batch comes with things like primitive file operations, ability to create custom views or menus and handling ranges of :commands.
-
Other
Search matches can be traversed via
TabandShift-Tabwhile in the prompt (applies to navigation mode as well).An invalid expression in
:ifor:elseifno longer just skips that command, now all commands up to and including matching:endifare skipped to avoid executing half-random sequences of commands due to a mistake, which also results in better error messages. Previously,:elseifwas also evaluating its expression even some earlier branch was already taken.:renamenow asks whether file move is intended instead of assuming a user mistake and refusing to proceed.Support MTP devices by bundled
vifm-mediascript if simple-mtpfs is installed. Also improve what devices are offered for mounting (e.g., don't offer a whole drive if it contains partitions).v:versionto branch depending on release. -
Fixes
Get preview graphics out of the way in more cases (like when opening menus). Terminals with more than 32768 color pairs should not cause visual defects or crashes anymore.
Merging of directories was either not asking for confirmation or aborting after skipping a file. Paths with some unreadable characters were not processed due to a regression. Directories weren't counted in estimates of file operations.
&&operator was always evaluating both branches instead of properly short-circuiting.%amacro of'statusline'was displaying wrong values on non-Linux Unix-like systems.:comparefalsely claimed that files of identical size and with common prefix are identical.
See change log for the full list of changes and by whom they were suggested or implemented.
Vifm v0.14 beta
Pre-release
xaizek
released this
The beta stage will last about two weeks. In case any serious bugs are found during this period, another release candidate can be released.
Highlights
-
Somewhat incompatible changes
This release contains a number of changes which are technically non-backwards compatible. However, all of them should have very little negative impact (i.e., hard to notice the change without reading the changelog).
At the same time, a bug, fixing which is likely to have an impact on user configuration, has been identified but not yet fixed to give a chance to update all affected
vifmrcfiles. If a bug is likely to be relied on by the configuration, a dialog with the explanation and instructions will appear. -
Sorting and non-Latin characters
Until this release Vifm has always used byte sorting (effectively, sorting of UTF-8 byte sequences). From now on a form of Unicode normalization is applied to strings when sorting views and completion results. The change can be expanded to other cases in future releases. The measured performance impact is negligible (several percent).
Practically, this means that characters like
aandäare now grouped together regardless of the way in which diacritic is being encoded. Some characters can still appear in weird non-alphabetic positions because full Unicode normalization results in losing case sensitivity and is therefore not applied. -
Addressing some longtime woes
For one reason or another some inconvenient peculiarities have accumulated over the years. Time has come to replace workarounds with something better:
- global variables (
g:var) replace the use of environmental variables for internal purposes, thus avoiding polluting environment of child processes - use of
:letto invoke a builtin function discarding its result is superseded by a proper:callcommand - use of
execute 'normal! gl'to run selection now has:opencommand as a better alternative - size of selection can now be queried via
selected()(previous releases requiredexpand('%c') == expand('%f')or an equivalent trick) %{expression}macro in'statusline'can now have}embedded as\}(\\still means two slashes)- dialogs now recognize
EnterandEscapekeys as "yes" and "no" replies
- global variables (
-
More useful menus
:copenrecalled last navigation menu for years, but that's not always enough. Now up to 25 such menus are stored after their use and can be navigated to via:chistory/:colder/:cnewer.In addition,
:grepor:findcan be rerun on the same set of commands right from the menu which previously required leaving the menu just to get back to it.History of command-line in menus is now also managed and stored, making staying in menu mode for longer a more pleasant experience.
-
UI improvements
Navigation between views/tabs via new
:wingocommand with optional incremental completion thanks to new'wildinc'option (applicable to any other command or all of them at once).Ability to highlight a view column (
:highlight column:size ...), specify how highlighting applies ('hloptions'), set a separator between miller columns inset fillchars+=millersep:'|', shorten columns in the middle (^in'viewcolumn').Also, displaying of CJK characters on Windows should have much fewer issues now.
-
Lua API
Slowly adding new functionality. This batch comes with things like primitive file operations, ability to create custom views or menus and handling ranges of :commands.
-
Other
Search matches can be traversed via
TabandShift-Tabwhile in the prompt (applies to navigation mode as well).An invalid expression in
:ifor:elseifno longer just skips that command, now all commands up to and including matching:endifare skipped to avoid executing half-random sequences of commands due to a mistake, which also results in better error messages. Previously,:elseifwas also evaluating its expression even some earlier branch was already taken.:renamenow asks whether file move is intended instead of assuming a user mistake and refusing to proceed.Support MTP devices by bundled
vifm-mediascript if simple-mtpfs is installed. Also improve what devices are offered for mounting (e.g., don't offer a whole drive if it contains partitions).v:versionto branch depending on release. -
Fixes
Get preview graphics out of the way in more cases (like when opening menus). Terminals with more than 32768 color pairs should not cause visual defects or crashes anymore.
Merging of directories was either not asking for confirmation or aborting after skipping a file. Paths with some unreadable characters were not processed due to a regression. Directories weren't counted in estimates of file operations.
&&operator was always evaluating both branches instead of properly short-circuiting.%amacro of'statusline'was displaying wrong values on non-Linux Unix-like systems.:comparefalsely claimed that files of identical size and with common prefix are identical.
See change log for the full list of changes and by whom they were suggested or implemented.
Vifm v0.13
xaizek
released this
Thanks to everyone who tried out the beta.
Highlights:
-
Faster file-system navigation with a new searching/filtering submode
Hitting <c-y> after / or = allows finding and opening consecutive path components without leaving command-line mode. In this mode keys like <c-o>/<c-n>/<c-p>/<left>/<home>/etc. help to refine cursor position or go to parent directory if necessary.
-
More interactive
:compareYou can now see stats about file comparison on the status bar and have an option to easily re-run the comparison while toggling visibility of some of the groups.
Also, default file alignment is more natural now. do and dp handle selection. You can force ignoring or respecting case in paths. Performance and memory consumption have been improved in various cases.
-
Mouse support and TUI improvements
Once mouse support is enabled, you should be able to perform simple browsing with just your mouse for those cases when it's more convenient.
Conflict dialog now always presents basic file metadata for comparison. Detailed progress dialog has ETA. Ls-like view can now have a fixed number of columns.
-
Other
Formatting of tabs and entry selection in Lua. Changing register's content via an editor. Explicitly prompting user for input via
input()function. -
Fixes
v0.12.1 was supposed to improve escaping on Windows, but it simultaneously made one old bug more prominent, effectively making things much worse in some cases. This release remedies that.
%Nmacro has been adjusted to fix integration with image preview of Kitty v0.27+.Lots of fixes related to search and various combinations of
'hlsearch','incsearch'in different modes.
See change log for the full list of changes and by whom they were suggested or implemented.
Vifm v0.13 beta
Pre-release
xaizek
released this
The beta stage will last about two weeks. In case any serious bugs are found during this period, another beta version might be released.
Highlights:
-
Faster file-system navigation with a new searching/filtering submode
Hitting <c-y> after / or = allows finding and opening consecutive path components without leaving command-line mode. In this mode keys like <c-o>/<c-n>/<c-p>/<left>/<home>/etc. help to refine cursor position or go to parent directory if necessary.
-
More interactive
:compareYou can now see stats about file comparison on the status bar and have an option to easily re-run the comparison while toggling visibility of some of the groups.
Also, default file alignment is more natural now. do and dp handle selection. You can force ignoring or respecting case in paths. Performance and memory consumption have been improved in various cases.
-
Mouse support and TUI improvements
Once mouse support is enabled, you should be able to perform simple browsing with just your mouse for those cases when it's more convenient.
Conflict dialog now always presents basic file metadata for comparison. Detailed progress dialog has ETA. Ls-like view can now have a fixed number of columns.
-
Other
Formatting of tabs in Lua. Changing register's content via an editor. Explicitly prompting user for input via
input()function. -
Fixes
v0.12.1 was supposed to improve escaping on Windows, but it simultaneously made one old bug more prominent, effectively making things much worse in some cases. This release remedies that.
%Nmacro has been adjusted to fix integration with image preview of Kitty v0.27+.Lots of fixes related to search and various combinations of
'hlsearch','incsearch'in different modes.
See change log for the full list of changes and by whom they were suggested or implemented.
Vifm v0.12.1
xaizek
released this
Thanks to everyone who tried out the beta.
Changes overview
-
Expression register for command-line prompts (Ctrl-R =)
If you ever wanted to insert result of evaluating an expression into command-line, now you can. One of the most useful applications of this is pasting clipboard's contents without the risk of it being processed as user input (e.g.,
:<c-r>=system('xsel')). -
Selection handling improvements
New
:keepselcommand-prefix is meant to suppress clearing of selection done automatically after most of command-line commands thus avoiding the need for using gs command to restore it. As a common case, the behaviour for:viewcommand has been changed to not drop selection.Restoring selection in a newly entered directory can now be done not just from a register populated ahead via yanking selection ("rgs), but just by executing gs to restore selection the directory had before it was left last time. Vifm remembers last 10 locations with non-empty selection.
-
An arbitrary editor can now be fully integrated via Lua
'vicmd'and'vixcmd'were always there, but commands specified in these options could receive Vim-specific arguments they don't expect. Writing a shell wrapper was an option, but it had to do guesswork while post-processing arguments meant for Vim, which is error prone. A Lua handler can now be used instead. It receives full context about editor invocation and can perfectly forward the request to an arbitrary editor. -
TUI improvements
Escaping of unprintable characters, less of annoying flickering, slightly better File Info dialog.
Conflict resolution dialog now provides a sub-dialog for comparing conflicting files and is also smarter at picking which actions to offer.
-
Lua API additions (still experimental)
The API now gives some access to layout, tabs and keys.
Unlike
:*mapcommands, keys API allows defining custom selectors (like 2j in d2j), keys that accept an argument (like a in ma) and keys that accept selectors (custom or builtin).If you want to give plugins a try, read overview.
-
Other
Bulk retargetting of links, optional implicit
:cdon command line, macros that expand to non-empty selection, supporting more <keys>, completion forfishshell. -
Fixes
Escaping of arguments and slashes in paths will now hopefully work better on Windows, which is generally an issue there. Yori shell is now also handled on Windows.
New
%Nmacro can be used to fix image preview in Kitty terminal.
See change log for the full list of changes and by whom they were suggested or implemented.
Vifm v0.12.1 beta
Pre-release
xaizek
released this
The beta stage will last about two weeks. In case any serious bugs are found during this period, another beta version might be released.
Changes overview:
-
Expression register for command-line prompts (Ctrl-R =)
If you ever wanted to insert result of evaluating an expression into command-line, now you can. One of the most useful applications of this is pasting clipboard's contents without the risk of it being processed as user input (e.g.,
:<c-r>=system('xsel')). -
Selection handling improvements
New
:keepselcommand-prefix is meant to suppress clearing of selection done automatically after most of command-line commands thus avoiding the need for using gs command to restore it. As a common case, the behaviour for:viewcommand has been changed to not drop selection.Restoring selection in a newly entered directory can now be done not just from a register populated ahead via yanking selection ("rgs), but just by executing gs to restore selection the directory had before it was left last time. Vifm remembers last 10 locations with non-empty selection.
-
An arbitrary editor can now be fully integrated via Lua
'vicmd'and'vixcmd'were always there, but commands specified in these options could receive Vim-specific arguments they don't expect. Writing a shell wrapper was an option, but it had to do guesswork while post-processing arguments meant for Vim, which is error prone. A Lua handler can now be used instead. It receives full context about editor invocation and can perfectly forward the request to an arbitrary editor. -
TUI improvements
Escaping of unprintable characters, less of annoying flickering, slightly better File Info dialog.
Conflict resolution dialog now provides a sub-dialog for comparing conflicting files and is also smarter at picking which actions to offer.
-
Lua API additions (still experimental)
The API now gives some access to layout, tabs and keys.
Unlike
:*mapcommands, keys API allows defining custom selectors (like 2j in d2j), keys that accept an argument (like a in ma) and keys that accept selectors (custom or builtin). -
Other
Bulk retargetting of links, optional implicit
:cdon command line, macros that expand to non-empty selection, supporting more <keys>. -
Fixes
Escaping of arguments and slashes in paths will now hopefully work better on Windows, which is generally an issue there. Yori shell is now also handled on Windows.
New
%Nmacro can be used to fix image preview in Kitty terminal.
See change log for the full list of changes and by whom they were suggested or implemented.