aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/screen.c
Commit message (Collapse)AuthorAge
* docs: typo fixes (#17859)dundargoc2022-04-15
| | | | | | | | | | Co-authored-by: Elias Alves Moura <eliamoura.alves@gmail.com> Co-authored-by: venkatesh <shariharanvenkatesh@gmail.com> Co-authored-by: zeertzjq <zeertzjq@outlook.com> Co-authored-by: Vikas Raj <24727447+numToStr@users.noreply.github.com> Co-authored-by: Steve Vermeulen <sfvermeulen@gmail.com> Co-authored-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com> Co-authored-by: rwxd <rwxd@pm.me> Co-authored-by: casswedson <58050969+casswedson@users.noreply.github.com>
* vim-patch:8.2.3487: illegal memory access if buffer name is very longSean Dewar2022-04-13
| | | | | | | | | | | | | | | Problem: Illegal memory access if buffer name is very long. Solution: Make sure not to go over the end of the buffer. https://github.com/vim/vim/commit/826bfe4bbd7594188e3d74d2539d9707b1c6a14b Adjust the test to use :noswapfile, as Nvim fails to create the swap file on Windows due to the file name's length (E303). We don't have this behaviour on Linux as we get "[Permission denied]" from readfile(), so there is no attempt to create the swap file. However, Vim doesn't try to create the swap file on Windows either for a different reason: MAXPATHL in Vim for Windows is only 1024 (compared to Nvim's 4096 on the Windows CI), so readfile() gives "Illegal file name" instead, thus not needing :noswapfile for both cases.
* vim-patch:8.2.4718: @@@ in the last line sometimes drawn in the wrong place ↵zeertzjq2022-04-10
| | | | | | | (#18055) Problem: @@@ in the last line sometimes drawn in the wrong place. Solution: Make sure the column is valid. (closes vim/vim#10130) https://github.com/vim/vim/commit/cee9c844f27bceaba90362a3fa27a04d4d06c0fd
* vim-patch:8.2.4402: missing parenthesis may cause unexpected problemsBrian Leung2022-04-03
| | | | | | Problem: Missing parenthesis may cause unexpected problems. Solution: Add more parenthesis is macros. https://github.com/vim/vim/commit/ae6f1d8b14c2f63811ee83ef14e32086fb3e9b83
* Merge pull request #17890 from zeertzjq/conceal-virtcol-changedbfredl2022-03-31
|\ | | | | perf: only redraw concealed line if cursor has moved horizontally
| * revert: "Fix redraw regression with w_p_cole in visual mode"zeertzjq2022-03-28
| | | | | | | | | | | | Revert the code change from b7d6caaa036c3d1be716bb6e4b0f56c08fb8dcf5. The test is kept. The glitch was fixed by #17864, so this workaround is no longer needed.
* | fix(decorations): do not put empty virt_text (#17872)zeertzjq2022-03-29
| |
* | vim-patch:8.2.4644: redrawing too often when 'relativenumber' is set (#17756)Lewis Russell2022-03-29
|/ | | | | | | Problem: Redrawing too often when 'relativenumber' is set. Solution: Only redraw when the cursor line changed. (Lewis Russell, closes vim/vim#10040) https://github.com/vim/vim/commit/1624639ec8a6c3c99e417a2990f2f02f0d0b6e10
* vim-patch:8.2.4638: superfluous check if a redraw is needed for 'cursorline'zeertzjq2022-03-28
| | | | | | | | | Problem: Superfluous check if a redraw is needed for 'cursorline'. Solution: Remove check_redraw_cursorline(). (closes vim/vim#10030, closes vim/vim#10029) https://github.com/vim/vim/commit/3e559cd88486ffab6b6fb4e0921b4600d137a617 redraw_after_callback() is N/A. Omits changes that just revert code from patch 8.2.4630.
* vim-patch:8.2.4626: Visual area not updated when removing sign in Visual ↵zeertzjq2022-03-26
| | | | | | | | mode (#17864) Problem: Visual area not fully updated when removing sign in Visual mode while scrolling. Solution: Adjust check for topline. (closes vim/vim#10017) https://github.com/vim/vim/commit/abb6fbd14d985b9b36a4e336d6edaf9853888ac1
* perf(screen): reduce cursorline redrawing when jumping aroundzeertzjq2022-03-24
| | | | | | | | | | | | | | | | | | | | vim-patch:8.2.4614: redrawing too much when 'cursorline' is set Problem: Redrawing too much when 'cursorline' is set and jumping around. Solution: Rely on win_update() to redraw the current and previous cursor line, do not mark lines as modified. (closes vim/vim#9996) https://github.com/vim/vim/commit/c20e46a4e3efcd408ef132872238144ea34f7ae5 This doesn't match the patch exactly, because I missed some lines when porting patch 8.1.2029, and these lines were removed in this patch. This also makes win_update() always update for 'concealcursor' like how it always updates for 'cursorline', as 'cursorline' and 'concealcursor' redrawing logic has been unified in Nvim. As redrawing for 'cursorline' now always only requires VALID redraw type, it is no longer necessary to call redraw_for_cursorline() in nvim_win_set_cursor().
* vim-patch:8.2.4591: cursor line not updated when a callback moves the cursorzeertzjq2022-03-24
| | | | | | | | Problem: Cursor line not updated when a callback moves the cursor. Solution: Check if the cursor moved. (closes vim/vim#9970) https://github.com/vim/vim/commit/e7a74d53754765f22ef8ce71c915bb669d5f7f3f redraw_after_callback() is N/A. Nvim handles timers on the main loop.
* fix(screen): do not update syntax_last_parsed when drawing folded line (#17826)zeertzjq2022-03-23
|
* fix(screen): do not do syntax highlighting at filler or folded lines (#17818)zeertzjq2022-03-23
|
* vim-patch:8.2.1078: highlight and match functionality together in one file ↵Lewis Russell2022-03-23
| | | | | | | | | (#17805) Problem: Highlight and match functionality together in one file. Solution: Move match functionality to a separate file. (Yegappan Lakshmanan, closes vim/vim#6352) https://github.com/vim/vim/commit/06cf97e714fd8bf9b35ff5f8a6f2302c79acdd03
* vim-patch:8.1.1743: 'hlsearch' and match highlighting in the wrong placeLewis Russell2022-03-20
| | | | | | | Problem: 'hlsearch' and match highlighting in the wrong place. Solution: Move highlighting from inside screen functions to highlight.c. https://github.com/vim/vim/commit/bbca7732e8a3deb6e5dcf84739579a2667a75475
* feat(ui): allow conceal to be defined in decorationsbfredl2022-03-20
| | | | | | Unlike syntax conceal, change highlight of concealed char Can be used in tree-sitter using "conceal" metadata.
* fix(syntax.c): correct hunk from Vim patch 8.0.0647 (#17761)Lewis Russell2022-03-18
|
* vim-patch:8.1.1693: syntax coloring and highlighting is in one big file (#17721)Lewis Russell2022-03-18
| | | | | | | | | | | Problem: Syntax coloring and highlighting is in one big file. Solution: Move the highlighting to a separate file. (Yegappan Lakshmanan, closes vim/vim#4674) https://github.com/vim/vim/commit/f9cc9f209ede9f15959e4c2351e970477c139614 Name the new file highlight_group.c instead. Co-authored-by: zeertzjq <zeertzjq@outlook.com>
* Merge pull request #17266 from famiu/feat/ui/global-statuslinebfredl2022-03-17
|\ | | | | feat(statusline): add global statusline
| * feat: add support for global statuslineFamiu Haque2022-03-18
| | | | | | | | | | | | | | | | | | | | Ref: #9342 Adds the option to have a single global statusline for the current window at the bottom of the screen instead of a statusline at the bottom of every window. Enabled by setting `laststatus = 3`. Due to the fact that statuslines at the bottom of windows are removed when global statusline is enabled, horizontal separators are used instead to separate horizontal splits. The horizontal separator character is configurable through the`horiz` item in `'fillchars'`. Separator connector characters are also used to connect the horizontal and vertical separators together, which are also configurable through the `horizup`, `horizdown`, `vertleft`, `vertright` and `verthoriz` items in `fillchars`. The window separators are highlighted using the `WinSeparator` highlight group, which supersedes `VertSplit` and is linked to `VertSplit` by default in order to maintain backwards compatibility.
* | refactor: column drawingLewis Russell2022-03-13
| | | | | | | | | | | | | | - move some logic out of win_line into specific easy to read sub-functions. - remove drawing logic from get_sign_display_info.
* | vim-patch:8.2.4557: confusing comment about 'cursorlineopt'zeertzjq2022-03-13
| | | | | | | | | | | | | | Problem: Confusing comment about 'cursorlineopt'. Solution: Adjust comment. (closes vim/vim#9939) Add parenthesis around logical OR. https://github.com/vim/vim/commit/754d2b40369d8fdcf77fc05cc608f86387016bd9
* | Merge pull request #17663 from dundargoc/refactor/uncrustifybfredl2022-03-11
|\ \ | | | | | | refactor: apply uncrustify
| * | refactor(uncrustify): format all c filesDundar Göc2022-03-10
| | |
* | | refactor(decorations): move provider codeLewis Russell2022-03-10
|/ / | | | | | | Move decoration provider code to a separate file.
* | Merge pull request #17640 from lewis6991/virttextfixbfredl2022-03-09
|\ \ | | | | | | fix(extmarks): fix signs
| * | fix(extmarks): fix signsLewis Russell2022-03-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Don't add sign extmarks to state->active. Instead when drawing signs, perform a full line scan for sign marks. This allows decor_redraw_line to be moved back inside the `!number_only` block in screen.c, which prevents decor scans when redrawing the number column when 'relativenumber' is set. Fixes: #17638
* | | vim-patch:8.2.4520: using wrong highlight for cursor line numberzeertzjq2022-03-08
|/ / | | | | | | | | | | | | Problem: Using wrong highlight for cursor line number. Solution: Take filler lines into account when using CursorLineNr. (closes vim/vim#9897) https://github.com/vim/vim/commit/127969cf98000a760826ca3a0f3781a8b79522f1
* | feat(decorations): support signsLewis Russell2022-03-05
| | | | | | | | | | | | | | | | | | | | | | | | Add the following options to extmarks: - sign_text - sign_hl_group - number_hl_group - line_hl_group - cursorline_hl_group Note: ranges are unsupported and decorations are only applied to start_row
* | fix(signcol): update cursor when signcol changesLewis Russell2022-02-24
| | | | | | | | Fixes #14195
* | refactor(signcol): store signcol in win_TLewis Russell2022-02-24
|/
* Merge pull request #16914 from godlygeek/fix_14587Christian Clason2022-02-13
|\ | | | | fix(screen): don't put empty sign text in line number column
| * fix(screen): don't put empty sign text in line number columnMatt Wozniski2022-01-04
| | | | | | | | | | | | When `signcolumn=number` but no sign on a given line has any text, display the line's line number instead of the (empty) sign text in the line number column.
* | refactor(signs): more efficient signcol calcLewis Russell2022-02-12
| | | | | | | | | | When iterating signs to calculate the sign column, stop iterating when we reach the maximum configured from 'signcolumn'.
* | refactor(PVS/V547): p == NULL is always falsezeertzjq2022-02-09
| |
* | vim-patch:8.2.1741: pathshorten() only supports using one characterzeertzjq2022-02-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: pathshorten() only supports using one character. Solution: Add an argument to control the length. (closes vim/vim#7006) https://github.com/vim/vim/commit/6a33ef0deb5c75c003a9f3bd1c57f3ca5e77327e Cherry-pick a line in test from patch 8.2.0634. Use Nvim's config paths in docs. shorten_dir() returning a pointer looks a bit confusing here, as it is actually the same pointer passed to it, and it doesn't really reduce much code, so change it back to void. Assigning rettv->vval.v_string = NULL is not needed if a pointer is within 64 bits. While this is usually the case, I'm not sure if it can be taken for granted.
* | Merge pull request #17226 from dundargoc/refactor/remove-redundant-codezeertzjq2022-02-03
|\ \ | | | | | | vim-patch:8.2.4241: some type casts are redundant
| * | vim-patch:8.2.4241: some type casts are redundantDundar Göc2022-01-30
| | | | | | | | | | | | | | | | | | | | | | | | Problem: Some type casts are redundant. Solution: Remove the type casts. (closes vim/vim#9643) https://github.com/vim/vim/commit/420fabcd4ffeaf79082a6e43db91e1d363f88f27 This is not a literal port but an equivalent one.
* | | Merge pull request #17113 from zeertzjq/vim-8.2.2569zeertzjq2022-02-01
|\ \ \ | |/ / |/| | feat(statusline): support multibyte fillchar
| * | feat(statusline): support multibyte fillcharzeertzjq2022-01-16
| | | | | | | | | | | | | | | | | | | | | | | | This includes a partial port of Vim patch 8.2.2569 and some changes to nvim_eval_statusline() to allow a multibyte fillchar. Literally every line of C code touched by that patch has been refactored in Nvim, and that patch contains some irrelevant foldcolumn tests I'm not sure how to port (as Nvim's foldcolumn behavior has diverged from Vim's).
* | | vim-patch:8.2.3095: with 'virtualedit' set to "block" block selection is wrongzeertzjq2022-01-27
| | | | | | | | | | | | | | | | | | | | | Problem: With 'virtualedit' set to "block" block selection is wrong after using "$". (Marco Trosi) Solution: Compute the longest selected line. (closes vim/vim#8495) https://github.com/vim/vim/commit/b17ab86e7b8712206aa9ea7198c28db969e25936
* | | Merge pull request #17095 from zeertzjq/vim-8.2.3227bfredl2022-01-27
|\ \ \ | | | | | | | | vim-patch:8.2.{3227,3280,4094}: global-local 'virtualedit'
| * | | vim-patch:8.2.3280: 'virtualedit' local to buffer is not the best solutionzeertzjq2022-01-15
| | | | | | | | | | | | | | | | | | | | | | | | Problem: 'virtualedit' local to buffer is not the best solution. Solution: Make it window-local. (Gary Johnson, closes vim/vim#8685) https://github.com/vim/vim/commit/51ad850f5fbafa7aa3f60affa74ec9c9f992c6cc
| * | | vim-patch:8.2.3227: 'virtualedit' can only be set globallyzeertzjq2022-01-15
| |/ / | | | | | | | | | | | | | | | | | | | | | Problem: 'virtualedit' can only be set globally. Solution: Make 'virtualedit' global-local. (Gary Johnson, closes vim/vim#8638) https://github.com/vim/vim/commit/53ba05b09075f14227f9be831a22ed16f7cc26b2 I changed some macros to unsigned integer literals to avoid compiler warnings.
* | | vim-patch:8.2.3410: crash with linebreak, listchars and large tabstopzeertzjq2022-01-21
| | | | | | | | | | | | | | | | | | Problem: Crash with linebreak, listchars and large tabstop. Solution: Account for different size listchars for a tab. (closes vim/vim#8841) https://github.com/vim/vim/commit/89a54b413a8c96206ce7e038dde81a6eff6cd6b8
* | | vim-patch:8.2.3121: 'listchars' "exceeds" character appears in foldcolumnzeertzjq2022-01-21
|/ / | | | | | | | | | | | | | | Problem: 'listchars' "exceeds" character appears in foldcolumn. Window separator is missing. (Leonid V. Fedorenchik) Solution: Only draw the "exceeds" character in the text area. Break the loop when not drawing the text. (closes vim/vim#8524) https://github.com/vim/vim/commit/41fb723ee97baa2f095cde601a5a144b168b7a6b
* | chore(fixup): zeerdundargoc2022-01-01
| | | | | | Co-authored-by: zeertzjq <zeertzjq@outlook.com>
* | refactor: avoid overflow by explicitly casting operand to a wider typeDundar Göc2021-12-31
|/
* vim-patch:8.2.3914 (#16808)dundargoc2021-12-28
| | | | | | | | | * vim-patch:8.2.3914: various spelling mistakes in comments Problem: Various spelling mistakes in comments. Solution: Fix the mistakes. (Dominique Pellé, closes vim/vim#9416) https://github.com/vim/vim/commit/af4a61a85d6e8cacc35324f266934bc463a21673 Co-authored-by: zeertzjq <zeertzjq@outlook.com>