Mercurial > vim
view src/testdir/test_modeless.vim @ 32996:dd8da8f1c2bc v9.0.1790
patch 9.0.1790: Redundant LSP Content-Type header
Commit: https://github.com/vim/vim/commit/8fbd9449e71f2ad93e594be575209a7424eb093e
Author: Magnus Gro? <magnus@mggross.com>
Date: Sun Aug 27 00:49:51 2023 +0200
patch 9.0.1790: Redundant LSP Content-Type header
Problem: The Content-Type header is an optional header that some LSP
servers struggle with and may crash when encountering it.
Solution: Drop the Content-Type header from all messages, because we use
the default value anyway.
Because pretty much all popular LSP clients (e.g. coc.nvim, VSCode) do
not send the Content-Type header, the LSP server ecosystem has developed
such that some LSP servers may even crash when encountering it.
To improve compatibility with these misbehaving LSP servers, we drop
this header as well.
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Magnus Gro? <magnus@mggross.com>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 27 Aug 2023 11:15:03 +0200 |
parents | ee50174810ac |
children |
line wrap: on
line source
" Test for modeless selection " This only works for Unix in a terminal source check.vim CheckNotGui CheckUnix source shared.vim source mouse.vim " Test for modeless characterwise selection (single click) func Test_modeless_characterwise_selection() CheckFeature clipboard_working let save_mouse = &mouse let save_term = &term let save_ttymouse = &ttymouse call test_override('no_query_mouse', 1) set mouse=a term=xterm mousetime=200 call WaitForResponses() new call setline(1, ['one two three', 'foo bar baz']) redraw! " Wait a bit for any terminal responses to get processed. sleep 50m for ttymouse_val in g:Ttymouse_values + g:Ttymouse_dec let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val " select multiple characters within a line let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) let keys = ":" let keys ..= MouseLeftClickCode(1, 6) let keys ..= MouseLeftDragCode(1, 10) let keys ..= MouseLeftReleaseCode(1, 10) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("wo th", @*, msg) " select multiple characters including the end of line let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) let keys = ":" let keys ..= MouseLeftClickCode(1, 11) let keys ..= MouseLeftDragCode(1, 16) let keys ..= MouseLeftReleaseCode(1, 16) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("ree\n", @*, msg) " extend a selection using right mouse click let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) set mousemodel=extend let keys = ":" let keys ..= MouseLeftClickCode(1, 2) let keys ..= MouseLeftDragCode(1, 5) let keys ..= MouseLeftReleaseCode(1, 5) let keys ..= MouseRightClickCode(1, 10) let keys ..= MouseRightReleaseCode(1, 10) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("ne two th", @*, msg) set mousemodel& " extend a selection backwards using right mouse click let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) set mousemodel=extend let keys = ":" let keys ..= MouseLeftClickCode(1, 7) let keys ..= MouseLeftDragCode(1, 11) let keys ..= MouseLeftReleaseCode(1, 11) let keys ..= MouseRightClickCode(1, 3) let keys ..= MouseRightReleaseCode(1, 3) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("e two thr", @*, msg) set mousemodel& " select multiple characters within a line backwards let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) let keys = ":" let keys ..= MouseLeftClickCode(1, 9) let keys ..= MouseLeftDragCode(1, 3) let keys ..= MouseLeftReleaseCode(1, 3) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("e two t", @*, msg) " select multiple characters across lines with (end row > start row) and " (end column < start column) let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) let keys = ":" let keys ..= MouseLeftClickCode(1, 9) let keys ..= MouseLeftDragCode(2, 3) let keys ..= MouseLeftReleaseCode(2, 3) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("three\nfoo", @*, msg) " select multiple characters across lines with (end row > start row) and " (end column > start column) let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) let keys = ":" let keys ..= MouseLeftClickCode(1, 4) let keys ..= MouseLeftDragCode(2, 8) let keys ..= MouseLeftReleaseCode(2, 8) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal(" two three\nfoo bar ", @*, msg) " select multiple characters across lines with (end row < start row) and " (end column < start column) let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) let keys = ":" let keys ..= MouseLeftClickCode(2, 7) let keys ..= MouseLeftDragCode(1, 5) let keys ..= MouseLeftReleaseCode(1, 5) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("two three\nfoo bar", @*, msg) " select multiple characters across lines with (end row < start row) and " (end column > start column) let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) let keys = ":" let keys ..= MouseLeftClickCode(2, 11) let keys ..= MouseLeftDragCode(1, 13) let keys ..= MouseLeftReleaseCode(1, 13) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("e\nfoo bar baz", @*, msg) " select multiple characters across lines with (end row < start row) and " the end column is greater than the line length let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) let keys = ":" let keys ..= MouseLeftClickCode(2, 7) let keys ..= MouseLeftDragCode(1, 16) let keys ..= MouseLeftReleaseCode(1, 16) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("\nfoo bar", @*, msg) " select multiple characters across lines with start/end row and start/end " column outside the lines in the buffer let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) let keys = ":" let keys ..= MouseLeftClickCode(4, 3) let keys ..= MouseLeftDragCode(3, 2) let keys ..= MouseLeftReleaseCode(3, 2) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("\n~ ", @*, msg) " change selection using right mouse click within the selected text let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) set mousemodel=extend let keys = ":" let keys ..= MouseLeftClickCode(1, 5) let keys ..= MouseLeftDragCode(1, 13) let keys ..= MouseLeftReleaseCode(1, 13) let keys ..= MouseRightClickCode(1, 7) let keys ..= MouseRightReleaseCode(1, 7) let keys ..= MouseRightClickCode(1, 11) let keys ..= MouseRightReleaseCode(1, 11) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("o thr", @*, msg) set mousemodel& " select text multiple times at different places let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) let keys = ":" let keys ..= MouseLeftClickCode(1, 3) let keys ..= MouseLeftDragCode(1, 5) let keys ..= MouseLeftReleaseCode(1, 5) let keys ..= MouseLeftClickCode(2, 7) let keys ..= MouseLeftDragCode(2, 9) let keys ..= MouseLeftReleaseCode(2, 9) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("r b", @*, msg) " Test for 'clipboard' set to 'autoselectml' to automatically copy the " modeless selection to the clipboard set clipboard=autoselectml let @* = 'clean' let keys = ":" let keys ..= MouseLeftClickCode(2, 5) let keys ..= MouseLeftDragCode(2, 7) let keys ..= MouseLeftReleaseCode(2, 7) let keys ..= "\<CR>" call feedkeys(keys, "x") call assert_equal("bar", @*) set clipboard& " quadruple click should start characterwise selectmode let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) let keys = ":" let keys ..= MouseLeftClickCode(1, 10) let keys ..= MouseLeftReleaseCode(1, 10) let keys ..= MouseLeftClickCode(1, 10) let keys ..= MouseLeftReleaseCode(1, 10) let keys ..= MouseLeftClickCode(1, 10) let keys ..= MouseLeftReleaseCode(1, 10) let keys ..= MouseLeftClickCode(1, 10) let keys ..= MouseLeftDragCode(1, 11) let keys ..= MouseLeftReleaseCode(1, 11) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("hree", @*, msg) endfor let &mouse = save_mouse let &term = save_term let &ttymouse = save_ttymouse set mousetime& call test_override('no_query_mouse', 0) close! endfunc " Test for modeless word selection (double click) func Test_modeless_word_selection() CheckFeature clipboard_working let save_mouse = &mouse let save_term = &term let save_ttymouse = &ttymouse call test_override('no_query_mouse', 1) set mouse=a term=xterm mousetime=200 call WaitForResponses() new call setline(1, ['one two three', 'foo bar baz']) redraw! for ttymouse_val in g:Ttymouse_values + g:Ttymouse_dec let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val " select multiple words within a line let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) let keys = ":" let keys ..= MouseLeftClickCode(1, 6) let keys ..= MouseLeftReleaseCode(1, 6) let keys ..= MouseLeftClickCode(1, 6) let keys ..= MouseLeftDragCode(1, 10) let keys ..= MouseLeftReleaseCode(1, 10) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("two three", @*, msg) " select a single word let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) let keys = ":" let keys ..= MouseLeftClickCode(2, 6) let keys ..= MouseLeftReleaseCode(2, 6) let keys ..= MouseLeftClickCode(2, 6) let keys ..= MouseLeftReleaseCode(2, 6) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("bar", @*, msg) " select multiple words backwards within a line let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) let keys = ":" let keys ..= MouseLeftClickCode(2, 11) let keys ..= MouseLeftReleaseCode(2, 11) let keys ..= MouseLeftClickCode(2, 11) let keys ..= MouseLeftDragCode(2, 7) let keys ..= MouseLeftReleaseCode(2, 7) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("bar baz", @*, msg) " select multiple words backwards across lines let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) let keys = ":" let keys ..= MouseLeftClickCode(2, 7) let keys ..= MouseLeftReleaseCode(2, 7) let keys ..= MouseLeftClickCode(2, 7) let keys ..= MouseLeftDragCode(1, 6) let keys ..= MouseLeftReleaseCode(1, 6) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("two three\nfoo bar", @*, msg) endfor let &mouse = save_mouse let &term = save_term let &ttymouse = save_ttymouse set mousetime& call test_override('no_query_mouse', 0) close! endfunc " Test for modeless line selection (triple click) func Test_modeless_line_selection() CheckFeature clipboard_working let save_mouse = &mouse let save_term = &term let save_ttymouse = &ttymouse call test_override('no_query_mouse', 1) set mouse=a term=xterm mousetime=200 call WaitForResponses() new call setline(1, ['one two three', 'foo bar baz']) redraw! for ttymouse_val in g:Ttymouse_values + g:Ttymouse_dec let msg = 'ttymouse=' .. ttymouse_val exe 'set ttymouse=' .. ttymouse_val " select single line let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) let keys = ":" let keys ..= MouseLeftClickCode(2, 6) let keys ..= MouseLeftReleaseCode(2, 6) let keys ..= MouseLeftClickCode(2, 6) let keys ..= MouseLeftReleaseCode(2, 6) let keys ..= MouseLeftClickCode(2, 6) let keys ..= MouseLeftReleaseCode(2, 6) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("foo bar baz\n", @*, msg) " select multiple lines let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) let keys = ":" let keys ..= MouseLeftClickCode(1, 6) let keys ..= MouseLeftReleaseCode(1, 6) let keys ..= MouseLeftClickCode(1, 6) let keys ..= MouseLeftReleaseCode(1, 6) let keys ..= MouseLeftClickCode(1, 6) let keys ..= MouseLeftDragCode(2, 12) let keys ..= MouseLeftReleaseCode(2, 12) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("one two three\nfoo bar baz\n", @*, msg) " select multiple lines backwards let @* = 'clean' call MouseRightClick(1, 1) call MouseRightRelease(1, 1) let keys = ":" let keys ..= MouseLeftClickCode(2, 10) let keys ..= MouseLeftReleaseCode(2, 10) let keys ..= MouseLeftClickCode(2, 10) let keys ..= MouseLeftReleaseCode(2, 10) let keys ..= MouseLeftClickCode(2, 10) let keys ..= MouseLeftDragCode(1, 3) let keys ..= MouseLeftReleaseCode(1, 3) let keys ..= "\<C-Y>\<CR>" call feedkeys(keys, "x") call assert_equal("one two three\nfoo bar baz\n", @*, msg) endfor let &mouse = save_mouse let &term = save_term let &ttymouse = save_ttymouse set mousetime& call test_override('no_query_mouse', 0) close! endfunc " vim: shiftwidth=2 sts=2 expandtab