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 efe4b69ddd1102338166359ef4597cf4fad03112

Fix `:highlight Group {cterm,gui}=combine,none`
"none" wasn't resetting "combine" in this case.
Author: xaizek
Author date (UTC): 2026-06-04 12:52
Committer name: xaizek
Committer date (UTC): 2026-06-04 12:52
Parent(s): b08c0a752c5d19b7537afd415962e342e9cd285e
Signing key: 99DC5E4DB05F6BE2
Tree: 98c7076c88e7a5cfad14fd4d73f95a35bbf3f3b4
File Lines added Lines deleted
ChangeLog 3 0
src/cmd_handlers.c 1 1
tests/commands/highlight.c 8 0
File ChangeLog changed (mode: 100644) (index eb6e6ed26..12853a4a0)
244 244 Fixed Lua modules written in C not being loaded on Unix-like systems. Fixed Lua modules written in C not being loaded on Unix-like systems.
245 245 Thanks to Steven Xu (a.k.a. stevenxxiu). Thanks to Steven Xu (a.k.a. stevenxxiu).
246 246
247 Fixed `:highlight Group cterm=combine,none gui=combine,none` resulting in
248 `cterm=combine` and `gui=combine`.
249
247 250 0.14-beta to 0.14 (2025-02-08) 0.14-beta to 0.14 (2025-02-08)
248 251
249 252 Improved documentation on zh/zl menu keys a bit. Improved documentation on zh/zl menu keys a bit.
File src/cmd_handlers.c changed (mode: 100644) (index 65c2a29f9..ec647b33c)
... ... get_attrs(const char text[], int *combine_attrs)
3441 3441 else if(strcasecmp(buf, "italic") == 0) else if(strcasecmp(buf, "italic") == 0)
3442 3442 result |= italic_attr; result |= italic_attr;
3443 3443 else if(strcasecmp(buf, "none") == 0) else if(strcasecmp(buf, "none") == 0)
3444 result = 0;
3444 result = *combine_attrs = 0;
3445 3445 else if(strcasecmp(buf, "combine") == 0) else if(strcasecmp(buf, "combine") == 0)
3446 3446 *combine_attrs = 1; *combine_attrs = 1;
3447 3447 else else
File tests/commands/highlight.c changed (mode: 100644) (index b05584188..25c9a089e)
... ... TEST(various_attributes_are_parsed)
208 208 CIT_COMMAND)); CIT_COMMAND));
209 209 assert_int_equal(A_STANDOUT, curr_stats.cs->color[WIN_COLOR].attr); assert_int_equal(A_STANDOUT, curr_stats.cs->color[WIN_COLOR].attr);
210 210 assert_true(curr_stats.cs->color[WIN_COLOR].combine_attrs); assert_true(curr_stats.cs->color[WIN_COLOR].combine_attrs);
211
212 /* "none" must reset "combine". */
213 assert_success(cmds_dispatch("hi Win cterm=combine,none gui=combine,none",
214 &lwin, CIT_COMMAND));
215 assert_int_equal(A_NORMAL, curr_stats.cs->color[WIN_COLOR].attr);
216 assert_false(curr_stats.cs->color[WIN_COLOR].combine_attrs);
217 assert_int_equal(A_NORMAL, curr_stats.cs->color[WIN_COLOR].gui_attr);
218 assert_false(curr_stats.cs->color[WIN_COLOR].combine_gui_attrs);
211 219 } }
212 220
213 221 TEST(attributes_are_printed_back_correctly) TEST(attributes_are_printed_back_correctly)
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