aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/move.c
Commit message (Collapse)AuthorAge
* vim-patch:8.2.3394: filler lines are wrong when changing text in diff mode ↵Jaehwang Jerry Jung2021-09-18
| | | | | | | | (#15547) Problem: Filler lines are wrong when changing text in diff mode. Solution: Don't change the filler lines on every change. Check scrollbinding when updating the filler lines. (closes vim/vim#8809) https://github.com/vim/vim/commit/04626c243c47af91c2580eaf23e12286180e0e81
* vim-patch:8.1.2281: 'showbreak' cannot be set for one windowSean Dewar2021-09-10
| | | | | | | | | | | | | | | | | | | | | | | | | Problem: 'showbreak' cannot be set for one window. Solution: Make 'showbreak' global-local. https://github.com/vim/vim/commit/ee85702c10495041791f728e977b86005c4496e8 Change in oneleft() is N/A as the relevant condition was removed (has_mbyte is always true for Nvim, so the condition was always false; see commit 73dc9e9). Use wp over curwin for curs_columns(). Required for v8.2.2903 (otherwise test fails as it'll leave the global option set). N/A patches for version.c: vim-patch:8.1.2283: missed on use of p_sbr Problem: Missed on use of p_sbr. Solution: Add missing p_sbr change. https://github.com/vim/vim/commit/91e22eb6e09ec384496fccde812072033fd9e616 Already ported in commit 43a874a.
* refactor(plines): move out plines related code from misc1.cBjörn Linse2021-08-10
|
* refactor(plines): remove implicit curwin plines_nofill() functionBjörn Linse2021-08-10
|
* refactor(plines): remove implicit curwin plines() functionBjörn Linse2021-08-10
|
* buffer: move BUFEMPTY to a functionThomas Vigouroux2021-07-06
|
* buffer: don't rely on curbuf in BUFEMPTYThomas Vigouroux2021-07-06
|
* vim-patch:8.2.2495: text jumps up and down when moving the cursorJan Edmund Lazo2021-02-10
| | | | | | | | Problem: Text jumps up and down when moving the cursor in a small window with wrapping text and 'scrolloff' set. Solution: Adjust the computation of w_skipcol. (partly by Ghjuvan Lacambre, closes vim/vim#7813) https://github.com/vim/vim/commit/8f33ebfade10cd1b4296d8ec8dca815a09e8a405
* fix: appease linterMatthieu Coudron2020-12-24
|
* refactor: de-curwin-ify update_topline/curs_columnsMatthieu Coudron2020-12-23
|
* refactor: pass the window to get_(side)scrolloff_valueMatthieu Coudron2020-12-23
| | | | to less rely on curwin
* vim-patch:8.1.0806: too many #ifdefsJan Edmund Lazo2020-11-12
| | | | | | Problem: Too many #ifdefs. Solution: Graduate FEAT_MBYTE, part 2. https://github.com/vim/vim/commit/fc3abf47fbe1e426f2b676c316c81ee9ff607075
* fix: lint doc-commentsRom Grk2020-11-07
|
* my fight with the linterRom Grk2020-11-06
|
* Merge branch 'master' into add-scroll-eventsRom Grk2020-11-03
|\
| * api: add API for themesBjörn Linse2020-11-01
| | | | | | | | | | | | | | | | | | | | co-author: hlpr98 <hlpr98@gmail.com> (dict2hlattrs function) orange is sus?? NOVEMBER DAWN erase the lie that is redraw_later()
* | move.c: dont invalidate viewport when no scroll happenedRom Grk2020-10-25
|/
* vim-patch:8.2.0007: popup menu positioned wrong with folding in two tabsJan Edmund Lazo2020-10-08
| | | | | | Problem: Popup menu positioned wrong with folding in two tabs. Solution: Update the cursor line height. (closes vim/vim#5353) https://github.com/vim/vim/commit/09dd2bb3364cc8fb5a8f2507bc2f4ceba481db3d
* vim-patch:8.1.2303: cursor in wrong position after horizontal scrollJan Edmund Lazo2020-10-08
| | | | | | Problem: Cursor in wrong position after horizontal scroll. Solution: Set w_valid_leftcol. (closes vim/vim#5214, closes vim/vim#5224) https://github.com/vim/vim/commit/08f23636aef595f4cc061dfee8248dca97df16b3
* vim-patch:8.1.2228: screenpos() returns wrong values when 'number' is setJan Edmund Lazo2020-05-21
| | | | | | | Problem: screenpos() returns wrong values when 'number' is set. (Ben Jackson) Solution: Compare the column with the window width. (closes vim/vim#5133) https://github.com/vim/vim/commit/38ba4dce4a8574e60f6ddb111922880b0c7affdc
* api/ui: win_viewport event for visible range and cursor position in windowBjörn Linse2020-04-01
|
* vim-patch:8.1.0864 Make 'scrolloff' and 'sidescrolloff' options window local ↵Will Eccles2020-03-17
| | | | | | | | | | (#11854) Problem: cannot have a local value for 'scrolloff' and 'sidescrolloff' Author: Bram Moolenar https://github.com/vim/vim/commit/375e3390078e740d3c83b0c118c50d9a920036c7
* foldcolumn: allow auto:XMatthieu Coudron2020-02-29
| | | | | | | | Similar to signcolumn, allow foldcolumn to adapt itself to the number of folds. Regression: vim supports a maximum fdc of 12, this limits it to 9.
* vim-patch:8.1.2171: mouse support not always available #11761Jan Edmund Lazo2020-01-25
| | | | | | Problem: Mouse support not always available. Solution: Enable mouse support also in tiny version. Do not define FEAT_MOUSE_XTERM on MS-Windows (didn't really work). https://github.com/vim/vim/commit/a1cb1d1dce14dd005797590721f1bcd0e7c3b35f
* refactor: wrap common plines() usage in plines_win_full() #11141Zach Wegner2019-10-02
|
* anchor float to buffer positionBjörn Linse2019-09-04
| | | | vim-patch:8.1.1645: cannot use a popup window for a balloon
* vim-patch:8.1.1086: too many curly bracesJan Edmund Lazo2019-07-28
| | | | | | | | | | Problem: Too many curly braces. Solution: Remove curly braces where they are not needed. (Hirohito Higashi, closes vim/vim#3982) https://github.com/vim/vim/commit/abab0b0fdd6535969447b03a4fffc1947918cf6c Neovim code style requires the opposite. Add curly braces to minimize lint errors when applying Vim patches.
* move: assert nonnull wp pointerJan Edmund Lazo2019-07-20
|
* vim-patch:8.1.0856: when scrolling a window the cursorline is not always updatedJan Edmund Lazo2019-07-20
| | | | | | | | | Problem: When scrolling a window other than the current one the cursorline highlighting is not always updated. (Jason Franklin) Solution: Call redraw_for_cursorline() after scrolling. Only set w_last_cursorline when drawing the cursor line. Reset the lines to be redrawn also when redrawing the whole window. https://github.com/vim/vim/commit/bbb5f8d4c2cbc5f48556008875f57cbe7fc4ac6c
* refactor: use int for Columns and RowsBjörn Linse2019-07-19
|
* vim-patch:8.1.0715: superfluous redraw_win_later() #10523Jan Edmund Lazo2019-07-17
| | | | | Problem: Superfluous call to redraw_win_later(). Solution: Remove the call. https://github.com/vim/vim/commit/6f7e555f7440df148350468ad8bc6d559d676d7c
* vim-patch:8.1.0543: fix memory leak #10001Jan Edmund Lazo2019-05-11
| | | | | | Problem: Coverity warns for leaking memory and using wrong struct. Solution: Free pointer when allocation fails. Change "boff" to "loff". (closes vim/vim#3634) https://github.com/vim/vim/commit/4e303c8ba8dcd0566a1ad7c82ff18eb016eea335
* signs: support multiple columns #9295Dan Aloni2019-03-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | closes #990 closes #9295 - Support for multiple auto-adjusted sign columns. With this change, having more than one sign on a line, and with the 'auto' setting on 'signcolumn', extra columns will shown automatically to accomodate all the existing signs. For example, suppose we have this view: 5147 } 5148 5149 return sign->typenr; 5150 } 5151 } 5152 return 0; 5153 } 5154 We have GitGutter installed, so it tells us about modified lines that are not commmited. So let's change line 5152: 5147 } 5148 5149 return sign->typenr; 5150 } 5151 } ~ 5152 return 0; 5153 } 5154 Now we add a mark over line 5152 using 'ma' in normal mode: 5147 } 5148 5149 return sign->typenr; 5150 } 5151 } a ~ 5152 return 0; 5153 } 5154 Previously, Vim/Nvim would have picked only one of the signs, because there was no support for having multiple signs in a line. - Remove signs from deleted lines. Suppose we have highlights on a group of lines and we delete them: + 6 use std::ops::Deref; --+ 7 use std::borrow::Cow; --+ 8 use std::io::{Cursor}; 9 use proc_macro2::TokenStream; 10 use syn::export::ToTokens; --+ 11 use std::io::Write; >> 12 use std::ops::Deref; Without this change, these signs will momentarily accumulate in the sign column until the plugins wake up to refresh them. + --+ --+ --+ >> 6 Discussion: It may be better to extend the API a bit and allow this to happen for only certain types of signs. For example, VIM marks and vim-gitgutter removal signs may want to be presreved, unlike line additions and linter highlights. - 'signcolumn': support 'auto:NUM' and 'yes:NUM' settings - sort signs according to id, from lowest to highest. If you have git-gutter, vim-signature, and ALE, it would appear in this order: git-gutter - vim-signature - ALE. - recalculate size before screen update - If no space for all signs, prefer the higher ids (while keeping the rendering order from low to high). - Prevent duplicate signs. Duplicate signs were invisible to the user, before using our extended non-standard signcolumn settings. - multi signcols: fix bug related to wrapped lines. In wrapped lines, the wrapped parts of a line did not include the extra columns if they existed. The result was a misdrawing of the wrapped parts. Fix the issue by: 1. initializing the signcol counter to 0 when we are on a wrap boundary 2. allowing for the draw of spaces in that case.
* vim-patch:8.1.1026: unused conditionJan Edmund Lazo2019-03-21
| | | | | | Problem: Unused condition. (Coverity) Solution: Remove the condition. Also remove unused #define. https://github.com/vim/vim/commit/d00e024d9f2b631226c1dba83cb203739b0d02a3
* screen: cleanup allocation, clearing and validationBjörn Linse2019-02-07
| | | | | | grid_xx functions shouldn't randomly be called when the screen is not valid. Nvim deterministically initializes a default screen early in main(), so the default grid can be assumed to be allocated.
* screen: simplify scrolling codeBjörn Linse2019-02-07
| | | | | Since the separation between internal screen and TUI, internal scroll cannot FAIL. Delete the conditions for this.
* terminal: handle size when switching buffers in windowBjörn Linse2019-01-27
|
* window/ui: reorganize size variables, fix terminal window size with multigrid.Björn Linse2019-01-27
| | | | | | | wp->w_height_inner now contains the "inner" size, regardless if the window has been drawn yet or not. It should be used instead of wp->w_grid.Rows, for stuff that is not directly related to accessing the allocated grid memory, such like cursor movement and terminal size
* display: unify cursorline and concealcursor redraw logicBjörn Linse2019-01-13
| | | | | | | | | | | | | | | | There is various places where 'conceallevel' and 'concealcursor' necessitates additional redraws. This tries to separate the different cases and handle each accordingly: - Share code with 'cursorline' for the common case: vertical move of cursor within the same window (concealcursor not active) - Improve the logic for managing 'concealcursor' and switching modes: test for the case where the new mode behaves differently from the last one. - Clarify the special case for horizontal movement within a line when 'concealcursor' is active, now there is an if-statement only for this and not hidden in larger check mostly for the first point. - Keep the special case for moving between windows as is.
* remove dead argument of redrawWinlineBjörn Linse2019-01-09
|
* multigrid: various cleanup (types, unused parameters)Björn Linse2018-12-31
| | | | Handle the rare case of full highlight table properly
* multigrid: don't clear window grids on resizeBjörn Linse2018-12-31
| | | | Instead define that the shared top-left part of the grid is preserved.
* multigrid: Fix lint errorsUtkarsh Maheshwari2018-12-31
|
* multigrid: Allow UIs to set grid size different from window sizeUtkarsh Maheshwari2018-12-31
|
* multigrid: introduce grid abstractionBjörn Linse2018-12-31
|
* UI/TUI: improvements and cleanups for scrolling and clearingBjörn Linse2018-11-11
| | | | | | | | | | | | - TUI: _never_ rely on BCE for implicit clearing, only explicit commands. - TUI: use unibi_erase_chars when possible. - TUI: use end-exclusive ranges for invalid and cleared areas - screen: scrolling leaves scrolled in aree undefined. This is a conservative change, a client assuming the old semantics will still behave correctly. - screen: factor out vsep handling from line drawing. This is needed anyway for the multigrid refactor. - screen: simplifications of win_do_lines
* ui: disable clearing almost everywhereBjörn Linse2018-10-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Avoid clearing the screen in most situations. NOT_VALID should be equivalent to CLEAR unless some external force messed up the terminal, for these situations <c-l> and :mode will still clear the screen. Also eliminate some obsolete code in screen.c, that dealt with that in vim drawing window 1 can mess up window 2, but this never happens in nvim. But what about slow terminals? There is two common meanings in which a terminal is said to be "slow": Most commonly (and in the sense of vim:s nottyfast) it means low bandwidth for sending bytes from nvim to the terminal. If the screen is very similar before and after the update_screen(CLEAR) this change should reduce bandwidth. If the screen is quite different, but there is no new regions of contiguous whitespace, clearing doesn't reduce bandwidth significantly. If the new screen contains a lot of whitespace, it will depend of if vsplits are used or not: as long as there is no vsplits, ce is used to cheaply clear the rest of the line, so full-screen clear is not needed to reduce bandwith. However a left vsplit currently needs to be padded with whitespace all the way to the separator. It is possible ec (clear N chars) can be used to reduce bandwidth here if this is a problem. (All of this assumes that one doesn't set Normal guibg=... on a non-BCE terminal, if you do you are doomed regardless of this change). Slow can also mean that drawing pixels on the screen is slow. E-ink screens is a recent example. Avoiding clearing and redrawing the unchanged part of the screen will always improve performance in these cases.
* vim-patch:8.1.0448: cursorline not removed when using 'cursorbind'Justin M. Keyes2018-10-16
| | | | | | Problem: Cursorline not removed when using 'cursorbind'. (Justin Keyes) Solution: Store the last cursor line per window. (closes vim/vim#3488) https://github.com/vim/vim/commit/4a5abbd6138240d109278fe1f0b45489d22f712d
* vim-patch:8.1.0435: cursorline highlight not removed in some situation (#9059)Justin M. Keyes2018-09-27
| | | | | | | Problem: Cursorline highlight not removed in some situation. (Vitaly Yashin) Solution: Reset last_cursorline when resetting 'cursorline'. (Christian Brabandt, closes vim/vim#3481) https://github.com/vim/vim/commit/8c63e0ec314ba07d54b881dc629fe19e6eda1fb8
* vim-patch:8.1.0374: moving the cursor is slow when 'relativenumber' is setJustin M. Keyes2018-09-13
| | | | | | Problem: Moving the cursor is slow when 'relativenumber' is set. Solution: Only redraw the number column, not all lines. https://github.com/vim/vim/commit/bd9a53c06c8869ad811cb3dd01a309c9be7d7a63