xaizek / vifm (License: GPLv2+) (since 2018-12-07)
Vifm is a file manager with curses interface, which provides Vi[m]-like environment for managing objects within file systems, extended with some useful ideas from mutt.
Commit 679eefacb7554c7ffa98b6ff17efc1ef408cffdf

Update NEWS file for v0.14
Author: xaizek
Author date (UTC): 2025-02-07 23:40
Committer name: xaizek
Committer date (UTC): 2025-02-07 23:40
Parent(s): c80914671ca49d576e7f474ec99daab74bbb2c0c
Signing key: 99DC5E4DB05F6BE2
Tree: a9a64e86457d805333e4c35a41e7033cd5a6f2ba
File Lines added Lines deleted
NEWS 372 0
File NEWS changed (mode: 100644) (index 588fd5d72..17ae3f1c0)
1 08 February 2025
2 ================
3
4 Vifm v0.14
5 ----------
6
7 Thanks to everyone who tried out the beta.
8
9 Highlights:
10
11 - Somewhat incompatible changes.
12
13 This release contains a number of changes which are technically
14 non-backwards compatible. However, all of them should have very little
15 negative impact (i.e., hard to notice the change without reading the
16 changelog).
17
18 At the same time, a bug, fixing which is likely to have an impact on user
19 configuration, has been identified but not yet fixed to give a chance to
20 update all affected `vifmrc` files. If a bug is likely to be relied on by
21 the configuration, a dialog with the explanation and instructions will
22 appear.
23
24 - Sorting and non-Latin characters.
25
26 Until this release Vifm has always used byte sorting (effectively, sorting
27 of UTF-8 byte sequences). From now on a form of Unicode normalization is
28 applied to strings when sorting views and completion results. The change
29 can be expanded to other cases in future releases. The measured performance
30 impact is negligible (several percent).
31
32 Practically, this means that characters like `a` and `ä` are now grouped
33 together regardless of the way in which diacritic is being encoded. Some
34 characters can still appear in weird non-alphabetic positions because full
35 Unicode normalization results in losing case sensitivity and is therefore
36 not applied.
37
38 - Addressing some longtime woes.
39
40 For one reason or another some inconvenient peculiarities have accumulated
41 over the years. Time has come to replace workarounds with something better:
42
43 * global variables (`g:var`) replace the use of environmental variables for
44 internal purposes, thus avoiding polluting environment of child processes
45 * use of `:let` to invoke a builtin function discarding its result is
46 superseded by a proper `:call` command
47 * use of `execute 'normal! gl'` to run selection now has `:open` command as
48 a better alternative
49 * size of selection can now be queried via `selected()` (previous releases
50 required `expand('%c') == expand('%f')` or an equivalent trick)
51 * `%{expression}` macro in `'statusline'` can now have `}` embedded as
52 `\}` (`\\` still means two slashes)
53 * dialogs now recognize `Enter` and `Escape` keys as "yes" and "no" replies
54
55 - More useful menus.
56
57 `:copen` recalled last navigation menu for years, but that's not always
58 enough. Now up to 25 such menus are stored after their use and can be
59 navigated to via `:chistory`/`:colder`/`:cnewer`.
60
61 In addition, `:grep` or `:find` can be rerun on the same set of commands
62 right from the menu which previously required leaving the menu just to get
63 back to it.
64
65 History of command-line in menus is now also managed and stored, making
66 staying in menu mode for longer a more pleasant experience.
67
68 - UI improvements.
69
70 Navigation between views/tabs via new `:wingo` command with optional
71 incremental completion thanks to new `'wildinc'` option (applicable to any
72 other command or all of them at once).
73
74 Ability to highlight a view column (`:highlight column:size ...`), specify
75 how highlighting applies (`'hloptions'`), set a separator between miller
76 columns in `set fillchars+=millersep:'|'`, shorten columns in the
77 middle (`^` in `'viewcolumn'`).
78
79 Also, displaying of CJK characters on Windows should have much fewer issues
80 now.
81
82 - Lua API.
83
84 Slowly adding new functionality. This batch comes with things like
85 primitive file operations, ability to create custom views or menus and
86 handling ranges of :commands.
87
88 - Other.
89
90 Search matches can be traversed via `Tab` and `Shift-Tab` while in the
91 prompt (applies to navigation mode as well).
92
93 An invalid expression in `:if` or `:elseif` no longer just skips that
94 command, now all commands up to and including matching `:endif` are skipped
95 to avoid executing half-random sequences of commands due to a mistake, which
96 also results in better error messages. Previously, `:elseif` was also
97 evaluating its expression even some earlier branch was already taken.
98
99 `:rename` now asks whether file move is intended instead of assuming a user
100 mistake and refusing to proceed.
101
102 Support MTP devices by bundled `vifm-media` script if simple-mtpfs is
103 installed. Also improve what devices are offered for mounting (e.g., don't
104 offer a whole drive if it contains partitions).
105
106 `v:version` to branch depending on release.
107
108 - Fixes.
109
110 Get preview graphics out of the way in more cases (like when opening menus).
111 Terminals with more than 32768 color pairs should not cause visual defects
112 or crashes anymore.
113
114 Merging of directories was either not asking for confirmation or aborting
115 after skipping a file. Paths with some unreadable characters were not
116 processed due to a regression. Directories weren't counted in estimates of
117 file operations.
118
119 `&&` operator was always evaluating both branches instead of properly
120 short-circuiting. `%a` macro of `'statusline'` was displaying wrong values
121 on non-Linux Unix-like systems. `:compare` falsely claimed that files of
122 identical size and with common prefix are identical.
123
124 Building:
125 - Changed --with-gtk flag to --with-glib (old name is still available). GTK
126 was pulled in by mistake, only GIO/GLib was ever used...
127 - Updated autotools scripts to their newer versions (thanks to phanium, a.k.a.
128 phanen).
129 - Fixed running tests with locales that use comma for decimal point (thanks to
130 PRESFIL).
131 - Fixed running tests with musl libc (thanks to Henrik Holst, a.k.a. hholst80).
132
133 :set command and options:
134 - Changed default value of 'findprg' to avoid the use of syntax specific to
135 GNU find. The only difference is that now one can see "Permission denied"
136 errors which weren't displayed before. Sample vifmrc files contain
137 detection of GNU find on startup (thanks to Jose Riha, a.k.a. jose1711).
138 - Added "mchistory" value to 'vifminfo' and 'sessionoptions' option. It
139 manages storing of command-line history of menus.
140 - Added 'hloptions' option to configure which view colums get affected by file
141 highlighting (thanks to qsmodo).
142 - Added "millersep:" value to 'fillchars' that allows customizing the border
143 between miller columns (thanks to Shuo, a.k.a. shenqshuoh).
144 - Added 'wildinc' option that defines which :commands should be completed as
145 they are edited.
146 - Added 'uioptions' option with possible "iodetails" value to display progress
147 dialog by default (thanks to Ralf Schmitt).
148 - Added middle view column alignment (specified by "^" in 'viewcolumns'
149 option). Part of the text is replaced with ellipsis to keep both start and
150 end visible (patch by Vadim Curcă).
151 - Made completion of an option with its current value work not only on
152 `opt=<tab>`, but also on `opt='<tab>` and `opt="<tab>` (thanks to
153 aleksejrs).
154
155 Command-line mode:
156 - Added ":history mcmd" menu for displaying command-line history of menus.
157 - Added :col[der] and :cnew[er] commands to menu mode to traverse history of
158 navigation menus.
159 - Added :chi[story] command that opens a menu of saved menus (available in all
160 menus as well).
161 - Added "column:{name}" form of argument to :highlight command to specify
162 style of a separate column (thanks to Anton Gepting).
163 - Added :wingo command to navigate to a view by substring matching against its
164 title or path (thanks to iSeeU816 and Alexandre Viau).
165 - Added :cal[l] command to run a function discarding its return value (thanks
166 to anyone asking about simply running a function).
167 - Added :o[pen] command to open current file, selection or range as if Enter
168 was pressed (thanks to Safal Piya, a.k.a. mrsafalpiya).
169 - Added a way to insert "}" inside of %{expr} macro of 'statusline' (thanks to
170 vuenn).
171 - Made :goto preserve custom and tree views (thanks to Svetlozar Iliev, a.k.a.
172 asmodeus812).
173 - Made :compare treat non-regular files (pipes, sockets, etc.) as empty.
174 - Allowed moving files via :rename (requires an interactive confirmation)
175 (thanks to aleksejrs).
176 - Improved error message on trying to :unlet a builtin variable.
177 - Expand environment variables in the arguments of :mark command (thanks to an
178 anonymous at Vifm Q2A site).
179 - Improved detection and reporting of invalid mark name by :mark command.
180 - Made Tab and Shift-Tab in interactive search prompts (including when
181 navigating) move cursor to next/previous search match (thanks to David
182 Sierra DiazGranados, a.k.a. davidsierradz).
183
184 Macros:
185 - Allow and skip !/!! prefix of custom external :commands for more macros (%S,
186 %q, %i, %m, %M, %s, %v, %u, %U, %Iu, %IU).
187 - Adjusted heuristic for determining previewer type to allow use of %px and
188 %py with %pd without any implications (thanks to iambumblehead).
189
190 Core:
191 - Changed initialization to not create a copy of rendered man page at
192 $VIFM/vifm-help.txt, :help now opens the original file (thanks to intelfx).
193 - Changed handling of Ctrl-Z to not suspend the application if a corresponding
194 user mapping exists (patch 高浩亮, a.k.a. haolian9).
195 - Perform sorting of completion items after doing Unicode normalization.
196 - Perform sorting of file names after doing Unicode normalization (thanks to
197 hacksenwerk).
198
199 Normal and visual modes:
200 - Added [S and ]S shortcuts as wrapping versions of [s and ]s (thanks to
201 aksr).
202
203 Integration:
204 - Made vifm-media not offer partitioned drives as they aren't mountable as a
205 whole.
206 - Extended vifm-media script to support MTP devices if simple-mtpfs tool is
207 installed (thanks to FlyCat, a.k.a. yanwh0311, and Alexandre Viau).
208 - Fixed vifm-media script not listing external drives with udevil and udisks.
209 - Fixed vifm-media script not listing removable drives with udisks marked as
210 non-removable by udisks.
211
212 AppImage:
213 - Updated ncurses in AppImage to 6.5.
214 - Don't overwrite $TERMINFO in AppImage, set/append to $TERMINFO_DIRS instead
215 (thanks to anonymous at Vifm Q2A site).
216 - Fixed /usr/share/terminfo not being consulted when running from an AppImage
217 (thanks to anonymous at Vifm Q2A site).
218
219 Menus and dialogs:
220 - Added command-line history to menu mode.
221 - Added :gr[ep] and :fin[d] commands to menu mode. They allow (re)running the
222 commands on the same set of files without leaving the mode.
223 - Added inode number to File Info dialog.
224 - Added handling of Enter/Escape keys to prompts and error dialogs (thanks to
225 laur89, Alexandre Viau and multiple other users who asked about this).
226 - List register's content listed in normal rather then reversed order in
227 :registers/:display menu.
228 - Display number of color pairs in use in :version/:vifm menu.
229 - Constrained background error dialogs to appear only in normal mode when not
230 much is going on.
231
232 Macros:
233 - Changed %N macro to not be mutually exclusive with most of other macros (the
234 limitation wasn't documented and didn't make much sense) (thanks to James
235 Dietrich).
236
237 Scripting:
238 - Added a statusbar message and a dialog to warn about an upcoming fix for
239 strings in conditional expressions (e.g., `if $VAR` checks for `$VAR` being
240 non empty instead of converting it to an integer) (thanks to
241 justpretending2).
242 - Changed behaviour on failure to evaluate an expression of :if or :elseif.
243 Previously this resulted in trying to execute any commands until and
244 including :endif (all branches taken). Now everything up to :endif will not
245 be executed (no branches taken) (thanks to Ed Pavlov).
246 - Changed filetype() to accept path in its first parameter. This means that
247 passing it something like "15abc" will no longer be interpreted as 15
248 (thanks to MikeLemon).
249 - Added escape() builtin function to escape specific characters in strings
250 (thanks to The Cyberduck).
251 - Added selected() builtin function which returns number of currently selected
252 files.
253 - Added global variables (with "g:" prefix) to avoid using environment
254 variables in their place as a workaround.
255 - Added v:version builtin variable that exposes version as an integer which
256 can be meaningfully compared (thanks to an anonymous at Vifm Q2A site).
257
258 Performance:
259 - Slightly improved performance of comparing files by content.
260 - Fixed performance degradation after preview consumes lots of color pairs.
261
262 Documentation:
263 - Clarified documentation on column literals and escaping (thanks to
264 chelovechishko).
265 - Made documentation of 'vifminfo' more readable.
266 - Rewrote "Menus and dialogs" section.
267 - Document how the use of different preview macros affects classification of a
268 previewer (thanks to iambumblehead).
269 - Slightly expanded documentation on %N macro (thanks to James Dietrich).
270 - Somewhat improved documentation on functional keys.
271 - Fixed documentation on yy, Y, dd and DD not mentioning how "s" flag of
272 'cpoptions' affects their behaviour (thanks to James Dietrich).
273 - Fixed outdated documentation on the behaviour of n/N when 'hlsearch' is
274 enabled since the introduction of highlighting of search matches (thanks to
275 James Dietrich).
276
277 TUI (Text User Interface):
278 - When processing multiple files in background, show current position in the
279 list on the job bar.
280 - Shorten home directory in paths shown on the job bar.
281 - Provide numerical value of a color as a description of a completion item for
282 it.
283 - Don't attempt clearing graphics when menu-like mode is active. The graphics
284 should have been hidden on entering the mode.
285 - Allowed wild menu popup to take up up to 40% of the screen.
286
287 Only on Windows:
288 - Upgraded to PDCurses 3.9 (was 3.8). Combined with some other changes this
289 improves the situation with handling of CJK characters (thanks to
290 zzx41375004, vodbyte, Jeremy Yuan and others).
291 - Fixed `data/vifmrc` next to vifm.exe being used as global vifmrc file
292 (thanks to midrare).
293 - Fixed incorrectly determining whether a directory is writable (primarily C:\
294 could be reported as non-writable) (thanks to theorlangur and bitraid).
295 - Fixed system() and term() not taking 'shell'/'shellcmdflag' into account
296 (thanks to spence91).
297
298 Color schemes:
299 - Added WildBox highlight group. It can be used to set background of
300 completion window.
301
302 Noteworthy fixes:
303 - Fixed graphics of view mode not being hidden on activating menu, more or
304 file info modes.
305 - Fixed graphics not being cleared on switching to single-pane view (thanks to
306 ret2src).
307 - Fixed a historical omission of Ctrl-G not being available in some prompts:
308 file rename on conflict; owner, group and symbolic link target change
309 (thanks to Branislav Gerazov).
310 - Fixed display issues or a crash when using a terminal with more than 32768
311 color pairs (thanks to iboggs and itshog).
312 - Fixed %a 'statusline' macro producing wrong values on non-Linux Unix-like
313 systems (thanks to voh9eepah).
314 - Fixed merging directories on copying not asking for overwrite confirmations
315 (thanks to aleksejrs).
316 - Fixed skipping of file move during merging aborting the whole operation
317 (thanks to aleksejrs).
318 - Fixed `:[un]select !<text/html>` treating "<text/html>" as an external
319 command.
320 - Fixed environment variables not being expanded on checking that a
321 :file[x]type or :fileviewer command exists in $PATH (thanks to Ben Elan).
322 - Fixed weird sorting of filenames with non-Latin characters when
323 'sortnumbers' option is set and strverscmp() is not provided by the system
324 (like on Windows).
325 - Fixed :compare reporting identical files as changed when there were more
326 than a couple of files with identical size and 4096-byte prefix. A
327 regression in 0.13-beta (thanks to Alexandr Keyp, a.k.a. IAmKapuze).
328 - Fixed :compare hanging on trying to compare non-regular files like pipes by
329 contents.
330 - Fixed :substitute, :tr, gu* and gU* detecting a non-existent target name
331 conflict when rename in a custom view would produce an identically named
332 files in different directories (thanks to aleksejrs).
333 - Fixed :restart leaving histories disabled unless 'history' is set to a
334 non-default value in vifmrc (thanks to James Dietrich).
335 - Fixed processing of file names and paths that undergo escaping in the UI,
336 like inability to externally rename them (regression in 0.12.1 beta) (thanks
337 to jc-SpaceXp).
338 - Fixed rules for handling of selection by :file[x]type not taking
339 %"c/%"C/%"f/%"F macros into account (relevant mostly to Windows) (thanks to
340 %smoothdad).
341 - Fixed :elseif evaluating its expression even if an earlier conditional
342 branch was already taken.
343 - Fixed loading a session with global tabs when 'tabscope' is "pane" resulting
344 in global tabs being invisible.
345 - Fixed Ctrl-A and Ctrl-E in command-line mode not stopping completion unlike
346 other similar keys.
347 - Fixed directories not being accounted for in estimates (thanks to
348 justpretending2).
349 - Fixed Escape being handled as Ctrl-C in prompts which suppresses future
350 errors.
351 - Fixed !! not affecting commands that include %s or %v macro (thanks to James
352 Dietrich).
353 - Fixed a crash after a memory corruption when running an external command via
354 expansion of an environment variable when 'fastrun' is set (e.g.,
355 `!$EDITOR`) (thanks to Quaddroo).
356 - Fixed abort on instance sending something over IPC to itself (thanks to
357 Marcin Kurczewski, a.k.a. rr-).
358 - Fixed `&&` operator which was acting as binary `&` (in terms of evaluation,
359 the result was properly boolean) (thanks to justpretending2).
360
361 Other changes:
362 - Configure 'vifminfo' in sample vifmrc files to store most of the things in
363 vifminfo by default (add missing histories and tabs) (thanks to Christoph
364 Schmidpeter).
365 - Commented out one of MC-like shortcuts in sample vifmrc files, Ctrl-U, to
366 avoid confusing Vim users with default configuration (thanks to midrare).
367
368 See change log for the full list of changes and by whom they were suggested or
369 implemented.
370
371 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
372
1 373 19 January 2025 19 January 2025
2 374 =============== ===============
3 375
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/vifm

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/vifm

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master