GitHub

Vifm v0.14.4

@xaizek xaizek released this

31 May 12:27

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.

More details

Vifm v0.14.3

@xaizek xaizek released this

04 Jun 17:43

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 primary instead of default in the title of :colorscheme menu.

Other changes

  • Provided more details on file handlers and viewers in sample vifmrc files.

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 in vifmrc. Thanks to zoj613.
  • Fixed abort due to assertion on displaying a statusbar message with a newline when 'shortmess' includes T. Thanks to agguser.

More details

Vifm v0.14.2

@xaizek xaizek released this

07 May 16:03

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 %u weren't created with 700 permissions.

  • Don't use strverscmp() of musl if it doesn't sort things correctly (A must be greater than 0). 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.

More details

Vifm v0.14.1

@xaizek xaizek released this

02 May 15:53

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 %r not working on BSD-like systems.

    Fixed vifm path/to/file incorrectly running file handling in current working directory.

    Restored terminal access for commands that use %i macro (so :!echo ... %i can 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.

More details

Vifm v0.14

@xaizek xaizek released this

08 Feb 16:53

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 vifmrc files. 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 a and ä 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 :let to invoke a builtin function discarding its result is superseded by a proper :call command
    • use of execute 'normal! gl' to run selection now has :open command as a better alternative
    • size of selection can now be queried via selected() (previous releases required expand('%c') == expand('%f') or an equivalent trick)
    • %{expression} macro in 'statusline' can now have } embedded as \} (\\ still means two slashes)
    • dialogs now recognize Enter and Escape keys as "yes" and "no" replies
  • More useful menus

    :copen recalled 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, :grep or :find can 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 :wingo command 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 in set 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 Tab and Shift-Tab while in the prompt (applies to navigation mode as well).

    An invalid expression in :if or :elseif no longer just skips that command, now all commands up to and including matching :endif are skipped to avoid executing half-random sequences of commands due to a mistake, which also results in better error messages. Previously, :elseif was also evaluating its expression even some earlier branch was already taken.

    :rename now asks whether file move is intended instead of assuming a user mistake and refusing to proceed.

    Support MTP devices by bundled vifm-media script 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:version to 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. %a macro of 'statusline' was displaying wrong values on non-Linux Unix-like systems. :compare falsely 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.

More details

Vifm v0.14 beta

Pre-release

@xaizek xaizek released this

19 Jan 15:33

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 vifmrc files. 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 a and ä 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 :let to invoke a builtin function discarding its result is superseded by a proper :call command
    • use of execute 'normal! gl' to run selection now has :open command as a better alternative
    • size of selection can now be queried via selected() (previous releases required expand('%c') == expand('%f') or an equivalent trick)
    • %{expression} macro in 'statusline' can now have } embedded as \} (\\ still means two slashes)
    • dialogs now recognize Enter and Escape keys as "yes" and "no" replies
  • More useful menus

    :copen recalled 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, :grep or :find can 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 :wingo command 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 in set 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 Tab and Shift-Tab while in the prompt (applies to navigation mode as well).

    An invalid expression in :if or :elseif no longer just skips that command, now all commands up to and including matching :endif are skipped to avoid executing half-random sequences of commands due to a mistake, which also results in better error messages. Previously, :elseif was also evaluating its expression even some earlier branch was already taken.

    :rename now asks whether file move is intended instead of assuming a user mistake and refusing to proceed.

    Support MTP devices by bundled vifm-media script 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:version to 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. %a macro of 'statusline' was displaying wrong values on non-Linux Unix-like systems. :compare falsely 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.

More details

Vifm v0.13

@xaizek xaizek released this

04 Apr 16:30

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 :compare

    You 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.

    %N macro 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.

More details

Vifm v0.13 beta

Pre-release

@xaizek xaizek released this

17 Mar 17:25

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 :compare

    You 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.

    %N macro 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.

More details

Vifm v0.12.1

@xaizek xaizek released this

21 Sep 18:10

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 :keepsel command-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 :view command 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 :*map commands, 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 :cd on command line, macros that expand to non-empty selection, supporting more <keys>, completion for fish shell.

  • 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 %N macro 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.

More details

Vifm v0.12.1 beta

Pre-release

@xaizek xaizek released this

04 Sep 21:24

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 :keepsel command-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 :view command 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 :*map commands, 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 :cd on 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 %N macro 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.

More details

Read the original on github.com ↗