forked from vifm/vifm
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNEWS
More file actions
7017 lines (5983 loc) · 312 KB
/
NEWS
File metadata and controls
7017 lines (5983 loc) · 312 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
08 February 2025
================
Vifm v0.14
----------
Thanks to everyone who tried out the beta.
Highlights:
- Somewhat incompatible changes.
This release contains a number of changes which are technically
non-backwards compatible. However, all of them should have very little
negative impact (i.e., hard to notice the change without reading the
changelog).
At the same time, a bug, fixing which is likely to have an impact on user
configuration, has been identified but not yet fixed to give a chance to
update all affected `vifmrc` files. If a bug is likely to be relied on by
the configuration, a dialog with the explanation and instructions will
appear.
- Sorting and non-Latin characters.
Until this release Vifm has always used byte sorting (effectively, sorting
of UTF-8 byte sequences). From now on a form of Unicode normalization is
applied to strings when sorting views and completion results. The change
can be expanded to other cases in future releases. The measured performance
impact is negligible (several percent).
Practically, this means that characters like `a` and `ä` are now grouped
together regardless of the way in which diacritic is being encoded. Some
characters can still appear in weird non-alphabetic positions because full
Unicode normalization results in losing case sensitivity and is therefore
not applied.
- Addressing some longtime woes.
For one reason or another some inconvenient peculiarities have accumulated
over the years. Time has come to replace workarounds with something better:
* global variables (`g:var`) replace the use of environmental variables for
internal purposes, thus avoiding polluting environment of child processes
* use of `:let` to invoke a builtin function discarding its result is
superseded by a proper `:call` command
* use of `execute 'normal! gl'` to run selection now has `:open` command as
a better alternative
* size of selection can now be queried via `selected()` (previous releases
required `expand('%c') == expand('%f')` or an equivalent trick)
* `%{expression}` macro in `'statusline'` can now have `}` embedded as
`\}` (`\\` still means two slashes)
* dialogs now recognize `Enter` and `Escape` keys as "yes" and "no" replies
- More useful menus.
`:copen` recalled last navigation menu for years, but that's not always
enough. Now up to 25 such menus are stored after their use and can be
navigated to via `:chistory`/`:colder`/`:cnewer`.
In addition, `:grep` or `:find` can be rerun on the same set of commands
right from the menu which previously required leaving the menu just to get
back to it.
History of command-line in menus is now also managed and stored, making
staying in menu mode for longer a more pleasant experience.
- UI improvements.
Navigation between views/tabs via new `:wingo` command with optional
incremental completion thanks to new `'wildinc'` option (applicable to any
other command or all of them at once).
Ability to highlight a view column (`:highlight column:size ...`), specify
how highlighting applies (`'hloptions'`), set a separator between miller
columns in `set fillchars+=millersep:'|'`, shorten columns in the
middle (`^` in `'viewcolumn'`).
Also, displaying of CJK characters on Windows should have much fewer issues
now.
- Lua API.
Slowly adding new functionality. This batch comes with things like
primitive file operations, ability to create custom views or menus and
handling ranges of :commands.
- Other.
Search matches can be traversed via `Tab` and `Shift-Tab` while in the
prompt (applies to navigation mode as well).
An invalid expression in `:if` or `:elseif` no longer just skips that
command, now all commands up to and including matching `:endif` are skipped
to avoid executing half-random sequences of commands due to a mistake, which
also results in better error messages. Previously, `:elseif` was also
evaluating its expression even some earlier branch was already taken.
`:rename` now asks whether file move is intended instead of assuming a user
mistake and refusing to proceed.
Support MTP devices by bundled `vifm-media` script if simple-mtpfs is
installed. Also improve what devices are offered for mounting (e.g., don't
offer a whole drive if it contains partitions).
`v:version` to branch depending on release.
- Fixes.
Get preview graphics out of the way in more cases (like when opening menus).
Terminals with more than 32768 color pairs should not cause visual defects
or crashes anymore.
Merging of directories was either not asking for confirmation or aborting
after skipping a file. Paths with some unreadable characters were not
processed due to a regression. Directories weren't counted in estimates of
file operations.
`&&` operator was always evaluating both branches instead of properly
short-circuiting. `%a` macro of `'statusline'` was displaying wrong values
on non-Linux Unix-like systems. `:compare` falsely claimed that files of
identical size and with common prefix are identical.
Building:
- Changed --with-gtk flag to --with-glib (old name is still available). GTK
was pulled in by mistake, only GIO/GLib was ever used...
- Updated autotools scripts to their newer versions (thanks to phanium, a.k.a.
phanen).
- Fixed running tests with locales that use comma for decimal point (thanks to
PRESFIL).
- Fixed running tests with musl libc (thanks to Henrik Holst, a.k.a. hholst80).
:set command and options:
- Changed default value of 'findprg' to avoid the use of syntax specific to
GNU find. The only difference is that now one can see "Permission denied"
errors which weren't displayed before. Sample vifmrc files contain
detection of GNU find on startup (thanks to Jose Riha, a.k.a. jose1711).
- Added "mchistory" value to 'vifminfo' and 'sessionoptions' option. It
manages storing of command-line history of menus.
- Added 'hloptions' option to configure which view colums get affected by file
highlighting (thanks to qsmodo).
- Added "millersep:" value to 'fillchars' that allows customizing the border
between miller columns (thanks to Shuo, a.k.a. shenqshuoh).
- Added 'wildinc' option that defines which :commands should be completed as
they are edited.
- Added 'uioptions' option with possible "iodetails" value to display progress
dialog by default (thanks to Ralf Schmitt).
- Added middle view column alignment (specified by "^" in 'viewcolumns'
option). Part of the text is replaced with ellipsis to keep both start and
end visible (patch by Vadim Curcă).
- Made completion of an option with its current value work not only on
`opt=<tab>`, but also on `opt='<tab>` and `opt="<tab>` (thanks to
aleksejrs).
Command-line mode:
- Added ":history mcmd" menu for displaying command-line history of menus.
- Added :col[der] and :cnew[er] commands to menu mode to traverse history of
navigation menus.
- Added :chi[story] command that opens a menu of saved menus (available in all
menus as well).
- Added "column:{name}" form of argument to :highlight command to specify
style of a separate column (thanks to Anton Gepting).
- Added :wingo command to navigate to a view by substring matching against its
title or path (thanks to iSeeU816 and Alexandre Viau).
- Added :cal[l] command to run a function discarding its return value (thanks
to anyone asking about simply running a function).
- Added :o[pen] command to open current file, selection or range as if Enter
was pressed (thanks to Safal Piya, a.k.a. mrsafalpiya).
- Added a way to insert "}" inside of %{expr} macro of 'statusline' (thanks to
vuenn).
- Made :goto preserve custom and tree views (thanks to Svetlozar Iliev, a.k.a.
asmodeus812).
- Made :compare treat non-regular files (pipes, sockets, etc.) as empty.
- Allowed moving files via :rename (requires an interactive confirmation)
(thanks to aleksejrs).
- Improved error message on trying to :unlet a builtin variable.
- Expand environment variables in the arguments of :mark command (thanks to an
anonymous at Vifm Q2A site).
- Improved detection and reporting of invalid mark name by :mark command.
- Made Tab and Shift-Tab in interactive search prompts (including when
navigating) move cursor to next/previous search match (thanks to David
Sierra DiazGranados, a.k.a. davidsierradz).
Macros:
- Allow and skip !/!! prefix of custom external :commands for more macros (%S,
%q, %i, %m, %M, %s, %v, %u, %U, %Iu, %IU).
- Adjusted heuristic for determining previewer type to allow use of %px and
%py with %pd without any implications (thanks to iambumblehead).
Core:
- Changed initialization to not create a copy of rendered man page at
$VIFM/vifm-help.txt, :help now opens the original file (thanks to intelfx).
- Changed handling of Ctrl-Z to not suspend the application if a corresponding
user mapping exists (patch 高浩亮, a.k.a. haolian9).
- Perform sorting of completion items after doing Unicode normalization.
- Perform sorting of file names after doing Unicode normalization (thanks to
hacksenwerk).
Normal and visual modes:
- Added [S and ]S shortcuts as wrapping versions of [s and ]s (thanks to
aksr).
Integration:
- Made vifm-media not offer partitioned drives as they aren't mountable as a
whole.
- Extended vifm-media script to support MTP devices if simple-mtpfs tool is
installed (thanks to FlyCat, a.k.a. yanwh0311, and Alexandre Viau).
- Fixed vifm-media script not listing external drives with udevil and udisks.
- Fixed vifm-media script not listing removable drives with udisks marked as
non-removable by udisks.
AppImage:
- Updated ncurses in AppImage to 6.5.
- Don't overwrite $TERMINFO in AppImage, set/append to $TERMINFO_DIRS instead
(thanks to anonymous at Vifm Q2A site).
- Fixed /usr/share/terminfo not being consulted when running from an AppImage
(thanks to anonymous at Vifm Q2A site).
Menus and dialogs:
- Added command-line history to menu mode.
- Added :gr[ep] and :fin[d] commands to menu mode. They allow (re)running the
commands on the same set of files without leaving the mode.
- Added inode number to File Info dialog.
- Added handling of Enter/Escape keys to prompts and error dialogs (thanks to
laur89, Alexandre Viau and multiple other users who asked about this).
- List register's content listed in normal rather then reversed order in
:registers/:display menu.
- Display number of color pairs in use in :version/:vifm menu.
- Constrained background error dialogs to appear only in normal mode when not
much is going on.
Macros:
- Changed %N macro to not be mutually exclusive with most of other macros (the
limitation wasn't documented and didn't make much sense) (thanks to James
Dietrich).
Scripting:
- Added a statusbar message and a dialog to warn about an upcoming fix for
strings in conditional expressions (e.g., `if $VAR` checks for `$VAR` being
non empty instead of converting it to an integer) (thanks to
justpretending2).
- Changed behaviour on failure to evaluate an expression of :if or :elseif.
Previously this resulted in trying to execute any commands until and
including :endif (all branches taken). Now everything up to :endif will not
be executed (no branches taken) (thanks to Ed Pavlov).
- Changed filetype() to accept path in its first parameter. This means that
passing it something like "15abc" will no longer be interpreted as 15
(thanks to MikeLemon).
- Added escape() builtin function to escape specific characters in strings
(thanks to The Cyberduck).
- Added selected() builtin function which returns number of currently selected
files.
- Added global variables (with "g:" prefix) to avoid using environment
variables in their place as a workaround.
- Added v:version builtin variable that exposes version as an integer which
can be meaningfully compared (thanks to an anonymous at Vifm Q2A site).
Performance:
- Slightly improved performance of comparing files by content.
- Fixed performance degradation after preview consumes lots of color pairs.
Documentation:
- Clarified documentation on column literals and escaping (thanks to
chelovechishko).
- Made documentation of 'vifminfo' more readable.
- Rewrote "Menus and dialogs" section.
- Document how the use of different preview macros affects classification of a
previewer (thanks to iambumblehead).
- Slightly expanded documentation on %N macro (thanks to James Dietrich).
- Somewhat improved documentation on functional keys.
- Fixed documentation on yy, Y, dd and DD not mentioning how "s" flag of
'cpoptions' affects their behaviour (thanks to James Dietrich).
- Fixed outdated documentation on the behaviour of n/N when 'hlsearch' is
enabled since the introduction of highlighting of search matches (thanks to
James Dietrich).
TUI (Text User Interface):
- When processing multiple files in background, show current position in the
list on the job bar.
- Shorten home directory in paths shown on the job bar.
- Provide numerical value of a color as a description of a completion item for
it.
- Don't attempt clearing graphics when menu-like mode is active. The graphics
should have been hidden on entering the mode.
- Allowed wild menu popup to take up up to 40% of the screen.
Only on Windows:
- Upgraded to PDCurses 3.9 (was 3.8). Combined with some other changes this
improves the situation with handling of CJK characters (thanks to
zzx41375004, vodbyte, Jeremy Yuan and others).
- Fixed `data/vifmrc` next to vifm.exe being used as global vifmrc file
(thanks to midrare).
- Fixed incorrectly determining whether a directory is writable (primarily C:\
could be reported as non-writable) (thanks to theorlangur and bitraid).
- Fixed system() and term() not taking 'shell'/'shellcmdflag' into account
(thanks to spence91).
Color schemes:
- Added WildBox highlight group. It can be used to set background of
completion window.
Noteworthy fixes:
- Fixed graphics of view mode not being hidden on activating menu, more or
file info modes.
- Fixed graphics not being cleared on switching to single-pane view (thanks to
ret2src).
- Fixed a historical omission of Ctrl-G not being available in some prompts:
file rename on conflict; owner, group and symbolic link target change
(thanks to Branislav Gerazov).
- Fixed display issues or a crash when using a terminal with more than 32768
color pairs (thanks to iboggs and itshog).
- Fixed %a 'statusline' macro producing wrong values on non-Linux Unix-like
systems (thanks to voh9eepah).
- Fixed merging directories on copying not asking for overwrite confirmations
(thanks to aleksejrs).
- Fixed skipping of file move during merging aborting the whole operation
(thanks to aleksejrs).
- Fixed `:[un]select !<text/html>` treating "<text/html>" as an external
command.
- Fixed environment variables not being expanded on checking that a
:file[x]type or :fileviewer command exists in $PATH (thanks to Ben Elan).
- Fixed weird sorting of filenames with non-Latin characters when
'sortnumbers' option is set and strverscmp() is not provided by the system
(like on Windows).
- Fixed :compare reporting identical files as changed when there were more
than a couple of files with identical size and 4096-byte prefix. A
regression in 0.13-beta (thanks to Alexandr Keyp, a.k.a. IAmKapuze).
- Fixed :compare hanging on trying to compare non-regular files like pipes by
contents.
- Fixed :substitute, :tr, gu* and gU* detecting a non-existent target name
conflict when rename in a custom view would produce an identically named
files in different directories (thanks to aleksejrs).
- Fixed :restart leaving histories disabled unless 'history' is set to a
non-default value in vifmrc (thanks to James Dietrich).
- Fixed processing of file names and paths that undergo escaping in the UI,
like inability to externally rename them (regression in 0.12.1 beta) (thanks
to jc-SpaceXp).
- Fixed rules for handling of selection by :file[x]type not taking
%"c/%"C/%"f/%"F macros into account (relevant mostly to Windows) (thanks to
%smoothdad).
- Fixed :elseif evaluating its expression even if an earlier conditional
branch was already taken.
- Fixed loading a session with global tabs when 'tabscope' is "pane" resulting
in global tabs being invisible.
- Fixed Ctrl-A and Ctrl-E in command-line mode not stopping completion unlike
other similar keys.
- Fixed directories not being accounted for in estimates (thanks to
justpretending2).
- Fixed Escape being handled as Ctrl-C in prompts which suppresses future
errors.
- Fixed !! not affecting commands that include %s or %v macro (thanks to James
Dietrich).
- Fixed a crash after a memory corruption when running an external command via
expansion of an environment variable when 'fastrun' is set (e.g.,
`!$EDITOR`) (thanks to Quaddroo).
- Fixed abort on instance sending something over IPC to itself (thanks to
Marcin Kurczewski, a.k.a. rr-).
- Fixed `&&` operator which was acting as binary `&` (in terms of evaluation,
the result was properly boolean) (thanks to justpretending2).
Other changes:
- Configure 'vifminfo' in sample vifmrc files to store most of the things in
vifminfo by default (add missing histories and tabs) (thanks to Christoph
Schmidpeter).
- Commented out one of MC-like shortcuts in sample vifmrc files, Ctrl-U, to
avoid confusing Vim users with default configuration (thanks to midrare).
See change log for the full list of changes and by whom they were suggested or
implemented.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
19 January 2025
===============
Vifm v0.14 beta
---------------
The beta stage will last about two weeks. In case any serious bugs are found
during this period, another release candidate can be released.
Highlights:
- Somewhat incompatible changes.
This release contains a number of changes which are technically
non-backwards compatible. However, all of them should have very little
negative impact (i.e., hard to notice the change without reading the
changelog).
At the same time, a bug, fixing which is likely to have an impact on user
configuration, has been identified but not yet fixed to give a chance to
update all affected `vifmrc` files. If a bug is likely to be relied on by
the configuration, a dialog with the explanation and instructions will
appear.
- Sorting and non-Latin characters.
Until this release Vifm has always used byte sorting (effectively, sorting
of UTF-8 byte sequences). From now on a form of Unicode normalization is
applied to strings when sorting views and completion results. The change
can be expanded to other cases in future releases. The measured performance
impact is negligible (several percent).
Practically, this means that characters like `a` and `ä` are now grouped
together regardless of the way in which diacritic is being encoded. Some
characters can still appear in weird non-alphabetic positions because full
Unicode normalization results in losing case sensitivity and is therefore
not applied.
- Addressing some longtime woes.
For one reason or another some inconvenient peculiarities have accumulated
over the years. Time has come to replace workarounds with something better:
* global variables (`g:var`) replace the use of environmental variables for
internal purposes, thus avoiding polluting environment of child processes
* use of `:let` to invoke a builtin function discarding its result is
superseded by a proper `:call` command
* use of `execute 'normal! gl'` to run selection now has `:open` command as
a better alternative
* size of selection can now be queried via `selected()` (previous releases
required `expand('%c') == expand('%f')` or an equivalent trick)
* `%{expression}` macro in `'statusline'` can now have `}` embedded as
`\}` (`\\` still means two slashes)
* dialogs now recognize `Enter` and `Escape` keys as "yes" and "no" replies
- More useful menus.
`:copen` recalled last navigation menu for years, but that's not always
enough. Now up to 25 such menus are stored after their use and can be
navigated to via `:chistory`/`:colder`/`:cnewer`.
In addition, `:grep` or `:find` can be rerun on the same set of commands
right from the menu which previously required leaving the menu just to get
back to it.
History of command-line in menus is now also managed and stored, making
staying in menu mode for longer a more pleasant experience.
- UI improvements.
Navigation between views/tabs via new `:wingo` command with optional
incremental completion thanks to new `'wildinc'` option (applicable to any
other command or all of them at once).
Ability to highlight a view column (`:highlight column:size ...`), specify
how highlighting applies (`'hloptions'`), set a separator between miller
columns in `set fillchars+=millersep:'|'`, shorten columns in the
middle (`^` in `'viewcolumn'`).
Also, displaying of CJK characters on Windows should have much fewer issues
now.
- Lua API.
Slowly adding new functionality. This batch comes with things like
primitive file operations, ability to create custom views or menus and
handling ranges of :commands.
- Other.
Search matches can be traversed via `Tab` and `Shift-Tab` while in the
prompt (applies to navigation mode as well).
An invalid expression in `:if` or `:elseif` no longer just skips that
command, now all commands up to and including matching `:endif` are skipped
to avoid executing half-random sequences of commands due to a mistake, which
also results in better error messages. Previously, `:elseif` was also
evaluating its expression even some earlier branch was already taken.
`:rename` now asks whether file move is intended instead of assuming a user
mistake and refusing to proceed.
Support MTP devices by bundled `vifm-media` script if simple-mtpfs is
installed. Also improve what devices are offered for mounting (e.g., don't
offer a whole drive if it contains partitions).
`v:version` to branch depending on release.
- Fixes.
Get preview graphics out of the way in more cases (like when opening menus).
Terminals with more than 32768 color pairs should not cause visual defects
or crashes anymore.
Merging of directories was either not asking for confirmation or aborting
after skipping a file. Paths with some unreadable characters were not
processed due to a regression. Directories weren't counted in estimates of
file operations.
`&&` operator was always evaluating both branches instead of properly
short-circuiting. `%a` macro of `'statusline'` was displaying wrong values
on non-Linux Unix-like systems. `:compare` falsely claimed that files of
identical size and with common prefix are identical.
Building:
- Changed --with-gtk flag to --with-glib (old name is still available). GTK
was pulled in by mistake, only GIO/GLib was ever used...
- Updated autotools scripts to their newer versions (thanks to phanium, a.k.a.
phanen).
- Fixed running tests with locales that use comma for decimal point (thanks to
PRESFIL).
- Fixed running tests with musl libc (thanks to Henrik Holst, a.k.a. hholst80).
:set command and options:
- Changed default value of 'findprg' to avoid the use of syntax specific to
GNU find. The only difference is that now one can see "Permission denied"
errors which weren't displayed before. Sample vifmrc files contain
detection of GNU find on startup (thanks to Jose Riha, a.k.a. jose1711).
- Added "mchistory" value to 'vifminfo' and 'sessionoptions' option. It
manages storing of command-line history of menus.
- Added 'hloptions' option to configure which view colums get affected by file
highlighting (thanks to qsmodo).
- Added "millersep:" value to 'fillchars' that allows customizing the border
between miller columns (thanks to Shuo, a.k.a. shenqshuoh).
- Added 'wildinc' option that defines which :commands should be completed as
they are edited.
- Added 'uioptions' option with possible "iodetails" value to display progress
dialog by default (thanks to Ralf Schmitt).
- Added middle view column alignment (specified by "^" in 'viewcolumns'
option). Part of the text is replaced with ellipsis to keep both start and
end visible (patch by Vadim Curcă).
- Made completion of an option with its current value work not only on
`opt=<tab>`, but also on `opt='<tab>` and `opt="<tab>` (thanks to
aleksejrs).
Command-line mode:
- Added ":history mcmd" menu for displaying command-line history of menus.
- Added :col[der] and :cnew[er] commands to menu mode to traverse history of
navigation menus.
- Added :chi[story] command that opens a menu of saved menus (available in all
menus as well).
- Added "column:{name}" form of argument to :highlight command to specify
style of a separate column (thanks to Anton Gepting).
- Added :wingo command to navigate to a view by substring matching against its
title or path (thanks to iSeeU816 and Alexandre Viau).
- Added :cal[l] command to run a function discarding its return value (thanks
to anyone asking about simply running a function).
- Added :o[pen] command to open current file, selection or range as if Enter
was pressed (thanks to Safal Piya, a.k.a. mrsafalpiya).
- Added a way to insert "}" inside of %{expr} macro of 'statusline' (thanks to
vuenn).
- Made :goto preserve custom and tree views (thanks to Svetlozar Iliev, a.k.a.
asmodeus812).
- Made :compare treat non-regular files (pipes, sockets, etc.) as empty.
- Allowed moving files via :rename (requires an interactive confirmation)
(thanks to aleksejrs).
- Improved error message on trying to :unlet a builtin variable.
- Expand environment variables in the arguments of :mark command (thanks to an
anonymous at Vifm Q2A site).
- Improved detection and reporting of invalid marks by :mark command.
- Made Tab and Shift-Tab in interactive search prompts (including when
navigating) move cursor to next/previous search match (thanks to David
Sierra DiazGranados, a.k.a. davidsierradz).
Macros:
- Allow and skip !/!! prefix of custom external :commands for more macros (%S,
%q, %i, %m, %M, %s, %v, %u, %U, %Iu, %IU).
- Adjusted heuristic for determining previewer type to allow use of %px and
%py with %pd without any implications (thanks to iambumblehead).
Core:
- Changed initialization to not create a copy of rendered man page at
$VIFM/vifm-help.txt, :help now opens the original file (thanks to intelfx).
- Changed handling of Ctrl-Z to not suspend the application if a corresponding
user mapping exists (patch 高浩亮, a.k.a. haolian9).
- Perform sorting of completion items after doing Unicode normalization.
- Perform sorting of file names after doing Unicode normalization (thanks to
hacksenwerk).
Normal and visual modes:
- Added [S and ]S shortcuts as wrapping versions of [s and ]s (thanks to
aksr).
Integration:
- Made vifm-media not offer partitioned drives as they aren't mountable as a
whole.
- Extended vifm-media script to support MTP devices if simple-mtpfs tool is
installed (thanks to FlyCat, a.k.a. yanwh0311, and Alexandre Viau).
- Fixed vifm-media script not listing external drives with udevil and udisks.
- Fixed vifm-media script not listing removable drives with udisks marked as
non-removable by udisks.
AppImage:
- Updated ncurses in AppImage to 6.5.
- Don't overwrite $TERMINFO in AppImage, set/append to $TERMINFO_DIRS instead
(thanks to anonymous at Vifm Q2A site).
- Fixed /usr/share/terminfo not being consulted when running from an AppImage
(thanks to anonymous at Vifm Q2A site).
Menus and dialogs:
- Added command-line history to menu mode.
- Added :gr[ep] and :fin[d] commands to menu mode. They allow (re)running the
commands on the same set of files without leaving the mode.
- Added inode number to File Info dialog.
- Added handling of Enter/Escape keys to prompts and error dialogs (thanks to
laur89, Alexandre Viau and multiple other users who asked about this).
- List register's content listed in normal rather then reversed order in
:registers/:display menu.
- Display number of color pairs in use in :version/:vifm menu.
- Constrained background error dialogs to appear only in normal mode when not
much is going on.
Macros:
- Changed %N macro to not be mutually exclusive with most of other macros (the
limitation wasn't documented and didn't make much sense) (thanks to James
Dietrich).
Scripting:
- Added a statusbar message and a dialog to warn about an upcoming fix for
strings in conditional expressions (e.g., `if $VAR` checks for `$VAR` being
non empty instead of converting it to an integer) (thanks to
justpretending2).
- Changed behaviour on failure to evaluate an expression of :if or :elseif.
Previously this resulted in trying to execute any commands until and
including :endif (all branches taken). Now everything up to :endif will not
be executed (no branches taken) (thanks to Ed Pavlov).
- Changed filetype() to accept path in its first parameter. This means that
passing it something like "15abc" will no longer be interpreted as 15
(thanks to MikeLemon).
- Added escape() builtin function to escape specific characters in strings
(thanks to The Cyberduck).
- Added selected() builtin function which returns number of currently selected
files.
- Added global variables (with "g:" prefix) to avoid using environment
variables in their place as a workaround.
- Added v:version builtin variable that exposes version as an integer which
can be meaningfully compared (thanks to an anonymous at Vifm Q2A site).
Performance:
- Slightly improved performance of comparing files by content.
- Fixed performance degradation after preview consumes lots of color pairs.
Documentation:
- Clarified documentation on column literals and escaping (thanks to
chelovechishko).
- Made documentation of 'vifminfo' more readable.
- Rewrote "Menus and dialogs" section.
- Document how the use of different preview macros affects classification of a
previewer (thanks to iambumblehead).
- Slightly expanded documentation on %N macro (thanks to James Dietrich).
- Somewhat improved documentation on functional keys.
- Fixed documentation on yy, Y, dd and DD not mentioning how "s" flag of
'cpoptions' affects their behaviour (thanks to James Dietrich).
- Fixed outdated documentation on the behaviour of n/N when 'hlsearch' is
enabled since the introduction of highlighting of search matches (thanks to
James Dietrich).
TUI (Text User Interface):
- When processing multiple files in background, show current position in the
list on the job bar.
- Shorten home directory in paths shown on the job bar.
- Provide numerical value of a color as a description of a completion item for
it.
- Don't attempt clearing graphics when menu-like mode is active. The graphics
should have been hidden on entering the mode.
- Allowed wild menu popup to take up up to 40% of the screen.
Only on Windows:
- Upgraded to PDCurses 3.9 (was 3.8). Combined with some other changes this
improves the situation with handling of CJK characters (thanks to
zzx41375004, vodbyte, Jeremy Yuan and others).
- Fixed `data/vifmrc` next to vifm.exe being used as global vifmrc file
(thanks to midrare).
- Fixed incorrectly determining whether a directory is writable (primarily C:\
could be reported as non-writable) (thanks to theorlangur and bitraid).
- Fixed system() and term() not taking 'shell'/'shellcmdflag' into account
(thanks to spence91).
Color schemes:
- Added WildBox highlight group. It can be used to set background of
completion window.
Noteworthy fixes:
- Fixed graphics of view mode not being hidden on activating menu, more or
file info modes.
- Fixed graphics not being cleared on switching to single-pane view (thanks to
ret2src).
- Fixed a historical omission of Ctrl-G not being available in some prompts:
file rename on conflict; owner, group and symbolic link target change
(thanks to Branislav Gerazov).
- Fixed display issues or a crash when using a terminal with more than 32768
color pairs (thanks to iboggs and itshog).
- Fixed %a 'statusline' macro producing wrong values on non-Linux Unix-like
systems (thanks to voh9eepah).
- Fixed merging directories on copying not asking for overwrite confirmations
(thanks to aleksejrs).
- Fixed skipping of file move during merging aborting the whole operation
(thanks to aleksejrs).
- Fixed `:[un]select !<text/html>` treating "<text/html>" as an external
command.
- Fixed environment variables not being expanded on checking that a
:file[x]type or :fileviewer command exists (thanks to Ben Elan).
- Fixed weird sorting of filenames with non-Latin characters when
'sortnumbers' option is set and strverscmp() is not provided by the system
(like on Windows).
- Fixed :compare reporting identical files as changed when there were more
than a couple of files with identical size and 4096-byte prefix. A
regression in 0.13-beta (thanks to Alexandr Keyp, a.k.a. IAmKapuze).
- Fixed :compare hanging on trying to compare non-regular files like pipes by
contents.
- Fixed :substitute, :tr, gu* and gU* detecting a non-existent target name
conflict when rename in a custom view would produce an identically named
files in different directories (thanks to aleksejrs).
- Fixed :restart leaving histories disabled unless 'history' is set to a
non-default value in vifmrc (thanks to James Dietrich).
- Fixed processing of file names and paths that undergo escaping in the UI,
like inability to externally rename them (regression in 0.12.1 beta) (thanks
to jc-SpaceXp).
- Fixed rules for handling of selection by :file[x]type not taking
%"c/%"C/%"f/%"F macros into account (relevant mostly to Windows) (thanks to
%smoothdad).
- Fixed :elseif evaluating its expression even if an earlier conditional
branch was already taken.
- Fixed loading a session with global tabs when 'tabscope' is "pane" resulting
in global tabs being invisible.
- Fixed Ctrl-A and Ctrl-E in command-line mode not stopping completion or
history search unlike other similar keys.
- Fixed directories not being accounted for in estimates (thanks to
justpretending2).
- Fixed Escape being handled as Ctrl-C in prompts which suppresses future
errors.
- Fixed !! not affecting commands that include %s or %v macro (thanks to James
Dietrich).
- Fixed a crash after a memory corruption when running an external command via
expansion of an environment variable when 'fastrun' is set (e.g.,
`!$EDITOR`) (thanks to Quaddroo).
- Fixed abort on instance sending something over IPC to itself (thanks to
Marcin Kurczewski, a.k.a. rr-).
- Fixed `&&` operator which was acting as binary `&` (in terms of evaluation,
the result was properly boolean) (thanks to justpretending2).
Other changes:
- Configure 'vifminfo' in sample vifmrc files to store most of the things in
vifminfo by default (add missing histories and tabs) (thanks to Christoph
Schmidpeter).
- Commented out one of MC-like shortcuts in sample vifmrc files, Ctrl-U, to
avoid confusing Vim users with default configuration (thanks to midrare).
See change log for the full list of changes and by whom they were suggested or
implemented.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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+.