aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
...
* vim-patch:partial:9.1.0445: Coverity warning after 9.1.0440zeertzjq2024-07-31
| | | | | | | | | | | | | Problem: Coverity warning after 9.1.0440 Solution: Fix Coverity warning, add a test and reduce the calls to clear_tv() (Yegappan Lakshmanan). closes: vim/vim#14845 https://github.com/vim/vim/commit/dbac0da631c66869f41c3c573ad7a8cfef95964d Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
* vim-patch:9.1.0415: Some functions are not testedzeertzjq2024-07-31
| | | | | | | | | | | | Problem: Some functions are not tested Solution: Add a few more tests, fix a few minor problems (Yegappan Lakshmanan) closes: vim/vim#14789 https://github.com/vim/vim/commit/fe424d13ef6e5486923f23f15bb6951e3079412e Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
* vim-patch:partial:9.1.0411: too long functions in eval.czeertzjq2024-07-31
| | | | | | | | | | | | | Problem: too long functions in eval.c Solution: refactor functions (Yegappan Lakshmanan) closes: vim/vim#14755 https://github.com/vim/vim/commit/4ceb4dc825854032eed423ec1fc372317d3420bf Skip the eval_expr_typval() changes. Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
* vim-patch:8.2.4115: cannot use a method with a complex expressionzeertzjq2024-07-31
| | | | | | | | | | | | | | | Problem: Cannot use a method with a complex expression. Solution: Evaluate the expression after "->" and use the result. https://github.com/vim/vim/commit/c665dabdf4c49a0fbf1dc566253c75c2abe2effa Cherry-pick a "verbose" check from patch 8.2.4123. N/A patches for version.c: vim-patch:8.2.4102: Vim9: import cannot be used after method vim-patch:8.2.4110: Coverity warns for using NULL pointer Co-authored-by: Bram Moolenaar <Bram@vim.org>
* vim-patch:8.2.3264: Vim9: assign test failszeertzjq2024-07-31
| | | | | | | | | Problem: Vim9: assign test fails. Solution: Add missing change. https://github.com/vim/vim/commit/f24f51d03035379cf3e5b2dccf489a40bc4ca92a Co-authored-by: Bram Moolenaar <Bram@vim.org>
* vim-patch:9.2.1731: Vim9: cannot use += to append to empty NULL listzeertzjq2024-07-31
| | | | | | | | | Problem: Vim9: cannot use += to append to empty NULL list. Solution: Copy the list instead of extending it. (closes vim/vim#6998) https://github.com/vim/vim/commit/81ed4960482f8baabdd7f95b4d5e39744be88ae7 Co-authored-by: Bram Moolenaar <Bram@vim.org>
* vim-patch:9.1.0645: regex: wrong match when searching multi-byte char ↵zeertzjq2024-07-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | case-insensitive Problem: regex: wrong match when searching multi-byte char case-insensitive (diffsetter) Solution: Apply proper case-folding for characters and search-string This patch does the following 4 things: 1) When the regexp engine compares two utf-8 codepoints case insensitive it may match an adjacent character, because it assumes it can step over as many bytes as the pattern contains. This however is not necessarily true because of case-folding, a multi-byte UTF-8 character can be considered equal to some single-byte value. Let's consider the pattern 'ſ' and the string 's'. When comparing and ignoring case, the single character 's' matches, and since it matches Vim will try to step over the match (by the amount of bytes of the pattern), assuming that since it matches, the length of both strings is the same. However in that case, it should only step over the single byte value 's' by 1 byte and try to start matching after it again. So for the backtracking engine we need to ensure: * we try to match the correct length for the pattern and the text * in case of a match, we step over it correctly There is one tricky thing for the backtracing engine. We also need to calculate correctly the number of bytes to compare the 2 different utf-8 strings s1 and s2. So we will count the number of characters in s1 that the byte len specified. Then we count the number of bytes to step over the same number of characters in string s2 and then we can correctly compare the 2 utf-8 strings. 2) A similar thing can happen for the NFA engine, when skipping to the next character to test for a match. We are skipping over the regstart pointer, however we do not consider the case that because of case-folding we may need to adjust the number of bytes to skip over. So this needs to be adjusted in find_match_text() as well. 3) A related issue turned out, when prog->match_text is actually empty. In that case we should try to find the next match and skip this condition. 4) When comparing characters using collections, we must also apply case folding to each character in the collection and not just to the current character from the search string. This doesn't apply to the NFA engine, because internally it converts collections to branches [abc] -> a\|b\|c fixes: vim/vim#14294 closes: vim/vim#14756 https://github.com/vim/vim/commit/22e8e12d9f5034e1984db0c567b281fda4de8dd7 N/A patches: vim-patch:9.0.1771: regex: combining chars in collections not handled vim-patch:9.0.1777: patch 9.0.1771 causes problems Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:9.0.0105: illegal memory access when pattern starts with illegal bytezeertzjq2024-07-31
| | | | | | | | | Problem: Illegal memory access when pattern starts with illegal byte. Solution: Do not match a character with an illegal byte. https://github.com/vim/vim/commit/f50940531dd57135fe60aa393ac9d3281f352d88 Co-authored-by: Bram Moolenaar <Bram@vim.org>
* vim-patch:9.1.0644: Unnecessary STRLEN() when applying mapping (#29921)zeertzjq2024-07-31
| | | | | | | | | | Problem: Unnecessary STRLEN() when applying mapping. (after v9.1.0642) Solution: Use m_keylen and vim_strnsave(). (zeertzjq) closes: vim/vim#15394 https://github.com/vim/vim/commit/74011dc1fa7bca6c901937173a42e0edce68e080
* refactor: collapse statements in single assignmentsLewis Russell2024-07-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Variables are often assigned multiple places in common patterns. Solution: Replace these common patterns with different patterns that reduce the number of assignments. Use `MAX` and `MIN`: ```c if (x < y) { x = y; } // --> x = MAX(x, y); ``` ```c if (x > y) { x = y; } // --> x = MIN(x, y); ``` Use ternary: ```c int a; if (cond) { a = b; } els { a = c; } // --> int a = cond ? b : c; ```
* vim-patch:49cdd62: runtime(doc): list of new/changed features in version9.txtzeertzjq2024-07-30
| | | | | | | | closes: vim/vim#13753 https://github.com/vim/vim/commit/49cdd629a39d7e40e7349e65cb177e2442871a04 Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
* vim-patch:9.0.0331: cannot use items() on a stringzeertzjq2024-07-30
| | | | | | | | | Problem: Cannot use items() on a string. Solution: Make items() work on a string. (closes vim/vim#11016) https://github.com/vim/vim/commit/3e518a8ec74065aedd67d352c93d6ae6be550316 Co-authored-by: Bram Moolenaar <Bram@vim.org>
* vim-patch:partial:9.0.0327: items() does not work on a listzeertzjq2024-07-30
| | | | | | | | | | | Problem: items() does not work on a list. (Sergey Vlasov) Solution: Make items() work on a list. (closes vim/vim#11013) https://github.com/vim/vim/commit/976f859763b215050a03248dbc2bb62fa5d0d059 Skip CHECK_LIST_MATERIALIZE. Co-authored-by: Bram Moolenaar <Bram@vim.org>
* refactor(mappings): elide description copy (#29910)zeertzjq2024-07-30
|
* vim-patch:9.1.0642: Check that mapping rhs starts with lhs fails if not ↵zeertzjq2024-07-30
| | | | | | | | | | | | | | | simplified (#29909) Problem: Check that mapping rhs starts with lhs doesn't work if lhs is not simplified. Solution: Keep track of the mapblock containing the alternative lhs and also compare with it (zeertzjq). fixes: vim/vim#15376 closes: vim/vim#15384 https://github.com/vim/vim/commit/9d997addc7bd0fd132a809cf497ed816e61fcd25 Cherry-pick removal of save_m_str from patch 8.2.4059.
* vim-patch:9.1.0638: E1510 may happen when formatting a message for smsg() ↵zeertzjq2024-07-29
| | | | | | | | | | | (#29907) Problem: E1510 may happen when formatting a message (after 9.1.0181). Solution: Only give E1510 when using typval. (zeertzjq) closes: vim/vim#15391 https://github.com/vim/vim/commit/0dff31576a340b74cec81517912923c38cb28450
* vim-patch:partial:52e7cc2: runtime(doc): tweak documentation style a bit ↵zeertzjq2024-07-29
| | | | | | | | | (#29897) closes: vim/vim#15371 https://github.com/vim/vim/commit/52e7cc26d81c61fff1b2e3b32e8b9b04347be1d3 Co-authored-by: h-east <h.east.727@gmail.com>
* Merge pull request #29876 from glepnir/vim-patchzeertzjq2024-07-27
|\ | | | | vim-patch:9.1.{0618,0619,0629}: cannot mark deprecated attributes in completion menu
| * vim-patch:9.1.0629: Rename of pum hl_group is incompletezeertzjq2024-07-27
| | | | | | | | | | | | | | | | | | | | | | Problem: Rename of pum hl_group is incomplete in source. Solution: Also rename the test function. Rename to user_hlattr in code to avoid confusion with pum_extra. Add test with matched text highlighting (zeertzjq). closes: vim/vim#15348 https://github.com/vim/vim/commit/4100852e099133a0c9603e1087e5dc6d82001ce7
| * vim-patch:9.1.0619: tests: test_popup failsglepnir2024-07-27
| | | | | | | | | | | | | | | | | | | | | | | | | | Problem: tests: test_popup fails (after v9.1.0618) Solution: Correct test, move combining extra attributes to pum_compute_text_attrs() (glepnir) closes: vim/vim#15353 https://github.com/vim/vim/commit/8754efe437fcb17ad2c64192f8722e08d68e032e Co-authored-by: glepnir <glephunter@gmail.com>
| * vim-patch:9.1.0618: cannot mark deprecated attributes in completion menuglepnir2024-07-27
| | | | | | | | | | | | | | | | | | | | | | | | Problem: cannot mark deprecated attributes in completion menu Solution: add hl_group to the Dictionary of supported completion fields (glepnir) closes: vim/vim#15314 https://github.com/vim/vim/commit/508e7856ec4afc9d6038b14bb6893668268dccab Co-authored-by: glepnir <glephunter@gmail.com>
* | refactor(decor): decor_virt_lines()Lewis Russell2024-07-27
|/ | | | | | | | | | | | | Reduce calls to hasFolding() and remove the has_fold argument. For lines that don't have virtual lines this should be more efficient as it should avoid any calls to hasFolding(), whereas before it was called at least once for any buffer containing at least one virtual line. This will be slightly less efficient for lines with multiple virtual lines marks as hasFolding() is called once for each mark. This could be optimized, but having multiple virtual lines marks on a single line is very rare.
* fix(plines): don't count invalidated virt text in char size (#29863)zeertzjq2024-07-26
| | | | | | Also: - Remove mt_end() and MT_FLAG_DECOR_VIRT_TEXT_INLINE checks, as they are already checked by marktree_itr_check_filter(). - Move ns_in_win() to the last check in decor_redraw_col().
* fix(decor): don't draw invalidated virtual lines (#29858)luukvbaal2024-07-26
|
* vim-patch:9.1.0615: Unnecessary STRLEN() in make_percent_swname()zeertzjq2024-07-26
| | | | | | | | | | Problem: Unnecessary STRLEN() in make_percent_swname() Solution: Pass the end of "dir" to make_percent_swname() (zeertzjq) closes: vim/vim#15340 https://github.com/vim/vim/commit/242667ae142d9862a7bace82c58cb11c79fdab7a
* vim-patch:8.2.3543: swapname has double slash when 'directory' ends in itzeertzjq2024-07-26
| | | | | | | | | | Problem: Swapname has double slash when 'directory' ends in double slash. (Shane Smith) Solution: Remove the superfluous slash. (closes vim/vim#8876) https://github.com/vim/vim/commit/8b0e62c93b6dad5ec5b2c7558d4f7b78c46216d2 Co-authored-by: Bram Moolenaar <Bram@vim.org>
* vim-patch:9.1.0617: Cursor moves beyond first line of folded end of buffer ↵luukvbaal2024-07-26
| | | | | | | | | | (#29859) Problem: Cursor moves beyond start of a folded range at the end of a buffer. Solution: Move cursor to start of fold when going beyond end of buffer. Check that cursor moved to detect FAIL in outer cursor function. (Luuk van Baal) https://github.com/vim/vim/commit/dc373d456b5919ed2b8f83e8642c115f646ca93d
* vim-patch:ddbb6fe: runtime(vim): Update base-syntax, improve :set ↵zeertzjq2024-07-25
| | | | | | | | | | | | | | | highlighting (#29850) - Match bang, "all" and "termcap" options, and trailing command separator "|". - Highlight set assignment operators. - Match multiline :set and multiline option values. - Mention the newer "0o" octal prefix at :help :set=. closes: vim/vim#15329 https://github.com/vim/vim/commit/ddbb6fe2d0344e93436c5602b7a06169f49a9b52 Co-authored-by: Doug Kearns <dougkearns@gmail.com>
* fix(tui): set id parameter in OSC 8 sequences (#29840)Gregory Anders2024-07-24
| | | | | | | | | The id parameter is used to communicate to the terminal that two URLs are the same. Without an id, the terminal must rely on heuristics to determine which cells belong together to make a single hyperlink. See the relevant section in the spec [1] for more details. [1]: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda#hover-underlining-and-the-id-parameter
* docs: update version.c (#29760)github-actions[bot]2024-07-23
| | | Co-authored-by: marvim <marvim@users.noreply.github.com>
* feat(tui): parse CSI subparams in termkey (#29805)Gregory Anders2024-07-21
| | | | | | | | | | | | | | | | | | | | | | | libtermkey does not know how to parse CSI subparameters (parameters separated by ':', ASCII 0x3A) and currently just ignores them. However, many important CSI sequences sent by the terminal make use of subparameters, most notably key events when using the kitty keyboard protocol [1]. Enabling subparameters is a prerequisite for expanding kitty keyboard protocol support in Neovim. Concretely, we do this by returning pointers into the internal termkey buffer for each CSI parameter rather than parsing them into integers directly. When a caller wants to actually use the parameter as an integer, they must call termkey_interpret_csi_param, which parses the full parameter string into an integer parameter and zero or more subparameters. The pointers into the internal buffer will become invalidated when new input arrives from the terminal so it is important that the individual params are used and parsed right away. All of our code (and libtermkey's code) does this, so this is fine for now, but is something to keep in mind moving forward. [1]: https://sw.kovidgoyal.net/kitty/keyboard-protocol/
* Merge pull request #29650 from ruuzia/fix_expression_parser_crashbfredl2024-07-21
|\ | | | | fix: assert failure in VimL expression parser
| * fix: assert failure in VimL expression parserRustum Zia2024-07-17
| |
* | Merge pull request #28873 from luukvbaal/redrawbfredl2024-07-21
|\ \ | | | | | | fix(api): alloc and draw cursor window in nvim__redraw
| * | fix(api): alloc and draw cursor window in nvim__redrawLuuk van Baal2024-07-20
| | | | | | | | | | | | | | | | | | Problem: Unable to move cursor to recently opened window. Solution: Make sure uninitialized window is drawn before trying to move the cursor to it.
* | | fix(marks): revalidate marks whose position did not changeLuuk van Baal2024-07-20
|/ / | | | | | | | | | | | | | | Problem: Marks whose position did not change with the action that invalidated them (right_gravity = false) are not revalidated upon undo. Solution: Remove early return when restoring a marks saved position so that it is still revalidated. Add "move" guards instead.
* | feat(tui): support in-band resize events (#29791)Gregory Anders2024-07-19
| | | | | | | | | | | | | | | | | | DEC mode 2048 is a newly proposed private mode for sending resize events in band to applications from the terminal emulator, instead of relying on SIGWINCH. Full text of the specification is here: https://gist.github.com/rockorager/e695fb2924d36b2bcf1fff4a3704bd83
* | vim-patch:eb6d733: runtime(doc): fix more inconsistencies in assert function ↵zeertzjq2024-07-19
| | | | | | | | | | | | | | | | | | docs (#29796) related: https://github.com/vim/vim/pull/15280#issuecomment-2233771449 closes: vim/vim#15285 https://github.com/vim/vim/commit/eb6d733bef312a0634770e023e8a41f0347f1503
* | vim-patch:9.1.0601: Wrong cursor position with 'breakindent' when wide char ↵zeertzjq2024-07-19
|/ | | | | | | | | | | | | doesn't fit (#29793) Problem: Wrong cursor position with 'breakindent' when a double-width character doesn't fit in a screen line (mikoto2000) Solution: Include the width of the 'breakindent' properly. (zeertzjq) fixes: vim/vim#15289 closes: vim/vim#15290 https://github.com/vim/vim/commit/b5d6b5caac752fe15856e37fd3abc5459292d4b8
* vim-patch:c1b3984: runtime(doc): minor updates. (#29778)zeertzjq2024-07-18
| | | | | | | closes: vim/vim#15280 https://github.com/vim/vim/commit/c1b3984a7b3cd6adcd1f43e558cb04fad1af3182 Co-authored-by: Shane Harper <shane@shaneharper.net>
* vim-patch:9.0.0003: functions are global while they could be local (#29777)zeertzjq2024-07-17
| | | | | | | | | | | | Problem: Functions are global while they could be local. Solution: Add "static". Add a few tests. (Yegappan Lakshmanan, closes vim/vim#10612) https://github.com/vim/vim/commit/ee47eaceaa148e07b566ff420f9a3c2edde2fa34 Omit script_name_after_autoload(), untrans_function_name(): Vim9 script only. Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
* vim-patch:9.1.0594: Unnecessary redraw when setting 'winfixbuf' (#29775)zeertzjq2024-07-18
| | | | | | | | Problem: Unnecessary redraw when setting 'winfixbuf'. Solution: Remove P_RWIN flag. (zeertzjq) closes: vim/vim#15283 https://github.com/vim/vim/commit/ac4ce9e15b7ee0fccfa72aecf98b696d880e53c3
* fix(float): handle error in win_float_create() (#29742)glepnir2024-07-17
| | | | Problem: Missing error handling in win_float_create() function. Solution: Add an inline function for error handling.
* vim-patch:9.0.0414: matchstr() still does not match column offsetzeertzjq2024-07-17
| | | | | | | | | | | Problem: matchstr() still does not match column offset when done after a text search. Solution: Only use the line number for a multi-line search. Fix the test. (closes vim/vim#10938) https://github.com/vim/vim/commit/753aead960f163d0d3f8ce523ea523f2e0cec06d Co-authored-by: Bram Moolenaar <Bram@vim.org>
* vim-patch:9.0.0407: matchstr() does match column offsetzeertzjq2024-07-17
| | | | | | | | | Problem: matchstr() does match column offset. (Yasuhiro Matsumoto) Solution: Accept line number zero. (closes vim/vim#10938) https://github.com/vim/vim/commit/75a115e8d632e96b4f45dc5145ba261876a83dcf Co-authored-by: Bram Moolenaar <Bram@vim.org>
* vim-patch:9.0.0228: crash when pattern looks below the last linezeertzjq2024-07-17
| | | | | | | | | | | Problem: Crash when pattern looks below the last line. Solution: Consider invalid lines to be empty. (closes vim/vim#10938) https://github.com/vim/vim/commit/13ed494bb5edc5a02d0ed0feabddb68920f88570 Comment out the test as it uses Vim9 script and text properties. Co-authored-by: Bram Moolenaar <Bram@vim.org>
* fix(column): modifying a sign should update placed signs (#29750)luukvbaal2024-07-17
| | | | | | Problem: Modifying a sign no longer updates already placed signs. Solution: Loop over (newly-exposed) placed decorations when modifying a sign definition. Update placed decor if it belongs to the sign that is modified.
* vim-patch:8.2.1651: spellfile code not completely testedzeertzjq2024-07-16
| | | | | | | | | | | Problem: Spellfile code not completely tested. Solution: Add a few more test cases. (Yegappan Lakshmanan, closes vim/vim#6918) https://github.com/vim/vim/commit/64e2db6dc6d7a013ff94ce302af8958cbd2704af Fix incorrect spellfile message. Co-authored-by: Bram Moolenaar <Bram@vim.org>
* vim-patch:df62c62: runtime(doc): grammar fixes in options.txt (#29729)zeertzjq2024-07-15
| | | | | | | closes: vim/vim#15265 https://github.com/vim/vim/commit/df62c62177bd4dffce880b7a5711594865090953 Co-authored-by: Dominique Pellé <dominique.pelle@gmail.com>
* build: allow comment after #include for required header (#29722)zeertzjq2024-07-16
| | | | And also check in .c files, as the attributes may be silently missing there as well.