When a buffer update callback is called, textlock is active so buffer
text cannot be changed, but cursor can still be moved. This can cause
problems when the buffer update is in the middle of an operator, like
the one mentioned in #16729. The solution is to save cursor position and
restore it afterwards, like how cursor is saved and restored when
evaluating an <expr> mapping.
Problem: Using NULL pointer with nested :open command.
Solution: Check that ccline.cmdbuff is not NULL.
7ac5023a5f
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Problem: Value of MAXCOL not available in Vim script.
Solution: Add v:maxcol. (Naohiro Ono, closesvim/vim#9451)
56200eed62
The variable is always 2147483647, but introducing it makes functions
easier to document.
Co-authored-by: naohiro ono <obcat@icloud.com>
Problem: 'statuscolumn' width can be incorrect when toggling 'number'
or setting 'statuscolumn'.
Solution: Make sure the width is reset and re-estimated when
'statuscolumn' and 'number' are set. (When 'relativenumber'
is set this already happens because it always changes
"nrwidth_line_count".)
also make implicit submodules "uri" and "_inspector" work with completion
this is needed for `:lua=vim.uri_<tab>` wildmenu completion
to work even before uri or _inspector functions are used.
Unittests not working on release builds can lead to confusing
situations, such as contributors wondering why their tests aren't
working if they forgot they've built with a release build. This only
increased the Release executable size by 8 kB on my personal machine,
which is an acceptable tradeoff.
feat(lsp)!: change semantic token highlighting
Change the default highlights used, and add more highlights per token.
Add an LspTokenUpdate event and a highlight_token function.
:Inspect now shows any highlights applied by token highlighting rules,
default or user-defined.
BREAKING CHANGE: change the default highlight groups used by semantic
token highlighting.
This checks MSVC toolchain with _MSC_VER macro before adding
pragma warning directive. It is specific to MSVC and shows
compiler warning with mingw gcc as following:
main.c:187: warning: ignoring '#pragma warning ' [-Wunknown-pragmas]
187 | # pragma warning(suppress : 4996)
Problem: Get E967 when using text property in quickfix window. (Sergey
Vlasov)
Solution: Do not add an extra NUL and compute the text length correctly.
(closesvim/vim#11513)
2f7bfe66a1
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Problem: Alloc/free of buffer for each quickfix entry is inefficient.
Solution: Use a shared grow array. (Yegappan Lakshmanan, closesvim/vim#11365)
975a665d48
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Problem: Quickfix listing does not handle very long messages.
Solution: Use a growarray instead of a fixed size buffer. (Yegappan
Lakshmanan, closesvim/vim#11357)
f8412c9d7c
Override Test_very_long_error_line() with a rewrite that doesn't use
deferred delete and string interpolation.
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Problem: Illegal memory access when using virtual editing.
Solution: Make sure "startspaces" is not negative.
c99cbf8f28
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Problem: Comparing line pointer for 'breakindent' is not reliable.
Solution: Make a copy of the line.
c2a79b87fc
Test changes have been squashed into the previous commit.
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Problem: Reproducing memory access errors can be difficult.
Solution: When testing, copy each line to allocated memory, so that valgrind
can detect accessing memory before and/or after it. Fix uncovered
problems.
fa4873ccfc
Since test_override() is N/A, enable ml_get_alloc_lines when ASAN is
enabled instead, so it also applies to functional tests.
Use xstrdup() to copy the line as ml_line_len looks hard to port.
Squash the test changes from patch 9.0.0016.
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Problem: Accessing invalid memory with put in Visual block mode.
Solution: Adjust the cursor column if needed.
1c73b65229
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Problem: Some complex queries may not return all matches.
Solution: Raise `ts_match_limit` from current 64 (twice the original
default) to 256 (which Helix uses, and seems to be enough for the reported
problematic cases).
If this leads performance regressions in other queries, we should add a
generic querying timeout instead of relying on a low value here.
Problem: Long sign text may overflow buffer.
Solution: Use a larger buffer. Prevent for overflow.
2b1ddf19f8
Don't change the size of extra[] as it's already large enough.
N/A patches for version.c:
vim-patch:9.0.0523: more compiler warnings for arguments in small version
Co-authored-by: Bram Moolenaar <Bram@vim.org>
These are in gcc 4.9+ which we require anyway.
-Og is safe on clang as well (reserved for a future debug-optimize mode,
and currently does the same as -O1 which is reasonable)
In addition: merge some checks for the same feature into one
test_compile. This reduces the total number of test compiles
which speeds up the cmake configure stage.
Problem: The win_line() function is much too long.
Solution: Move code to separate functions.
c20a41972c
Partial port as this depends on patch 9.0.0148.
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Problem: The win_line() function is much too long.
Solution: Move the code to draw the line number to a separate function.
d7657e95b2
N/A patches for version.c:
vim-patch:9.0.0521: compiler warns for unused argument in small version
Co-authored-by: Bram Moolenaar <Bram@vim.org>
This reduces the number of arguments to helpers functions.
N/A patches for version.c:
vim-patch:9.0.0152: warning for unused argument in small build
Co-authored-by: Bram Moolenaar <Bram@vim.org>