04 April 2023 ============= Vifm v0.13 ---------- 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. Normal and visual modes: - made Ctrl-E/Ctrl-Y scroll transposed ls-like view horizontally by one column; - extended do and dp keys to process selection (thanks to Mark S., a.k.a. Markuzcha). :set command and options: - added 'mouse' option to control when mouse input is handled (not handled by default); - added 'navoptions' option to allow tweaking navigation mode a bit (thanks to filterfalse); - added 'tabline' option to specify format of the tab line; - added "columncount:" value to 'lsoptions' to always display fixed number of columns (thanks to Aleksandr Vysotskiy, a.k.a. loki1368); - added "rpreview:files" to 'milleroptions' (thanks to aksr). Command-line mode: - changed error reporting for some of the :commands such that now their failures cause a dialog to appear on sourcing, previously those errors were printed only to status bar; - changed implementation of `:compare grouppaths` to juxtapose only files with identical relative paths (patch by Alexandr Keyp, a.k.a. IAmKapuze); - added "withicase" and "withrcase" to :compare that force ignoring and respecting case respectively on comparing file names and paths (thanks to Jose Riha, a.k.a. jose1711); - added show* arguments to :compare command to control/switch which sets of files are displayed (toggling is done by :compare!) (patch by Alexandr Keyp, a.k.a. IAmKapuze); - added :amap, :anoremap and :aunmap commands to configure mappings in navigation mode (thanks to Henrik Holst, a.k.a. hholst80, and dmocek); - added :regedit command for external editing of register contents (thanks to Daniel J. Perry, a.k.a. BioBox; patch by Rostislav Tolushkin, a.k.a. nullptr-deref); - added Ctrl-Y key to command-line mode. It activates fast navigation that allows entering deep paths by a series of searches for individual path components (thanks to Henrik Holst, a.k.a. hholst80, and dmocek); - added Ctrl-J key to command-line navigation. It leaves the mode without opening a file/directory (thanks to filterfalse); - added Ctrl-O key to command-line navigation that goes to parent directory; - added Ctrl-N/P keys to command-line navigation to move view cursor up/down (thanks to Henrik Holst, a.k.a. hholst80, and dmocek); - added Arrows/Home/End/Page Up/Page Down keys to command-line navigation to move view cursor (thanks to Henrik Holst, a.k.a. hholst80, and dmocek). Core: - added printing stats while in :compare mode (patch by Alexandr Keyp, a.k.a. IAmKapuze); - don't move cursor on search failure during search with a count (patch by filterfalse); - specified a few more cases when to show a search message with search highlighting turned on: if found a match, if wrapping is turned on, and in visual mode (patch by filterfalse); - a regular search logic showing messages is applied to n/N (patch by filterfalse). File operations: - made aborting deletion abort the operation on the rest of files when deleting multiple files. Macros: - changed %N macro to also not start a process group for a command (thanks to Oskar Grunning, a.k.a. sQVe). Scripting: - added input() builtin function to prompt user for input (thanks to Artur F., a.k.a. arturfabriciohahaedgy); - added filereadable() builtin function mainly as a way to check file's presence. Menus and dialogs: - added r key to :jobs menu, which reloads the list of jobs (thanks to Sylwia Ptasinska, a.k.a. SylEleuth); - made feedback after pressing dd in :jobs more prominent (thanks to Sylwia Ptasinska, a.k.a. SylEleuth). TUI (Text User Interface): - added builtin handling of mouse events (thanks to ranousse, Sergei Shilovsky and user451421541757324; patch by 高浩亮, a.k.a. haolian9); - added ETA to detailed progress dialog (thanks to Jose Riha, a.k.a. jose1711); - apply file highlighting to "ext" and "fileext" view columns (thanks to aleksejrs); - merged file conflict comparison dialog into the main conflict dialog (thanks to aleksejrs); - made file conflict more concise (thanks to aleksejrs). Color schemes: - added additional User10..User20 highlight groups and corresponding %10*-%20* macros (thanks to Sylwia Ptasinska, a.k.a. SylEleuth); - update Default-256 to differentiate between more file types (thanks to aleksejrs). Invocation: - added `--plugins-dir` command-line option which allows specifying additional places to look for plugins (thanks to 高浩亮, a.k.a. haolian9). Performance: - reduced amount of memory consumed by `:compare groupids`; - made `:compare bycontents` not bother reading content of files which have unique size. Documentation: - provide basic instructions in the documentation on how mappings work (thanks to dmocek); - fixed description of %i macro in the documentation to mention that it runs command in background. Packaging: - changed use of `$(filter-out)` in src/Makefile.am to `$(var:from=to)` substitution to get rid of a warning on configuration; - changed how pthread support is detected by configure script to handle more cases (thanks to Markus Elfring, a.k.a. elfring); - changed configure script to fail if neither perl nor vim is available instead of failing to generate tags for Vim-style documentation (thanks to Sergei Trofimovich, a.k.a. trofi); - install icons also to ${prefix}/share/icons. It's not clear that using ${prefix}/share/pixmaps will always be handled properly (thanks to Szilárd Andai). Integration: - made instances running inside AppImage consider contents of `/etc/vifm` (thanks to aleksejrs); - fixed $VIFM_APPDIR_ROOT being ignored by :help command, which made it not work properly from AppImage (thanks to infinitewhileloop). Only on Windows: - fixed escaping of file paths when using 'vicmd' or 'vixcmd' to open a file on Windows (thanks to Phil Runninger). Noteworthy fixes: - fixed abort due to assertion failure on using zx normal mode key after leaving tree in some cases (thanks to Mark S., a.k.a. Markuzcha); - fixed asynchronous previewing of symbolic links, which required manual redraw (thanks to Alexandre Viau); - fixed FUSE mounting assuming `2>` redirection is supported by the shell, which isn't true at least for csh and tcsh (thanks to Evgeniy, a.k.a. iron-udjin); - fixed dialogs not handling non-latin characters well; - fixed :locate never escaping its arguments (should be done unless the first one starts with a dash). This is a regression in 0.7.6; - fixed n/N not moving the cursor without prior search (patch by filterfalse); - fixed resetting 'hlsearch' during incremental search in visual mode (patch by filterfalse); - fixed dropping selected files on empty input during incremental search in visual mode when 'hlsearch' is set (patch by filterfalse); - fixed segfault on trying to use a pipe from Lua after its parent VifmJob object was garbage-collected (thanks to PRESFIL); - fixed 'previewprg' not being respected on switching to view mode (regression in 0.12-beta) (thanks to Sitaram Chamarty). See change log for the full list of changes and by whom they were suggested or implemented. 17 March 2023 ============= Vifm v0.13 beta --------------- 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. Normal and visual modes: - made Ctrl-E/Ctrl-Y scroll transposed ls-like view horizontally by one column; - extended do and dp keys to process selection (thanks to Mark S., a.k.a. Markuzcha). :set command and options: - added 'mouse' option to control when mouse input is handled (not handled by default); - added 'navoptions' option to allow tweaking navigation mode a bit (thanks to filterfalse); - added 'tabline' option to specify format of the tab line; - added "columncount:" value to 'lsoptions' to always display fixed number of columns (thanks to Aleksandr Vysotskiy, a.k.a. loki1368); - added "rpreview:files" to 'milleroptions' (thanks to aksr). Command-line mode: - changed error reporting for some of the :commands such that now their failures cause a dialog to appear on sourcing, previously those errors were printed only to status bar; - changed implementation of `:compare grouppaths` to juxtapose only files with identical relative paths (patch by Alexandr Keyp, a.k.a. IAmKapuze); - added "withicase" and "withrcase" to :compare that force ignoring and respecting case respectively on comparing file names and paths (thanks to Jose Riha, a.k.a. jose1711); - added show* arguments to :compare command to control/switch which sets of files are displayed (toggling is done by :compare!) (patch by Alexandr Keyp, a.k.a. IAmKapuze); - added :amap, :anoremap and :aunmap commands to configure mappings in navigation mode (thanks to Henrik Holst, a.k.a. hholst80, and dmocek); - added :regedit command for external editing of register contents (thanks to Daniel J. Perry, a.k.a. BioBox; patch by Rostislav Tolushkin, a.k.a. nullptr-deref); - added Ctrl-Y key to command-line mode. It activates fast navigation that allows entering deep paths by a series of searches for individual path components (thanks to Henrik Holst, a.k.a. hholst80, and dmocek); - added Ctrl-J key to command-line navigation. It leaves the mode without opening a file/directory (thanks to filterfalse); - added Ctrl-O key to command-line navigation that goes to parent directory; - added Ctrl-N/P keys to command-line navigation to move view cursor up/down (thanks to Henrik Holst, a.k.a. hholst80, and dmocek); - added Arrows/Home/End/Page Up/Page Down keys to command-line navigation to move view cursor (thanks to Henrik Holst, a.k.a. hholst80, and dmocek). Core: - added printing stats while in :compare mode (patch by Alexandr Keyp, a.k.a. IAmKapuze); - don't move cursor on search failure during search with a count (patch by filterfalse); - specified a few more cases when to show a search message with search highlighting turned on: if found a match, if wrapping is turned on, and in visual mode (patch by filterfalse); - a regular search logic showing messages is applied to n/N (patch by filterfalse). File operations: - made aborting deletion abort the operation on the rest of files when deleting multiple files. Macros: - changed %N macro to also not start a process group for a command (thanks to Oskar Grunning, a.k.a. sQVe). Scripting: - added input() builtin function to prompt user for input (thanks to Artur F., a.k.a. arturfabriciohahaedgy); - added filereadable() builtin function mainly as a way to check file's presence. Menus and dialogs: - added r key to :jobs menu, which reloads the list of jobs (thanks to Sylwia Ptasinska, a.k.a. SylEleuth); - made feedback after pressing dd in :jobs more prominent (thanks to Sylwia Ptasinska, a.k.a. SylEleuth). TUI (Text User Interface): - added builtin handling of mouse events (thanks to ranousse, Sergei Shilovsky and user451421541757324; patch by 高浩亮, a.k.a. haolian9); - added ETA to detailed progress dialog (thanks to Jose Riha, a.k.a. jose1711); - apply file highlighting to "ext" and "fileext" view columns (thanks to aleksejrs); - merged file conflict comparison dialog into the main conflict dialog (thanks to aleksejrs); - made file conflict more concise (thanks to aleksejrs). Color schemes: - added additional User10..User20 highlight groups and corresponding %10*-%20* macros (thanks to Sylwia Ptasinska, a.k.a. SylEleuth); - update Default-256 to differentiate between more file types (thanks to aleksejrs). Invocation: - added `--plugins-dir` command-line option which allows specifying additional places to look for plugins (thanks to 高浩亮, a.k.a. haolian9). Performance: - reduced amount of memory consumed by `:compare groupids`; - made `:compare bycontents` not bother reading content of files which have unique size. Documentation: - provide basic instructions in the documentation on how mappings work (thanks to dmocek); - fixed description of %i macro in the documentation to mention that it runs command in background. Packaging: - changed use of `$(filter-out)` in src/Makefile.am to `$(var:from=to)` substitution to get rid of a warning on configuration; - changed how pthread support is detected by configure script to handle more cases (thanks to Markus Elfring, a.k.a. elfring); - changed configure script to fail if neither perl nor vim is available instead of failing to generate tags for Vim-style documentation (thanks to Sergei Trofimovich, a.k.a. trofi); - install icons also to ${prefix}/share/icons. It's not clear that using ${prefix}/share/pixmaps will always be handled properly (thanks to Szilárd Andai). Integration: - made instances running inside AppImage consider contents of `/etc/vifm` (thanks to aleksejrs); - fixed $VIFM_APPDIR_ROOT being ignored by :help command, which made it not work properly from AppImage (thanks to infinitewhileloop). Only on Windows: - fixed escaping of file paths when using 'vicmd' or 'vixcmd' to open a file on Windows (thanks to Phil Runninger). Noteworthy fixes: - fixed abort due to assertion failure on using zx normal mode key after leaving tree in some cases (thanks to Mark S., a.k.a. Markuzcha); - fixed asynchronous previewing of symbolic links, which required manual redraw (thanks to Alexandre Viau); - fixed FUSE mounting assuming `2>` redirection is supported by the shell, which isn't true at least for csh and tcsh (thanks to Evgeniy, a.k.a. iron-udjin); - fixed dialogs not handling non-latin characters well; - fixed :locate never escaping its arguments (should be done unless the first one starts with a dash). This is a regression in 0.7.6; - fixed n/N not moving the cursor without prior search (patch by filterfalse); - fixed resetting 'hlsearch' during incremental search in visual mode (patch by filterfalse); - fixed dropping selected files on empty input during incremental search in visual mode when 'hlsearch' is set (patch by filterfalse); - fixed segfault on trying to use a pipe from Lua after its parent VifmJob object was garbage-collected (thanks to PRESFIL); - fixed 'previewprg' not being respected on switching to view mode (regression in 0.12-beta) (thanks to Sitaram Chamarty). See change log for the full list of changes and by whom they were suggested or implemented. 21 September 2022 ================= Vifm v0.12.1 ------------ 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). - 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. Core: - added expression pseudo-register (Ctrl-R =) for command-line mode (thanks to Marcos Cruz and Jiji from Vifm Q2A site); - added parsing of \c and \C sequences in regular expressions to force case ignoring or matching respectively (thanks to filterfalse and Safal Piya, a.k.a. mrsafalpiya). Configuration: - changed how location of trash directory is determined. Now starting `vifm --no-configs` won't mess anything up if you're using `~/.vifm`. Can potentially cause some trouble for existing configurations, but shouldn't. Command-line mode: - added :keepsel command. Changes default behaviour after running a :command to not reset selection of a view (thanks to dalvand and sharklasers996); - added -skip parameter to :copy/:move/:alink/:rlink. Makes the commands automatically skip files that exist at destination instead of refusing to proceed (thanks to Jose Riha, a.k.a. jose1711); - added handling of "-" in :session for switching to a previous session; - added ":history exprreg" menu for displaying history of expression register values; - do not reset selection on :view command (thanks to Alexandre Viau); - permit directories with trailing slashes supplied by external commands in `:[un]select !cmd` (patch by filterfalse). Normal and visual modes: - changed [c and ]c to also traverse added/missing entries (thanks to qsmodo); - added cl key visual mode (similar to its function in normal mode); - extended cl normal mode key to handle selection of multiple files (thanks to aleksejrs); - made gs normal mode key remember selection for up to 10 last entered directories (thanks to ratnamhof and Matthias Braun, a.k.a. mb720). :set command and options: - added 'autocd' option. Makes invalid :commands be interpreted as an implicit :cd command (thanks to Taras Halturin, a.k.a. halturin); - added %o macro to 'statusline', which expands to Unix permissions in octal form (and to nothing on Windows) (thanks to iSeeU816); - added "datasync" value to 'iooptions' option to configure whether writes on file copying when 'syscalls' is on are synchronized periodically (thanks to Andrew Savchenko and Afz); - added "ehistory" value to 'vifminfo' and 'sessionoptions' option. It manages storing of expression register history; - added optional border for horizontal split layout controlled by newly added "hborder" in 'fillchars' (patch by qsmodo); - added "maxtreedepth" value to 'previewoptions' option, which allows limiting depths of the displayed tree (thanks to Afz); - set 'title' option by default if $TERM is foot* as its terminfo entry might lack tsl and fsl attributes (thanks to nobodyatandnothing). Macros: - added %N macro that prevents detaching viewers from current session (thanks to emorozov); - added %pu macro that disables caching of viewer's output (thanks to b0x4it); - added %l/%"l and %L/%"L macros for the list of selected files. %f is not empty if there is no selection, which is not always desirable (thanks to ratnamhof). Angle bracket notation: - added angle-bracket notation for alpha keys with Alt and Shift modifiers (<[am]-s-[a-z]>, <s-[am]-[a-z]>) (thanks to Reece Petersen); - added angle-bracket notation for numeric keys with Alt modifier (<[am]-[0-9]>) (thanks to anonymous at Vifm Q2A site); - added angle-bracket notation for some shifted grey keys: <s-home>, <s-end>, <s-left>, <s-right>, <s-up>, <s-down>, <s-pageup>, <s-pagedown>, <s-delete>, <s-insert> (patch by M Kelly). Scripting: - extended has() builtin function to check for Lua handlers; - don't expand() macros in environment variables (patch by filterfalse). Lua: - upgraded Lua from 5.4.3 to 5.4.4; - added sample plugin for using mpc; - added sample plugin for customizing editor; - added vifm.escape() function; - added vifm.run() function (similar to `:!`); - added vifm.sessions.current() function; - added vifm.keys.add() for adding mappings (can accept selectors or an argument like in `'a`) and selectors; - enable os.tmpname(); - exposed minimal API for tabs (includes layout). TUI (Text User Interface): - escape unreadable characters in menus, command-line mode, dialogs and statusbar messages (thanks to MadMaverick9); - hide graphics when displaying dialogs or entering menus, more or file info modes (thanks to heelsleeh and PRESFIL); - fixed multiple cases of cursor/UI flickering. Color schemes: - added CmpUnmatched and CmpBlank highlight groups (thanks to qsmodo). Menus and dialogs: - changed conflict dialog to offer "Merge all" option even for files if there are some directories left to process (thanks to dalvand); - added comparison action to conflict resolution dialog (thanks to anonymous at Vifm Q2A site and dalvand); - display permissions in octal form in File Info dialog and group them with owner/group info (thanks to iSeeU816); - reformat File Info dialog to be more compact (thanks to chelovechishko). Performance: - extended optimizations for globs to cover `something*` and `some*thing` cases. Vim-plugin: - added :PeditVifm command (and corresponding :PeditVim) to the plugin (thanks to Mukund Mauji, a.k.a. maujim). Only on Windows: - added initial support for Yori shell on Windows (not everything might work well at this point) (thanks to LinArcX); - fixed argument escaping issues for foreground programs on Windows (thanks to fohrums); - fixed auto-detection of GUI programs on Windows, which prevents Vifm from waiting on them to finish (thanks to Azin Sharaf); - fixed `start` in :file[x]type commands on Windows not being considered as present; - fixed slashes being doubled in macros like %"c on Windows with cmd.exe as a shell (thanks to Toby Hawkins, a.k.a. HawkinsT). Documentation: - documented that <del> key might correspond to <bs> (thanks to dalvand). Noteworthy fixes: - fixed building when fdatasync() call isn't available (thanks to Schrijvers Luc, a.k.a. Begasus); - fixed severe performance degradation after measuring size of large directory trees; - fixed `:compare listunique` yielding different results depending on which view is active due to not processing bottom files in the current view in some situations; - fixed graphics not being cleared properly on switching between viewers in view mode; - fixed processing of extended keys on OpenBSD; - fixed :. file modifier incorrectly checking for one path being parent of another and producing weird results ("/pa" was considered parent of "/path", with "th" being the result) (thanks to Dennis Preiser, a.k.a. 0xDP); - fixed --remote and --remote-expr failing if $TERM isn't valid (regression in 0.11-beta) (thanks to b0x4it); - fixed directory preview resetting after detaching from it (thanks to Luka Markušić, a.k.a. mark2185). See change log for the full list of changes and by whom they were suggested or implemented. September 05, 2022 ================== Vifm v0.12.1 beta ----------------- 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. Core: - added expression pseudo-register (Ctrl-R =) for command-line mode (thanks to Marcos Cruz and Jiji from Vifm Q2A site); - added parsing of \c and \C sequences in regular expressions to force case ignoring or matching respectively (thanks to filterfalse and Safal Piya, a.k.a. mrsafalpiya). Configuration: - changed how location of trash directory is determined. Now starting `vifm --no-configs` won't mess anything up if you're using `~/.vifm`. Can potentially cause some trouble for existing configurations, but shouldn't. Command-line mode: - added :keepsel command. Changes default behaviour after running a :command to not reset selection of a view (thanks to dalvand and sharklasers996); - added -skip parameter to :copy/:move/:alink/:rlink. Makes the commands automatically skip files that exist at destination instead of refusing to proceed (thanks to Jose Riha, a.k.a. jose1711); - added handling of "-" in :session for switching to a previous session; - added ":history exprreg" menu for displaying history of expression register values; - do not reset selection on :view command (thanks to Alexandre Viau). Normal and visual modes: - changed [c and ]c to also traverse added/missing entries (thanks to qsmodo); - added cl key visual mode (similar to its function in normal mode); - extended cl normal mode key to handle selection of multiple files (thanks to aleksejrs); - made gs normal mode key remember selection for up to 10 last entered directories (thanks to ratnamhof and Matthias Braun, a.k.a. mb720). :set command and options: - added 'autocd' option. Makes invalid :commands be interpreted as an implicit :cd command (thanks to Taras Halturin, a.k.a. halturin); - added %o macro to 'statusline', which expands to Unix permissions in octal form (and to nothing on Windows) (thanks to iSeeU816); - added "datasync" value to 'iooptions' option to configure whether writes on file copying when 'syscalls' is on are synchronized periodically (thanks to Andrew Savchenko and Afz); - added "ehistory" value to 'vifminfo' and 'sessionoptions' option. It manages storing of expression register history; - added optional border for horizontal split layout controlled by newly added "hborder" in 'fillchars' (patch by qsmodo); - added "maxtreedepth" value to 'previewoptions' option, which allows limiting depths of the displayed tree (thanks to Afz); - set 'title' option by default if $TERM is foot* as its terminfo entry might lack tsl and fsl attributes (thanks to nobodyatandnothing). Macros: - added %N macro that prevents detaching viewers from current session (thanks to emorozov); - added %pu macro that disables caching of viewer's output (thanks to b0x4it); - added %l/%"l and %L/%"L macros for the list of selected files. %f is not empty if there is no selection, which is not always desirable (thanks to ratnamhof). Angle bracket notation: - added angle-bracket notation for alpha keys with Alt and Shift modifiers (<[am]-s-[a-z]>, <s-[am]-[a-z]>) (thanks to Reece Petersen); - added angle-bracket notation for numeric keys with Alt modifier (<[am]-[0-9]>) (thanks to anonymous at Vifm Q2A site); - added angle-bracket notation for some shifted grey keys: <s-home>, <s-end>, <s-left>, <s-right>, <s-up>, <s-down>, <s-pageup>, <s-pagedown>, <s-delete>, <s-insert> (patch by M Kelly). Scripting: - extended has() builtin function to check for Lua handlers; - don't expand() macros in environment variables (patch by filterfalse). Lua: - upgraded Lua from 5.4.3 to 5.4.4; - added sample plugin for using mpc; - added sample plugin for customizing editor; - added vifm.escape() function; - added vifm.run() function (similar to `:!`); - added vifm.sessions.current() function; - added vifm.keys.add() for adding mappings (can accept selectors or an argument like in `'a`) and selectors; - enable os.tmpname(); - exposed minimal API for tabs (includes layout). TUI (Text User Interface): - escape unreadable characters in menus, command-line mode, dialogs and statusbar messages (thanks to MadMaverick9); - hide graphics when displaying dialogs or entering menus, more or file info modes (thanks to heelsleeh and PRESFIL); - fixed multiple cases of cursor/UI flickering. Color schemes: - added CmpUnmatched and CmpBlank highlight groups (thanks to qsmodo). Menus and dialogs: - changed conflict dialog to offer "Merge all" option even for files if there are some directories left to process (thanks to dalvand); - added comparison action to conflict resolution dialog (thanks to anonymous at Vifm Q2A site and dalvand); - display permissions in octal form in File Info dialog and group them with owner/group info (thanks to iSeeU816); - reformat File Info dialog to be more compact (thanks to chelovechishko). Performance: - extended optimizations for globs to cover `something*` and `some*thing` cases. Vim-plugin: - added :PeditVifm command (and corresponding :PeditVim) to the plugin (thanks to Mukund Mauji, a.k.a. maujim). Only on Windows: - added initial support for Yori shell on Windows (not everything might work well at this point) (thanks to LinArcX); - fixed argument escaping issues for foreground programs on Windows (thanks to fohrums); - fixed auto-detection of GUI programs on Windows, which prevents Vifm from waiting on them to finish (thanks to Azin Sharaf); - fixed `start` in :file[x]type commands on Windows not being considered as present; - fixed slashes being doubled in macros like %"c on Windows with cmd.exe as a shell (thanks to Toby Hawkins, a.k.a. HawkinsT). Documentation: - documented that <del> key might correspond to <bs> (thanks to dalvand). Noteworthy fixes: - fixed building when fdatasync() call isn't available (thanks to Schrijvers Luc, a.k.a. Begasus); - fixed severe performance degradation after measuring size of large directory trees; - fixed `:compare listunique` yielding different results depending on which view is active due to not processing bottom files in the current view in some situations; - fixed graphics not being cleared properly on switching between viewers in view mode; - fixed processing of extended keys on OpenBSD; - fixed :. file modifier incorrectly checking for one path being parent of another and producing weird results ("/pa" was considered parent of "/path", with "th" being the result) (thanks to Dennis Preiser, a.k.a. 0xDP); - fixed --remote and --remote-expr failing if $TERM isn't valid (regression in 0.11-beta) (thanks to b0x4it); - fixed directory preview resetting after detaching from it (thanks to Luka Markušić, a.k.a. mark2185). See change log for the full list of changes and by whom they were suggested or implemented. September 29, 2021 ================== Vifm v0.12 ---------- New version makes textual preview asynchronous, provides support for 24-bit colors, improves tree-view and introduces experimental Lua plugins support. Thanks to everyone who tried out the beta. Main changes: - color schemes and preview now support 24-bit colors; - depth of tree-view can now be limited and directories in it can be folded; - textual preview of files is now done asynchronously; - list of files can now be directly piped to programs via new macros; - external editing now asks for a re-edit after a failure; - status line can now take up several lines; - new keys for controlling viewer while in view mode; - view column separators; - Vifm has received a more advanced, but currently experimental, extension interface in a form of Lua plugins; - new logo. More detailed list of changes. Core: - added experimental Lua plugins support; - added interactive re-editing of file names in external editor. Format now supports comments for displaying last error and original file names (thanks to Jose Riha, a.k.a. jose1711 and Diogo Lemos (a.k.a. dmlemos)); - started using quickview's cache in view mode; - extended cache of viewer's output to contain multiple entries (initial version of the cache was added to skip redrawing graphics); - run background programs detached from a terminal (thanks to Miguel Madrid Mencía, a.k.a. mimame). File operations: - added periodic forced flushing of data on copying data when 'syscalls' is set (thanks to Matthias Braun, a.k.a. mb720). Invocation: - don't list inaccessible instances on --server-list. Important fixes: - fixed losing files as a result of executing ":copy! &" or ":move! &" when both panes show the same directory (thanks to Hans Bieshaar); - fixed copying of executable files not working on FreeBSD (thanks to makijato); - fixed inability to map escape sequences due to extended keys in terminfo database (patch by M Kelly); - fixed hang on using previewer that takes over control over the terminal (like 7z does to read password) (thanks to PRESFIL); - fixed vifm-convert-dircolors dropping copies of entries that differ only by case (thanks to flux242). Normal and visual modes: - added zx normal mode key to fold/unfold directories in tree views. The implementation is not optimal at this moment though (thanks to filterfalse, Ben Lu, a.k.a. ayroblu, RR0925 and Alexandre Viau). Key bindings: - added a and A view mode keys that switch to next and previous viewer of current file correspondingly (thanks to j-xella); - added i view mode key that toggles raw mode (ignoring of defined viewers) (thanks to j-xella). Command-line mode: - added :plugins command that opens plugins menu; - added :plugin command that manages plugins; - added :st[op] command what behaves like Ctrl-Z. It's to be used in mappings (thanks to GummyGun); - added "depth=N" parameter to the :tree command (thanks to filterfalse); - added "combine" pseudo-attribute to "cterm" parameter of :highlight command. It changes behaviour from overwriting attributes of a parent highlight group (within their hierarchy) to appending to it (thanks to Andrew Savchenko); - added "gui", "guifg" and "guibg" parameters to :highlight command; - added network mount and `subst` targets to :volumes menu (patch by Phil Runninger); - made :compare obey file name filters (patch by qsmodo); - allow user-defined commands to include numbers in their names (thanks to anonymous at Vifm Q2A site). :set command and options: - added %P macro to 'rulerformat' (and thus to 'statusline'), which expands to All, Top, xx% or Bot to indicate position within the view (thanks to iSeeU816); - added 'previewoptions' option to allow tweaking graphics preview a bit (thanks to Joshua Jensch, a.k.a., patroclos and flux242); - added "toptreestats" value to 'previewoptions' option, which makes stats appear before the tree (patch by qsmodo); - added literal values to 'viewcolumns' option (thanks to Jose Riha, a.k.a. jose1711, chelovechishko, DieSpinne and rwtallant13); - added %N macro to 'statusline' option, which adds a line break and increases height of the status line (thanks to Jose Riha, a.k.a. jose1711, qsmodo and jcarreja); - added "l" and "r" flags to the 'tuioptions' option. It controls truncation of view titles (patch by qsmodo); - added %c 'statusline' macro that displays size of current file-system (thanks to Jose Riha, a.k.a. jose1711). Macros: - added %Pl and %Pz macros for redirecting list of files to standard input of commands (thanks to PRESFIL); - added %v macro for vertical splitting in terminal multiplexers (patch by qsmodo). File preview: - allow exploring empty files or output of viewers (thanks to Andrew Savchenko); - implemented asynchronous previewing for textual and pass-through (think sixel) viewers (thanks to StillSteal, laur89, Joshua Jensch, a.k.a. patroclos and p-kolacz); - detect broken links on preview and report them as such. Color schemes: - changed semantics of light* color groups to add bold attribute only for terminals with less than 16 colors. Aligns the behaviour with Vim. Affects you only if you relied on that implicit bold attribute (thanks to Jose Riha, a.k.a. jose1711). Menus and dialogs: - added shortcuts for toggling flags in permissions dialog on *nix (patch by qsmodo); - added some additional information about instance to the :version/:vifm menu; - made contents of map menus easier to comprehend by adding captions; - include shortcut prefix in title of map menus; - always display UID/GID in numeric form in File Info dialog (in parenthesis if the id was resolved to a string). TUI (Text User Interface): - added support for direct/"true"/24-bit colors for ncurses 6.0 or later (thanks to Anton Kochkov, a.k.a. XVilka and IvanBarsukov); - added progress indication to the ruler of the view mode (corresponds to new %P macro of 'rulerformat') (thanks to iSeeU816). Documentation: - document how %i macro affects background jobs. Only on Windows: - fixed :goto not working with backslashes (thanks to Grueslayer); - fixed processing of keypad keys (thanks to Roland); - fixed :empty leaving empty directories (thanks to Grueslayer). Packaging: - made it possible to build AppImage for Vifm (patch by michaellee8); - fixed running tests as root user (thanks to Michka Popoff, a.k.a. iMichka); - fixed an issue with packaging on one system (Linux in this case) and building on the other (OS X) (thanks to chenrui333). Vim-plugin: - made :VifmCs of the plugin handle 24-bit colors. Other changes: - updated logo of the project (thanks to Hescalalu for making it). See change log for the full list of changes and by whom they were suggested or implemented. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ September 15, 2021 ================== Vifm v0.12 beta --------------- New version makes textual preview asynchronous, provides support for 24-bit colors, improves tree-view and introduces experimental Lua plugins support. The beta stage will last about two weeks. In case any serious bugs are found during this period, another beta version might be released. Main changes: - color schemes and preview now support 24-bit colors; - depth of tree-view can now be limited and directories in it can be folded; - textual preview of files is now done asynchronously; - list of files can now be directly piped to programs via new macros; - external editing now asks for a re-edit after a failure; - status line can now take up several lines; - Vifm has received a more advanced, but currently experimental, extension interface in a form of Lua plugins. More detailed list of changes. Core: - added experimental Lua plugins support; - added interactive re-editing of file names in external editor. Format now supports comments for displaying last error and original file names (thanks to Jose Riha, a.k.a. jose1711 and Diogo Lemos (a.k.a. dmlemos)); - started using quickview's cache in view mode; - extended cache of viewer's output to contain multiple entries (initial version of the cache was added to skip redrawing graphics); - run background programs detached from a terminal (thanks to Miguel Madrid Mencía, a.k.a. mimame). File operations: - added periodic forced flushing of data on copying data when 'syscalls' is set (thanks to Matthias Braun, a.k.a. mb720). Invocation: - don't list inaccessible instances on --server-list. Important fixes: - fixed losing files as a result of executing ":copy! &" or ":move! &" when both panes show the same directory (thanks to Hans Bieshaar); - fixed copying of executable files not working on FreeBSD (thanks to makijato); - fixed inability to map escape sequences due to extended keys in terminfo database (patch by M Kelly); - fixed hang on using previewer that takes over control over the terminal (like 7z does to read password) (thanks to PRESFIL); - fixed vifm-convert-dircolors dropping copies of entries that differ only by case (thanks to flux242). Normal and visual modes: - added zx normal mode key to fold/unfold directories in tree views. The implementation is not optimal at this moment though (thanks to filterfalse, Ben Lu, a.k.a. ayroblu, RR0925 and Alexandre Viau). Key bindings: - added a and A view mode keys that switch to next and previous viewer of current file correspondingly (thanks to j-xella); - added i view mode key that toggles raw mode (ignoring of defined viewers) (thanks to j-xella). Command-line mode: - added :plugins command that opens plugins menu; - added :plugin command that manages plugins; - added :st[op] command what behaves like Ctrl-Z. It's to be used in mappings (thanks to GummyGun); - added "depth=N" parameter to the :tree command (thanks to filterfalse); - added "combine" pseudo-attribute to "cterm" parameter of :highlight command. It changes behaviour from overwriting attributes of a parent highlight group (within their hierarchy) to appending to it (thanks to Andrew Savchenko); - added "gui", "guifg" and "guibg" parameters to :highlight command; - added network mount and `subst` targets to :volumes menu (patch by Phil Runninger); - made :compare obey file name filters (patch by qsmodo); - allow user-defined commands to include numbers in their names (thanks to anonymous at Vifm Q2A site). :set command and options: - added %P macro to 'rulerformat' (and thus to 'statusline'), which expands to All, Top, xx% or Bot to indicate position within the view (thanks to iSeeU816); - added 'previewoptions' option to allow tweaking graphics preview a bit (thanks to Joshua Jensch, a.k.a., patroclos and flux242); - added "toptreestats" value to 'previewoptions' option, which makes stats appear before the tree (patch by qsmodo); - added literal values to 'viewcolumns' option (thanks to Jose Riha, a.k.a. jose1711, chelovechishko, DieSpinne and rwtallant13); - added %N macro to 'statusline' option, which adds a line break and increases height of the status line (thanks to Jose Riha, a.k.a. jose1711, qsmodo and jcarreja); - added "l" and "r" flags to the 'tuioptions' option. It controls truncation of view titles (patch by qsmodo); - added %c 'statusline' macro that displays size of current file-system (thanks to Jose Riha, a.k.a. jose1711). Macros: - added %Pl and %Pz macros for redirecting list of files to standard input of commands (thanks to PRESFIL); - added %v macro for vertical splitting in terminal multiplexers (patch by qsmodo). File preview: - allow exploring empty files or output of viewers (thanks to Andrew Savchenko); - implemented asynchronous previewing for textual and pass-through (think sixel) viewers (thanks to StillSteal, laur89, Joshua Jensch, a.k.a. patroclos and p-kolacz); - detect broken links on preview and report them as such. Color schemes: - changed semantics of light* color groups to add bold attribute only for terminals with less than 16 colors. Aligns the behaviour with Vim. Affects you only if you relied on that implicit bold attribute (thanks to Jose Riha, a.k.a. jose1711). Menus and dialogs: - added shortcuts for toggling flags in permissions dialog on *nix (patch by qsmodo); - added some additional information about instance to the :version/:vifm menu; - made contents of map menus easier to comprehend by adding captions; - include shortcut prefix in title of map menus; - always display UID/GID in numeric form in File Info dialog (in parenthesis if the id was resolved to a string). TUI (Text User Interface): - added support for direct/"true"/24-bit colors for ncurses 6.0 or later (thanks to Anton Kochkov, a.k.a. XVilka and IvanBarsukov); - added progress indication to the ruler of the view mode (corresponds to new %P macro of 'rulerformat') (thanks to iSeeU816). Documentation: - document how %i macro affects background jobs. Only on Windows: - fixed :goto not working with backslashes (thanks to Grueslayer); - fixed processing of keypad keys (thanks to Roland); - fixed :empty leaving empty directories (thanks to Grueslayer). Packaging: - made it possible to build AppImage for Vifm (patch by michaellee8); - fixed running tests as root user (thanks to Michka Popoff, a.k.a. iMichka); - fixed an issue with packaging on one system (Linux in this case) and building on the other (OS X) (thanks to chenrui333). Vim-plugin: - made :VifmCs of the plugin fail when 'termguicolors' produces a 24-bit color value (thanks to AtomToast). Other changes: - updated logo of the project (thanks to Hescalalu for making it). See change log for the full list of changes and by whom they were suggested or implemented. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ September 24, 2020 ================== Vifm v0.11 ---------- New version finally updates format of vifminfo file unblocking changes like persistent tabs, sessions and timestamp-based merging of histories. In addition to that there were a number of improvements in user interface and multiple performance-related improvements. Thanks to everyone who tried out the beta. Main changes: - added persistent tabs; - added sessions; - new format of vifminfo file (old version is imported on first run); - smarter merging of histories between runs that avoids dropping of new entries; - version of default color scheme for 256-color terminals; - make tab labels customizable; - try to keep ratio of pane sizes constant on resizes, restarts and tab switching; - various performance improvements. More detailed list of changes. Normal and visual modes: - added gF normal mode key which acts like gf, but goes all the way to the ultimate target of the chain of symbolic links (thanks to Alexandre Viau); - improve navigation on gf key. Do fewer refreshes and disable filters to make target visible. Core: - more sensible merging of histories from multiple instances in vifminfo file (avoids dropping of new entries); - invalidate cached directory information (size or number of files) on inode change (thanks to Jose Riha, a.k.a. jose1711); - invalidate cached directory size when using it to compute size of some parent directory; - improve cursor positioning after file operations; - made it possible to escape commas in patterns (as usual, by doubling) (thanks to filterfalse). Command-line mode: - added :tabo[nly] command that closes all tabs but the current one; - added :session and :delsession commands to manage sessions (thanks to Marcos Cruz); - added optional "full" parameter for the :restart command, which makes it discard essentially all context. This is useful with persistent tabs (thanks to Yusuf Aktepe); - don't reset histories of views in inactive tabs on :restart; - improve differentiation between association and list forms of :colorscheme command on startup. This is important if list contains name of color scheme that doesn't exist. :set command and options: - added "tabs" value to 'vifminfo' option. It enables persistent tabs (thanks to Cosmin Popescu, a.k.a. cosminadrianpopescu, filterfalse and Neil Griffin, a.k.a. ngriffin7a); - added "v" flag to the 'tuioptions' option. It controls whether width of middle border is adjusted to equalize view sizes (thanks to Matthias Braun, a.k.a. mb720); - added 'sessionoptions' option, which is an alternative to 'vifminfo' for session files; - added 'tablabel' option that specifies format of a single tab's label when non-empty (thanks to aleksejrs); - added 'tabprefix' and 'tabsuffix' options that allow customizing tabline separators (thanks to CoreCube); - added "treeleafsparent" value to 'dotdirs' option (thanks to filterfalse and Melandel); - do not require "dhistory" to be present in 'vifminfo' for "savedirs" to work. Menus and dialogs: - added rate and progress bar to progress dialog (patch by Alborz Jafari); - added real (fully resolved) path to the File Info dialog (thanks to Alexandre Viau); - added number of hard links to the File Info dialog; - abort menu, more or file information modes before processing remote commands (thanks to kangshugang); - deduplicate elements of the :file menu; - make displaying of spaces in mappings more intelligent by using <space> at the start or end of lhs or rhs. File preview: - improve handling of long or unknown escape sequences in previews (thanks to bratekarate); - use global color scheme for preview on the other pane ignoring its directory-specific color scheme; - invalidate textual quickview cache if it contains fewer lines than window height and is incomplete. TUI (Text User Interface): - try harder to preserve position of the splitter. Avoid its drift on terminal resizes and preserve ratio of windows on startup and tab switches (thanks to Shakil Akhtar); - prevent internally selected files (e.g., via a range of a :command) from appearing selected in user interface (thanks to filterfalse); - reduce width of top line when side borders are hidden (`set tuioptions-=s`) (thanks to Svyatoslav Mishyn, a.k.a. juef); - escape some characters as ^X in view and tab titles, custom menu titles, on status line and in terminal title (thanks to filterfalse); - use the same label for :grep and :find custom lists as the one used for :grep and :find menus (thanks to filterfalse); - use unexpanded command for title of custom file lists produced using %u or %U macros and menus produced using %m or %M macros (thanks to filterfalse); - use name of user-defined command in titles of custom views and menus (thanks to filterfalse); - preserve more information in the title on turning custom view into tree using :tree (thanks to filterfalse); - limit length of custom file list title to 80 character positions (thanks to filterfalse). Integration: - detect being run under Wayland (relevant for :filextype commands) (thanks to mhdzli); - make 'title' option work in all terminals which contain "tsl" and "fsl" capabilities (thanks to m-kru); - update terminal title when in menus (thanks to filterfalse). Color schemes: - added HardLink highlight group for regular files with more than one hard link (patch by Hans Bieshaar); - added LineNr highlight group for highlighting line number column of views (thanks to Anton Gepting); - added OddLine highlight group for highlighting every second entry line of a pane (thanks to iSeeU816). Scripting: - added v:jobcount builtin variable that provides number of active jobs (number of lines in :jobs menu) (thanks to iSeeU816); - added v:session builtin variable that provides name of current session or is set to an empty string. Configuration: - added three MC-like shortcuts to sample vifmrc files (Alt-I, Alt-O and Ctrl-U) (thanks to Hans Bieshaar); - added global Default-256 color scheme to be used in terminals that support 256-color palette (automatically in sample vifmrc) (thanks to Shakil Akhtar); - create $VIFM/colors directory with default color scheme only on the first run (thanks to ranousse); - use mime-types in associations in sample vifmrc (thanks to Shakil Akhtar). Performance: - significantly improved performance of adding files to registers that contain thousands of files. As a result contents of registers is sorted now (thanks to Typo); - significantly improved performance of adding files to trash that contains thousands of files. As a result contents of trash is sorted now (thanks to Typo); - significantly improved speed of sourcing files (includes processing configuration on startup and :restart); - significantly improved speed of handling typical globs (and therefore mime-type matchers) and reduced amount of memory they take up (thanks to yanzhang0219); - improve performance of mime-type detection by caching the results; - make comparing files by contents (`:compare bycontents`) somewhat faster (thanks to maxigaz); - don't force view reload after every :command that resets selection when there was non-empty selection. This might make metadata of files less up-to-date, but should increase overall performance (thanks to Jose Riha, a.k.a. jose1711); - avoid reloading source file list after copy or move operation when possible (thanks to Jose Riha, a.k.a. jose1711). Vim-plugin: - added :VifmCs command to the plugin for "converting" Vim's color scheme into a Vifm's one (patch by Roman Plášil, a.k.a. Quiark); - multiple improvements of syntax highlighting. Documentation: - added references to "Menus and dialogs" section of documentation from :commands and keys which open menus and dialogs detailed there; - explicitly documented that macros are expanded in user defined commands (thanks to gcmt); - made documentation of :command more comprehensible; - document that user must disable netrw plugin on his own when enabling g:vifm_replace_netrw. Vifm's plugin can't do it, because it's loaded after plugins shipped with Vim; - documented how selection is handled on launching files (like on l or Enter keys); - improve documentation on "bycontents" of :compare (thanks to maxigaz); - somewhat improved documentation on 'ignorecase' and 'smartcase' options (thanks to filterfalse); - fixed Vim version of the documentation lacking description of %p macro of 'findprg'. Only on Windows: - added basic support for using PowerShell (pausing doesn't work) (thanks to Fang, a.k.a. peromage); - display targets of .lnk-files in file information dialog; - implemented capturing output of background applications (thanks to Gene Zharov); - follow targets of .lnk-files (thanks to Alexandre Viau); - fixed 'chaselinks' (symbolic links weren't resolved); - fixed creating symbolic links with 'syscalls' being turned on; - fixed creating symbolic links with spaces in source or target paths; - fixed Alt key combinations being broken since v0.9; - fixed running non-cmd shells being broken by adding 'shellcmdflag' in 0.10.1; - fixed issues with non-tiny 'shellcmdflag' (patch by Bas Bossink, a.k.a. basbossink); - fixed detecting presence of :file[x]type commands on Windows when backslashes are present in path (thanks to anonymous and n.e. at Vifm Q2A site). Packaging: - avoid interposing system's reallocarray(), when it's present (thanks to Ben Boeckel, a.k.a. mathstuf); - install only one version of sample config and media script, the one which corresponds to operating system being used (thanks to Michael Vetter, a.k.a. jubalh and Ondrej Novy, a.k.a. onovy); - clean up tests directory on "make clean" in the top of the tree. Important fixes: - fixed generation of :highlight command for OtherWin on writing $VIFM/colors/Default.vifm. The bug caused white background of inactive pane (thanks to Stas Malavin); - fixed `:move subdir &` renaming file in the process and doing weird stuff to multiple files (thanks to 45jqlakjrf87ayte7hy34ter4nguijauzl4eitk); - fixed graphics preview not being cleared on switching tabs or starting external applications (including on :shell); - fixed mapped keys being reinterpreted as builtin keys if RHS of the mapping failed at some point (e.g., contained an unmapped key) (thanks to Seok Won Lee, a.k.a. ijleesw); - fixed dialogs not being visible when UI updates are silenced via <silent> mappings; - fixed panic on some redraw operations mixing with file operations during terminal resizing (thanks to aca). See change log for the full list of changes and by whom they were suggested or implemented. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ September 10, 2020 ================== Vifm v0.11 beta --------------- New version finally updates format of vifminfo file unblocking changes like persistent tabs, sessions and timestamp-based merging of histories. In addition to that there were a number of improvements in user interface and multiple performance-related improvements. The beta stage will last about two weeks. In case any serious bugs are found during this period, another beta version might be released. Main changes: - added persistent tabs; - added sessions; - new format of vifminfo file (old version is imported on first run); - smarter merging of histories between runs that avoids dropping of new entries; - version of default color scheme for 256-color terminals; - make tab labels customizable; - try to keep ratio of pane sizes constant on resizes, restarts and tab switching; - various performance improvements. More detailed list of changes. Normal and visual modes: - added gF normal mode key which acts like gf, but goes all the way to the ultimate target of the chain of symbolic links (thanks to Alexandre Viau); - improve navigation on gf key. Do fewer refreshes and disable filters to make target visible. Core: - more sensible merging of histories from multiple instances in vifminfo file (avoids dropping of new entries); - invalidate cached directory information (size or number of files) on inode change (thanks to Jose Riha, a.k.a. jose1711); - invalidate cached directory size when using it to compute size of some parent directory; - improve cursor positioning after file operations. Command-line mode: - added :tabo[nly] command that closes all tabs but the current one; - added :session and :delsession commands to manage sessions (thanks to Marcos Cruz); - added optional "full" parameter for the :restart command, which makes it discard essentially all context. This is useful with persistent tabs (thanks to Yusuf Aktepe); - don't reset histories of views in inactive tabs on :restart; - improve differentiation between association and list forms of :colorscheme command on startup. This is important if list contains name of color scheme that doesn't exist. :set command and options: - added "tabs" value to 'vifminfo' option. It enables persistent tabs (thanks to Cosmin Popescu, a.k.a. cosminadrianpopescu, filterfalse and Neil Griffin, a.k.a. ngriffin7a); - added "v" flag to the 'tuioptions' option. It controls whether width of middle border is adjusted to equalize view sizes (thanks to Matthias Braun, a.k.a. mb720); - added 'sessionoptions' option, which is an alternative to 'vifminfo' for session files; - added 'tablabel' option that specifies format of a single tab's label when non-empty (thanks to aleksejrs); - added 'tabprefix' and 'tabsuffix' options that allow customizing tabline separators (thanks to CoreCube); - added "treeleafsparent" value to 'dotdirs' option (thanks to filterfalse and Melandel); - do not require "dhistory" to be present in 'vifminfo' for "savedirs" to work. Menus and dialogs: - added rate and progress bar to progress dialog (patch by Alborz Jafari); - added real (fully resolved) path to the File Info dialog (thanks to Alexandre Viau); - added number of hard links to the File Info dialog; - abort menu, more or file information modes before processing remote commands (thanks to kangshugang); - deduplicate elements of the :file menu; - make displaying of spaces in mappings more intelligent by using <space> at the start or end of lhs or rhs. File preview: - improve handling of long or unknown escape sequences in previews (thanks to bratekarate); - use global color scheme for preview on the other pane ignoring its directory-specific color scheme; - invalidate textual quickview cache if it contains fewer lines than window height and is incomplete. TUI (Text User Interface): - try harder to preserve position of the splitter. Avoid its drift on terminal resizes and preserve ratio of windows on startup and tab switches (thanks to Shakil Akhtar); - prevent internally selected files (e.g., via a range of a :command) from appearing selected in user interface (thanks to filterfalse); - reduce width of top line when side borders are hidden (`set tuioptions-=s`) (thanks to Svyatoslav Mishyn, a.k.a. juef); - escape some characters as ^X in view and tab titles, custom menu titles, on status line and in terminal title (thanks to filterfalse); - use the same label for :grep and :find custom lists as the one used for :grep and :find menus (thanks to filterfalse); - use unexpanded command for title of custom file lists produced using %u or %U macros and menus produced using %m or %M macros (thanks to filterfalse); - use name of user-defined command in titles of custom views and menus (thanks to filterfalse); - preserve more information in the title on turning custom view into tree using :tree (thanks to filterfalse); - limit length of custom file list title to 80 character positions (thanks to filterfalse). Integration: - detect being run under Wayland (relevant for :filextype commands) (thanks to mhdzli); - make 'title' option work in all terminals which contain "tsl" and "fsl" capabilities (thanks to m-kru); - update terminal title when in menus (thanks to filterfalse). Color schemes: - added HardLink highlight group for regular files with more than one hard link (patch by Hans Bieshaar); - added LineNr highlight group for highlighting line number column of views (thanks to Anton Gepting); - added OddLine highlight group for highlighting every second entry line of a pane (thanks to iSeeU816). Scripting: - added v:jobcount builtin variable that provides number of active jobs (number of lines in :jobs menu) (thanks to iSeeU816); - added v:session builtin variable that provides name of current session or is set to an empty string. Configuration: - added three MC-like shortcuts to sample vifmrc files (Alt-I, Alt-O and Ctrl-U) (thanks to Hans Bieshaar); - added global Default-256 color scheme to be used in terminals that support 256-color palette (automatically in sample vifmrc) (thanks to Shakil Akhtar); - create $VIFM/colors directory with default color scheme only on the first run (thanks to ranousse); - use mime-types in associations in sample vifmrc (thanks to Shakil Akhtar). Performance: - significantly improved performance of adding files to registers that contain thousands of files. As a result contents of registers is sorted now (thanks to Typo); - significantly improved performance of adding files to trash that contains thousands of files. As a result contents of trash is sorted now (thanks to Typo); - significantly improved speed of sourcing files (includes processing configuration on startup and :restart); - significantly improved speed of handling typical globs (and therefore mime-type matchers) and reduced amount of memory they take up (thanks to yanzhang0219); - improve performance of mime-type detection by caching the results; - make comparing files by contents (`:compare bycontents`) somewhat faster (thanks to maxigaz); - don't force view reload after every :command that resets selection when there was non-empty selection. This might make metadata of files less up-to-date, but should increase overall performance (thanks to Jose Riha, a.k.a. jose1711); - avoid reloading source file list after copy or move operation when possible (thanks to Jose Riha, a.k.a. jose1711). Vim-plugin: - added :VifmCs command to the plugin for "converting" Vim's color scheme into a Vifm's one (patch by Roman Plášil, a.k.a. Quiark); - multiple improvements of syntax highlighting. Documentation: - added references to "Menus and dialogs" section of documentation from :commands and keys which open menus and dialogs detailed there; - explicitly documented that macros are expanded in user defined commands (thanks to gcmt); - made documentation of :command more comprehensible; - document that user must disable netrw plugin on his own when enabling g:vifm_replace_netrw. Vifm's plugin can't do it, because it's loaded after plugins shipped with Vim; - documented how selection is handled on launching files (like on l or Enter keys); - improve documentation on "bycontents" of :compare (thanks to maxigaz); - somewhat improved documentation on 'ignorecase' and 'smartcase' options (thanks to filterfalse); - fixed Vim version of the documentation lacking description of %p macro of 'findprg'. Only on Windows: - added basic support for using PowerShell (pausing doesn't work) (thanks to Fang, a.k.a. peromage); - display targets of .lnk-files in file information dialog; - implemented capturing output of background applications (thanks to Gene Zharov); - follow targets of .lnk-files (thanks to Alexandre Viau); - fixed 'chaselinks' (symbolic links weren't resolved); - fixed creating symbolic links with 'syscalls' being turned on; - fixed creating symbolic links with spaces in source or target paths; - fixed Alt key combinations being broken since v0.9; - fixed running non-cmd shells being broken by adding 'shellcmdflag' in 0.10.1; - fixed issues with non-tiny 'shellcmdflag' (patch by Bas Bossink, a.k.a. basbossink); - fixed detecting presence of :file[x]type commands on Windows when backslashes are present in path (thanks to anonymous and n.e. at Vifm Q2A site). Packaging: - avoid interposing system's reallocarray(), when it's present (thanks to Ben Boeckel, a.k.a. mathstuf); - install only one version of sample config and media script, the one which corresponds to operating system being used (thanks to Michael Vetter, a.k.a. jubalh and Ondrej Novy, a.k.a. onovy); - clean up tests directory on "make clean" in the top of the tree. Important fixes: - fixed generation of :highlight command for OtherWin on writing $VIFM/colors/Default.vifm. The bug caused white background of inactive pane (thanks to Stas Malavin); - fixed `:move subdir &` renaming file in the process and doing weird stuff to multiple files (thanks to 45jqlakjrf87ayte7hy34ter4nguijauzl4eitk); - fixed graphics preview not being cleared on switching tabs or starting external applications (including on :shell); - fixed mapped keys being reinterpreted as builtin keys if RHS of the mapping failed at some point (e.g., contained an unmapped key) (thanks to Seok Won Lee, a.k.a. ijleesw); - fixed dialogs not being visible when UI updates are silenced via <silent> mappings; - fixed panic on some redraw operations mixing with file operations during terminal resizing (thanks to aca). See change log for the full list of changes and by whom they were suggested or implemented. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ July 29, 2019 ============= vifm v0.10.1 ------------ This version provides additions and improvements for media management feature, several enhancements related to text user interface, extra features to Vim plugin thanks to merging in neovim-vifm plugin and various small changes. Thanks to everyone who tried out the beta. Main changes: - added file preview to miller mode; - added preview macro to directly output to terminal, which enables use of Sixel graphics for previewing; - added udisks2 backend to vifm-media script (bundled script for managing media) and version of the script for OS X; - updated code to make use of large amount of color pairs when available; - functionality of previously separate neovim-vifm plugin got merged into the main plugin; - multiple improvements to :media menu; - improved performance in several use cases (quickview, lots of unhighlighted files, unnecessary cursor updates and redraws). More detailed list of changes. Command-line mode: - added :cds command that navigates to path obtained by substitution in the current path (thanks to j-xella); - added :hideui command that hides interface to show previous commands' output (thanks to dikiy); - added one more invocation format of :colorscheme command, which picks the first available color scheme that is supported by the terminal (thanks to Jose Riha, a.k.a. jose1711); - always preserve tabs on :restart (thanks to mwgkgk); - refuse to compare directory against itself via :compare command (thanks to Jose Riha, a.k.a. jose1711). :set command and options: - added fileroot view column, which displays full name of directories and symbolic links to directories and only root of name for everything else (thanks to chelovechishko); - added 'shellcmdflag' option that allows customizing how shell is invoked. Enables running it in interactive mode, which can make shell aliases and functions work (thanks to Ink (a.k.a. inknoir), John Shea (a.k.a. coachshea) and randomizedthinking); - added L flag to 'shortmess' option to display only last directory in tab line instead of full path (thanks to chelovechishko); - added ^= operation for string list options (thanks to SearyBlue); - added ^= operation for options of set kind; - added rpreview: key to 'milleroptions' option that allows enabling preview of files (thanks to Svadkos and Tom Jansen); - added %p macro to 'findprg' option. It works as a mix between %a and %A macros: usually contains arguments passed to :find command, but unlike %a doesn't include any predicates (thanks to Sitaram Chamarty and Tuan Bui, a.k.a. tuanbass); - added "space" and "nospace" values to 'sizefmt' option (patch by zsugabubus); - do not add leading comma to string list options on set opt+=item; - don't create trash directory on startup if 'trash' is off (patch by zsugabubus). Key bindings: - improved <silent> to do not forcefully update screen after the mapping if no screen updates were skipped. Completion: - complete user name in paths after initial tilde (e.g., :cd ~r<tab> => :cd ~root). Macros: - added %pd macro that makes preview output directly affect terminal circumventing curses interface, which could be used to display sixel images (thanks to Tom Jansen). Color schemes: - added OtherWin highlight group for highlighting inactive pane (thanks to John Fred Fadrigalan, a.k.a. cevhyruz). Menus and dialogs: - added indication of entry's availability to :file, :file[x]type and :fileviewer menus; - added [ and ] bindings to :media menu that provide navigation between devices (patch by zsugabubus); - added decorations to :media menu (patch by zsugabubus); - react to Enter in :media menu on device lines, mount on "not mounted" line and do nothing otherwise (patch by zsugabubus); - show empty lines in :media only if there is enough vertical space (patch by zsugabubus); - removed empty line from :file and similar menus for case when vifm was configured with --disable-desktop-files flag (second time). Scripting: - added extcached() builtin function, which can be used to improve performance of file queries by caching results of external commands (thanks to Matthias Braun, a.k.a. mb720). Invocation: - try to preserve symbolic links in current path when starting vifm by checking value of $PWD (thanks to Vigi). Core: - resolve symbolic links for mime-type matchers (thanks to Vigi); - do not check for view changes while suggestions are visible. It can mess up TUI, especially in combination with preview (thanks to ks1c). File operations: - preserve extended attributes on copying files (thanks to hutou); - don't throw away errors that were ignored by the user, display them at the end of operation; - consume input during foreground file operations. Otherwise it remains buffered and is processed after the operation is over, which might not be the intent of the user; - reduce number of options available on file conflict when source and destination are the same to avoid confusion (options that overwrite do nothing in this case) (thanks to aleksejrs). File preview: - do not complain about empty output of a graphics previewer for view mode; - clear preview before displaying suggestions (thanks to ks1c). TUI (Text User Interface): - renamed filename filter to "permanent filter" consisting of "explicit" (ex-manual) and "implicit" (ex-automatic) parts (thanks to Sitaram Chamarty); - changed file rename prompt to indicate whether full name or only its root is being changed; - try to determine widths of printed character more accurately; - drop leading space implicitly added to time columns in views (thanks to laggardkernel). Integration: - added info= field to parser of 'mediaprg' output. It provides custom message for the media (patch by zsugabubus); - added udisks2 backend to vifm-media script (bundled script for managing media). Requires python and dbus module for it to be installed (because udisks2 and dbus are too shitty to be used on command-line) (thanks to Tykin); - added FUSE_MOUNT3 filetype format, which is equivalent to FUSE_MOUNT, but doesn't perform unmounting. Helpful to use something like avfs (thanks to Jose Riha, a.k.a. jose1711); - added vifm-media-osx script that is configured to be used (via 'mediaprg') on OS X (patch by Von Welch); - error stream from 'mediaprg' isn't considered anymore when deciding if mounting/unmounting was successful. While technically an incompatible change, it's unlikely to cause any issues; - spawn 'mediaprg' in foreground to allow interactions with the user, like providing a password (patch by zsugabubus); - properly remove FUSE mount points if they are symbolic links; - assume that any $TERM value that starts with "xterm-", "rxvt-" or "screen-" supports terminal title (thanks to Matthias Braun, a.k.a. mb720). Documentation: - better documentation for TabLine and TabLineSel highlighting groups (thanks to mwgkgk); - clearer documentation/description for :*unmap commands and 'vicmd'/'vixcmd' options (thanks to chelovechishko); - improve documentation of patterns and globs (thanks to afsheenb); - improved documentation on filters (thanks to Sitaram Chamarty); - document more details about expansion of FUSE macros; - make documentation of 'findprg' more readable. Vim-plugin: - added :Vifm command as an alias for :EditVifm (patch by rbong); - added optional splitting of the embedded terminal (g:vifm_embed_split). Has support for Vim's <mods> and <count> (patch by rbong); - added option to synchronize working directory of the embedded instance of vifm with the Vim host (g:vifm_embed_cwd) (patch by rbong); - added ability to replace netrw with vifm (g:vifm_replace_netrw and g:vifm_replace_netrw_cmd) (patch by rbong); - added autodetection of *.vifm files as files with "vifm" filetype to the plugin (patch by Anton Kochkov, a.k.a. XVilka). Configuration: - added example of using xsel to sample vifmrc file (thanks to chelovechishko); - enabled 'vimhelp' in sample vifmrc file by default. Performance: - added caching to quickview for a single file to avoid fileviewer being called more often than needed (thanks to agguser); - try to avoid superfluous screen updates related to cursor position; - remember when file doesn't match any file-specific highlighting groups for better performance (thanks to Gomme Bidule); - generate faster regular expressions by vifm-convert-dircolors (thanks to Gomme Bidule). Only on Windows: - upgraded to PDCurses 3.8 (was 3.4) for Windows. This allows using 256 colors inside ConEmu. Note that ConEmu has issues processing 256 colors on the last line of the screen, so avoid using them for status line (thanks to dancread). Other changes: - don't error on trash creation failure due to read-only file system (patch by zsugabubus). Important fixes: - fixed losing files on failed move operation. Source files were deleted assuming they were copied successfully, even when errors regarding some of them were ignored by the user (thanks to zsugabubus); - fixed vifm not making use of large number of color pairs when they are available (thanks to Jose Riha (a.k.a. jose1711) and Hans Petter Jansson (a.k.a. hpjansson)); - fixed color pairs being exhausted on Windows when default color ends up being used often, this caused highlighting to go awry (thanks to dancread); - fixed textual output of graphical previewers not being displayed in view mode (thanks to agguser); - fixed DirEnter autocommand being called with view being in a mixed state of old and new location (thanks to Kendrick Taylor, a.k.a. sixcircuit). See change log for the full list of changes and by whom they were suggested or implemented. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ July 15, 2019 ============= vifm v0.10.1 beta ----------------- This version provides additions and improvements for media management feature, several enhancements related to text user interface, extra features to Vim plugin thanks to merging in neovim-vifm plugin and various small changes. The beta stage will last about two weeks. In case any serious bugs are found during this period, another beta version might be released. Main changes: - added file preview to miller mode - added preview macro to directly output to terminal, which enables use of Sixel graphics for previewing; - added udisks2 backend to vifm-media script (bundled script for managing media) and version of the script for OS X; - updated code to make use of large amount of color pairs when available; - functionality of previously separate neovim-vifm plugin got merged into the main plugin; - multiple improvements to :media menu; - improved performance in several use cases (quickview, lots of unhighlighted files, unnecessary cursor updates and redraws). More detailed list of changes. Command-line mode: - added :cds command that navigates to path obtained by substitution in the current path (thanks to j-xella); - added :hideui command that hides interface to show previous commands' output (thanks to dikiy); - added one more invocation format of :colorscheme command, which picks the first available color scheme that is supported by the terminal (thanks to Jose Riha, a.k.a. jose1711); - always preserve tabs on :restart (thanks to mwgkgk); - refuse to compare directory against itself via :compare command (thanks to Jose Riha, a.k.a. jose1711). :set command and options: - added fileroot view column, which displays full name of directories and symbolic links to directories and only root of name for everything else (thanks to chelovechishko); - added 'shellcmdflag' option that allows customizing how shell is invoked. Enables running it in interactive mode, which can make shell aliases and functions work (thanks to Ink (a.k.a. inknoir), John Shea (a.k.a. coachshea) and randomizedthinking); - added L flag to 'shortmess' option to display only last directory in tab line instead of full path (thanks to chelovechishko); - added ^= operation for string list options (thanks to SearyBlue); - added ^= operation for options of set kind; - added rpreview: key to 'milleroptions' option that allows enabling preview of files (thanks to Svadkos and Tom Jansen); - added %p macro to 'findprg' option. It works as a mix between %a and %A macros: usually contains arguments passed to :find command, but unlike %a doesn't include any predicates (thanks to Sitaram Chamarty and Tuan Bui, a.k.a. tuanbass); - do not add leading comma to string list options on set opt+=item; - don't create trash directory on startup if 'trash' is off (patch by zsugabubus). Key bindings: - improved <silent> to do not forcefully update screen after the mapping if no screen updates were skipped. Completion: - complete user name in paths after initial tilde (e.g., :cd ~r<tab> => :cd ~root). Macros: - added %pd macro that makes preview output directly affect terminal circumventing curses interface, which could be used to display sixel images (thanks to Tom Jansen). Color schemes: - added OtherWin highlight group for highlighting inactive pane (thanks to John Fred Fadrigalan, a.k.a. cevhyruz). Menus and dialogs: - added indication of entry's availability to :file, :file[x]type and :fileviewer menus; - added [ and ] bindings to :media menu that provide navigation between devices (patch by zsugabubus); - added decorations to :media menu (patch by zsugabubus); - react to Enter in :media menu on device lines, mount on "not mounted" line and do nothing otherwise (patch by zsugabubus); - show empty lines in :media only if there is enough vertical space (patch by zsugabubus); - removed empty line from :file and similar menus for case when vifm was configured with --disable-desktop-files flag (second time). Scripting: - added extcached() builtin function, which can be used to improve performance of file queries by caching results of external commands (thanks to Matthias Braun, a.k.a. mb720). Invocation: - try to preserve symbolic links in current path when starting vifm by checking value of $PWD (thanks to Vigi). Core: - resolve symbolic links for mime-type matchers (thanks to Vigi); - do not check for view changes while suggestions are visible. It can mess up TUI, especially in combination with preview (thanks to ks1c). File operations: - preserve extended attributes on copying files (thanks to hutou); - don't throw away errors that were ignored by the user, display them at the end of operation; - consume input during foreground file operations. Otherwise it remains buffered and is processed after the operation is over, which might not be the intent of the user; - reduce number of options available on file conflict when source and destination are the same to avoid confusion (options that overwrite do nothing in this case) (thanks to aleksejrs). File preview: - do not complain about empty output of a graphics previewer for view mode; - clear preview before displaying suggestions (thanks to ks1c). TUI (Text User Interface): - renamed filename filter to "permanent filter" consisting of "explicit" (ex-manual) and "implicit" (ex-automatic) parts (thanks to Sitaram Chamarty); - changed file rename prompt to indicate whether full name or only its root is being changed; - try to determine widths of printed character more accurately; - drop leading space implicitly added to time columns in views (thanks to laggardkernel). Integration: - added info= field to parser of 'mediaprg' output. It provides custom message for the media (patch by zsugabubus); - added udisks2 backend to vifm-media script (bundled script for managing media). Requires python and dbus module for it to be installed (because udisks2 and dbus are too shitty to be used on command-line) (thanks to Tykin); - added FUSE_MOUNT3 filetype format, which is equivalent to FUSE_MOUNT, but doesn't perform unmounting. Helpful to use something like avfs (thanks to Jose Riha, a.k.a. jose1711); - added vifm-media-osx script that is configured to be used (via 'mediaprg') on OS X (patch by Von Welch); - error stream from 'mediaprg' isn't considered anymore when deciding if mounting/unmounting was successful. While technically an incompatible change, it's unlikely to cause any issues; - spawn 'mediaprg' in foreground to allow interactions with the user, like providing a password (patch by zsugabubus); - properly remove FUSE mount points if they are symbolic links. Documentation: - better documentation for TabLine and TabLineSel highlighting groups (thanks to mwgkgk); - clearer documentation/description for :*unmap commands and 'vicmd'/'vixcmd' options (thanks to chelovechishko); - improve documentation of patterns and globs (thanks to afsheenb); - improved documentation on filters (thanks to Sitaram Chamarty); - document more details about expansion of FUSE macros; - make documentation of 'findprg' more readable. Vim-plugin: - added :Vifm command as an alias for :EditVifm (patch by rbong); - added optional splitting of the embedded terminal (g:vifm_embed_split). Has support for Vim's <mods> and <count> (patch by rbong); - added option to synchronize working directory of the embedded instance of vifm with the Vim host (g:vifm_embed_cwd) (patch by rbong); - added ability to replace netrw with vifm (g:vifm_replace_netrw and g:vifm_replace_netrw_cmd) (patch by rbong). Configuration: - added example of using xsel to sample vifmrc file (thanks to chelovechishko); - enabled 'vimhelp' in sample vifmrc file by default. Performance: - added caching to quickview for a single file to avoid fileviewer being called more often than needed (thanks to agguser); - try to avoid superfluous screen updates related to cursor position; - remember when file doesn't match any file-specific highlighting groups for better performance (thanks to Gomme Bidule); - generate faster regular expressions by vifm-convert-dircolors (thanks to Gomme Bidule). Only on Windows: - upgraded to PDCurses 3.8 (was 3.4) for Windows. This allows using 256 colors inside ConEmu. Note that ConEmu has issues processing 256 colors on the last line of the screen, so avoid using them for status line (thanks to dancread). Other changes: - don't error on trash creation failure due to read-only file system (patch by zsugabubus). Important fixes: - fixed losing files on failed move operation. Source files were deleted assuming they were copied successfully, even when errors regarding some of them were ignored by the user (thanks to zsugabubus); - fixed vifm not making use of large number of color pairs when they are available (thanks to Jose Riha (a.k.a. jose1711) and Hans Petter Jansson (a.k.a. hpjansson)); - fixed color pairs being exhausted on Windows when default color ends up being used often, this caused highlighting to go awry (thanks to dancread); - fixed textual output of graphical previewers not being displayed in view mode (thanks to agguser); - fixed DirEnter autocommand being called with view being in a mixed state of old and new location (thanks to Kendrick Taylor, a.k.a. sixcircuit). See change log for the full list of changes and by whom they were suggested or implemented. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ November 11, 2018 ================= vifm v0.10 ---------- New version includes long awaited tabs and support for managing media. The first one comes in two flavours: tabs either include layout or don't. The latter relies on a helper script, whose job is to adapt existing tools to make them usable by vifm. The beta stage will last about two weeks. In case any serious bugs are found during this period, another beta version might be released. Main changes: - added tabs which either operate on the level of layout or level of individual panes; - added ability to synchronize contents of registers among multiple instances; - added menu for managing media (relies on helper that does the managing); - improved cursor positioning and control over it; - ability to colorize status line. More detailed list of changes. Command-line mode: - added :tabc[lose] command that closes current tab unless it's the last one; - added :tabm[ove] command that moves tabs (thanks to filterfalse); - added :tabname command that updates name of the current tab; - added :tabnew command that creates a new tab (thanks to Cosmin Popescu, a.k.a. cosminadrianpopescu); - added :tabn[ext] and :tabp[revious] commands, which work as gt and gT normal mode shortcuts correspondingly (thanks to Cosmin Popescu, a.k.a. cosminadrianpopescu); - added :qa[ll], :wqa[ll] and :xa[ll] commands that always try to exit vifm no matter how many tabs are open; - added :goto command that navigates to specified file/directory (thanks to mateusz28 and Dmitry Frank, a.k.a. dimonomid); - added :regular command that leaves custom view (thanks to gammaray); - :quit, :wq, :exit, :xit, ZZ and ZQ now try to close current tab before closing the application; - make :echo and :execute report parsing errors in more detail than just "invalid expression"; - make :cabbrev and :cnoreabbrev always treat bar (`|`) as part of their arguments, just like :*map commands do (thanks to filterfalse); - make :tree! toggle view in and out of tree mode (thanks to gammaray); - more accurate error message on handling non directories passed to :cd. :set command and options: - added 'tabscope' option that controls style of tabs (thanks to Cosmin Popescu, a.k.a. cosminadrianpopescu); - added 'showtabline' option that controls visibility of tab line; - added 'histcursor' option that gives partial control over when cursor is positioned in accordance with record of directory history (thanks to filterfalse and Dmitry Frank, a.k.a. dimonomid); - added 'quickview' option that controls visibility of quick view (:view) (thanks to Jochen Schweizer, a.k.a. durcheinandr); - added 'syncregs' option which defines group of instances that share registers (patch by Ma_Sys.ma); - added 'mediaprg' option that can be used to specify helper for managing removable media. One such helper with support of udevil and udisks is provided. Only for *nix systems; - added support for arbitrary expressions in 'statusline': '%{...}', e.g. '%{&sort}' evaluates to the value of the sort option (patch by Dmitry Frank, a.k.a. dimonomid); - added "M" flag to 'shortmess' option to control shortening of titles in windows of terminal multiplexers created by vifm down to file name instead of using full path (thanks to mateusz28). File operations: - try to preserve file owner/group on copying (thanks to willemw12). Normal and visual modes: - added gt and gT normal mode shortcuts that switch between tabs in both directions. Key bindings: - added <silent> :*map argument that postpones UI updates until RHS is completely processed. Probably not all updates are postponed, to be improved as unhandled cases are discovered; - added <wait> :*map argument, which resolves prefix conflicts of user-defined mappings and builtin keys in favour of user-defined mappings (thanks to Paweł Smolak, a.k.a. psmolak). Angle bracket notation: - added <insert> angle bracket notation (thanks to j-xella); - added <c-@> angle bracket notation making it possible to map Ctrl-Space key (thanks to anonymous at Vifm Q2A site). File list: - use historical cursor position upon startup by default when 'autochpos' is on, this is now independent from "savedirs" in 'vifminfo' option (thanks to filterfalse); - use historical cursor position on navigating to a mark that doesn't specify a file by default when 'autochpos' is on (thanks to filterfalse); - move cursor after p and P to one of files that were moved or to a cause of last conflict (thanks to filterfalse and ranousse); - issue a warning if file system lists several files with identical names in the same directory. It used to be assumed that it can't happen (thanks to Jose Riha, a.k.a. jose1711). File preview: - support italics in quickview/view mode and in :highlight when curses implementation provides corresponding extension. PDCurses doesn't implement it on Windows. Fallback is to use "reversed" attribute (thanks to GeorgeHJ). Integration: - escape "=" at the beginning of paths (has special meaning in zsh) (thanks to agguser). Menus and dialogs: - added :media menu that can list and perform basic operations on removable media (requires helper to be available, see 'mediaprg'). Only for *nix systems (thanks to Bruce Hunsaker, a.k.a. hunsakerbn and others); - added r key to :undolist menu, which resets position in the undo list to group under the cursor (thanks to mini-turtle); - sort entries of :bmarks menu (thanks to anonymous at Vifm Q2A site); - slightly better formatting in :undolist menu; - do not reset selection before executing a :command from :commands menu (thanks to Jose Riha, a.k.a. jose1711); - less strict parsing of output of external command by :[un]select commands. Similar to %u/%U and menus allow <file>[:[<line>:[<col>:]] <description>] format (thanks to j-xella). Color schemes: - added TabLine highlight group for highlighting tab line; - added TabLineSel highlight group for highlighting tip of the selected tab on the tab line; - added User1..User9 highlight groups and corresponding %[0-9]* 'statusline' macro, which makes it possible to colorize parts of status line differently (thanks to GeorgeHJ). TUI (Text User Interface): - display list of files in removal confirmation dialog (thanks to ovk). Scripting: - added tabpagenr() function that retrieves number of current or last tab page (thanks to filterfalse); - added fnameescape() builtin function, which can be used to escape paths on construction of :commands (thanks to filterfalse); - added second optional parameter to filetype() builtin function that is treated as a boolean and specifies whether symbolic links should be resolved; - added addition and subtraction operations to the parser; - added grouping via parentheses to expressions (thanks to Konst Mayer, a.k.a. cdlscpmv); - allow passing numerical positions to filetype() function. Documentation: - more explicit documentation about leaving custom views (thanks to tagwint). Vim-plugin: - support embedded terminal in the plugin for newer Vim. Only on Windows: - fixed flickering on Windows (thanks to Alexandre Viau and randomizedthinking); - fixed graphical applications on Windows not being detected as such, which caused vifm to wait until they finish running. Was broken since 0.9 (thanks to r0ck). Important fixes: - fixed error messages from put operation being postponed until the next put operation. Got broken in 0.9; - fixed confirmation not being requested on :delete (thanks to anonymous at Vifm Q2A site). See change log for the full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ October 28, 2018 ================ vifm v0.10 beta --------------- New version includes long awaited tabs and support for managing media. The first one comes in two flavours: tabs either include layout or don't. The latter relies on a helper script, whose job is to adapt existing tools to make them usable by vifm. The beta stage will last about two weeks. In case any serious bugs are found during this period, another beta version might be released. Main changes: - added tabs which either operate on the level of layout or level of individual panes; - added ability to synchronize contents of registers among multiple instances; - added menu for managing media (relies on helper that does the managing); - improved cursor positioning and control over it; - ability to colorize status line. More detailed list of changes. Command-line mode: - added :tabc[lose] command that closes current tab unless it's the last one; - added :tabm[ove] command that moves tabs (thanks to filterfalse); - added :tabname command that updates name of the current tab; - added :tabnew command that creates a new tab (thanks to Cosmin Popescu, a.k.a. cosminadrianpopescu); - added :tabn[ext] and :tabp[revious] commands, which work as gt and gT normal mode shortcuts correspondingly (thanks to Cosmin Popescu, a.k.a. cosminadrianpopescu); - added :qa[ll], :wqa[ll] and :xa[ll] commands that always try to exit vifm no matter how many tabs are open; - added :goto command that navigates to specified file/directory (thanks to mateusz28 and Dmitry Frank, a.k.a. dimonomid); - added :regular command that leaves custom view (thanks to gammaray); - :quit, :wq, :exit, :xit, ZZ and ZQ now try to close current tab before closing the application; - make :echo and :execute report parsing errors in more detail than just "invalid expression"; - make :cabbrev and :cnoreabbrev always treat bar (`|`) as part of their arguments, just like :*map commands do (thanks to filterfalse); - make :tree! toggle view in and out of tree mode (thanks to gammaray); - more accurate error message on handling non directories passed to :cd. :set command and options: - added 'tabscope' option that controls style of tabs (thanks to Cosmin Popescu, a.k.a. cosminadrianpopescu); - added 'showtabline' option that controls visibility of tab line; - added 'histcursor' option that gives partial control over when cursor is positioned in accordance with record of directory history (thanks to filterfalse and Dmitry Frank, a.k.a. dimonomid); - added 'quickview' option that controls visibility of quick view (:view) (thanks to Jochen Schweizer, a.k.a. durcheinandr); - added 'syncregs' option which defines group of instances that share registers (patch by Ma_Sys.ma); - added 'mediaprg' option that can be used to specify helper for managing removable media. One such helper with support of udevil and udisks is provided. Only for *nix systems; - added support for arbitrary expressions in 'statusline': '%{...}', e.g. '%{&sort}' evaluates to the value of the sort option (patch by Dmitry Frank, a.k.a. dimonomid); - added "M" flag to 'shortmess' option to control shortening of titles in windows of terminal multiplexers created by vifm down to file name instead of using full path (thanks to mateusz28). File operations: - try to preserve file owner/group on copying (thanks to willemw12). Normal and visual modes: - added gt and gT normal mode shortcuts that switch between tabs in both directions. Key bindings: - added <silent> :*map argument that postpones UI updates until RHS is completely processed. Probably not all updates are postponed, to be improved as unhandled cases are discovered; - added <wait> :*map argument, which resolves prefix conflicts of user-defined mappings and builtin keys in favour of user-defined mappings (thanks to Paweł Smolak, a.k.a. psmolak). Angle bracket notation: - added <insert> angle bracket notation (thanks to j-xella); - added <c-@> angle bracket notation making it possible to map Ctrl-Space key (thanks to anonymous at Vifm Q2A site). File list: - use historical cursor position upon startup by default when 'autochpos' is on, this is now independent from "savedirs" in 'vifminfo' option (thanks to filterfalse); - use historical cursor position on navigating to a mark that doesn't specify a file by default when 'autochpos' is on (thanks to filterfalse); - move cursor after p and P to one of files that were moved or to a cause of last conflict (thanks to filterfalse and ranousse); - issue a warning if file system lists several files with identical names in the same directory. It used to be assumed that it can't happen (thanks to Jose Riha, a.k.a. jose1711). File preview: - support italics in quickview/view mode and in :highlight when curses implementation provides corresponding extension. PDCurses doesn't implement it on Windows. Fallback is to use "reversed" attribute (thanks to GeorgeHJ). Integration: - escape "=" at the beginning of paths (has special meaning in zsh) (thanks to agguser). Menus and dialogs: - added :media menu that can list and perform basic operations on removable media (requires helper to be available, see 'mediaprg'). Only for *nix systems (thanks to Bruce Hunsaker, a.k.a. hunsakerbn and others); - added r key to :undolist menu, which resets position in the undo list to group under the cursor (thanks to mini-turtle); - sort entries of :bmarks menu (thanks to anonymous at Vifm Q2A site); - slightly better formatting in :undolist menu; - do not reset selection before executing a :command from :commands menu (thanks to Jose Riha, a.k.a. jose1711); - less strict parsing of output of external command by :[un]select commands. Similar to %u/%U and menus allow <file>[:[<line>:[<col>:]] <description>] format (thanks to j-xella). Color schemes: - added TabLine highlight group for highlighting tab line; - added TabLineSel highlight group for highlighting tip of the selected tab on the tab line; - added User1..User9 highlight groups and corresponding %[0-9]* 'statusline' macro, which makes it possible to colorize parts of status line differently (thanks to GeorgeHJ). Scripting: - added tabpagenr() function that retrieves number of current or last tab page (thanks to filterfalse); - added fnameescape() builtin function, which can be used to escape paths on construction of :commands (thanks to filterfalse); - added second optional parameter to filetype() builtin function that is treated as a boolean and specifies whether symbolic links should be resolved; - added addition and subtraction operations to the parser; - added grouping via parentheses to expressions (thanks to Konst Mayer, a.k.a. cdlscpmv); - allow passing numerical positions to filetype() function. Documentation: - more explicit documentation about leaving custom views (thanks to tagwint). Only on Windows: - fixed flickering on Windows (thanks to Alexandre Viau and randomizedthinking); - fixed graphical applications on Windows not being detected as such, which caused vifm to wait until they finish running. Was broken since 0.9 (thanks to r0ck). Important fixes: - fixed error messages from put operation being postponed until the next put operation. Got broken in 0.9; - fixed confirmation not being requested on :delete (thanks to anonymous at Vifm Q2A site). See change log for the full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ February 05, 2018 ================= vifm v0.9.1 ----------- This version adds to the list of ways for viewing files by introducing miller columns view and transposed ls-like view (table view). Other developments are related to integration between builtin features as well as with external applications. Thanks to everyone who tried out the beta. Main changes: - introduced file view mode known as miller columns or cascading lists; - added ability to transpose ls-like view to make it fill by columns; - more natural behaviour of movement keys in ls-like view; - new `--remote-expr` command-line option can be used to query state of running instances; - extended retry/ignore/abort query to all file operations; - more control over highlight groups via `:highlight` suitable for interactive changes; - mostly eliminated the need for repeating ga/gA commands through automatic size recalculation. More detailed list of changes. File operations: - added retry/ignore/abort prompt for file copying and directory/file/symlink creation when 'syscalls' is on (thanks to einhander); - better detection of write errors on file copying. The error was reported, but it wasn't treated as a hard error in a specific case related to caching. Command-line mode: - added :histnext/:histprev commands, which are analogous to Ctrl-I/Ctrl-O (patch by Dmitry Frank, a.k.a. dimonomid); - added ability to remove filename-specific highlighting rules with `:highlight clear {pattern}` (thanks to aleksejrs); - changed :filter command to accept pattern (//, ////, {} or {{}}) (thanks to rbong); - made :siblnext and :siblprev commands respect dot and name filters; - made :siblnext and :siblprev accept [count] range (thanks to filterfalse); - made :tree pick up list of files from custom view (thanks to filterfalse); - made :highlight update file-specific group on exact match of the pattern instead of appending new rule (thanks to aleksejrs); - remove empty directories which are specified in 'trashdir' with %r and/or %u automatically on :empty (thanks to Marcin Kurczewski, a.k.a. rr-). :set command and options: - added "inode" sorting key, which sorts entries by inode number (thanks to eco0414); - added 'millerview' option that enables cascading columns interface for the view (thanks to sudo-nice); - added 'milleroptions' option that configures miller view; - added 'lsoptions' option that allows to get transposed grid in ls-like view (thanks to Dmitry Frank, a.k.a. dimonomid); - added 'previewprg' option, which can be used to override :fileviewer commands either temporarily or permanently (thanks to svenn71); - added {root} key to 'viewcolumns' option (complements {ext}) (thanks to Oleg Gordienko, a.k.a. gordio); - added "u" flag to the 'tuioptions' option. It enables use of Unicode characters in the TUI (Unicode ellipsis instead of "...") (thanks to Oleg Gordienko, a.k.a. gordio); - added "foldsubkeys" value to the 'suggestoptions' option. It folds multiple suggestions with common prefix into one entry (thanks to AndreaHasani). Normal and visual modes: - added [r/]r/[R/]R normal mode shortcuts that map to :siblprev and :siblnext with and without wrapping correspondingly (thanks to filterfalse); - do not go to start of line on Ctrl-U/Ctrl-D/Ctrl-F/Ctrl-B/G in ls-like view; - H/M/L keys in ls-like view now account for columns; - instead of invalidating directory size previously calculated via ga/gA on detecting changes in the directory recalculate its size and propagate update through its parents (thanks to filterfalse). Macros: - added %x macro to 'rulerformat' (and thus to 'statusline') as a new name for %-, which conflicts with alignment specification and requires explicit width specifier (%0-) (thanks to Marcos Cruz). Scripting: - added term() builtin function, which differs from system() only by its ability to run interactive applications without confusing vifm's interactions with the terminal (thanks to Dmitry Frank, a.k.a. dimonomid); - added v:count and v:count1 builtin variables. They are assigned to count passed to : command; - don't trigger DirEnter event with previous directory on startup when list of files is specified on stdin (thanks to filterfalse). Invocation: - added `--remote-expr` command-line option, which gives ability to query state of an instance (thanks to Marcin Kurczewski, a.k.a. rr-). Completion: - added completion of filename-specific highlight groups for :highlight command. Color schemes: - added AuxWin highlight group for highlighting auxiliary parts of windows. TUI (Text User Interface): - extend width of the cursor in ls-like view to the width of the cell (thanks to Dmitry Frank, a.k.a. dimonomid); - indicate preview created with %q with "Command: cmd"; - duplicate status bar error in dialog that reports sourcing error. Will need to get rid of errors on status bar later. Performance: - improved performance of mime-type detection when using libmagic (now might be about seven times faster by avoiding reinitialization of the library); - don't force file list reload after `:!` and rely on change detection. This should result in somewhat better performance (thanks to opennota). Documentation: - documented more details about 'vicmd' and 'vixcmd' options (thanks to Sebastian Cyprych). Vim-plugin: - disabled spell checking of vifm files in Vim except for comments. Only on Windows: - fixed running commands with arguments on Windows when 'shell' isn't cmd.exe. Important fixes: - fixed consuming 100% of CPU on certain pattern of running background processes (thanks to petRUShka); - fixed turning quickview into explore view when preview command doesn't contain macros. Was broken since 0.8; - fixed the plugin in neovim (patch by John Shea, a.k.a. coachshea); - fixed cloning of files like `.name` to produce `.name(1)` instead of `(1).name` (thanks to filterfalse); - fixed directory size in status line (patch by Dmitry Frank, a.k.a. dimonomid); - fixed CWD of the process not matching current view after vifm picked up change in file system (patch by Daniel Mueller); - fixed :normal command resetting selection (thanks to filterfalse); - fixed stopping of put operation after copying symbolic link that's broken on destination (thanks to filterfalse); - fixed a "race" with file system when we could load outdated file list and thus miss some file system updates. See change log for the full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ January 22, 2018 ================ vifm v0.9.1 beta ---------------- This version adds to the list of ways for viewing files by introducing miller columns view and transposed ls-like view (table view). Other developments are related to integration between builtin features as well as with external applications. The beta stage will last about two weeks. In case any serious bugs are found during this period, another beta version might be released. Main changes: - introduced file view mode known as miller columns or cascading lists; - added ability to transpose ls-like view to make it fill by columns; - more natural behaviour of movement keys in ls-like view; - new `--remote-expr` command-line option can be used to query state of running instances; - extended retry/ignore/abort query to all file operations; - more control over highlight groups via `:highlight` suitable for interactive changes; - mostly eliminated the need for repeating ga/gA commands through automatic size recalculation. More detailed list of changes. File operations: - added retry/ignore/abort prompt for file copying and directory/file/symlink creation when 'syscalls' is on (thanks to einhander); - better detection of write errors on file copying. The error was reported, but it wasn't treated as a hard error in a specific case related to caching. Command-line mode: - added :histnext/:histprev commands, which are analogous to Ctrl-I/Ctrl-O (patch by Dmitry Frank, a.k.a. dimonomid); - added ability to remove filename-specific highlighting rules with `:highlight clear {pattern}` (thanks to aleksejrs); - changed :filter command to accept pattern (//, ////, {} or {{}}) (thanks to rbong); - made :siblnext and :siblprev commands respect dot and name filters; - made :siblnext and :siblprev accept [count] range (thanks to filterfalse); - made :tree pick up list of files from custom view (thanks to filterfalse); - made :highlight update file-specific group on exact match of the pattern instead of appending new rule (thanks to aleksejrs); - remove empty directories which are specified in 'trashdir' with %r and/or %u automatically on :empty (thanks to Marcin Kurczewski, a.k.a. rr-). :set command and options: - added "inode" sorting key, which sorts entries by inode number (thanks to eco0414); - added 'millerview' option that enables cascading columns interface for the view (thanks to sudo-nice); - added 'milleroptions' option that configures miller view; - added 'lsoptions' option that allows to get transposed grid in ls-like view (thanks to Dmitry Frank, a.k.a. dimonomid); - added 'previewprg' option, which can be used to override :fileviewer commands either temporarily or permanently (thanks to svenn71); - added {root} key to 'viewcolumns' option (complements {ext}) (thanks to Oleg Gordienko, a.k.a. gordio); - added "u" flag to the 'tuioptions' option. It enables use of Unicode characters in the TUI (Unicode ellipsis instead of "...") (thanks to Oleg Gordienko, a.k.a. gordio); - added "foldsubkeys" value to the 'suggestoptions' option. It folds multiple suggestions with common prefix into one entry (thanks to AndreaHasani). Normal and visual modes: - added [r/]r/[R/]R normal mode shortcuts that map to :siblprev and :siblnext with and without wrapping correspondingly (thanks to filterfalse); - do not go to start of line on Ctrl-U/Ctrl-D/Ctrl-F/Ctrl-B/G in ls-like view; - H/M/L keys in ls-like view now account for columns; - instead of invalidating directory size previously calculated via ga/gA on detecting changes in the directory recalculate its size and propagate update through its parents (thanks to filterfalse). Macros: - added %x macro to 'rulerformat' (and thus to 'statusline') as a new name for %-, which conflicts with alignment specification and requires explicit width specifier (%0-) (thanks to Marcos Cruz). Scripting: - added term() builtin function, which differs from system() only by its ability to run interactive applications without confusing vifm's interactions with the terminal (thanks to Dmitry Frank, a.k.a. dimonomid); - added v:count and v:count1 builtin variables. They are assigned to count passed to : command; - don't trigger DirEnter event with previous directory on startup when list of files is specified on stdin (thanks to filterfalse). Invocation: - added `--remote-expr` command-line option, which gives ability to query state of an instance (thanks to Marcin Kurczewski, a.k.a. rr-). Completion: - added completion of filename-specific highlight groups for :highlight command. Color schemes: - added AuxWin highlight group for highlighting auxiliary parts of windows. TUI (Text User Interface): - extend width of the cursor in ls-like view to the width of the cell (thanks to Dmitry Frank, a.k.a. dimonomid); - indicate preview created with %q with "Command: cmd"; - duplicate status bar error in dialog that reports sourcing error. Will need to get rid of errors on status bar later. Performance: - improved performance of mime-type detection when using libmagic (now might be about seven times faster by avoiding reinitialization of the library); - don't force file list reload after `:!` and rely on change detection. This should result in somewhat better performance (thanks to opennota). Documentation: - documented more details about 'vicmd' and 'vixcmd' options (thanks to Sebastian Cyprych). Vim-plugin: - disabled spell checking of vifm files in Vim except for comments. Only on Windows: - fixed running commands with arguments on Windows when 'shell' isn't cmd.exe. Important fixes: - fixed consuming 100% of CPU on certain pattern of running background processes (thanks to petRUShka); - fixed turning quickview into explore view when preview command doesn't contain macros. Was broken since 0.8; - fixed the plugin in neovim (patch by John Shea, a.k.a. coachshea); - fixed cloning of files like `.name` to produce `.name(1)` instead of `(1).name` (thanks to filterfalse); - fixed directory size in status line (patch by Dmitry Frank, a.k.a. dimonomid); - fixed CWD of the process not matching current view after vifm picked up change in file system (patch by Daniel Mueller); - fixed :normal command resetting selection (thanks to filterfalse); - fixed stopping of put operation after copying symbolic link that's broken on destination (thanks to filterfalse); - fixed a "race" with file system when we could load outdated file list and thus miss some file system updates. See change log for the full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ June 18, 2017 ============= vifm v0.9 --------- New version brings two new ways of viewing and processing file lists, namely tree-view and directory-comparison. As usual, previously existing facilities were extended and improved to become more useful. Thanks to everyone who tried out the beta, especially filterfalse. Main changes: - introduced tree-like representation of files; - added directory comparison facilities; - added ability to restore last navigation menu; - background operations and programs can now be cancelled; - dismissed error output of external programs can now be queried; - added shell completion for bash and zsh; - now it's possible to configure mappings in dialogs. More detailed list of changes. Packaging: - Removed -Werror in tests from non-developer builds. Command-line mode: - added :tree command that converts current view into a tree (thanks to filterfalse and Kornel); - added :dmap, :dnoremap and :dunmap commands to configure mappings in dialogs (thanks to Sassan Haradji, a.k.a. sassanh); - added "tree" parameter to :sync! that enables synchronization of tree view (thanks to filterfalse); - added :compare command to perform comparison in one or two directory trees (thanks to anonymous on SourceForge discussion forum and aleksejrs); - added :copen command to restore last menu that supports navigation (thanks to Sassan Haradji, a.k.a. sassanh); - added :screen! form that enables terminal multiplexers support (instead of toggling it as :screen does) (thanks to Marcos Cruz); - added :siblnext and :siblprev commands. They change directory to next or previous sibling directories of current path (in global sorting order of current pane) (thanks to sudo-nice); - made :put, :touch and :mkdir accept [line] range, which can be used to specify target position in tree-view (thanks to filterfalse); - accept paths in :touch, not just file names (thanks to filterfalse); - disallow applying :chmod on ".." entry; - disallow selecting ".." entry with :select command; - expand macros in `:[un]select !{command}` (thanks to Michael Corvin). Macros: - added %Iu and %IU macros, which are %u and %U equivalents, but work better if external command is interactive and changes terminal state; - added %q macro that redirects command output into quick view (thanks to svenn71). :set command and options: - added 'dotfiles' (local) option, which exposes dot files filter as an option (thanks to filterfalse); - added 'caseoptions' option that enables more fine-grained control over case sensitivity (thanks to Alexandru Geana, a.k.a. alegen); - added 'sizefmt' option that configures formatting of human-friendly size (thanks to sudo-nice); - added %f 'statusline' macro that inserts relative path of the entry, which might be useful for non-regular views (thanks to filterfalse); - added %D 'statusline' macro that displays path of the other pane in single-pane layout (thanks to sudo-nice); - added %T 'statusline' macro that displays symbolic link target (thanks to sudo-nice); - added %a 'statusline' macro that displays amount of free space available at current partition (thanks to sudo-nice); - consider trailing slash for directories or symbolic links that point to directories in 'classify' patterns by file name (e.g., this works now: `[::*/::]`); - better handling of setting 'fillchars' to incorrect or excessive value. Normal and visual modes: - added [d and ]d shortcuts to navigate to previous/next directory entry (thanks to filterfalse); - added [s and ]s shortcuts to navigate to previous/next selected entry (thanks to filterfalse); - added [z and ]z shortcuts to navigate to first/last sibling in a tree (thanks to filterfalse); - added zj and zk shortcuts to navigate to next/previous directory sibling in a tree (thanks to filterfalse); - added [c and ]c shortcuts to navigate to previous/next mismatch in directory comparison view (thanks to filterfalse); - added do and dp keys to compare views for applying changes in files (thanks to filterfalse). Menus and dialogs: - added dd key to :jobs menu, which requests cancellation of background operation. Background :put, :copy, :move, :delete, size calculation with ga and gA as well as applications started in background can be cancelled this way (thanks to blurm); - added e key to :jobs menu that displays list of errors issues by that jobs, if any. h key goes back to :jobs menu; - added % key to menu mode, which navigates to [count]-th percent of the list; - added meaning to [count] of cp shortcut, which is now processed as numerical argument for non-recursive `chmod` command (thanks to sudo-nice); - partially return progress report for menus. Was disabled by introduction of null byte heuristic. File operations: - enable restoring files from trash from custom views; - disallow moving/copying/linking files into custom view (put is forbidden, so makes sense to forbid these too); - try harder to move files by not giving up on getting permission error, which isn't always a reliable indication of actual permission error. Only when 'syscalls' is on (thanks to Marcin Kurczewski, a.k.a. rr-). File preview: - view current directory on ".." for quickview/view mode if no viewer matches such entry (thanks to filterfalse); - enable cancellation of tree preview construction (thanks to filterfalse); - do not resolve symbolic links in directory preview (thanks to filterfalse). Security: - make temporary rename files accessible only by the user (thanks to aleksejrs). Performance: - improve performance of startup and exit by omitting file existence checks. The cost is possibly old files staying in the state, but it should be for long time (thanks to Marcin Kurczewski, a.k.a. rr-); - improved sorting performance in the presence of huge amount of symbolic links (thanks to Marcin Kurczewski, a.k.a. rr-). Invocation: - don't disable preview on `--remote --select` if it doesn't hide updated pane (thanks to Marcin Kurczewski, a.k.a. rr-); - make +{num} and similar options work (actually affect cursor of the view) (thanks to filterfalse); - treat "+" option the same way as Vim (like :$) (thanks to filterfalse). Scripting: - added v:servername variable, which provides access to server name of the running instance used by --remote feature (thanks to Marcin Kurczewski, a.k.a. rr-); - getpanetype() got new value ("tree") to indicate tree-view (thanks to filterfalse). TUI (Text User Interface): - limited maximum height of message popup, just print how many lines we're skipping; - put hardware cursor according to current mode and cursor within it (thanks to Tyler Spivey); - display path to the conflicting file in conflict resolution dialog; - provide better messages on i/o errors with 'syscalls' (thanks to Behrooz). File filtering: - don't move cursor off "../" before start of local filtering (thanks to filterfalse); - prevent clearing filters on zM if there were no zO preceding it (thanks to sudo-nice). Color schemes: - added CmpMismatch highlight group for highlighting mismatched files on side-by-side comparison. Integration: - added completion scripts for bash and zsh (patches by filterfalse); - escape first tilde in paths that go to the shell (thanks to Marius Schmidl); - resolve symbolic link for listing associated programs from desktop-files (thanks to filterfalse). Vim-plugin: - work around :drop command being disabled in the plugin (thanks to Phil Runninger); - fixed inconsistent behaviour of :EditVifm in plugin with regard to "[No Name]" buffer (thanks to Phil Runninger); - fixed plugin in versions of Vim where :argadd without argument doesn't work (thanks to eco0414). Only on Windows: - use <exe file location>/data/colors as global storage of color schemes on Windows (thanks to r44083); - handle terminal resize on Windows 10 (thanks to randomizedthinking); - properly recover from invalid/strange UNC root on Windows. Don't end up with empty filelist; - fixed use of non-latin characters in environment variables and command-line options (thanks to khaoos-abominable). Important fixes: - fixed redirecting stdout of background commands to /dev/null, which could be unwritable descriptor (thanks to c02y); - fixed possible data loss on moving/copying files over their own parent or child directories via p, P, :move, :copy, :alink and :rlink (thanks to Marius Schmidl); - fixed detection of too-small-terminal state; - fixed treating characters like š and ć (with low Unicode values, just above 0x100) as functional keys on input (thanks to granderil). Other changes: - changed size formatting to round from zero (matches behaviour of e.g. `ls`); - read error output of background commands independently of main thread (prevents blocking of tools which produce huge amount of output) (thanks to Stas Malavin); - no vifminfo merging if file change isn't detected. Might result in faster quitting in some cases. Not accounting for some changes is still possible when multiple instances quit simultaneously, but same could happen without this change; - made search consider trailing slash for directories and symbolic links that point to directories (thanks to filterfalse); - don't use :filextype in sample vifmrc for OS X, we can't tell whether graphical system is running (thanks to piotryordanov). See change log for the full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ June 04, 2017 ============= vifm v0.9 beta -------------- New version brings two new ways of viewing and processing file lists, namely tree-view and directory-comparison. As usual, previously existing facilities were extended and improved to become more useful. The beta stage will last about two weeks. In case any serious bugs are found during this period, another beta version might be released. Main changes: - introduced tree-like representation of files; - added directory comparison facilities; - added ability to restore last navigation menu; - background operations and programs can now be cancelled; - dismissed error output of external programs can now be queried; - added shell completion for bash and zsh; - now it's possible to configure mappings in dialogs. More detailed list of changes. Packaging: - Removed -Werror in tests from non-developer builds. Command-line mode: - added :tree command that converts current view into a tree (thanks to filterfalse and Kornel); - added :dmap, :dnoremap and :dunmap commands to configure mappings in dialogs (thanks to Sassan Haradji, a.k.a. sassanh); - added "tree" parameter to :sync! that enables synchronization of tree view (thanks to filterfalse); - added :compare command to perform comparison in one or two directory trees (thanks to anonymous on SourceForge discussion forum and aleksejrs); - added :copen command to restore last menu that supports navigation (thanks to Sassan Haradji, a.k.a. sassanh); - added :screen! form that enables terminal multiplexers support (instead of toggling it as :screen does) (thanks to Marcos Cruz); - added :siblnext and :siblprev commands. They change directory to next or previous sibling directories of current path (in global sorting order of current pane) (thanks to sudo-nice); - made :put, :touch and :mkdir accept [line] range, which can be used to specify target position in tree-view (thanks to filterfalse); - accept paths in :touch, not just file names (thanks to filterfalse); - disallow applying :chmod on ".." entry; - disallow selecting ".." entry with :select command. Macros: - added %Iu and %IU macros, which are %u and %U equivalents, but work better if external command is interactive and changes terminal state; - added %q macro that redirects command output into quick view (thanks to svenn71). :set command and options: - added 'dotfiles' (local) option, which exposes dot files filter as an option (thanks to filterfalse); - added 'caseoptions' option that enables more fine-grained control over case sensitivity (thanks to Alexandru Geana, a.k.a. alegen); - added 'sizefmt' option that configures formatting of human-friendly size (thanks to sudo-nice); - added %f 'statusline' macro that inserts relative path of the entry, which might be useful for non-regular views (thanks to filterfalse); - added %D 'statusline' macro that displays path of the other pane in single-pane layout (thanks to sudo-nice); - added %T 'statusline' macro that displays symbolic link target (thanks to sudo-nice); - added %a 'statusline' macro that displays amount of free space available at current partition (thanks to sudo-nice); - consider trailing slash for directories or symbolic links that point to directories in 'classify' patterns by file name (e.g., this works now: `[::*/::]`); - better handling of setting 'fillchars' to incorrect or excessive value. Normal and visual modes: - added [d and ]d shortcuts to navigate to previous/next directory entry (thanks to filterfalse); - added [s and ]s shortcuts to navigate to previous/next selected entry (thanks to filterfalse); - added [z and ]z shortcuts to navigate to first/last sibling in a tree (thanks to filterfalse); - added zj and zk shortcuts to navigate to next/previous directory sibling in a tree (thanks to filterfalse); - added [c and ]c shortcuts to navigate to previous/next mismatch in directory comparison view (thanks to filterfalse); - added do and dp keys to compare views for applying changes in files (thanks to filterfalse). Menus and dialogs: - added dd key to :jobs menu, which requests cancellation of background operation. Background :put, :copy, :move, :delete, size calculation with ga and gA as well as applications started in background can be cancelled this way (thanks to blurm); - added e key to :jobs menu that displays list of errors issues by that jobs, if any. h key goes back to :jobs menu; - added % key to menu mode, which navigates to [count]-th percent of the list; - added meaning to [count] of cp shortcut, which is now processed as numerical argument for non-recursive `chmod` command (thanks to sudo-nice); - partially return progress report for menus. Was disabled by introduction of null byte heuristic. File operations: - enable restoring files from trash from custom views; - disallow moving/copying/linking files into custom view (put is forbidden, so makes sense to forbid these too); - try harder to move files by not giving up on getting permission error, which isn't always a reliable indication of actual permission error. Only when 'syscalls' is on (thanks to Marcin Kurczewski, a.k.a. rr-). File preview: - view current directory on ".." for quickview/view mode (thanks to filterfalse); - enable cancellation of tree preview construction (thanks to filterfalse); - do not resolve symbolic links in directory preview (thanks to filterfalse). Security: - make temporary rename files accessible only by the user (thanks to aleksejrs). Performance: - improve performance of startup and exit by omitting file existence checks. The cost is possibly old files staying in the state, but it should be for long time (thanks to Marcin Kurczewski, a.k.a. rr-); - improved sorting performance in the presence of huge amount of symbolic links (thanks to Marcin Kurczewski, a.k.a. rr-). Invocation: - don't disable preview on `--remote --select` if it doesn't hide updated pane (thanks to Marcin Kurczewski, a.k.a. rr-); - make +{num} and similar options work (actually affect cursor of the view) (thanks to filterfalse); - treat "+" option the same way as Vim (like :$) (thanks to filterfalse). Scripting: - added v:servername variable, which provides access to server name of the running instance used by --remote feature (thanks to Marcin Kurczewski, a.k.a. rr-); - getpanetype() got new value ("tree") to indicate tree-view (thanks to filterfalse). TUI (Text User Interface): - limited maximum height of message popup, just print how many lines we're skipping; - put hardware cursor according to current mode and cursor within it (thanks to Tyler Spivey); - display path to the conflicting file in conflict resolution dialog; - provide better messages on i/o errors with 'syscalls' (thanks to Behrooz). File filtering: - don't move cursor off "../" before start of local filtering (thanks to filterfalse); - prevent clearing filters on zM if there were no zO preceding it (thanks to sudo-nice). Color schemes: - added CmpMismatch highlight group for highlighting mismatched files on side-by-side comparison. Integration: - added completion scripts for bash and zsh (patches by filterfalse); - escape first tilde in paths that go to the shell (thanks to Marius Schmidl); - resolve symbolic link for listing associated programs from desktop-files (thanks to filterfalse). Vim-plugin: - work around :drop command being disabled in the plugin (thanks to Phil Runninger); - fixed inconsistent behaviour of :EditVifm in plugin with regard to "[No Name]" buffer (thanks to Phil Runninger); - fixed plugin in versions of Vim where :argadd without argument doesn't work (thanks to eco0414). Only on Windows: - use <exe file location>/data/colors as global storage of color schemes on Windows (thanks to r44083); - handle terminal resize on Windows 10 (thanks to randomizedthinking); - properly recover from invalid/strange UNC root on Windows. Don't end up with empty filelist; - fixed use of non-latin characters in environment variables and command-line options (thanks to khaoos-abominable). Important fixes: - fixed redirecting stdout of background commands to /dev/null, which could be unwritable descriptor (thanks to c02y); - fixed possible data loss on moving/copying files over their own parent or child directories via p, P, :move, :copy, :alink and :rlink (thanks to Marius Schmidl); - fixed detection of too-small-terminal state; - fixed treating characters like š and ć (with low Unicode values, just above 0x100) as functional keys on input (thanks to granderil). Other changes: - changed size formatting to round from zero (matches behaviour of e.g. `ls`); - read error output of background commands independently of main thread (prevents blocking of tools which produce huge amount of output) (thanks to Stas Malavin); - no vifminfo merging if file change isn't detected. Might result in faster quitting in some cases. Not accounting for some changes is still possible when multiple instances quit simultaneously, but same could happen without this change; - made search consider trailing slash for directories and symbolic links that point to directories (thanks to filterfalse). See change log for the full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ July 16, 2016 ============= vifm v0.8.2 ----------- This release brings a bit of user-friendliness in form of key suggestions and various descriptions provided in the interface. Matching of files has been extended in many ways and become significantly more powerful than before. Menu mode also got several enhancements. Thanks to everyone who found time to try the beta. Main changes: - key suggestions in the interface on ambiguous input (e.g. "g"); - helpful shortcuts for dialogs (for sort dialog in particular); - key descriptions in :map menus and %z macro for 'statusline' to display some tips; - description of all :commands, 'options' and their values for new multiline version of wildmenu; - ANDing, ORing and negating patterns for matching files and new mime-type matcher; - file prefixes and suffixes can now be multi-byte, which with extended 'classify' option allows specifying "icons" via custom fonts; - search result highlighting, enabled completion and a way to export the list for menus; - an indication of pattern correctness and match state for interactive prompts. - :select and :unselect commands to perform automatic file selection (possibly by using output of external application); - cancellation (handling of Ctrl-C) for quick view and view mode loading. Not sure if it was noticed, but HTTPS protocol is up for related sites since Let's Encrypt started their beta. Everything works fine, so all the links were updated to https protocol. If you ever wondered which keys are builtin for the command (normal) mode of Vifm, this cheatsheet will show you: https://next.vifm.info/cheatsheets.shtml In case you're into using neovim, you might be interesting into checking out alternative Vifm plugin for it: https://github.com/vifm/neovim-vifm More detailed list of changes. Core: - added heuristic that uses null byte as separator for file lists if there is at least one such byte, otherwise normal line separators are used. This affects :[un]select, `vifm -`, %u, %U, %m and %M (thanks to filterfalse); - changed order of initialization to perform autocommands before startup commands on launch. Normal and visual modes: - changed ga/gA effect on parent entry (..) to calculate size of current directory (thanks to aleksejrs). :set command and options: - added 'wildstyle' option to control the way wild menu is displayed. Enables displaying it as a menu with one item per line (thanks to santhoshr and octos); - added 'suggestoptions' option to control displaying of suggestions; - added support of patterns to 'classify' option, so that files can now be decorated based on their names (thanks to elricbk); - added 'cvoptions' option to control when entering/leaving custom views is considered to be equal to entering/leaving directories (thanks to filterfalse); - added "target" sorting key, which sorts files by symbolic link targets (thanks to Marcos Cruz); - added %z 'statusline' macro that inserts text of a short tip picked at random (thanks to qinghao, a.k.a. haobug); - changed type of 'confirm' option. Now it's a set that picks which operations should be confirmed (thanks to Losiara and mvucBmM0); - allow suffixes and prefixes in 'classify' to be of up to eight characters in length (thanks to elricbk). Command-line mode: - added "filelist" parameter to :sync! that enables synchronization of custom view (thanks to filterfalse); - added :select and :unselect commands (thanks to filterfalse, Russell Urquhart and Marcos Cruz); - added negation to patterns with explicitly specified type (surrounded by {} or //). Put exclamation mark to invert pattern match (thanks to Marcos Cruz); - added mime type patterns ([!]<list-of-globs>) (thanks to Ross Hadden, a.k.a. rosshadden); - added pattern ANDing. Just list decorated patterns one after another and such composite pattern will much when each of them matches (thanks to filterfalse); - added pattern ORing for :file[x]type and :fileviewer commands implemented as a comma-separated list (thanks to filterfalse); - expand environment variables for :edit (thanks to filterfalse); - don't print just table header on `:cabbr something`, print message that no matches found instead; - use original (before custom view) cursor position on :sync! in custom views (thanks to filterfalse). File preview: - added cancellation (handling of Ctrl-C) for quick view and view mode loading (thanks to kalterfive); - skip UTF-8 BOM for file preview. File list: - never add parent entry (..) to very custom view (%U) (thanks to filterfalse); - silently ignore tries to remove parent entry (..) (thanks to aleksejrs); - automatically update custom view entries on rename of their parent directory in the same custom view. Completion: - added completion of :wincmd argument; - do not reset completion on terminal resize; - some corrections of when completion happens for :find and :grep. Scripting: - added chooseopt() builtin function that retrieves various parameters of file choosing (thanks to Von Welch). Menus and dialogs: - added highlighting of search matches in menus; - added :noh[lsearch] command to menu mode; - added quick shortcuts to dialogs (patch by oo-); - added description of builtin keys to :map menus; - added :write command to menus, that writes all menu lines into specified file (thanks to gtors); - a bit better delete confirmation messages with number of files to be deleted; - avoid displaying useless search messages about incorrect pattern during interactive search in menus (those that user can't see, but that are shown in :messages); - enabled wildmenu for menus. TUI (Text User Interface): - added indication of wrong pattern and absence of matches to command-prompt for interactive search/filtering. Angle bracket notation: - display <c-h> as <bs> only at the beginning of key sequence. Color schemes: - added SuggestBox highlight group for key suggestion box. Vim-plugin: - added support for matchit to filetype plugin (patch by filterfalse); - better terminal buffer title for plugin in neovim (thanks to randomizedthinking); - improved syntax highlighting of patterns. Only on Windows: - fixed escaping for cmd.exe again, for :edit and external command invocations (thanks to Reva Revadigar); - fixed querying file information on 64-bit Windows (thanks to santhoshr); - fixed possible crash on displaying job bar (e.g. after :empty) (thanks to Reva Revadigar); - fixed UTF8 <-> UTF16 conversion, which didn't always work (on surrogate characters it seems) (thanks to Reva Revadigar); - fixed possible unexpectedly long timeouts when waiting for a key (due to limitation of pdcurses); - fixed displaying of wide (CJK) characters in pdcurses (thanks to Reva Revadigar); - fixed capturing output of external applications when 'shell' is "cmd". Was broken since v0.8 in an attempt to make cmd work better with Unicode (but its /U flag affects only input and output streams). Packaging: - fixed functioning on architectures on which `char` is unsigned by default (thanks to Ondrej Novy, a.k.a. onovy). Important fixes: - fixed hanging on sudden terminal loss (regression) (thanks to aleksejrs); - fixed using original file names after a prompt for new destination name (thanks to rbong); - fixed unconditional resetting of executable permission when using cp dialog (thanks to Svyatoslav Mishyn, a.k.a. juef); - fixed remote feature on cygwin (thanks to Cosmin Popescu, a.k.a. cosminadrianpopescu); - fixed epic bug in processing selectors followed by other commands in a mapping. Command which accepted selector was called after tail of sequence is processed. Such case isn't very likely, so it probably didn't affect anyone. See change log for the full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ July 02, 2016 ============= vifm v0.8.2 beta testing has started ------------------------------------ This release brings a bit of user-friendliness in form of key suggestions and various descriptions provided in the interface. Matching of files has been extended in many ways and become significantly more powerful than before. Menu mode also got several enhancements. Main changes: - key suggestions in the interface on ambiguous input (e.g. "g"); - helpful shortcuts for dialogs (for sort dialog in particular); - key descriptions in :map menus and %z macro for 'statusline' to display some tips; - description of all :commands, 'options' and their values for new multiline version of wildmenu; - ANDing, ORing and negating patterns for matching files and new mime-type matcher; - file prefixes and suffixes can now be multi-byte, which with extended 'classify' option allows specifying "icons" via custom fonts; - search result highlighting, enabled completion and a way to export the list for menus; - an indication of pattern correctness and match state for interactive prompts. - :select and :unselect commands to perform automatic file selection (possibly by using output of external application); - cancellation (handling of Ctrl-C) for quick view and view mode loading. Not sure if it was noticed, but HTTPS protocol is up for related sites since Let's Encrypt started their beta. Everything works fine, so all the links were updated to https protocol. If you ever wondered which keys are builtin for the command (normal) mode of Vifm, this cheatsheet will show you: https://next.vifm.info/cheatsheets.shtml In case you're into using neovim, you might be interesting into checking out alternative Vifm plugin for it: https://github.com/vifm/neovim-vifm More detailed list of changes. Core: - added heuristic that uses null byte as separator for file lists if there is at least one such byte, otherwise normal line separators are used. This affects :[un]select, `vifm -`, %u, %U, %m and %M (thanks to filterfalse); - changed order of initialization to perform autocommands before startup commands on launch. Normal and visual modes: - changed ga/gA effect on parent entry (..) to calculate size of current directory (thanks to aleksejrs). :set command and options: - added 'wildstyle' option to control the way wild menu is displayed. Enables displaying it as a menu with one item per line (thanks to santhoshr and octos); - added 'suggestoptions' option to control displaying of suggestions; - added support of patterns to 'classify' option, so that files can now be decorated based on their names (thanks to elricbk); - added 'cvoptions' option to control when entering/leaving custom views is considered to be equal to entering/leaving directories (thanks to filterfalse); - added "target" sorting key, which sorts files by symbolic link targets (thanks to Marcos Cruz); - added %z 'statusline' macro that inserts text of a short tip picked at random (thanks to qinghao, a.k.a. haobug); - changed type of 'confirm' option. Now it's a set that picks which operations should be confirmed (thanks to Losiara and mvucBmM0); - allow suffixes and prefixes in 'classify' to be of up to eight characters in length (thanks to elricbk). Command-line mode: - added "filelist" parameter to :sync! that enables synchronization of custom view (thanks to filterfalse); - added :select and :unselect commands (thanks to filterfalse, Russell Urquhart and Marcos Cruz); - added negation to patterns with explicitly specified type (surrounded by {} or //). Put exclamation mark to invert pattern match (thanks to Marcos Cruz); - added mime type patterns ([!]<list-of-globs>) (thanks to Ross Hadden, a.k.a. rosshadden); - added pattern ANDing. Just list decorated patterns one after another and such composite pattern will much when each of them matches (thanks to filterfalse); - added pattern ORing for :file[x]type and :fileviewer commands implemented as a comma-separated list (thanks to filterfalse); - expand environment variables for :edit (thanks to filterfalse); - don't print just table header on `:cabbr something`, print message that no matches found instead; - use original (before custom view) cursor position on :sync! in custom views (thanks to filterfalse). File preview: - added cancellation (handling of Ctrl-C) for quick view and view mode loading (thanks to kalterfive); - skip UTF-8 BOM for file preview. File list: - never add parent entry (..) to very custom view (%U) (thanks to filterfalse); - silently ignore tries to remove parent entry (..) (thanks to aleksejrs); - automatically update custom view entries on rename of their parent directory in the same custom view. Completion: - added completion of :wincmd argument; - do not reset completion on terminal resize; - some corrections of when completion happens for :find and :grep. Scripting: - added chooseopt() builtin function that retrieves various parameters of file choosing (thanks to Von Welch). Menus and dialogs: - added highlighting of search matches in menus; - added :noh[lsearch] command to menu mode; - added quick shortcuts to dialogs (patch by oo-); - added description of builtin keys to :map menus; - added :write command to menus, that writes all menu lines into specified file (thanks to gtors); - a bit better delete confirmation messages with number of files to be deleted; - avoid displaying useless search messages about incorrect pattern during interactive search in menus (those that user can't see, but that are shown in :messages); - enabled wildmenu for menus. TUI (Text User Interface): - added indication of wrong pattern and absence of matches to command-prompt for interactive search/filtering. Angle bracket notation: - display <c-h> as <bs> only at the beginning of key sequence. Color schemes: - added SuggestBox highlight group for key suggestion box. Vim-plugin: - better terminal buffer title for plugin in neovim (thanks to randomizedthinking); - improved syntax highlighting of patterns. Only on Windows: - fixed escaping for cmd.exe again, for :edit and external command invocations (thanks to Reva Revadigar); - fixed querying file information on 64-bit Windows (thanks to santhoshr); - fixed possible crash on displaying job bar (e.g. after :empty) (thanks to Reva Revadigar); - fixed UTF8 <-> UTF16 conversion, which didn't always work (on surrogate characters it seems) (thanks to Reva Revadigar); - fixed possible unexpectedly long timeouts when waiting for a key (due to limitation of pdcurses); - fixed displaying of wide (CJK) characters in pdcurses (thanks to Reva Revadigar); - fixed capturing output of external applications when 'shell' is "cmd". Was broken since v0.8 in an attempt to make cmd work better with Unicode (but its /U flag affects only input and output streams). Packaging: - fixed functioning on architectures on which `char` is unsigned by default (thanks to Ondrej Novy, a.k.a. onovy). Important fixes: - fixed hanging on sudden terminal loss (regression) (thanks to aleksejrs); - fixed using original file names after a prompt for new destination name (thanks to rbong); - fixed unconditional resetting of executable permission when using cp dialog (thanks to Svyatoslav Mishyn, a.k.a. juef); - fixed remote feature on cygwin (thanks to Cosmin Popescu, a.k.a. cosminadrianpopescu); - fixed epic bug in processing selectors followed by other commands in a mapping. Command which accepted selector was called after tail of sequence is processed. Such case isn't very likely, so it probably didn't affect anyone. See change log for the full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ February 10, 2016 ================= vifm v0.8.1a ------------ This is a bugfix release to primarily address messed up single-executable builds for Windows. Tab completion doesn't work there and can cause crashes. Also 64-bit build somehow contains 32-bit executables. Thanks to Reva Revadigar for reporting the issue. On the bright side, this gives a chance for fixing bugs discovered after the release. There was also time to add some functional changes, which also made it into this release: - added c key to menus that inserts parts of menu line into command-line (thanks to filterfalse); - added { and } keys to normal and visual modes. They act similar to ( and), but always consider whether entry is a file or directory (thanks to octos); - added --disable-build-timestamp option to configure script to perform reproducible build (thanks to Hendrik Jaeger, a.k.a. henk); - apply local filter on picking element of `:history filter` menu; - handle register specified for gs normal mode command. Select files listed in that register (thanks to filterfalse); - be consistent with regard to when local state is changed and do not reset neither local options nor local filter on entering/leaving custom view (thanks to filterfalse); - disallow adding duplicated filetype/fileviewer entries (just ignore them as they wouldn't be used due to order priority anyway). Other notable fixes: - fixed storing filetypes in vifminfo, which could create duplicates (thanks to aleksejrs); - fixed --with-dyn-x11 configuration option, which failed to enable dynamic use of the library (thanks to Badalisc and Hendrik Jaeger, a.k.a. henk); - fixed using plugin in neovim, which has broken `system()` and :! commands (thanks to Artur Shaik, a.k.a. artur-shaik). See change log for the full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ January 17, 2016 ================ vifm v0.8.1 ----------- New minor version delivers primarily various small improvements of different kinds. There is also improvement of navigation via named bookmarks (or tags), which can ease keeping track of what is where, and an ability to apply settings to specific directories or sub-trees (via combination of autocommands and local options). Thanks to everyone who was reporting issues during beta period. Main changes: - added local options, which work until directory change; - added named bookmarks (paths are associated with tags); - added autocommands (with DirEnter event); - added ability to sort by regexp-extracted part of file name; - added builtin directory preview (similar to `tree`); - added a way to communicate menu contents to Vim quickfix; - added "more" mode that is used to handle status bar content that doesn't fit on the screen; - IPC got new (safe) implementation with listing/targeting of active instances, it's enabled by default again; - updating local view settings from vifmrc now affects both panes (:windo is not necessary); - more predictive cursor updates on directory reload; - improvements related to expression and command parsing. More detailed list of changes. Command-line mode: - added :setl[ocal] and :setg[lobal] commands to manage values of local options that are specific to current directory and are reset on directory change, similar to local options of Vim; - added :pu[t] command that inserts files into current directory (thanks to mvucBmM0); - added :winc[md] command-line command (thanks to fogine); - added exclamation mark to :shell to suppress spawning new teminal multiplexer pane (patch by Cosmin Popescu, a.k.a. cosminadrianpopescu). :set command and options: - added :set foo+=bar syntax for string options (append value); - added 'deleteprg' option, which specifies program to run on files that are permanently removed; - added 'dirsize' option to control how size of directories is displayed in file views. This enables one to see number of files in a directory rather than its size (thanks to Martin Fischer); - added optional %u and %U macros to 'findprg', 'grepprg', and 'locateprg' that allow immediate redirection of command output into custom view without opening a menu (thanks to filterfalse); - added 'iooptions' option to configure file system operations. Contains only "fastfilecloning" for btrfs so far (thanks to aleksejrs); - added special treatment for "*" as value of 'slowfs', which might be useful in case of very slow handling of requests to mounts enumeration (patch by Cosmin Popescu, a.k.a. cosminadrianpopescu); - added handling of "%u" in trash specification on *nix, which is replaced with real user ID (thanks to Regis); - allow 'shell' to specify a shell argument on *nix (thanks to loongw); - added 'sortgroups' option and "groups" sorting key, which allow sorting by parts of file names (thanks to aleksejrs); - added 'title' option to control whether title of terminal should be set. Enabled by default if old title can be restored (thanks to Svyatoslav Mishyn, a.k.a. juef); - make "p" in 'tuioptions' affect padding in quick view and view mode; - changed 'fusehome' default from temporary directory to data directory (that is $XDG_DATA_HOME/.local/share/fuse/ or $VIFM/fuse/ depending on which parent directory exists, the second one exists by definition, but first might not) (thanks to aleksejrs and to Hendrik Jaeger, a.k.a. henk); - changed default value of 'trashdir' on *nix again, this time to "%r/.vifm-Trash-%u,$VIFM/Trash,%r/.vifm-Trash". This way it's safer for privacy, although using %r is not very safe in general (thanks to Regis). Configuration: - make :set, :filter and :normal zo (and alike) in vifmrc affect all views, thus obsoleting use of :winrun or :windo for this purpose (they still work, the new way is a simpler and more obvious one). This is related to commands executed during vifmrc processing (not those in the right-hand side of mappings, commands, etc.); - automatically create ~/.vifm/scripts containing small README file if the directory doesn't exist on startup (thanks to fogine). Core: - added autocommands (DirEnter event and :au[tocmd] command) (thanks to filterfalse). File operations: - added retry/ignore/abort prompt for file/directory removal when 'syscalls' is on (thanks to Robert Sarkozi); - make use of file cloning feature of btrfs when possible and enabled in 'iooptions' (thanks to aleksejrs); - preserve file timestamps on copying files with 'syscalls' on (thanks to mvucBmM0); - employ inotify on GNU/Linux for more precise watching directories for changes; - copy timestamps and permissions on merging directories (thanks to willemw12). Navigation: - added named bookmarks (paths are associated with tags). This adds :bmark, :bmarks, :bmgo and :delbmarks command-line commands. Also there is new "bmarks" value for 'vifminfo' (thanks to Schmalzhaf Stefan). Normal and visual modes: - accept [count] for "h" and "gh"; - added zr normal mode key to reset local filter (thanks to filterfalse); - ctrl-W | and Ctrl-W _ now can set window size to given count (thanks to filterfalse). Key bindings: - remapping of builtin keys that are followed by selectors (e.g. `:nnoremap d y`) (thanks to mvucBmM0). Color schemes: - changed default colorscheme to invert colors of the current line. Documentation: - documented %= for 'statusline' and 'rulerformat'; - make --select option more prominent in documentation (thanks to Svyatoslav Mishyn, a.k.a. juef); - documented difference between paths in menu with and without trailing slash (thanks to filterfalse). Macros: - added %pc macro that splits preview command in two pices: preview command and clear command (thanks to Tomek K., a.k.a. TomiCode). Menus and dialogs: - added B key to menus, which acts like b, but creates unsorted (very custom) view (thanks to filterfalse); - added "v" key to menu mode that loads current contents into quickfix list of editor (Vim compatible one is assumed) (thanks to filterfalse); - added handling of dd in :trashes, :trashes? and :lstrashes, which either deletes an item in trash or empties trash (thanks to Svyatoslav Mishyn, a.k.a. juef); - somewhat more informative error titles on issues during file operations; - provide conflict resolution options in a dialog rather than on the command-line, which is hard to read with so many options; - expand "~" in menus on navigation. Packaging: - removed vifmrc-converter. It's been around for four years and not needed any more (thanks to filterfalse); - removed contents of autoconf.sh, autoreconf covers what was there (there is a notice in that script now about it just in case) (thanks to Hendrik Jaeger, a.k.a. henk); - added --with-sanitize=basic|thread|leak option to configure script; - added missing script that's necessary for %s macro in GNU screen. Was lost for a long time; - work around compilation on systems where MAX_ARG_STRLEN is defined, but unusable (thanks to Marcin Juszkiewicz, a.k.a. hrw, Michel Normand and Michael Vetter, a.k.a. jubalh); - put right-hand side of user-defined commands into separate scope of if-else-endif expressions. This prevents affecting of regular input by malformed user-defined command. Scripting: - added :elseif command (thanks to filterfalse); - added &option syntax for :let command; - added && and || operators to expression parser (thanks to filterfalse); - added getpanetype() builtin function that retrieves type of current pane (thanks to filterfalse); - added layoutis() builtin function that answers queries about current interface configuration (thanks to fogine); - added paneisat() builtin function that answers queries about current pane position (thanks to fogine); - added inline comments to allow less verbose commenting in configuration; - rewrote expression parser to prevent side-effects from occurring until syntax is checked. TUI (Text User Interface): - added match numbers to search messages on status bar (patch by Cosmin Popescu, a.k.a. cosminadrianpopescu); - added dynamic view column alignment (specified by "*", just like "-" for left alignment) (patch by Cosmin Popescu, a.k.a. cosminadrianpopescu); - added "more" mode that is used to handle status bar content that doesn't fit on the screen (thanks to Bruce Hunsaker, a.k.a. hunsakerbn, and Svyatoslav Mishyn, a.k.a. juef); - added builtin directory preview (thanks to Damian Ariel Perticone and Alexandre Viau); - added "fileext" sorting key, which sorts files by extensions and directories by name (patch by Cosmin Popescu, a.k.a. cosminadrianpopescu); - added "nitems" sorting, which sorts by number of items in a directory (thanks to filterfalse); - added "nlinks" sorting key to display number of hard links to a file on *nix systems (thanks to filterfalse); - normalize surrounding spaces in menu and dialog titles; - lower minimum supported terminal width and height from 30x10 to 20x5; - update cursor position on file disappearing in more predictable way. Use the closes file to the previously active one that still exists (thanks to ranousse); - display lower bound on item count in status bar progress messages (e.g. on :grep). Important fixes: - assume UTF-8 sequences can be broken (thanks to Svyatoslav Mishyn, a.k.a. juef); - made setting title inside terminal multiplexers (when terminal type is "screen*") work; - check file system sensitivity on OS X (thanks to loongw); - fixed startup on Windows 10 (thanks to th1rdey3 and Robert Sarkozi); - fixed swapped absolute/relative link creation on :alink/:rlink commands (patch by MadMaverick9); - multiple fixes for custom views (thanks to filterfalse); - more careful treating of files with colons in their names for menus and custom views (thanks to aleksejrs); - fixed ranges for :yank, 0.8 regression (thanks to Marius Schmidl); - fixed crash on copy-like operations that move several files into subdirectory of another view (thanks to Marius Schmidl); - fixed creation of intermediate directories on merging directories (thanks to willemw12). Vim-plugin: - added set of :*Vim commands to vifm run from Vim plugin, which overrule initial :*Vifm command behaviour (thanks to Ross Hadden, a.k.a. rosshadden); - changed plugin to do not depend on location of vifm. g:vifm_home is ignored from now on (thanks to aleksejrs). Only on Windows: - display directory size on Windows more correctly; - improvements in running commands with special characters and/or spaces (thanks to Stas Malavin). Other changes: - added handling of "-" command-line argument specified in place of directory path as instruction to read list of files from stdin; - added --server-list and --server-name command-line options that enumerates names of currently running vifm servers and sets name of target/this instance respectively; - added optional argument for --logging parameter that specifies path to startup log (thanks to Cosmin Popescu, a.k.a. cosminadrianpopescu); - invalidate directory size (calculated via ga/gA) if noticed that directory was changed. This affects all parent directories as well, way easier to see what needs recalculation after file moving/removal; - warn about --remote command being disabled at build-time (thanks to Svyatoslav Mishyn, a.k.a. juef); - do not finish argument parsing after finding --help or --version, continue and validate the rest of command-line (thanks to Svyatoslav Mishyn, a.k.a. juef); - display incomplete file name on rename instead of failing with error on Unicode conversion issues. See change log for the full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ January 02, 2016 ================ vifm v0.8.1 beta testing has started ------------------------------------ New minor version delivers primarily various small improvements of different kinds. There is also improvement of navigation via named bookmarks (or tags), which can ease keeping track of what is where, and an ability to apply settings to specific directories or sub-trees (via combination of autocommands and local options). The beta stage will last about two weeks. In case any serious bugs are found during this period, another beta version might be released. Main changes: - added local options, which work until directory change; - added named bookmarks (paths are associated with tags); - added autocommands (with DirEnter event); - added ability to sort by regexp-extracted part of file name; - added builtin directory preview (similar to `tree`); - added a way to communicate menu contents to Vim quickfix; - IPC got new (safe) implementation with listing/targeting of active instances, it's enabled by default again; - updating local view settings from vifmrc now affects both panes (:windo is not necessary); - more predictive cursor updates on directory reload; - improvements related to expression and command parsing. More detailed list of changes. Command-line mode: - added :setl[ocal] and :setg[lobal] commands to manage values of local options that are specific to current directory and are reset on directory change, similar to local options of Vim; - added :pu[t] command that inserts files into current directory (thanks to mvucBmM0); - added :winc[md] command-line command (thanks to fogine); - added exclamation mark to :shell to suppress spawning new teminal multiplexer pane (patch by Cosmin Popescu, a.k.a. cosminadrianpopescu). :set command and options: - added :set foo+=bar syntax for string options (append value); - added 'deleteprg' option, which specifies program to run on files that are permanently removed; - added 'dirsize' option to control how size of directories is displayed in file views. This enables one to see number of files in a directory rather than its size (thanks to Martin Fischer); - added optional %u and %U macros to 'findprg', 'grepprg', and 'locateprg' that allow immediate redirection of command output into custom view without opening a menu (thanks to filterfalse); - added 'iooptions' option to configure file system operations. Contains only "fastfilecloning" for btrfs so far (thanks to aleksejrs); - added special treatment for "*" as value of 'slowfs', which might be useful in case of very slow handling of requests to mounts enumeration (patch by Cosmin Popescu, a.k.a. cosminadrianpopescu); - added handling of "%u" in trash specification on *nix, which is replaced with real user ID (thanks to Regis); - allow 'shell' to specify a shell argument on *nix (thanks to loongw); - added 'sortgroups' option and "groups" sorting key, which allow sorting by parts of file names (thanks to aleksejrs); - make "p" in 'tuioptions' affect padding in quick view and view mode; - changed 'fusehome' default from temporary directory to data directory (that is $XDG_DATA_HOME/.local/share/fuse/ or $VIFM/fuse/ depending on which parent directory exists, the second one exists by definition, but first might not) (thanks to aleksejrs and to Hendrik Jaeger, a.k.a. henk); - changed default value of 'trashdir' on *nix again, this time to "%r/.vifm-Trash-%u,$VIFM/Trash,%r/.vifm-Trash". This way it's safer for privacy, although using %r is not very safe in general (thanks to Regis). Configuration: - make :set, :filter and :normal zo (and alike) in vifmrc affect all views, thus obsoleting use of :winrun or :windo for this purpose (they still work, the new way is a simpler and more obvious one). This is related to commands executed during vifmrc processing (not those in the right-hand side of mappings, commands, etc.); - automatically create ~/.vifm/scripts containing small README file if the directory doesn't exist on startup (thanks to fogine). Core: - added autocommands (DirEnter event and :au[tocmd] command) (thanks to filterfalse). File operations: - added retry/ignore/abort prompt for file/directory removal when 'syscalls' is on (thanks to Robert Sarkozi); - make use of file cloning feature of btrfs when possible and enabled in 'iooptions' (thanks to aleksejrs); - preserve file timestamps on copying files with 'syscalls' on (thanks to mvucBmM0); - employ inotify on GNU/Linux for more precise watching directories for changes. Navigation: - added named bookmarks (paths are associated with tags). This adds :bmark, :bmarks, :bmgo and :delbmarks command-line commands. Also there is new "bmarks" value for 'vifminfo' (thanks to Schmalzhaf Stefan). Normal and visual modes: - accept [count] for "h" and "gh"; - added zr normal mode key to reset local filter (thanks to filterfalse); - ctrl-W | and Ctrl-W _ now can set window size to given count (thanks to filterfalse). Key bindings: - remapping of builtin keys that are followed by selectors (e.g. `:nnoremap d y`) (thanks to mvucBmM0). Color schemes: - changed default colorscheme to invert colors of the current line. Documentation: - documented %= for 'statusline' and 'rulerformat'; - make --select option more prominent in documentation (thanks to Svyatoslav Mishyn, a.k.a. juef); - documented difference between paths in menu with and without trailing slash (thanks to filterfalse). Macros: - added %pc macro that splits preview command in two pices: preview command and clear command (thanks to Tomek K., a.k.a. TomiCode). Menus and dialogs: - added B key to menus, which acts like b, but creates unsorted (very custom) view (thanks to filterfalse); - added "v" key to menu mode that loads current contents into quickfix list of editor (Vim compatible one is assumed) (thanks to filterfalse); - added handling of dd in :trashes, :trashes? and :lstrashes, which either deletes an item in trash or empties trash (thanks to Svyatoslav Mishyn, a.k.a. juef); - somewhat more informative error titles on issues during file operations; - provide conflict resolution options in a dialog rather than on the command-line, which is hard to read with so many options; - expand "~" in menus on navigation. Packaging: - removed vifmrc-converter. It's been around for four years and not needed any more (thanks to filterfalse); - removed contents of autoconf.sh, autoreconf covers what was there (there is a notice in that script now about it just in case) (thanks to Hendrik Jaeger, a.k.a. henk); - added --with-sanitize=basic|thread|leak option to configure script; - added missing script that's necessary for %s macro in GNU screen. Was lost for a long time; - work around compilation on systems where MAX_ARG_STRLEN is defined, but unusable (thanks to Marcin Juszkiewicz, a.k.a. hrw, Michel Normand and Michael Vetter, a.k.a. jubalh); - put right-hand side of user-defined commands into separate scope of if-else-endif expressions. This prevents affecting of regular input by malformed user-defined command. Scripting: - added :elseif command (thanks to filterfalse); - added &option syntax for :let command; - added && and || operators to expression parser (thanks to filterfalse); - added getpanetype() builtin function that retrieves type of current pane (thanks to filterfalse); - added layoutis() builtin function that answers queries about current interface configuration (thanks to fogine); - added paneisat() builtin function that answers queries about current pane position (thanks to fogine); - added inline comments to allow less verbose commenting in configuration; - rewrote expression parser to prevent side-effects from occurring until syntax is checked. TUI (Text User Interface): - added match numbers to search messages on status bar (patch by Cosmin Popescu, a.k.a. cosminadrianpopescu); - added dynamic view column alignment (specified by "*", just like "-" for left alignment) (patch by Cosmin Popescu, a.k.a. cosminadrianpopescu); - added "more" mode that is used to handle status bar content that doesn't fit on the screen (thanks to Bruce Hunsaker, a.k.a. hunsakerbn, and Svyatoslav Mishyn, a.k.a. juef); - added builtin directory preview (thanks to Damian Ariel Perticone and Alexandre Viau); - added "fileext" sorting key, which sorts files by extensions and directories by name (patch by Cosmin Popescu, a.k.a. cosminadrianpopescu); - added "nitems" sorting, which sorts by number of items in a directory (thanks to filterfalse); - added "nlinks" sorting key to display number of hard links to a file on *nix systems (thanks to filterfalse); - normalize surrounding spaces in menu and dialog titles; - lower minimum supported terminal width and height from 30x10 to 20x5; - update cursor position on file disappearing in more predictable way. Use the closes file to the previously active one that still exists (thanks to ranousse); - display lower bound on item count in status bar progress messages (e.g. on :grep). Important fixes: - assume UTF-8 sequences can be broken (thanks to Svyatoslav Mishyn, a.k.a. juef); - made setting title inside terminal multiplexers (when terminal type is "screen*") work; - check file system sensitivity on OS X (thanks to loongw); - fixed startup on Windows 10 (thanks to th1rdey3 and Robert Sarkozi); - fixed swapped absolute/relative link creation on :alink/:rlink commands (patch by MadMaverick9); - multiple fixes for custom views (thanks to filterfalse); - more careful treating of files with colons in their names for menus and custom views (thanks to aleksejrs); - fixed ranges for :yank, 0.8 regression (thanks to Marius Schmidl); - fixed crash on copy-like operations that move several files into subdirectory of another view (thanks to Marius Schmidl); - fixed creation of intermediate directories on merging directories (thanks to willemw12). Vim-plugin: - added set of :*Vim commands to vifm run from Vim plugin, which overrule initial :*Vifm command behaviour (thanks to Ross Hadden, a.k.a. rosshadden); - changed plugin to do not depend on location of vifm. g:vifm_home is ignored from now on (thanks to aleksejrs). Only on Windows: - display directory size on Windows more correctly; - improvements in running commands with special characters and/or spaces (thanks to Stas Malavin). Other changes: - added handling of "-" command-line argument specified in place of directory path as instruction to read list of files from stdin; - added --server-list and --server-name command-line options that enumerates names of currently running vifm servers and sets name of target/this instance respectively; - added optional argument for --logging parameter that specifies path to startup log (thanks to Cosmin Popescu, a.k.a. cosminadrianpopescu); - invalidate directory size (calculated via ga/gA) if noticed that directory was changed. This affects all parent directories as well, way easier to see what needs recalculation after file moving/removal; - warn about --remote command being disabled at build-time (thanks to Svyatoslav Mishyn, a.k.a. juef); - do not finish argument parsing after finding --help or --version, continue and validate the rest of command-line (thanks to Svyatoslav Mishyn, a.k.a. juef); - display incomplete file name on rename instead of failing with error on Unicode conversion issues. See change log for the full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ July 09, 2015 ============= vifm v0.8 --------- New version brings several useful improvements of different kinds. The most substantial addition is custom views that allow one to combine files from several directories in one view, which in turn enables processing of search/grep/etc. results similar to handling contents of a regular directory. Thanks to everyone who was reporting issues during beta period. Also reminding about #vifm@Freenode IRC channel, color schemes preview at http://vifm.info/colorschemes.shtml and introducing http://q2a.vifm.info Q&A site for general usage questions. Main changes: - added filename specific highlight (with a script to convert ls options); - added custom views, which contrary to regular views can contain files that do not belong to the same directory; - added job bar to display active backgrounded file operations; - added command-line mode abbreviations; - added global configuration and color schemes directory; - added live search match highlighting; - added optional per-file progress for file operations; - added full path patterns ({{globs}} and //regexp//); - added command-line options to control file/directory selection and selection processing to make it easier to use vifm as a file picker; - color schemes got ".vifm" extension, but the old-style names will still work for now; - XDG specification support; - ability to use terminal applications to preview graphics (e.g. w3mimgdisplay). File operations: - added per-file overwrite confirmation on directory merging (thanks to willemw12); - added detailed list of errors when 'syscalls' is used (thanks to willemw12). Key bindings: - added F key to less-like (file view) mode, which acts similar to `tail -F` or F key in less (thanks to Daniel Dettlaff, a.k.a. dmilith); - added b key to menu mode that creates custom view filled with menu items filtering out those that are not paths; - added zd normal and visual modes key to exclude items from custom views; - optional per-file progress in dialog mode activated by hitting "i" while operation is being performed. :set command and options: - added 'chaselinks' option to automatically expand all symbolic links in path of a view (might not work on Windows) (thanks to filterfalse); - added 'mintimeout' option. It enables controlling responsiveness on external events by Vifm (thanks to hofheinz); - added 'wordchars' option to specify which characters in command-line mode should be considered as part of a word (thanks to filterfalse); - added ^= operation for charset options; - added %[ and %] macros for 'statusline'/'ruler' (thanks to ranousse); - added "p" to 'shortmess' option to control tilde shortening of path in view titles (thanks to Martin Fischer); - changed default value of 'trashdir' from "$VIFM/Trash" to "%r/.vifm-Trash,$VIFM/Trash" (thanks to Joseph LP, a.k.a. ootput); - normalized sorting keys/view column names: "type" -> "dir", display real mode in octal for "mode", make "type" actually display file type (as "mode" did before) (thanks to Michal Belica, a.k.a. beli-sk); - united last pattern of :substitute command with search history (thanks to filterfalse). Command-line mode: - added :highlight {pattern} for filename specific highlight (thanks to Ink, a.k.a. inknoir, filterfalse and Michael Maddern, a.k.a. madders); - added :cabbrev, :cnoreabbrev and :cunabbrev commands to manage command-line mode abbreviations (thanks to filterfalse); - added Ctrl-X / (slash) key to that inserts last search pattern into current cursor position (thanks to filterfalse); - added Ctrl-] key to trigger abbreviation expansion; - added single-argument form of :file[x]type and :fileviewer commands that lists (in menu mode) currently registered patterns that match specified file name; - added :cq[uit] command to exit with non-zero exit code and also abort directory choosing (thanks to Jeet Sukumaran, a.k.a. jeetsukumaran); - added :trashes? to display sizes of each non-empty trash directories (thanks to Svyatoslav Mishyn, a.k.a. juef); - added regexp patterns to :file[x]type and :fileviewer commands (thanks to filterfalse); - added :redr[aw] command to force immediate redraw (thanks to filterfalse); - allow non-printable characters to be arguments of :commands (thanks to filterfalse); - extended :sync command to support selective synchronization (user can choose among location, cursor position, local options and filters) (thanks to filterfalse). Completion: - complete `clear` subcommand of :highlight. Angle bracket notation: - added <lt> angle bracket notation (less-than character, '<') (thanks to filterfalse); - map <c-h> and <bs> to different key codes (thanks to fogine). This is caused by inconsistency among terminals, map to both keys and it should work everywhere. Macros: - added %px, %py, %pw and %ph macros that describe location and dimensions of preview area to use in external commands (thanks to Stephano, a.k.a. cao); - added %u and %U macros to redirect command output directly into custom view. The second one allows for more customization of file list, which is absence of sorting for now (thanks to filterfalse); - no more unjustified inconsistency in processing macros in :! and :file[x]type commands (thanks to Miodrag Tokić, a.k.a. loonies). Scripting: - added system() builtin function that executes command via shell and returns its output; - added full path patterns ({{globs}} and //regexp//) (thanks to astrell); - report error on wrong expression in :if statement and misplaced :else/:endif on file sourcing. Color scheme: - added JobLine highlight group for the job bar. Configuration: - added fallback to use "XDG Base Directory Specification" when failed to find configuration in other places (thanks to Miodrag Tokić, a.k.a. loonies); - added global configuration {prefix}/etc/vifm/vifmrc and color schemes {prefix}/etc/vifm/colors/* (thanks to astrell and Michael Vetter, a.k.a. jubalh). Performance: - significantly reduced amount of work performed by Vifm in idle state (thanks to hofheinz); - quit fast on --help/--version (thanks to Svyatoslav Mishyn, a.k.a. juef); - throw away dead directories in directory histories on merging vifminfo files. Otherwise clearing such directories on :history is almost useless. Menus and dialogs: - added handling of Ctrl-L to sort dialog (thanks to filterfalse); - added device id (major and minor numbers) to file info dialog; - made calculation of directory size visible in :jobs menu; - parse output of mandoc version of apropos in :apropos (thanks to Svyatoslav Mishyn, a.k.a. juef); - display RFC 2822 date without time zon in file info (thanks to Svyatoslav Mishyn, a.k.a. juef). TUI (Text User Interface): - added search match highlighting for file names (thanks to Svyatoslav Mishyn, a.k.a. juef, and willemw12); - added job bar that displays backgrounded file operations if any (thanks to geo909); - redraw UI on resize during file operation when 'syscalls' is set; - redraw UI on resize when dialog is active; - dynamic dialog dimensions (minimum %30 percent of the screen rather than screen-wide all the time) (thanks to Svyatoslav Mishyn, a.k.a. juef); - auto-resize position field on the status bar to fit the text (thanks to ranousse); - append unused space in view columns to the last one with percent sizing type if any (thanks to fogine). Documentation: - manual page fixes/improvements (thanks to Svyatoslav Mishyn, a.k.a. juef); - wrapped option names with single quotes in the man page to make it easier to search for options by their names. Packaging: - added one more light color scheme to assets (in two variations astrell-root and astrell-user) (thanks to astrell); - added lookup for mandoc on *nix to perform manual page to plain text transformation (thanks to Svyatoslav Mishyn, a.k.a. juef); - added OS X version of sample vifmrc file. Now this one will be used on first run on OS X (thanks to Larry Hynes, a.k.a. larryhynes); - added dircolors -> vifm conversion script (thanks to Ink, a.k.a. inknoir, Hendrik Jaeger, a.k.a. henk, and Michael Maddern, a.k.a. madders); - added .vifm extension to color schemes (initial rename is performed automatically) (thanks Michael Vetter, a.k.a. jubalh); - added script to update timestamps, so that build system won't be regenerated without real reason. One might want to run it when building from git checkout, which doesn't preserve correct timestamps; - install AUTHORS, COPYING, ChangeLog, INSTALL, NEWS, README and TODO to {prefix}/share/doc/vifm. Install color schemes to {prefix}/share/vifm/colors. Otherwise these are not available after installation; - made configure script lookup curs_set in libtinfo; - moved checks for build-time tools existence from Makefile to configure script; - made tests less dependent on environment (thanks to Hendrik Jaeger, a.k.a. henk). Only on Windows: - automatically install sample vifmrc and help file on first start; - switch to utf-8 internal representation of paths. This fixes issues when file name encoding doesn't match system encoding (thanks to Stas Panteleev). Important fixes: - fixed undesired file removal on overwriting them with themselves (data loss after confirmation of overwriting files when destination matches source) (thanks to Сергей Соловьёв (Sergej Soloviov)); - fixed crash on navigation to end of line in command-line mode (thanks to Christian Fillion, a.k.a. cfillion); - fixed `:help` (no arguments) when 'vimhelp' is on and automatically installed Vim documentation is used (thanks to ranousse); - better handling of case related operations; - fixed ":vs .." which used to use wrong base directory; - fixed assertion on including "type" in 'viewcolumns' value (thanks to Michal Belica, a.k.a. beli-sk); - better FUSE handling on OS X (thanks to Michael Maddern, a.k.a. madders); - fixed (deep) directory merging (thanks to willemw12); - fixed build and work on OpenBSD (at least to some degree that curses implementation there allows). There might be some troubles with non-ascii characters (thanks to hofheinz and Brian Callahan, a.k.a. ibara); - fixed copying of fifo, socket and device files with 'syscalls' enabled. Thanks to Svyatoslav Mishyn (a.k.a. juef). Vim-plugin: - added K mapping to Vim plugin (quick navigation to documentation, e.g. from vifmrc). Patch by filterfalse. Other changes: - added --delimiter command-line option. Configures delimiter string on writing out list of paths (like on `-f` switch) (thanks to Jeet Sukumaran, a.k.a. jeetsukumaran); - added --choose-files and --choose-dir command-line switches to specify output location for names of selected files or last visited directory respectively (thanks to Jeet Sukumaran, a.k.a. jeetsukumaran); - added --on-choose command-line switch to execute a command on selection rather than opening it (thanks to Ross Hadden, a.k.a. rosshadden); - added %FOREGROUND FUSE mounting option, which supersedes %CLEAR and fixes issue with passing input to FUSE mounter (thanks to Johannes, a.k.a. johannesmeng); - removed per-view last search pattern. Don't worry, you probably won't even notice it: this doesn't affect regular use case, rather more exotic one, which is hard to notice; - better handling or unexpectedly unavailable directories on startup and while running (thanks to willemw12); - define $VIFM_FUSE_FILE environment variable for external commands to communicate path to file used to initiate FUSE mounting of directory we're in (thanks to astrell); - allowed having multiple file viewers with same rules for choosing them at run-time as for file associations (thanks to filterfalse); - redirect both standard output and error streams from viewers (already was the case for Windows); - handle commands that are too long to be passed directly to the shell by breaking them into list of arguments if possible (thanks to filterfalse). See change log for full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ June 19, 2015 ============= vifm v0.8 beta testing has started ---------------------------------- New version brings several useful improvements of different kinds. The most substantial addition is custom views that allow one to combine files from several directories in one view, which in turn enables processing of search/grep/etc. results similar to handling contents of a regular directory. That change alone affected internal structure quite seriously which combined with operations on system calls from the previous release distant new version far enough from 0.7 to name it 0.8. Version change also gives one a moral right to introduce incompatible changes. So if anyone remembers me postponing changing defaults or something like that and is still waiting on it, please send a reminder (unfortunately I was careless enough to didn't make detailed list of such things). As of now the following items are under evaluation: - removing "options", "filetypes", "commands" from 'vifminfo' option (not a big deal, but it's not really useful as well, and maybe potentially harmful); - removing 'trash' option as it effectively affects quite a lot things and is better to be enabled; - have 'hlsearch' off by default as normally search doesn't select anything and user can accidentally run some operation on too many files with default setup. Please see the README file in packages for links where feedback can be provided. The beta stage will last about two weeks. In case any serious bugs are found during this period, another beta version might be released. Main changes: - added filename specific highlight; - added custom views, which contrary to regular views can contain files that do not belong to the same directory; - added job bar to display active backgrounded file operations; - added command-line mode abbreviations; - added global configuration and color schemes directory; - added live search match highlighting; - added optional per-file progress for file operations; - added full path patterns ({{globs}} and //regexp//); - added command-line options to control file/directory selection and selection processing to make it easier to use vifm as a file picker; - color schemes got ".vifm" extension, but the old-style names will still work for now; - XDG specification support. File operations: - added per-file overwrite confirmation on directory merging (thanks to willemw12); - added detailed list of errors when 'syscalls' is used (thanks to willemw12). Key bindings: - added F key to less-like (file view) mode, which acts similar to `tail -F` or F key in less (thanks to Daniel Dettlaff, a.k.a. dmilith); - added b key to menu mode that creates custom view filled with menu items filtering out those that are not paths; - added zd normal and visual modes key to exclude items from custom views; - optional per-file progress in dialog mode activated by hitting "i" while operation is being performed. :set command and options: - added 'chaselinks' option to automatically expand all symbolic links in path of a view (might not work on Windows) (thanks to filterfalse); - added 'mintimeout' option. It enables controlling responsiveness on external events by Vifm (thanks to hofheinz); - added 'wordchars' option to specify which characters in command-line mode should be considered as part of a word (thanks to filterfalse); - added ^= operation for charset options; - added %[ and %] macros for 'statusline'/'ruler' (thanks to ranousse); - added "p" to 'shortmess' option to control tilde shortening of path in view titles (thanks to Martin Fischer); - changed default value of 'trashdir' from "$VIFM/Trash" to "%r/.vifm-Trash,$VIFM/Trash" (thanks to Joseph LP, a.k.a. ootput); - normalized sorting keys/view column names: "type" -> "dir", display real mode in octal for "mode", make "type" actually display file type (as "mode" did before) (thanks to Michal Belica, a.k.a. beli-sk); - united last pattern of :substitute command with search history (thanks to filterfalse). Command-line mode: - added :highlight {pattern} for filename specific highlight (thanks to Ink, a.k.a. inknoir, filterfalse and Michael Maddern, a.k.a. madders); - added :cabbrev, :cnoreabbrev and :cunabbrev commands to manage command-line mode abbreviations (thanks to filterfalse); - added Ctrl-X / (slash) key to that inserts last search pattern into current cursor position (thanks to filterfalse); - added Ctrl-] key to trigger abbreviation expansion; - added single-argument form of :file[x]type and :fileviewer commands that lists (in menu mode) currently registered patterns that match specified file name; - added :cq[uit] command to exit with non-zero exit code and also abort directory choosing (thanks to Jeet Sukumaran, a.k.a. jeetsukumaran); - added :trashes? to display sizes of each non-empty trash directories (thanks to Svyatoslav Mishyn, a.k.a. juef); - added regexp patterns to :file[x]type and :fileviewer commands (thanks to filterfalse); - added :redr[aw] command to force immediate redraw (thanks to filterfalse); - allow non-printable characters to be arguments of :commands (thanks to filterfalse); - extended :sync command to support selective synchronization (user can choose among location, cursor position, local options and filters) (thanks to filterfalse). Completion: - complete `clear` subcommand of :highlight. Angle bracket notation: - added <lt> angle bracket notation (less-than character, '<') (thanks to filterfalse); - map <c-h> and <bs> to different key codes (thanks to fogine). This is caused by inconsistency among terminals, map to both keys and it should work everywhere. Macros: - added %px, %py, %pw and %ph macros that describe location and dimensions of preview area to use in external commands (thanks to Stephano, a.k.a. cao); - added %u and %U macros to redirect command output directly into custom view. The second one allows for more customization of file list, which is absence of sorting for now (thanks to filterfalse); - no more unjustified inconsistency in processing macros in :! and :file[x]type commands (thanks to Miodrag Tokić, a.k.a. loonies). Scripting: - added system() builtin function that executes command via shell and returns its output; - added full path patterns ({{globs}} and //regexp//) (thanks to astrell); - report error on wrong expression in :if statement and misplaced :else/:endif on file sourcing. Color scheme: - added JobLine highlight group for the job bar. Configuration: - added fallback to use "XDG Base Directory Specification" when failed to find configuration in other places (thanks to Miodrag Tokić, a.k.a. loonies); - added global configuration {prefix}/etc/vifm/vifmrc and color schemes {prefix}/etc/vifm/colors/* (thanks to astrell and Michael Vetter, a.k.a. jubalh). Performance: - significantly reduced amount of work performed by Vifm in idle state (thanks to hofheinz); - quit fast on --help/--version (thanks to Svyatoslav Mishyn, a.k.a. juef); - throw away dead directories in directory histories on merging vifminfo files. Otherwise clearing such directories on :history is almost useless. Menus and dialogs: - made calculation of directory size visible in :jobs menu; - parse output of mandoc version of apropos in :apropos (thanks to Svyatoslav Mishyn, a.k.a. juef). TUI (Text User Interface): - added search match highlighting for file names (thanks to Svyatoslav Mishyn, a.k.a. juef, and willemw12); - added job bar that displays backgrounded file operations if any (thanks to geo909); - redraw UI on resize during file operation when 'syscalls' is set; - redraw UI on resize when dialog is active; - dynamic dialog dimensions (minimum %30 percent of the screen rather than screen-wide all the time) (thanks to Svyatoslav Mishyn, a.k.a. juef); - auto-resize position field on the status bar to fit the text (thanks to ranousse). Documentation: - manual page fixes/improvements (thanks to Svyatoslav Mishyn, a.k.a. juef); - wrapped option names with single quotes in the man page to make it easier to search for options by their names. Packaging: - added one more light color scheme to assets (in two variations astrell-root and astrell-user) (thanks to astrell); - added lookup for mandoc on *nix to perform manual page to plain text transformation (thanks to Svyatoslav Mishyn, a.k.a. juef); - added OS X version of sample vifmrc file. Now this one will be used on first run on OS X (thanks to Larry Hynes, a.k.a. larryhynes); - added dircolors -> vifm conversion script (thanks to Ink, a.k.a. inknoir, Hendrik Jaeger, a.k.a. henk, and Michael Maddern, a.k.a. madders); - added .vifm extension to color schemes (initial rename is performed automatically) (thanks Michael Vetter, a.k.a. jubalh); - install AUTHORS, COPYING, ChangeLog, INSTALL, NEWS, README and TODO to {prefix}/share/doc/vifm. Install color schemes to {prefix}/share/vifm/colors. Otherwise these are not available after installation; - made configure script lookup curs_set in libtinfo; - moved checks for build-time tools existence from Makefile to configure script; - made tests less dependent on environment (thanks to Hendrik Jaeger, a.k.a. henk). Only on Windows: - automatically install sample vifmrc and help file on first start; - switch to utf-8 internal representation of paths. This fixes issues when file name encoding doesn't match system encoding (thanks to Stas Panteleev). Major fixes: - fixed undesired file removal on overwriting them with themselves (data loss after confirmation of overwriting files when destination matches source) (thanks to Сергей Соловьёв (Sergej Soloviov)); - fixed crash on navigation to end of line in command-line mode (thanks to Christian Fillion, a.k.a. cfillion); - fixed `:help` (no arguments) when 'vimhelp' is on and automatically installed Vim documentation is used (thanks to ranousse); - better handling of case related operations; - fixed ":vs .." which used to use wrong base directory; - fixed assertion on including "type" in 'viewcolumns' value (thanks to Michal Belica, a.k.a. beli-sk); - better FUSE handling on OS X (thanks to Michael Maddern, a.k.a. madders). Vim-plugin: - added K mapping to Vim plugin (quick navigation to documentation, e.g. from vifmrc). Patch by filterfalse. Other changes: - added --delimiter command-line option. Configures delimiter string on writing out list of paths (like on `-f` switch) (thanks to Jeet Sukumaran, a.k.a. jeetsukumaran); - added --choose-files and --choose-dir command-line switches to specify output location for names of selected files or last visited directory respectively (thanks to Jeet Sukumaran, a.k.a. jeetsukumaran); - added --on-choose command-line switch to execute a command on selection rather than opening it (thanks to Ross Hadden, a.k.a. rosshadden); - added %FOREGROUND FUSE mounting option, which supersedes %CLEAR and fixes issue with passing input to FUSE mounter (thanks to Johannes, a.k.a. johannesmeng); - removed per-view last search pattern. Don't worry, you probably won't even notice it: this doesn't affect regular use case, rather more exotic one, which is hard to notice; - better handling or unexpectedly unavailable directories on startup and while running (thanks to willemw12); - define $VIFM_FUSE_FILE environment variable for external commands to communicate path to file used to initiate FUSE mounting of directory we're in (thanks to astrell); - allowed having multiple file viewers with same rules for choosing them at run-time as for file associations (thanks to filterfalse); - redirect both standard output and error streams from viewers (already was the case for Windows); - handle commands that are too long to be passed directly to the shell by breaking them into list of arguments if possible (thanks to filterfalse). See change log for full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ October 25, 2014 ================ Vifm v0.7.8 release ------------------- New version adds a couple of major features, allows for some more customizations and makes usual operations more convenient. Finally, file system operations got progress (it's disabled by default, new implementation needs to be tested in different environments to become the primary one). Another frequently asked feature is multiblock selection ("extended visual mode" if you wish). Vifm also became friendlier to authors of colorschemes and those who'd like to customize UI a bit more. Main changes: - added multiblock "selection" (in quotes because it's also block deselection and inversion of selection for completeness); - added progress bar for file operations. Available only if 'syscalls' option is set (please be careful with that, check basic operations on temp files before using this with important data); - added names for 256 colors, highlight group for inactive cursor, ":highlight clear" command; - some improvements for cancelling operations; - better implementation of emptying trash directories; - new types of conflict resolution; - several extensions for filtering with user-defined commands; - more customizable UI (borders, padding); - smarter path completion; - separated Vifm and Vim plugin documentation; - a couple of extensions for Vim plugin (for mail and bulk file renaming). Core: - added cancellation (handling of Ctrl-C) for FUSE mounting (but not unmounting); - added progress for long-running file system operations. Available only if 'syscalls' option is set; - added "[a]ppend the end" conflict resolution option (appends the rest of file, e.g. if previous operation was terminated) (thanks to Sergei Shilovsky). Available only if 'syscalls' option is set; - added merge all option for name conflict resolution. Same as "merge", but remembers the choice for future conflicts of directories (thanks to willemw12); - added skip all option for name conflict resolution (thanks to Miodrag Tokić (a.k.a. loonies)); - changed "overwrite all" key from "a" to "O" for consistency (thanks to willemw12); - implemented creation, removal, copying, moving of files with system calls. Available only if 'syscalls' option is set; - rewrote trash content removal with system calls in background thread (thanks to lyuts and ckester). It's also now visible in :jobs menu; - several improvements for :lstrash menu (thanks to filterfalse); - more reliable Ctrl-C detection. Normal and visual modes: - added av normal mode shortcut that activates selection amending mode (thanks to ranousse, Michelle Bonk (a.k.a. unixtechie)); - added/updated av/v/V visual mode keys to switch type of current visual mode; - added Ctrl-G key to visual selection amending mode, which switches kind of amending (append/remove/invert); - added ga and gA keys to visual mode (thanks to geo909); - separate visual selection marks ('< and '>), which allows to restore it via gv in both panes (thanks to filterfalse); - implement "(" and ")" keys for "perms" and "type" sorting keys (thanks to filterfalse); - skip nonexistent directories on Ctrl-O/Ctrl-I; - repeat search with last used search pattern on empty pattern of the search mode; - taught ga/gA commands to handle selection (thanks to geo909). Command-line mode: - added i and I flags to :filter command to control filter case sensitivity (thanks to filterfalse); - added filter flags to output of :filter? command and formatted output as a table; - added ":highlight clear" to reset to builtin colors; - added =pattern special form of user-defined command that sets local filter to the given value (alike "/pattern" and "filter value") (thanks to filterfalse); - made :filter command consider trailing slash for symbolic links that point to directories (thanks to filterfalse); - allowed use of :filter syntax in user-defined filter commands (e.g. "command conf filter/.*\.cfg$/"); - made +/- operands after semicolon in command-line range adjust base range end position rather than base cursor position as Vim does (thanks to filterfalse). :set command and options: - added 'syscalls' boolean option. Chooses external tools/system calls implementation. {EXPERIMENTAL}, {WORK-IN-PROGRESS}, although no data loss so far. The option will be eventually removed. Mostly *nix-like systems are affected; - added 'cdpath' option (thanks to Bruce Hunsaker (a.k.a. hunsakerbn)); - added 'tuioptions' option. Controls padding of file lists in panels and visibility of side borders (thanks to Bruce Hunsaker (a.k.a. hunsakerbn) and Svyatoslav Mishyn (a.k.a. juef)); - added 'fillchars' option. Configures fill character for vertical borders (thanks to Svyatoslav Mishyn (a.k.a. juef)); - extended 'slowfs' option format to allow path prefixes (in particular, it's useful for autofs) (thanks to Евгений Жаров (a.k.a. ezharov)). Scripting: - added logical NOT unary operator ("!"); - added executable() builtin function that checks whether executable exists at given path or in one of directories listed in $PATH; - added has() builtin function that checks whether particular property is enabled (two properties for now: "unix" and "win") (thanks to filterfalse); - made expand() builtin function expand environment variables (thanks to filterfalse). Performance: - optimized speed of checking existence of a directory (important on displaying directory history); - automatically remove non-existent directories from directory history on :history command to speed up future operations (this clean up is very cheap on composing menu). Completion: - added function name completion on command-line; - smart completion for paths. Allows completion of quoted arguments (both ' and " types of quotes) and considers argument type context by performing escaping when needed. Documentation: - added full command names to the manual page to ease searching them (thanks to y2kbugger); - documented how to use 256 colors in :highlight command (thanks to Michael Vetter (a.k.a. jubalh)); - made it possible to hide Vifm's documentation from Vim when it's not run by Vifm's :help command (thanks to ranousse); - separated Vifm's vimdoc from plugin documentation. TUI (Text User Interface): - added more human-friendly (xterm-like) names for 256 colors (thanks to Michael Vetter (a.k.a. jubalh)); - added OtherLine highlight group for cursor of inactive pane (thanks to Svyatoslav Mishyn (a.k.a. juef)); - more accurate scheduling of view updates. Vim: - added file additional mail filetype plugin for Vim (thanks to Pavneet Arora). It allows one to pick attachments via Vifm on <localleader>a shortcut; - added file renaming filetype plugin for Vim (thanks to Factorial Prime). It displays list of original file names in a vertical split; - provided additional repository for Vim plugin (https://github.com/vifm/vifm.vim); - make Vim plugin use cmd.exe as default shell on Windows (thanks to Jonathan Da Silva); - various minor syntax highlight improvements (wrapped lines, numbers, options). Packaging: - added Vim plugin directory to share/vifm/vim on `make install` (thanks Svyatoslav Mishyn (a.k.a. juef)); - removed ltmain.sh script, which is part of libtool that's not used anymore (thanks to Hendrik Jaeger (a.k.a. henk)); - renamed configure.in to configure.ac (thanks to Hendrik Jaeger (a.k.a. henk)); - "make clean" now removes "tags" files for Vim documentation generated during build (thanks to Hendrik Jaeger (a.k.a. henk)). Major fixes: - fixed segmentation fault on running vifm with single argument if restored cursor is in the right pane (thanks to Svyatoslav Mishyn, a.k.a. juef); - fixed segmentation fault during startup in a small terminal on OS X (thanks to Daniel Dettlaff (a.k.a. dmilith)); - fixed segmentation fault on no view history and ":set autochpos" in vifmrc (thanks to ranousse); - fixed unexpectedly broken compilation on FreeBSD (thanks to Daniel Dettlaff (a.k.a. dmilith)); - fixed :!! command, seems to be not working for a while; - fixed segmentation fault on Alt-. command in command-line mode (since 0.7.7). See change log for full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ October 11, 2014 ================ vifm v0.7.8 beta testing has started ------------------------------------ New version adds a couple of major features, allows for some more customizations and makes usual operations more convenient. Finally, file system operations got progress (it's disabled by default, new implementation needs to be tested in different environments to become the primary one). Another frequently asked feature is multiblock selection ("extended visual mode" if you wish). Vifm also became friendlier to authors of colorschemes and those who'd like to customize UI a bit more. The beta stage will last about two weeks. In case any serious bugs are found during this period, another beta version might be released. Main changes: - added multiblock "selection" (in quotes because it's also block deselection and inversion of selection for completeness); - added progress bar for file operations. Available only if 'syscalls' option is set (please be careful with that, check basic operations on temp files before using this with important data); - added names for 256 colors, highlight group for inactive cursor, ":highlight clear" command; - some improvements for cancelling operations; - better implementation of emptying trash directories; - new types of conflict resolution; - several extensions for filtering with user-defined commands; - more customizable UI (borders, padding); - smarter path completion; - separated Vifm and Vim plugin documentation; - a couple of extensions for Vim plugin (for mail and bulk file renaming). Core: - added cancellation (handling of Ctrl-C) for FUSE mounting (but not unmounting); - added progress for long-running file system operations. Available only if 'syscalls' option is set; - added "[a]ppend the end" conflict resolution option (appends the rest of file, e.g. if previous operation was terminated) (thanks to Sergei Shilovsky). Available only if 'syscalls' option is set; - added merge all option for name conflict resolution. Same as "merge", but remembers the choice for future conflicts of directories (thanks to willemw12); - changed "overwrite all" key from "a" to "O" for consistency (thanks to willemw12); - implemented creation, removal, copying, moving of files with system calls. Available only if 'syscalls' option is set; - rewrote trash content removal with system calls in background thread (thanks to lyuts and ckester). It's also now visible in :jobs menu; - several improvements for :lstrash menu (thanks to filterfalse); - more reliable Ctrl-C detection. Normal and visual modes: - added av normal mode shortcut that activates selection amending mode (thanks to ranousse, Michelle Bonk (a.k.a. unixtechie)); - added/updated av/v/V visual mode keys to switch type of current visual mode; - added Ctrl-G key to visual selection amending mode, which switches kind of amending (append/remove/invert); - separate visual selection marks ('< and '>), which allows to restore it via gv in both panes (thanks to filterfalse); - implement "(" and ")" keys for "perms" and "type" sorting keys (thanks to filterfalse); - skip nonexistent directories on Ctrl-O/Ctrl-I; - repeat search with last used search pattern on empty pattern of the search mode. Command-line mode: - added i and I flags to :filter command to control filter case sensitivity (thanks to filterfalse); - added filter flags to output of :filter? command and formatted output as a table; - added ":highlight clear" to reset to builtin colors; - added =pattern special form of user-defined command that sets local filter to the given value (alike "/pattern" and "filter value") (thanks to filterfalse); - made :filter command consider trailing slash for symbolic links that point to directories (thanks to filterfalse); - allowed use of :filter syntax in user-defined filter commands (e.g. "command conf filter/.*\.cfg$/"); - made +/- operands after semicolon in command-line range adjust base range end position rather than base cursor position as Vim does (thanks to filterfalse). :set command and options: - added 'syscalls' boolean option. Chooses external tools/system calls implementation. {EXPERIMENTAL}, {WORK-IN-PROGRESS}, although no data loss so far. The option will be eventually removed. Mostly *nix-like systems are affected; - added 'cdpath' option (thanks to Bruce Hunsaker (a.k.a. hunsakerbn)); - added 'tuioptions' option. Controls padding of file lists in panels and visibility of side borders (thanks to Bruce Hunsaker (a.k.a. hunsakerbn) and Svyatoslav Mishyn (a.k.a. juef)); - added 'fillchars' option. Configures fill character for vertical borders (thanks to Svyatoslav Mishyn (a.k.a. juef)); - extended 'slowfs' option format to allow path prefixes (in particular, it's useful for autofs) (thanks to Евгений Жаров (a.k.a. ezharov)). Scripting: - added logical NOT unary operator ("!"); - added executable() builtin function that checks whether executable exists at given path or in one of directories listed in $PATH; - added has() builtin function that checks whether particular property is enabled (two properties for now: "unix" and "win") (thanks to filterfalse); - made expand() builtin function expand environment variables (thanks to filterfalse). Performance: - optimized speed of checking existence of a directory (important on displaying directory history); - automatically remove non-existent directories from directory history on :history command to speed up future operations (this clean up is very cheap on composing menu). Completion: - added function name completion on command-line; - smart completion for paths. Allows completion of quoted arguments (both ' and " types of quotes) and considers argument type context by performing escaping when needed. Documentation: - added full command names to the manual page to ease searching them (thanks to y2kbugger); - documented how to use 256 colors in :highlight command (thanks to Michael Vetter (a.k.a. jubalh)); - made it possible to hide Vifm's documentation from Vim when it's not run by Vifm's :help command (thanks to ranousse); - separated Vifm's vimdoc from plugin documentation. TUI (Text User Interface): - added more human-friendly (xterm-like) names for 256 colors (thanks to Michael Vetter (a.k.a. jubalh)); - added OtherLine highlight group for cursor of inactive pane (thanks to Svyatoslav Mishyn (a.k.a. juef)). Vim: - added file additional mail filetype plugin for Vim (thanks to Pavneet Arora). It allows one to pick attachments via Vifm on <localleader>a shortcut; - added file renaming filetype plugin for Vim (thanks to Factorial Prime). It displays list of original file names in a vertical split; - provided additional repository for Vim plugin (https://github.com/vifm/vifm.vim); - make Vim plugin use cmd.exe as default shell on Windows (thanks to Jonathan Da Silva); - various minor syntax highlight improvements (wrapped lines, numbers, options). Packaging: - added Vim plugin directory to share/vifm/vim on `make install` (thanks Svyatoslav Mishyn (a.k.a. juef)); - removed ltmain.sh script, which is part of libtool that's not used anymore (thanks to Hendrik Jaeger (a.k.a. henk)); - renamed configure.in to configure.ac (thanks to Hendrik Jaeger (a.k.a. henk)). Major fixes: - fixed segmentation fault on running vifm with single argument if restored cursor is in the right pane (thanks to Svyatoslav Mishyn, a.k.a. juef); - fixed segmentation fault during startup in a small terminal on OS X (thanks to Daniel Dettlaff (a.k.a. dmilith)); - fixed segmentation fault on no view history and ":set autochpos" in vifmrc (thanks to ranousse); - fixed unexpectedly broken compilation on FreeBSD (thanks to Daniel Dettlaff (a.k.a. dmilith)); - fixed :!! command, seems to be not working for a while; - fixed segmentation fault on Alt-. command in command-line mode (since 0.7.7). See change log for full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ May 16, 2014 ============ vifm v0.7.7 release ------------------- New version provides more customizations for several existing features and more convenient interaction with them. Thanks to all contributors and especially those who tried beta version. Main changes: - vifm has had support for navigation by file number for years, finally it can display those numbers; - support of trash directories got better with ability to have trash per mount point and new trash menus; - command-line mode now has Ctrl-X prefixed keys that insert parts of filenames and filters (kind of Ctrl-R in Vim); - bookmarks are now timestamped for more predictable management (mainly deletion and overwriting); - for security reasons remote commands are now disabled at configuration stage by default; - most of long-running operations (:find, :copy, etc.) now can be cancelled by pressing Ctrl-C; - menus with list of files got unified "gf" (for navigation) and "e" (for editing) shortcuts; - several fixes and %n macro for better integration with terminal multiplexers; - ability to sort list view with disabled grouping of directories; - expression parser was extended in a couple of ways; - added three more sample color schemes. Configuration: - added --enable-remote-cmd switch to configure script disabled by default, as current implementation of the feature is insecure. Menus and dialogs: - added "gf" (go to file) and "e" (open in editor) keys to :grep, :find, :locate and user menu with navigation (%M macro). Macros: - added %A macro to 'findprg' and 'grepprg' options, which is expanded to unmodified list of arguments (thanks to Robert Sarkozi); - added %n macro which suppresses using of terminal multiplexer in a command (user-defined :command, :!command or :file[x]type action). Key bindings: - added Ctrl-W z key to normal and view modes, which closes preview pane or view modes (thanks to filterfalse). :set command and options: - added "type" key to the 'sort' option to allow controlling grouping of directories (thanks to Daniel R., a.k.a. reicheltd); - added 'number', 'relativenumber' and 'numberwidth' options to control displaying of file numbers (thanks to filterfalse and greye); - extended 'trashdir' to handle list of path, some of which can specify location of trash directories local to each mount point (thanks to smpolymen and Sergei Shilovsky). Command-line mode related changes: - added Ctrl-X a/c/d/e/m/r/t/= keys to command-line mode that insert parts of file names and values of filters (see related documentation) (thanks to ranousse and filterfalse); - added :lstrash command-line command, which displays list of files in trash (thanks to Sergei Shilovsky); - added :trashes command-line command, which lists all non-empty trash directories (thanks to Sergei Shilovsky); - treat semicolon (";") as a valid range separator for command-line commands; - allow empty ranges for command without name (as in :4). Angle bracket notation: - added <nop> angle bracket notation (thanks to filterfalse). Scripting: - added &option syntax for expressions (returns value of an option); - extended parser to support integer number constants and unary minus and plus operators; - extended parser to support <, <=, >= and > comparison operators for strings and integers. Performance: - optimized file name comparison on sorting. Documentation: - documented special bookmarks; - more verbose documentation on :filextype and its usage. Color scheme related changes: - added sample light color scheme (provided by Daniel R., a.k.a. reicheltd); - added sample dark solarized color scheme (provided by Stéphane, a.k.a. istib); - added zenburn color scheme (provided by Svyatoslav Mishyn, a.k.a. juef). TUI (Text User Interface): - handle backspace in preview window as terminal emulators do (thanks to Svenn Are Bjerkem, a.k.a. svenn). Only on Windows: - added handling of paths with backward slashes for :find/:locate/:grep/%M menus on Windows (thanks to Robert Sarkozi); - fixed extending filetypes that are missing macro on Windows when cmd.exe shell is used (thanks to Daniel Polanco, a.k.a. dlpolanco); - fixed work with filenames contining special symbols on Windows with cmd.exe shell (thanks to Daniel Polanco, a.k.a. dlpolanco); - fixed testing whether application uses GUI on Windows when path contains spaces; - fixed extra escaping on prompt filename completion on Windows. Other changes: - added cancellation handling for file system operations and invocations of external applications (works best on *nix systems) (thanks to Milan Svoboda, a.k.a. tex); - made bookmarks merging smarter by storing timestamps. Removing bookmarks now works as expected. Bookmarks overwriting by another instance shouldn't happen anymore. (Thanks to Michael Maddern, a.k.a. madders.) Major fixes: - fixed file descriptor leak on finishing background tasks (thanks to anonymous from linux.org.ru); - fixed several bugs that led to segmentation fault; - fixed copying/moving files after picking "Overwrite all" conflict resolution option (thanks to Stas Malavin). See change log for full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ April 30, 2014 ============== vifm v0.7.7 beta testing has started ------------------------------------ New version provides more customizations for several existing features and more convenient interaction with them. The beta stage will last about two weeks. In case any serious bugs are found during this period, another beta version might be released. Main changes: - vifm has had support for navigation by file number for years, finally it can display those numbers; - support of trash directories got better with ability to have trash per mount point and new trash menus; - command-line mode now has Ctrl-X prefixed keys that insert parts of filenames and filters (kind of Ctrl-R in Vim); - bookmarks are now timestamped for more predictable management (mainly deletion and overwriting); - for security reasons remote commands are now disabled at configuration stage by default; - most of long-running operations (:find, :copy, etc.) now can be cancelled by pressing Ctrl-C; - menus with list of files got unified "gf" (for navigation) and "e" (for editing) shortcuts; - several fixes and %n macro for better integration with terminal multiplexers; - ability to sort list view with disabled grouping of directories; - expression parser was extended in a couple of ways; - added three more sample color schemes. Configuration: - added --enable-remote-cmd switch to configure script disabled by default, as current implementation of the feature is insecure. Menus and dialogs: - added "gf" (go to file) and "e" (open in editor) keys to :grep, :find, :locate and user menu with navigation (%M macro). Macros: - added %A macro to 'findprg' and 'grepprg' options, which is expanded to unmodified list of arguments (thanks to Robert Sarkozi); - added %n macro which suppresses using of terminal multiplexer in a command (user-defined :command, :!command or :file[x]type action). Key bindings: - added Ctrl-W z key to normal and view modes, which closes preview pane or view modes (thanks to filterfalse). :set command and options: - added "type" key to the 'sort' option to allow controlling grouping of directories (thanks to Daniel R., a.k.a. reicheltd); - added 'number', 'relativenumber' and 'numberwidth' options to control displaying of file numbers (thanks to filterfalse and greye); - extended 'trashdir' to handle list of path, some of which can specify location of trash directories local to each mount point (thanks to smpolymen and Sergei Shilovsky). Command-line mode related changes: - added Ctrl-X a/c/d/e/m/r/t/= keys to command-line mode that insert parts of file names and values of filters (see related documentation) (thanks to ranousse and filterfalse); - added :lstrash command-line command, which displays list of files in trash (thanks to Sergei Shilovsky); - added :trashes command-line command, which lists all non-empty trash directories (thanks to Sergei Shilovsky); - treat semicolon (";") as a valid range separator for command-line commands; - allow empty ranges for command without name (as in :4). Angle bracket notation: - added <nop> angle bracket notation (thanks to filterfalse). Scripting: - added &option syntax for expressions (returns value of an option); - extended parser to support integer number constants and unary minus and plus operators; - extended parser to support <, <=, >= and > comparison operators for strings and integers. Performance: - optimized file name comparison on sorting. Documentation: - documented special bookmarks. Color scheme related changes: - added sample light color scheme (provided by Daniel R., a.k.a. reicheltd); - added sample dark solarized color scheme (provided by Stéphane, a.k.a. istib); - added zenburn color scheme (provided by Svyatoslav Mishyn, a.k.a. juef). TUI (Text User Interface): - handle backspace in preview window as terminal emulators do (thanks to Svenn Are Bjerkem, a.k.a. svenn). Only on Windows: - added handling of paths with backward slashes for :find/:locate/:grep/%M menus on Windows (thanks to Robert Sarkozi); - fixed extending filetypes that are missing macro on Windows when cmd.exe shell is used (thanks to Daniel Polanco, a.k.a. dlpolanco); - fixed work with filenames contining special symbols on Windows with cmd.exe shell (thanks to Daniel Polanco, a.k.a. dlpolanco); - fixed testing whether application uses GUI on Windows when path contains spaces; - fixed extra escaping on prompt filename completion on Windows. Other changes: - added cancellation handling for file system operations and invocations of external applications (works best on *nix systems) (thanks to Milan Svoboda, a.k.a. tex); - made bookmarks merging smarter by storing timestamps. Removing bookmarks now works as expected. Bookmarks overwriting by another instance shouldn't happen anymore. (Thanks to Michael Maddern, a.k.a. madders.) Major fixes: - fixed file descriptor leak on finishing background tasks (thanks to anonymous from linux.org.ru); - fixed several bugs that led to segmentation fault. See change log for full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ October 31, 2013 ================ vifm v0.7.6 release ------------------- New minor version brings better integration with environment and external tools as well as enhances file filtering capabilities in several ways. Apart from that, old features were tweaked and some build issues and bugs were resolved. New Win32 and Win64 single-executable (no DLLs) packages appear first time with this release. This time beta stage was quite fruitful. Thanks to all who installed and tried beta versions, and special thanks to filterfalse. Main changes: - added interactive local filter; - added external editing of command-line content with 'vicmd'; - added integration with tmux; - added options to configure external commands for :apropos, :find, :grep and :locate commands; - added desktop entry file (\*nix only) and updated application icon; - fixed build for some combinations of OS/environments (OS X, 32/64-bit cygwin, Windows). Notice: if you mapped q key to something, new q:, q/, q? and q= keys won't be available; suggested solution is to change the mapping to qq. More detailed list of changes. Performance: - increased performance of (re)loading content for view mode (thanks to Robert Sarkozi). Key bindings: - process [count] passed to gUU, gU<selector>, gUgU, gu<selector>, guu and gugu commands; - made all Ctrl-W x keys available in view mode (thanks to filterfalse); - changed meaning of the R key in view mode from redrawing view to reloading it preserving scroll position (thanks to Robert Sarkozi). Normal and visual modes related changes: - added q:, q/, q? and q= keys (q= is defined for normal mode only) to prompt for command-line in external editor; - added "=" normal mode key, which activates file name filtering. Command-line mode related changes: - added "=" and "filter" values for :history command, to show history of local filter; - added Ctrl-G key to start editing in external editor (for editing command, search pattern and file renames); - added optional argument for :invert command to control more kinds of inversion (thanks to filterfalse); - better order of command validity checks; - show better error message on unmatched quotes in command arguments; - store cancelled prompt input in prompt history; - check destination path existence before changing directory to it on :sync command; - use last search pattern as filename filter when :filter command gets an empty argument (:filter//, :filter"", :filter'') (thanks to filterfalse); - match only filename against pattern in :fileviewer instead of full path. :set command and options: - added 'aproposprg', 'findprg', 'grepprg' and 'locateprg' options to specify external commands format; - added "fhistory" to 'vifminfo', which controls storing of local filter history; - added "f" flag to 'cpoptions' option. It controls initial state of filename filter inversion for :filter[!] {regex} command (thanks to filterfalse); - from now on not absolute paths for the 'fusehome' options are rejected; - expand environment variables in values of the 'fusehome' and 'trashdir' options (thanks to filterfalse); - more adequate reaction on setting 'trashdir' option to wrong value; - do not reset selection on search when 'hlsearch' is reset (thanks to filterfalse). File filtering: - distinguish files and directories in filename filter by appending a slash to names of directories; - separated file name filter into manual and automatic, mainly for convenience. TUI (Text User Interface): - preserve current cursor position on view resorting; - force split-view when two paths are specified on command-line (thanks to filterfalse); - consider 'classify' option on displaying file name in the status bar (thanks to Thomas Nemeth). For Vim: - added syntax and filetype plugins for command-line editing buffers (thanks to filterfalse); - updated syntax file to highlight more elements (thanks to filterfalse). Only on Windows: - filter files in case insensitive way on Windows; - don't wait finishing of GUI applications on Windows (thanks to Robert Sarkozi). Other changes: - added integration with tmux (thanks to Seth VanHeulen, a.k.a. svanheulen); - added desktop entry file (thanks to Richard Benson); - added merge option for name conflict resolution, which allows for merging two directories overwriting files with matching names; - updated application icon (thanks to Richard Benson for making it); - don't overwrite directory stack stored in vifminfo on exit unless it was changed in current session; - improved documentation on several subjects; - display error after sourcing file with unmatched :if/:endif statements (thanks to filterfalse). Major fixes: - fixed configuration when wcscasecmp(), wcsncasecmp() or set\_escdelay() functions is not available (thanks to Russell Urquhart); - fixed reserving of about 1 GiB piece of memory on 256-color terminals (sorry about that); - fixed running of executable with symbols that require escaping in their name (\*nix only). Strangely enough, it wasn't noticed before; - fixed terminal hang after executing several external commands in a row (thanks to filterfalse); - fixed search of the first element in file list when displaying of parent directory is disabled; - fixed fails on running executables when 'fastrun' option is on (thanks to MadMaverick9). See change log for full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ October 24, 2013 ================ vifm v0.7.6 beta testing continued ---------------------------------- First beta version revealed some issues with new functionality and degradation of previously existing features. That's why second beta version is released. Included fixes primary target Windows platform, but some of them are related to \*nix systems as well. Thanks to filterfalse and Robert Sarkozi for their help in finding and solving those issues. Additionally, Win64 build is available now. See change log for quite short list of fixes and updates. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ October 17, 2013 ================ vifm v0.7.6 beta testing has started ------------------------------------ New minor version brings better integration with environment and external tools as well as enhances file filtering capabilities in several ways. Apart from that, old features were tweaked and some build issues and bugs were resolved. New Win32 single-executable (no DLLs) package appears first time with this release, Win64 package might also be available a bit later. The beta stage will last about two weeks. In case any serious bugs are found during this period, another beta version might be released. Main changes: - added interactive local filter; - added external editing of command-line content with 'vicmd'; - added integration with tmux; - added options to configure external commands for :apropos, :find, :grep and :locate commands; - added desktop entry file (\*nix only) and updated application icon; - fixed build on some versions of OS X. Notice: if you mapped q key to something, new q:, q/, q? and q= keys won't be available; suggested solution is to change the mapping to qq. More detailed list of changes. Performance: - increased performance of (re)loading content for view mode (thanks to Robert Sarkozi). Key bindings: - process [count] passed to gUU, gU<selector>, gUgU, gu<selector>, guu and gugu commands; - made all Ctrl-W x keys available in view mode (thanks to filterfalse); - changed meaning of the R key in view mode from redrawing view to reloading it preserving scroll position (thanks to Robert Sarkozi). Normal and visual modes related changes: - added q:, q/, q? and q= keys (q= is defined for normal mode only) to prompt for command-line in external editor; - added "=" normal mode key, which activates file name filtering. Command-line mode related changes: - added "=" and "filter" values for :history command, to show history of local filter; - added Ctrl-G key to start editing in external editor (for editing command, search pattern and file renames); - added optional argument for :invert command to control more kinds of inversion (thanks to filterfalse); - better order of command validity checks; - show better error message on unmatched quotes in command arguments; - store cancelled prompt input in prompt history; - check destination path existence before changing directory to it on :sync command; - use last search pattern as filename filter when :filter command gets an empty argument (:filter//, :filter"", :filter'') (thanks to filterfalse); - match only filename against pattern in :fileviewer instead of full path. :set command and options: - added 'aproposprg', 'findprg', 'grepprg' and 'locateprg' options to specify external commands format; - added "fhistory" to 'vifminfo', which controls storing of local filter history; - added "f" flag to 'cpoptions' option. It controls initial state of filename filter inversion for :filter[!] {regex} command (thanks to filterfalse); - from now on not absolute paths for the 'fusehome' options are rejected; - expand environment variables in values of the 'fusehome' and 'trashdir' options (thanks to filterfalse); - more adequate reaction on setting 'trashdir' option to wrong value; - do not reset selection on search when 'hlsearch' is reset (thanks to filterfalse). File filtering: - distinguish files and directories in filename filter by appending a slash to names of directories; - separated file name filter into manual and automatic, mainly for convenience. TUI (Text User Interface): - preserve current cursor position on view resorting; - force split-view when two paths are specified on command-line (thanks to filterfalse); - consider 'classify' option on displaying file name in the status bar (thanks to Thomas Nemeth). For Vim: - added syntax and filetype plugins for command-line editing buffers (thanks to filterfalse); - updated syntax file to highlight more elements (thanks to filterfalse). Only on Windows: - filter files in case insensitive way on Windows; - don't wait finishing of GUI applications on Windows (thanks to Robert Sarkozi). Other changes: - added integration with tmux (thanks to Seth VanHeulen, a.k.a. svanheulen); - added desktop entry file (thanks to Richard Benson); - added merge option for name conflict resolution, which allows for merging two directories overwriting files with matching names; - updated application icon (thanks to Richard Benson for making it); - don't overwrite directory stack stored in vifminfo on exit unless it was changed in current session; - improved documentation on several subjects. Major fixes: - fixed configuration when wcscasecmp(), wcsncasecmp() or set\_escdelay() functions is not available (thanks to Russell Urquhart); - fixed reserving of about 1 GiB piece of memory on 256-color terminals (sorry about that); - fixed running of executable with symbols that require escaping in their name (\*nix only). Strangely enough, it wasn't noticed before; - fixed terminal hang after executing several external commands in a row (thanks to filterfalse); - fixed search of the first element in file list when displaying of parent directory is disabled; - fixed fails on running executables when 'fastrun' option is on (thanks to MadMaverick9). See change log for full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ May 10, 2013 ============ vifm v0.7.5 release ------------------- New version adds one major feature (parsing of escape codes), set of improvements for existing ones and fixes for bugs. There are also some changes in build system and new extra files bundled with vifm. Main changes: - removed using of libtool in build process on *nix-like systems; - added parsing of escape codes for the preview pane and less-like view; - added expand() builtin function; - added Gentoo ebuild and sample color schemes; - added macros that are expanded to register's content; - added dynamic loading of xlib; - added 'shortmess' option; - added pausing of shell on external commands fails on Windows; - fixed build issues on FreeBSD and OS X systems; - fixed for redrawing and searching in less-like mode; - fixed issues with :help command on Windows. More detailed list of changes. Configuration: - added --without/[with]-dyn-X11 flag to the configure script to control static/dynamic linking against libX11 library. Thanks to Hendrik Jaeger (a.k.a. henk) for the idea; - don't use libtool in build process on *nix platforms (thanks to Merovius). Documentation: - slightly updated plugin related documentation. Macros: - added macros that are expanded to register's content (thanks to Florian Baumann, a.k.a. derflob). :set command and options: - added 'shortmess' option and its first flag: "T" to shorten long status bar messages (thanks to ranousse); - added "perms" sorting key on *nix (proposed by Daniel Dettlaff, a.k.a. dmilith); - added new type of option (charset) and used it for 'cpoptions' and 'shortmess' options; - made 'slowfs' option actually work on OS X (thanks to Daniel Dettlaff, a.k.a. dmilith). Color scheme related changes: - added sample color schemes (proposed by Daniel Dettlaff, a.k.a. dmilith); - don't fallback to default colors on try to switch to a colorscheme, which is not supported by terminal. TUI (Text User Interface): - added parsing of escape codes in the preview pane; - added parsing of escape codes in explore (less-like) mode; - don't redraw file list for explore window on resize; - less updates for window in explore mode on resize. Menus and dialogs: - changed the way title of the permissions dialog is composed. Command-line mode related changes: - allowed exclamation mark for the :sync command (to force synchronization of cursor position when used without arguments); - don't store last command-line command for the dot normal mode command between sessions. Also it doesn't depend on command-line history anymore and can be used with completely disabled history; - made :execute process its arguments just like :echo command (thanks to Daniel Dettlaff, a.k.a. dmilith, which made me discover old behaviour); - don't accept arguments to the :help command when 'vimhelp' option is off. Only on Windows: - pause on failed execution of a help command. Thanks to filterfalse; - pause when execution of shell command fails (e.g. on `:!foobar-does-not-exist`). Other changes: - added Gentoo ebuild. Thanks to Oleg Gordienko (a.k.a. gordio); - added expand() builtin function to expand macros (thanks to Sebastian Cyprych for the use case); - less-like mode now highlights multiple matches in a line; - less-like mode is now updated immediately when one changes 'wrap' option; - save dot files filter state in vifminfo (thanks to Daniel Dettlaff, a.k.a. dmilith). Major fixes: - building on FreeBSD and OS X (thanks to Daniel R., a.k.a. r1chelt, and Daniel Dettlaff, a.k.a. dmilith); - various changes in configuration using autotools; - removed using of libtool in build process on *nix-like systems; - vifminfo file update on Windows (broken in 0.7.4b); - various issues with displaying wide characters (e.g. Chinese); - ctrl-W H/J/K/L shortcuts and less-like view; - issues with calling Vim on :help command. Thanks to filterfalse. See change log for full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ April 22, 2013 ============== vifm v0.7.5 beta testing has started ------------------------------------ New version adds one major feature (parsing of escape codes), set of improvements for existing ones and fixes for bugs. There are also some changes in build system and new extra files bundled with vifm. The beta stage will last about two weeks. In case any bugs are found during this period, another beta version will be released. Main changes: - removed using of libtool in build process on *nix-like systems; - added parsing of escape codes for the preview pane and less-like view; - added expand() builtin function; - added Gentoo ebuild and sample color schemes; - added macros that are expanded to register's content; - added dynamic loading of xlib; - added 'shortmess' option; - fixed build issues on FreeBSD and OS X systems; - fixes for redrawing and searching in less-like mode. More detailed list of changes. Configuration: - added --without/[with]-dyn-X11 flag to the configure script to control static/dynamic linking against libX11 library. Thanks to Hendrik Jaeger (a.k.a. henk) for the idea; - don't use libtool in build process on *nix platforms (thanks to Merovius). Documentation: - slightly updated plugin related documentation. Macros: - added macros that are expanded to register's content (thanks to Florian Baumann, a.k.a. derflob). :set command and options: - added 'shortmess' option and its first flag: "T" to shorten long status bar messages (thanks to ranousse); - added "perms" sorting key on *nix (proposed by Daniel Dettlaff, a.k.a. dmilith); - added new type of option (charset) and used it for 'cpoptions' and 'shortmess' options; - made 'slowfs' option actually work on OS X (thanks to Daniel Dettlaff, a.k.a. dmilith). Color scheme related changes: - added sample color schemes (proposed by Daniel Dettlaff, a.k.a. dmilith); - don't fallback to default colors on try to switch to a colorscheme, which is not supported by terminal. TUI (Text User Interface): - added parsing of escape codes in the preview pane; - added parsing of escape codes in explore (less-like) mode; - don't redraw file list for explore window on resize; - less updates for window in explore mode on resize. Menus and dialogs: - changed the way title of the permissions dialog is composed. Command-line mode related changes: - allowed exclamation mark for the :sync command (to force synchronization of cursor position when used without arguments); - don't store last command-line command for the dot normal mode command between sessions. Also it doesn't depend on command-line history anymore and can be used with completely disabled history; - made :execute process its arguments just like :echo command (thanks to Daniel Dettlaff, a.k.a. dmilith, which made me discover old behaviour). Other changes: - added Gentoo ebuild. Thanks to Oleg Gordienko (a.k.a. gordio); - added expand() builtin function to expand macros (thanks to Sebastian Cyprych for the use case); - less-like mode now highlights multiple matches in a line; - less-like mode is now updated immediately when one changes 'wrap' option; - save dot files filter state in vifminfo (thanks to Daniel Dettlaff, a.k.a. dmilith). Major fixes: - building on FreeBSD and OS X (thanks to Daniel R., a.k.a. r1chelt, and Daniel Dettlaff, a.k.a. dmilith); - various changes in configuration using autotools; - removed using of libtool in build process on *nix-like systems; - vifminfo file update on Windows (broken in 0.7.4b); - various issues with displaying wide characters (e.g. Chinese); - ctrl-W H/J/K/L shortcuts and less-like view. See change log for full list of changes and by whom they were suggested. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ January 21, 2013 ================ vifm v0.7.4b release -------------------- This version is a minor bugfix release. It doesn't contain any new features. The release fixes more than 17 bugs found since version 0.7.4a. Two weeks since beta version was published have passed. Since no bugs were reported, the beta version is now released as 0.7.4b without any changes except version number. Fixes in this version are related to the following subjects: - interaction with the screen tool (thanks to Jing Liu); - working with registers (old, but unreported bugs); - rights elevation and dot directories on Windows; - processing of vifminfo file (thanks to Christoph, a.k.a informationen); - handling of colorscheme files (thanks to Charles Kauffman); - displaying of CJK characters (thanks to lcj); - 'classify' option (thanks to Thomas Nemeth). See change log for full list of fixes. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ January 7, 2013 =============== vifm v0.7.4b beta testing has started ------------------------------------- This version is a minor bugfix release. It doesn't contain any new features. The release fixes more than 17 bugs found since version 0.7.4a. Because of promise not to release anything without beta-testing, even this bugfix release has a beta stage, which should last about two weeks. In case some bugs will be found, a second beta will be released in a week. Fixes are related to the following subjects: - interaction with the screen tool (thanks to Jing Liu); - working with registers (old, but unreported bugs); - rights elevation and dot directories on Windows; - processing of vifminfo file (thanks to Christoph, a.k.a informationen); - handling of colorscheme files (thanks to Charles Kauffman); - displaying of CJK characters (thanks to lcj); - 'classify' option (thanks to Thomas Nemeth). See change log for full list of fixes. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ October 22, 2012 ================ vifm v0.7.4a ------------ 0.7.4 package contains configuration files of autotools of different versions. As a result it's not always possible to build vifm 0.7.4 by running `./configure && make`. The author is sorry about wasted time of users spent on building vifm with partially broken build system. Anyway this mistake has also a good point. 0.7.4a fixes several bugs, some of which are related to new features. See change log for full list of fixes. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ October 18, 2012 ================ vifm v0.7.4 ----------- 0.7.4 is a minor release, which improves existing features as well as adds some new ones. There are two main directions in which improvements were made. One of them is TUI, which now has support of multiple columns and ls-like view as well as customizable file name decoration (prefix and suffix). The second one is connected with command interpreter, which now supports builtin functions, conditional operators and conditional execution of commands (using if-else-endif statements). Additionally, vifm's memory footprint was made smaller and running of programs associated with files made smarter (won't stop until existing program is found). Main changes: - new multicolumn view; - new ls-like view (see 'lsview' option) and related keys for it; - prefixes and suffixes of files of different types are configurable now; - smarter handling of file associations (now vifm will try to find existing program); - some basic means to do scripting (if-else-endif statements, builtin functions, comparison operators); - reduced history memory consumption; - better configure script, which now checks more stuff (and does it in a more accurate way) needed to build vifm. More detailed list of changes. Configuration: - removed compile-time compatibility mode (the compatibility-mode switch), now "f" flag in 'cpoptions' does the same; - added --without/[with]-X11 configure script option; - configure script now checks much more then before; - better make files (thanks to Hendrik Jaeger). Only on Windows: - replaced gl normal mode mapping for Windows with gr because of conflict (with 'lsview'); - allow paths in :file[x]type command that contain spaces to be doublequoted on Windows. Normal and visual modes related changes: - added Ctrl-W H/J/K/L normal mode keys; - added gh, gj, gk and gl keys for normal and visual modes; - added 0, ^ and $ keys for normal and visual modes, which also work as selectors in normal mode. Command-line mode related changes: - added Ctrl-T handling in command line to swap characters; - added Meta-. handling in command line to paste last parts of previous commands; - added :echo command; - added :if, :else and :endif commands; - added support for `==` and `!=` operators; - added :normal command; - added mapping commands for view and menu modes; - changed relative path base for :split and :vsplit commands; - expand macros for user defined commands. :set command and options: - added 'viewcolumns' local option to control view columns; - added 'lsview' option to control ls-like view look; - added 'dotdirs' option to control visibility of "../" directory; - added 'classify' option to set prefixes and suffixes for different file types; - added %E 'statusline' option macro, which means size of all selected files or current file, if no files are selected; - added "t" flag to 'cpoptions' option (replaces compile-time compatibility mode). Completion: - added completion for :set option= even for options without variants; - complete only directory names for :split and :vsplit commands; - escape pipe character during :file completion; - complete :set for short and full option names like Vim does (e.g. 'so' should be expanded to 'sort', not only 'scrolloff'). TUI (Terminal User Interface): - added status bar messages for :apropos, :find and :locate commands; - flicker less on :restart command; - don't show Ctrl-C part in information message boxes where it doesn't make sense; - reduce delay between terminal resize and TUI redrawing; - fixed background bold (light) colors in linux native console. Color scheme related changes: - added light versions of color names. Key bindings: - don't pause on '0' after Ctrl-W (count cannot start with zero); - multiply counts in front and in the middle of commands with Ctrl-W (as Vim does); - multiply counts in front of command and its selector (as Vim does). Other changes: - added support for builtin functions and filetype() as the first one; - check current view of other pane on leaving FUSE mount directory an don't unmount if that file system is still in use; - try the rest of the programs for an association when the default one isn't found; - reduced memory consumption of view histories. And fixes of bugs and memory leaks. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ June 23, 2012 ============= vifm v0.7.3a ------------ It happens some bugs are discovered just after making a new release. And it happened with vifm 0.7.3, which was tested, but apparently not enough. So 0.7.3a is a bugfix release, which contains fixes for one serious bug and several small ones as well as adds some more information to the documentation and very small enhancements. If you would like to be notified about future releases of vifm or some important news related to vifm by email, consider subscribing to recently created vifm-announce@lists.sourceforge.net read-only mailing list. You can do this by following this link. Though this is a bugfix release it has some changes since v0.7.3 that should be mentioned: Completion: - better completion for :colorscheme command. Documentation: - added a section about color schemes to the documentation; - documented that %m, %M, %s, %S and %i have bigger priority than &; - documented that %m, %M, %s, %S and %i are mutually exclusive; - documented treating of whitespace around option names in :set command. :set command and options: - allowed whitespace after option name in :set command; - added checks for correct value of 'tabstop' and 'timeoutlen' options; - reset 'columns' and 'lines' options to real number of columns; - reset value of 'scrolloff' option to zero on attempt to assign a negative value to it; - faster execution of `:set sort=foo sortorder sortnumbers` in vifmrc. TUI (Terminal User Interface): - faster redrawing of status bar with "-- VISUAL --" message after "Press Enter" message. Command-line mode related changes: - expand tilde in the second argument of :colorscheme command; - forbid relative paths in :colorscheme command until vifm is completely loaded; - pass range given to alias to an aliased command. Performance: - faster Ctrl-W x, Ctrl-W o, Ctrl-W s, Ctrl-W v, Ctrl-W =, Ctrl-W <, Ctrl-W >, Ctrl-W -, Ctrl-W +, Ctrl-W |, Ctrl-W _; - faster redraw on terminal resizing; - made file filtering using regular expressions work faster (matters when directory contains several thousands files); - draw quickview on startup only once. Normal and visual modes related changes: - show correct number of selected files in visual mode after n and N keys. And bug fixes. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ June 3, 2012 ============ vifm v0.7.3 release ------------------- If you would like to be notified about future releases of vifm or some important news related to vifm by email, consider subscribing to recently created vifm-announce@lists.sourceforge.net read-only mailing list. You can do this by following this link. Changes since v0.7.2 in general: - removed support of moving items in the :file menu; - added description of :file programs; - improved messages in the TUI as well as it's redrawing in various scenarios; - changed behaviour of Enter key on a selected directories; - better work with PATH environment variable. Changes since v0.7.2 in details: Completion: - added completion for :copy, :clone, :move, :alink, :rlink and :rename commands; - added completion for :touch and :mkdir commands; - added completion for :split and :vsplit commands. TUI (Terminal User Interface): - added Ctrl-L handling in file info (Ctrl-G) mode; - less blinking of the screen in various scenarios; - replace home directory with the tilde in terminal title; - corrected status bar messages about failed search; - better handling of multiline messages in status bar. Normal and visual modes related changes: - leave leading zeros on Ctrl-A/X commands; - added "Y" key to visual mode as an alias for "yy"; - open selected directories with l or Enter keys. Configuration: - added --enable-desktop-files (enabled by default) configure option. Only on Windows: - allow bookmarking of host names on Windows (e.g. //ZX-SPECTRUM); - show host's root in history menu (e.g. //ZX_SPECTRUM); - made :fileviewer command work. Macros: - added macros expansion for :touch and :mkdir commands; - added %i macro to completely ignore output of external commands. Command-line mode related changes: - added :finish command to use in sourced scripts; - improved :let command (allowed using of expressions at the right side of the statement); - properly handle when user alters PATH environment variable using :let command; - added description for :filetype, :filextype and :fileviewer commands; - save last typed but not executed command in command-line mode (this also includes searches). Menus and dialogs: - removed possibility of moving items in :file menu; - added size of file in bytes in file info mode (Ctrl-G); - added q key to close menus. Other changes: - added notes about automatic FUSE mounts to the documentation; - now vifm removes scripts (`$VIFM/scripts/**`) from PATH for :shell command; - use common search history for normal, visual and menu modes; - increased directory modification stamp precision on Unix. Plus bug fixes of course. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ February 19, 2012 ================= vifm v0.7.2 ----------- Changes since v0.7.1 :set command and options: - added 'rulerformat' option; - added 'statusline' option; - added 'columns' and 'lines' options; - added 'trashdir' option (by Chris Skalenda). Command-line mode related changes: - added optional argument for the :sync command; - added support for running :cmap, :nmap and :vmap with one argument; - added recursive mode for :rename command; - added :let and :unlet commands to work with environment variables; - added :windo and :winrun commands; - never change active view on :restart command; - allowed using of macros with :clone command. Angle bracket notation: - added <esc>. Only on Windows: - added embedded icon; - added file properties dialog; - show "Sorting directory..." message only for big directories; - change console title; - made determining of home directory more intelligent; - made 'sortnumbers' work; - avoid unnecessary directory view updates (like after C key); - allow using of backward slashes in :rename command; - let :s and :gs filename modifiers change slash type; - properly quit vifm on console closing; - added :u filename modifier for UNC computer name; - added file attributes in status bar and file info view. Normal and visual modes related changes: - added ctrl-w p, ctrl-w b and ctrl-w t normal mode keys. Configuration: - added $VIFM and $MYVIFMRC environment variables; - now vifm will add all subdirectories of ~/.vifm/scripts to PATH; - better check for old-style color schemes file. For Vim: - added g:vifm_exec_args variable for the plugin. Other changes: - added --select command line argument; - added --remote command line argument; - added support for character classes in globals; - restore terminal title on exit; - reset dot and filename filters if they hide bookmarked file; - made vifm react faster on external changes. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ November 15, 2011 ================= vifm v0.7.1 ----------- Major changes since v0.7.0: - changed meaning of :split command (so replace it with :vsplit in your vifmrc); - added backgrounding of :copy, :move, :delete, ga and gA commands; - added horizontal splitting and keys to control size of the panes; - added less-like view mode; - made some changes to the Vim plugin; - windows version was made much more usable. Changes in details :set command and options: - added 'scrollbind', 'wrapscan', 'incsearch', 'cpoptions', 'laststatus' and 'tabstop' options; - make 'ignorecase' and 'smartcase' affect f and F; - don't use position in the view on ' key, when 'autochpos' is off. Angle bracket notation: - added support for more angle bracket notations in mappings (<bs>, <tab>, <s-tab>, <home>, <end>, <left>, <right>, <up>, <down>, <pageup>, <pagedown>, <del>, <delete>, <m-a>, <m-b>, ..., <m-z>); - added <s-f1>, ..., <s-f12>, <a-f1>, ..., <a-f12>, <c-f1>, ..., <c-f12>, only for Windows; - added <a-X> as synonyms for <m-X> (where X is a key); - added angle bracket notation <c-s-X> and <s-c-X> as synonyms for <c-X>; - added Ctrl + Alt + letter combinations, only for Unix. Command-line mode related changes: - added :split! to toggle between only and split view; - added :file to quick run one of associated commands; - added backgrounding of :copy, :move and :delete commands; - added :delete!; - added :execute, :source commands; - added support for using environment variables as :cd or :pushd arguments; - added support for :substitute command without arguments; - added notation to run internal vifm commands from user defined commands; - allowed exclamation mark for :view command (to prevent view closing); - allowed question mark for :mark command (to prevent bookmark overwriting). Completion: - added completion of environment variables (:cd, :pushd, :! and :!!). Normal and visual modes related changes: - added '(' and ')' keys for normal and visual modes; - added Ctrl-A and Ctrl-X keys (normal and visual modes); - added e key for normal mode; - made i key work in visual mode; - made ga and gA work in background; - better cW command; - clean selection after i key in normal mode. Menus and dialogs: - added year in the file info dialog (on Ctrl-G); - added zh, zl, zH and zL keys for the menus (horizontal scrolling); - added ZQ and ZZ keys to close menus and dialogs. TUI (Terminal User Interface): - added horizontal splitting of views (changed :split command, added :vsplit command, changed Ctrl-w s mapping); - added Ctrl-w j and Ctrl-w k keys; - added Ctrl-w <, Ctrl-w >, Ctrl-w + and Ctrl-w - keys; - added Ctrl-w | and Ctrl-w _ keys. File cloning: - don't change file extension on cloning; - move cursor to clone of current file after file cloning; - smarter file name generation on cloning; - made C command accept count. Only on Windows: - added kind of portable mode on Windows; - make macros expand to paths with forward slashes on Windows; - better check if directory was changed on Windows; - show all shares on Windows (including private ones); - fixed a lot of bugs on Windows. For Vim: - added g:vifm_exec variable for the plugin; - added ftdetect plugin for vim (now there is no need for modelines or changing .vimrc); - allowed arguments for plugin's commands; - added more tags to the documentation in vim-help format. Other changes: - added Ctrl-n (j) and Ctrl-p (k) keys; - added view mode (see documentation); - added -c and + command line arguments; - added support of [count] for / and ?; - don't clear terminal title on exit; - warn about symbolic links are not available; - don't show current file as selected after executing a :command and resizing terminal while it works; - show progress message (e.g. on :copy) after terminal is resized; - made some messages about operations more correct. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ September 29, 2011 ================== vifm v0.7.0 is out! ------------------- And as it was promised vifm is back on Windows! This release breaks compatibility a little, which was done intentionally to make vifm more vi-like. I hope that won't make too much discomfort for users, at least I tried to reduce discomfort as much as I can. In particular, an utility program named vifmrc-converter is shipped with vifm now. It's main purpose is to automatically convert configuration files (vifmrc, vifminfo, startup and colorschemes files) to new format. You don't have to run it by yourself, vifm will do this for you after asking some questions at first startup. Here are the main changes by categories. Configuration: - changed format of ~/.vifm/vifmrc and ~/.vifm/vifminfo files; - removed support of startup file, all commands will be automatically moved to the vifmrc file; - added support for multi line commands in the vifmrc (ex-startup) file; - now users can place scripts for vifm to ~/.vifm/scripts, vifm modifies its PATH environment variable to let user run scripts without specifying full path; - now vifm also accepts paths to files as the startup arguments and --no-configs option. Normal and visual modes related changes: - added gf, al, rl and cl commands for dealing with symbolic links; - added gu and gU commands (and their variations); - added gs command to work with t selection like gv with visual mode selection; - made C handle selection, check read permission and work in visual mode; - changed the way l key handles selection and made it work in visual mode. Command-line mode related changes: - removed :cmdhistory command, use :history cmd or ":history :" instead; - added :noremap, :cnoremap, :nnoremap, :vnoremap, :unmap, :cunmap, :nunmap and :vunmap commands; - added :filetype, :filextype and :fileviewer commands; - added :find and :grep commands; - added :substitute and :tr commands; - added :clone, :copy, :move, :alink and :rlink commands; - added :chmod, :chown, :mkdir and :touch commands; - added :mark, :delmarks, :comclear, :highlight, :restart and :messages command; - documented command line keys and marked which :commands accept ranges; - now vifm understands user name after tilde in paths; - let user use short forms of user-defined commands with "!". Completion: - added completion for co, cg, cw and cW commands; - sort completion items; - shift-Tab command line key to perform completion in reversed order; - added Ctrl-_ command-line key to reject completion. Macros: - added filename modifiers (:p, :~, :., :h, :t, :r, :e, :s and :gs); - added %S and %M macros; - added macros that are expanded to paths enclosed in double quotes (%"c, %"C, %"f, %"F, %"b, %"d and %"D); - handle %m, %M, %s and %S in the :! command. :set command and options: - removed 'savelocation' option. Use :set vifminfo+=dhistory; - added 'wildmenu', 'ignorecase', 'smartcase', 'hlsearch', 'vifminfo', 'shell', 'vixcmd', 'scrolloff', 'timeoutlen', 'autochpos','gdefault', 'slowfs' options; - added abbreviations for options; - added support for using ':' instead of '='; - support for ':set' and ':set all' commands; - made ':set option' equivalent to ':set option?' for all types of options except boolean; - made 'history' option control search, command line and prompt histories; - better 'sort' option (support by multiple sort keys, added iname key); - made 'vicmd' and 'vixcmd' understand & at the end; - :set command now understands & (reset option to its default value). Color scheme related changes: - all color schemes are stored under the ~/.vifm/colors/ directory, each color scheme in its own file; - color scheme file is a list of commands. All command-line commands are handled, but only :highlight commands are really useful here; - added colors for current top line, other top line, status line, error messages in the status bar, broken links and FIFO files; - now maximum number of color schemes is unlimited even on 8-color terminals (there was a limit of 5 color schemes for such terminals before). Only on Windows: - gl normal mode key; - UNC names support; - :volumes command. For Vim: - added g:vifm_term variable for the plugin; - added vifmrc syntax and filetype files for Vim; - tags for some items in the help file for Vim. Other changes: - let user go through directories with execute access, but no read access; - made filetype understand star as in globals; - removed duplicates from command and directory history; - made directory, command line and search histories as well as dirstack and registers persistent (when 'vifminfo' option contains appropriate value); - show search matches in the menus; - now keys can be used in mappings and mapping of keys like y, d or m works right; - modify terminal emulator title; - don't quit when terminal is too small (print message and ignore input); - fixed bugs. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ July 20, 2011 ============= vifm-0.6.3 ---------- Main changes in vifm-0.6.3: - added another format for filetype (FUSE_MOUNT2); - added %CLEAR FUSE mount parameter. See vifmrc for details; - added %c and %C macros (current file of current and other directories, not selected file or files); - added :rename command (opens vi to let you edit names for selected file or files); - added undo list (u, Ctrl-R and :undolist commands; 'undolevels' option); - added small FAQ; - added gA command (like ga, but forces update); - added whole line comments (can be useful in startup file); - added :dirs command (shows directory stack); - added 'sortnumbers', 'followlinks', 'fusehome', 'confirm' and 'history' options; - added dialog to ask user about backwards range in command; - added some vi like keys for menus, dialogs and visual mode; - added 'savelocation' option (start vifm in the last visited directory) which is off be default thus returning old behaviour when vifm is started with no argument; - added gv command for visual mode; - enter key in visual mode will leave it saving selection; - now location of panes is saved in ~/.vifm/vifminfo instead of ~/.vifm/vifmr; - now builtin keys can be remapped; - don't replace escape sequences for :! and :!! commands; - more vi like completion and history in command line and search; - some improvements for :filter command; - some improvements for command ranges; - now ranges modify %f macro for user defined commands; - made f and F work with wide characters; - made option parser handle quotes; - rename files in Trash (to avoid name conflicts); - don't terminate background processes on vifm exit; - remove files that are in the Trash on :empty command from all registers; - don't ignore Ctrl-Z; - don't clear screen on shellout; - updated Vim plugin; - fixed a lot of bugs; See ChangeLog for details. Also see THANKS file that was added in this release. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ June 19, 2011 ============= vifm-0.6.2 ----------- This release fixes some bugs and adds several commands for different modes. Main changes: - added map menus (run :cmap, :vmap, :nmap commands without arguments); - added :cmdhistory command; - added 'fastrun' option; - added o and O keys for Visual mode (go to other end of selection); - added gv Normal mode command; - added support for spaces and functional keys in mappings (<space> and <f0> - <f63>); - added mimetype to fileinfo dialog; - added %b command macro; - implemented :yank and :colorscheme commands; - made filetype menu editable; - restore SIGINT (Ctrl+C) default behaviour on shellout; - replace escape sequences in quick view output with ^foo; - give options if a file already exists in destination directory; - unmount all FUSE mounts on exit; - more verbose version information; - added Ctrl-C key handling to error message dialog; - use file command when GTK+ and libmagic are disabled; - better error messages; - use ga command results to sort by size; - fixed paths in config.c to work with non standard install prefix; - fixed several bugs with command completion and terminal resizing. See ChangeLog for details and AUTHORS for information about authors. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ June 11, 2011 ============= Vifm-0.6.1 is available. ------------------------ Windows version remains unchanged for now. I'm planning to use one code base for both Unix and Windows platforms and it would take some time to do that. Major changes since 0.5: - added support for user mappings; - added file selectors (like motions and text-objects); - improved sort dialog; - added filetype detection using GTK+ or libmagic (:file); - added directory stack (:pushd, :popd); - added completion for :! and :!! commands; - added custom file viewers (:view); - added startup file; - better utf8 support; - added :set command and options. See ChangeLog for details. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ August 7, 2009 ============== Vifm-0.5 is available. ---------------------- This release is mainly user contributed patches and a new port for Windows. A filetype setting was added to allow the mounting of files with fuse-zip and other filesystems based on fuse. The :com input was changed to accept wide characters. The Windows port is missing some of the features of the Unix version but it is useful and stable enough for an initial release. The following commands were added in the Windows port: - :copy; - :move; - :volume - list mounted volumes.