diff options
-rw-r--r-- | src/nvim/move.c | 7 | ||||
-rw-r--r-- | src/nvim/testdir/test_listchars.vim | 6 | ||||
-rw-r--r-- | test/functional/legacy/listchars_spec.lua | 136 |
3 files changed, 103 insertions, 46 deletions
diff --git a/src/nvim/move.c b/src/nvim/move.c index 5e02e355bf..eda3298101 100644 --- a/src/nvim/move.c +++ b/src/nvim/move.c @@ -778,8 +778,13 @@ void curs_columns(win_T *wp, int may_scroll) int textwidth = wp->w_width_inner - extra; if (textwidth <= 0) { // No room for text, put cursor in last char of window. + // If not wrapping, the last non-empty line. wp->w_wcol = wp->w_width_inner - 1; - wp->w_wrow = wp->w_height_inner - 1; + if (wp->w_p_wrap) { + wp->w_wrow = wp->w_height_inner - 1; + } else { + wp->w_wrow = wp->w_height_inner - 1 - wp->w_empty_rows; + } } else if (wp->w_p_wrap && wp->w_width_inner != 0) { width = textwidth + win_col_off2(wp); diff --git a/src/nvim/testdir/test_listchars.vim b/src/nvim/testdir/test_listchars.vim index c6e2ebd406..b239c9c6b5 100644 --- a/src/nvim/testdir/test_listchars.vim +++ b/src/nvim/testdir/test_listchars.vim @@ -542,6 +542,12 @@ func Test_listchars_foldcolumn() call VerifyScreenDump(buf, 'Test_listchars_04', {}) call term_sendkeys(buf, "\<C-W>>") call VerifyScreenDump(buf, 'Test_listchars_05', {}) + call term_sendkeys(buf, "\<C-W>h") + call term_sendkeys(buf, ":set nowrap foldcolumn=4\<CR>") + call term_sendkeys(buf, "15\<C-W><") + call VerifyScreenDump(buf, 'Test_listchars_06', {}) + call term_sendkeys(buf, "4\<C-W><") + call VerifyScreenDump(buf, 'Test_listchars_07', {}) " clean up call StopVimInTerminal(buf) diff --git a/test/functional/legacy/listchars_spec.lua b/test/functional/legacy/listchars_spec.lua index 7a1afa1fd6..206e226767 100644 --- a/test/functional/legacy/listchars_spec.lua +++ b/test/functional/legacy/listchars_spec.lua @@ -102,6 +102,12 @@ describe("'listchars'", function() it('"exceeds" character does not appear in foldcolumn vim-patch:8.2.3121', function() local screen = Screen.new(60, 10) + screen:set_default_attr_ids({ + [1] = {bold = true, foreground = Screen.colors.Blue}, -- NonText + [2] = {bold = true, reverse = true}, -- StatusLine + [3] = {reverse = true}, -- StatusLineNC, VertSplit + [4] = {background = Screen.colors.Grey, foreground = Screen.colors.DarkBlue}, -- FoldColumn, SignColumn + }) screen:attach() exec([[ call setline(1, ['aaa', '', 'a', 'aaaaaa']) @@ -111,68 +117,108 @@ describe("'listchars'", function() ]]) feed('13<C-W>>') screen:expect([[ - aaa │ a>│ ^aaa | - │ │ | - a │ a │ a | - aaaaaa │ a>│ aaaaaa | - ~ │~ │~ | - ~ │~ │~ | - ~ │~ │~ | - ~ │~ │~ | - [No Name] [+] <[+] [No Name] [+] | + {4: }aaa {3:│}{4: }a{1:>}{3:│}{4: }^aaa | + {4: } {3:│}{4: } {3:│}{4: } | + {4: }a {3:│}{4: }a {3:│}{4: }a | + {4: }aaaaaa {3:│}{4: }a{1:>}{3:│}{4: }aaaaaa | + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {3:[No Name] [+] <[+] }{2:[No Name] [+] }| | ]]) feed('<C-W>>') screen:expect([[ - aaa │ >│ ^aaa | - │ │ | - a │ a│ a | - aaaaaa │ >│ aaaaaa | - ~ │~ │~ | - ~ │~ │~ | - ~ │~ │~ | - ~ │~ │~ | - [No Name] [+] <+] [No Name] [+] | + {4: }aaa {3:│}{4: }{1:>}{3:│}{4: }^aaa | + {4: } {3:│}{4: } {3:│}{4: } | + {4: }a {3:│}{4: }a{3:│}{4: }a | + {4: }aaaaaa {3:│}{4: }{1:>}{3:│}{4: }aaaaaa | + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {3:[No Name] [+] <+] }{2:[No Name] [+] }| | ]]) feed('<C-W>>') screen:expect([[ - aaa │ │ ^aaa | - │ │ | - a │ │ a | - aaaaaa │ │ aaaaaa | - ~ │~ │~ | - ~ │~ │~ | - ~ │~ │~ | - ~ │~ │~ | - [No Name] [+] <] [No Name] [+] | + {4: }aaa {3:│}{4: }{3:│}{4: }^aaa | + {4: } {3:│}{4: }{3:│}{4: } | + {4: }a {3:│}{4: }{3:│}{4: }a | + {4: }aaaaaa {3:│}{4: }{3:│}{4: }aaaaaa | + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {3:[No Name] [+] <] }{2:[No Name] [+] }| | ]]) feed('<C-W>>') screen:expect([[ - aaa │ │ ^aaa | - │ │ | - a │ │ a | - aaaaaa │ │ aaaaaa | - ~ │~ │~ | - ~ │~ │~ | - ~ │~ │~ | - ~ │~ │~ | - [No Name] [+] < [No Name] [+] | + {4: }aaa {3:│}{4: }{3:│}{4: }^aaa | + {4: } {3:│}{4: }{3:│}{4: } | + {4: }a {3:│}{4: }{3:│}{4: }a | + {4: }aaaaaa {3:│}{4: }{3:│}{4: }aaaaaa | + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {3:[No Name] [+] < }{2:[No Name] [+] }| | ]]) feed('<C-W>>') screen:expect([[ - aaa │ │ ^aaa | - │ │ | - a │ │ a | - aaaaaa │ │ aaaaaa | - ~ │~│~ | - ~ │~│~ | - ~ │~│~ | - ~ │~│~ | - [No Name] [+] < [No Name] [+] | + {4: }aaa {3:│}{4: }{3:│}{4: }^aaa | + {4: } {3:│}{4: }{3:│}{4: } | + {4: }a {3:│}{4: }{3:│}{4: }a | + {4: }aaaaaa {3:│}{4: }{3:│}{4: }aaaaaa | + {1:~ }{3:│}{1:~}{3:│}{1:~ }| + {1:~ }{3:│}{1:~}{3:│}{1:~ }| + {1:~ }{3:│}{1:~}{3:│}{1:~ }| + {1:~ }{3:│}{1:~}{3:│}{1:~ }| + {3:[No Name] [+] < }{2:[No Name] [+] }| | ]]) + feed('<C-W>h') + feed_command('set nowrap foldcolumn=4') + screen:expect([[ + {4: }aaa {3:│}{4: }^aaa {3:│}{4: }aaa | + {4: } {3:│}{4: } {3:│}{4: } | + {4: }a {3:│}{4: }a {3:│}{4: }a | + {4: }aaaaaa {3:│}{4: }aaaaaa {3:│}{4: }aaaaaa | + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {3:[No Name] [+] }{2:[No Name] [+] }{3:[No Name] [+] }| + :set nowrap foldcolumn=4 | + ]]) + feed('15<C-W><lt>') + screen:expect([[ + {4: }aaa {3:│}{4: }{3:│}{4: }aaa | + {4: } {3:│}{4: }{3:│}{4: } | + {4: }a {3:│}{4: }{3:│}{4: }a | + {4: }aaaaaa {3:│}{4: ^ }{3:│}{4: }aaaaaa | + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {1:~ }{3:│}{1:~ }{3:│}{1:~ }| + {3:[No Name] [+] }{2:<[+] }{3:[No Name] [+] }| + :set nowrap foldcolumn=4 | + ]]) + feed('4<C-W><lt>') + screen:expect([[ + {4: }aaa {3:│}{4: }{3:│}{4: }aaa | + {4: } {3:│}{4: }{3:│}{4: } | + {4: }a {3:│}{4: }{3:│}{4: }a | + {4: }aaaaaa {3:│}{4:^ }{3:│}{4: }aaaaaa | + {1:~ }{3:│}{1:~}{3:│}{1:~ }| + {1:~ }{3:│}{1:~}{3:│}{1:~ }| + {1:~ }{3:│}{1:~}{3:│}{1:~ }| + {1:~ }{3:│}{1:~}{3:│}{1:~ }| + {3:[No Name] [+] }{2:< }{3:[No Name] [+] }| + :set nowrap foldcolumn=4 | + ]]) end) end) |