diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5230c34c30..3909699b69 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -158,6 +158,13 @@ jobs: - name: Create log dir run: mkdir -p "$LOG_DIR" + # FIXME(dundargoc): this workaround is needed for macos as the python3 + # provider tests suddenly started to become extremely flaky, and this + # removes the flakiness for some reason. + - uses: actions/setup-python@v4 + with: + python-version: '3.11' + - name: Install dependencies run: ./.github/scripts/install_deps.sh cpanminus diff --git a/src/man/nvim.1 b/src/man/nvim.1 index c32bdeadc6..b18d920d31 100644 --- a/src/man/nvim.1 +++ b/src/man/nvim.1 @@ -339,6 +339,11 @@ Print version information and exit. .El .Sh ENVIRONMENT .Bl -tag -width Fl +.It Ev NVIM_APPNAME +The name of sub-directories used within each XDG user directory. +Defaults to +.Cm nvim . +:help $NVIM_APPNAME .It Ev NVIM_LOG_FILE Low-level log file, usually found at ~/.local/state/nvim/log. :help $NVIM_LOG_FILE diff --git a/src/nvim/highlight.c b/src/nvim/highlight.c index 1736641219..14f9500bf4 100644 --- a/src/nvim/highlight.c +++ b/src/nvim/highlight.c @@ -377,10 +377,15 @@ void update_window_hl(win_T *wp, bool invalid) if (wp->w_float_config.border_hl_ids[i]) { attr = hl_get_ui_attr(ns_id, HLF_BORDER, wp->w_float_config.border_hl_ids[i], false); - HlAttrs a = syn_attr2entry(attr); - if (a.hl_blend) { - wp->w_float_config.shadow = true; - } + } + HlAttrs a = syn_attr2entry(attr); + if (a.hl_blend == -1 && wp->w_p_winbl > 0) { + HlEntry entry = kv_A(attr_entries, attr); + a.hl_blend = entry.attr.hl_blend = (int)wp->w_p_winbl; + attr = get_attr_entry(entry); + } + if (a.hl_blend > 0) { + wp->w_float_config.shadow = true; } wp->w_float_config.border_attr[i] = attr; } diff --git a/src/nvim/quickfix.c b/src/nvim/quickfix.c index 263b011a0d..fa38b384cd 100644 --- a/src/nvim/quickfix.c +++ b/src/nvim/quickfix.c @@ -4096,7 +4096,12 @@ static void qf_fill_buffer(qf_list_T *qfl, buf_T *buf, qfline_T *old_last, int q // delete all existing lines while ((curbuf->b_ml.ml_flags & ML_EMPTY) == 0) { - (void)ml_delete((linenr_T)1, false); + // If deletion fails, this loop may run forever, so + // signal error and return. + if (ml_delete((linenr_T)1, false) == FAIL) { + internal_error("qf_fill_buffer()"); + return; + } } } diff --git a/test/functional/ui/float_spec.lua b/test/functional/ui/float_spec.lua index c65c2cdb78..4446b02a5c 100644 --- a/test/functional/ui/float_spec.lua +++ b/test/functional/ui/float_spec.lua @@ -8427,6 +8427,13 @@ describe('float window', function() [13] = {background = Screen.colors.LightGray, blend = 30}, [14] = {foreground = Screen.colors.Grey0, background = Screen.colors.Grey88}, [15] = {foreground = tonumber('0x939393'), background = Screen.colors.Grey88}, + [16] = {background = Screen.colors.Grey90}; + [17] = {blend = 100}; + [18] = {background = Screen.colors.LightMagenta, blend = 100}; + [19] = {background = Screen.colors.LightMagenta, bold = true, blend = 100, foreground = Screen.colors.Blue1}; + [20] = {background = Screen.colors.White, foreground = Screen.colors.Gray0}; + [21] = {background = Screen.colors.White, bold = true, foreground = tonumber('0x00007f')}; + [22] = {background = Screen.colors.Gray90, foreground = Screen.colors.Gray0}; }) insert([[ Lorem ipsum dolor sit amet, consectetur @@ -8557,9 +8564,7 @@ describe('float window', function() {13:test }| {13: }| {13:popup text }| - ]], float_pos={ - [5] = {{id = 1002}, "NW", 1, 2, 5, true, 50}; - }} + ]], float_pos={[5] = {{id = 1002}, "NW", 1, 2, 5, true}}} else screen:expect([[ Ut enim ad minim veniam, quis nostrud | @@ -8711,6 +8716,56 @@ describe('float window', function() | ]]) end + + -- Check that 'winblend' applies to border + meths.win_set_config(win, {border='single'}) + meths.set_option_value('winblend', 100, {win=win.id}) + meths.set_option_value("cursorline", true, {win=0}) + command('hi clear VertSplit') + feed('k0') + if multigrid then + screen:expect{grid=[[ + ## grid 1 + [2:--------------------------------------------------]| + [2:--------------------------------------------------]| + [2:--------------------------------------------------]| + [2:--------------------------------------------------]| + [2:--------------------------------------------------]| + [2:--------------------------------------------------]| + [2:--------------------------------------------------]| + [2:--------------------------------------------------]| + [3:--------------------------------------------------]| + ## grid 2 + Ut enim ad minim veniam, quis nostrud | + exercitation ullamco laboris nisi ut aliquip ex | + ea commodo consequat. Duis aute irure dolor in | + reprehenderit in voluptate velit esse cillum | + dolore eu fugiat nulla pariatur. Excepteur sint | + occaecat cupidatat non proident, sunt in culpa | + {16:^qui officia deserunt mollit anim id est }| + laborum. | + ## grid 3 + | + ## grid 5 + {17:┌───────────────┐}| + {17:│}{11:popup text}{18: }{17:│}| + {17:│}{19:~ }{17:│}| + {17:│}{19:~ }{17:│}| + {17:└───────────────┘}| + ]], float_pos={[5] = {{id = 1002}, "NW", 1, 2, 5, true}}} + else + screen:expect([[ + Ut enim ad minim veniam, quis nostrud | + exercitation ullamco laboris nisi ut aliquip ex | + ea co{20:┌───────────────┐}Duis aute irure dolor in | + repre{20:│}{5:popup}{6:it i}{5:text}{20:lu│}tate velit esse cillum | + dolor{20:│}{21:~}{20:eu fugiat null│} pariatur. Excepteur sint | + occae{20:│}{21:~}{20:t cupidatat no│} proident, sunt in culpa | + {16:^qui o}{22:└───────────────┘}{16:ollit anim id est }| + laborum. | + | + ]]) + end end) it('can overlap doublewidth chars', function()