Commit Graph

438 Commits

Author SHA1 Message Date
Michael Vilim
bed95b37b2 vim-patch:8.1.0449: fix display of 'rnu' with folded lines #9481
Problem:    When 'rnu' is set folded lines are not displayed correctly.
            (Vitaly Yashin)
Solution:   When only redrawing line numbers do draw folded lines.
            (closes vim/vim#3484)
7701f30856

---
Explanation:
Before this patch, relative line numbers would update on a cursor
movement and overwrite fold highlighting in the line number columns.
Other operations can cause the fold highlighting to overwrite the line
number styles. Together, this causes the highlighting in the line number
columns to flicker back and forth while editing.

Test case: create `t.vim` with these contents:

    set fdm=marker rnu foldcolumn=2
    call setline(1, ["{{{1", "nline 1", "{{{1", "line 2"])

and then call `nvim -u NORC -S t.vim` and press `j`; observe that the fold
highlighting disappears.
2019-01-11 01:44:15 +01:00
Björn Linse
b819795661 remove dead argument of redrawWinline 2019-01-09 10:23:26 +01:00
Björn Linse
ead222d2cd screen: avoid redrawing windows immediately when debug signs are placed. 2019-01-09 10:22:48 +01:00
Justin M. Keyes
0ccb9704d7 vim-patch:8.1.0700: using "gt" sometimes does not redraw a tab (#9464)
Problem:    Using "gt" sometimes does not redraw a tab. (Jason Franklin)
Solution:   Always set must_redraw in redraw_all_later().
04b4e1a424

ref bf3250a8ad (r31852304)

> I fixed it in a more general way, in that if we don't find a window
> that doesn't have the redraw type set it, then it will not set
> must_redraw, even though that's clearly intended.

ref #9152
ref #9155

NA patches:
vim-patch:8.1.0698
vim-patch:8.1.0699
2019-01-07 22:33:57 +01:00
Jan Edmund Lazo
624f5c8be3 vim-patch:8.1.0683: spell highlighting does not always end
Problem:    Spell highlighting does not always end. (Gary Johnson)
Solution:   Also reset char_attr when spell errors are highlighted.
637532b3c0
2019-01-05 17:29:11 -05:00
Jan Edmund Lazo
40f7ce96c3 vim-patch:8.1.0674: leaking memory when updating a single line
Problem:    Leaking memory when updating a single line.
Solution:   Do not call start_search_hl() twice.
6d5b4f566a
2019-01-05 17:29:11 -05:00
Jan Edmund Lazo
fd674c875b vim-patch:8.0.0286: not always redrawing after screen resize
Problem:    When concealing is active and the screen is resized in the GUI it
            is not immediately redrawn.
Solution:   Use update_prepare() and update_finish() from
            update_single_line().
c10f0e7cb0
2019-01-05 17:29:11 -05:00
Justin M. Keyes
37a499148f Visual: highlight char-at-cursor
Decide whether to highlight the visual-selected character under the
cursor, depending on 'guicursor' style:

- Highlight if cursor is blinking or non-block (vertical, horiz).
- Do NOT highlight if cursor is non-blinking block.

Traditionally Vim's visual selection does "reverse mode", which perhaps
conflicts with the non-blinking block cursor. But 'guicursor' defaults
to a vertical bar for selection=exclusive, and this confuses users who
expect to see the text highlighted.

closes #8983
2019-01-04 01:28:44 +01:00
Justin M. Keyes
e2d71d11de remove check_visual_highlight()
This check is meaningless, we assume the terminal supports reverse-mode.
2019-01-04 01:24:49 +01:00
Justin M. Keyes
a70fde1b45 build: enable -Wshadow
Note about shada.c:
- shada_read_next_item_start was intentionally shadowing `unpacked` and
  `i` because many of the macros (e.g. ADDITIONAL_KEY) implicitly
  depended on those variable names.
- Macros were changed to parameterize `unpacked` (but not `i`). Macros
  like CLEAR_GA_AND_ERROR_OUT do control-flow (goto), so any other
  approach is messy.
2019-01-02 21:06:37 +01:00
Björn Linse
4e5f5e93c2 multigrid: do all adjustment in screen.c
Adjustment will get more complex with floats, tabgrid etc,
so make it into a function.
2019-01-01 15:11:51 +01:00
Björn Linse
c72d9ce0a6 multigrid: rename grid->ScreenLines and other grid arrays 2018-12-31 16:24:07 +01:00
Björn Linse
dc44309336 multigrid: rename to grid.row_offset and grid.requested_rows 2018-12-31 16:24:07 +01:00
Björn Linse
1cec5542a8 multigrid: reorganize types and global varaibles 2018-12-31 16:24:07 +01:00
Björn Linse
820c81e638 multigrid: various cleanup (types, unused parameters)
Handle the rare case of full highlight table properly
2018-12-31 16:24:07 +01:00
Björn Linse
f6f8f0ee76 multigrid: add msg_scroll_start and msg_scroll_reset events 2018-12-31 12:44:22 +01:00
Björn Linse
f77f09ea6e multigrid: don't clear window grids on resize
Instead define that the shared top-left part of the grid is preserved.
2018-12-31 12:44:22 +01:00
Utkarsh Maheshwari
ba6f9f60ad multigrid: Fix lint errors 2018-12-31 12:44:22 +01:00
Utkarsh Maheshwari
8b47b56fc6 multigrid: Draw fold for the entire width of window grid 2018-12-31 12:44:22 +01:00
Utkarsh Maheshwari
f241930472 multigrid: Fix rebase errors in screen.c 2018-12-31 12:44:22 +01:00
Utkarsh Maheshwari
62be9f39ef multigrid: Fix sending window grid handle in ext_newline mode 2018-12-31 12:44:22 +01:00
Utkarsh Maheshwari
882dd63dc7 multigrid: Fix grid allocation misses
- Clear whole grid in one go.
- Fix wrongly sent "copy" flag.
- Add clear function comment.
2018-12-31 12:44:22 +01:00
Björn Linse
1a896bc93f multigrid: avoid allocation when not ext_multigrid.
Move grid specific functions from mbyte.c to screen.c
2018-12-31 12:44:22 +01:00
Utkarsh Maheshwari
4f1dcf7c28 multigrid: Clean whole grid when it was just resized 2018-12-31 12:44:22 +01:00
Utkarsh Maheshwari
0bab611a96 multigrid: Add ScreenGrid as a param to multibyte functions 2018-12-31 12:44:22 +01:00
Utkarsh Maheshwari
911b731378 multigrid: Get rid of global ScreenLines and set_screengrid 2018-12-31 12:44:22 +01:00
Utkarsh Maheshwari
0432e1586e multigrid: Put everything on default_grid if not ext_multigrid 2018-12-31 12:44:22 +01:00
Utkarsh Maheshwari
01555de2da multigrid: Allow UIs to set grid size different from window size 2018-12-31 12:44:21 +01:00
Utkarsh Maheshwari
f102f50ebe multigrid: Change screen_* functions to grid_* functions 2018-12-31 12:44:21 +01:00
Björn Linse
c9b559a030 multigrid: introduce grid abstraction 2018-12-31 12:44:21 +01:00
Björn Linse
f1ce9b3be2 screen: add missing status redraw when redraw_later(CLEAR) was used 2018-12-05 10:57:43 +01:00
Justin M. Keyes
5a752c97d5 vim-patch:8.1.0098: segfault when pattern with \z() is very slow (#9283)
Problem:    Segfault when pattern with \z() is very slow.
Solution:   Check for NULL regprog.  Add "nfa_fail" to test_override() to be
            able to test this.  Fix that 'searchhl' resets called_emsg.
bcf9442307

closes #8788
2018-11-29 01:51:26 +01:00
Justin M. Keyes
60f845ca55 diff/highlight: Show underline for low-priority CursorLine 2018-11-27 01:14:55 +01:00
Justin M. Keyes
3283db4ecb diff/highlight: do not overlay low-priority CursorLine
ref #6380
2018-11-27 01:14:55 +01:00
Jan Edmund Lazo
f4b4b7c132 lint 2018-11-18 00:30:16 -05:00
Jan Edmund Lazo
65a3d53cb9 vim-patch:8.1.0376: compiler warning for uninitialized variable
Problem:    Compiler warning for uninitialized variable. (Tony Mechelynck)
Solution:   Initialize the variable.
c787539747
2018-11-18 00:18:52 -05:00
Björn Linse
520ec3dbfd UI/TUI: improvements and cleanups for scrolling and clearing
- 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
2018-11-11 09:54:03 +01:00
Björn Linse
c48c9828c3 screen.c: remove redundant wp->w_hl_attr_normal 2018-10-25 09:30:48 +02:00
Björn Linse
662abd8451 screen: fix glitches with nvim_buf_set_virtual_text
- virtual text disappeared when 'cursorline' was set
- virtual text was shifted when emtpy line was visually selected.
2018-10-25 09:30:48 +02:00
Björn Linse
e598811e76 ui: disable clearing almost everywhere
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.
2018-10-22 11:59:02 +02:00
Justin M. Keyes
e0f6f46c1b fix warning: garbage/uninitialized value
According to clang scan-build, `fromcol` could be uninitialized at line
2645.

Found by clang scan-build 5.0
2018-10-21 23:24:40 +02:00
Justin M. Keyes
92f98b5bdf screen.c: Fix PVS/V560: condition is always false 2018-10-20 23:09:49 +02:00
Reto Schnyder
bddcbbb571 signs: Add "numhl" argument #9113
close #9113
ref #9040
2018-10-13 19:39:56 +02:00
Josh Triplett
8240b8b596 terminal: Redraw statusline on title change #8973
The statusline may incorporate b:term_title, so redraw it when that
title changes.

Introduce a new function status_redraw_buf to redraw windows associated
with the current buffer.
2018-09-25 08:47:48 +02:00
Björn Linse
45f53b370b buffer: add support for virtual text annotations 2018-09-17 10:41:29 +02:00
Justin M. Keyes
021f67df12 style: indent, then lint 2018-09-13 01:18:12 +02:00
Justin M. Keyes
ba27284f07 vim-patch:8.1.0374: moving the cursor is slow when 'relativenumber' is set
Problem:    Moving the cursor is slow when 'relativenumber' is set.
Solution:   Only redraw the number column, not all lines.
bd9a53c06c
2018-09-13 01:08:12 +02:00
rpigott
a5fe6d34a9 vim-patch:8.0.1161 2018-09-13 00:27:32 +02:00
Justin M. Keyes
7a26b9b62b vim-patch:8.1.0372: screen updating slow when 'cursorline' is set (#8986)
Problem:    Screen updating slow when 'cursorline' is set.
Solution:   Only redraw the old and new cursor line, not all lines.
90a997987d
2018-09-12 23:06:26 +02:00
Justin M. Keyes
31c3d54668 UI/cleanup: Remove most redraw_later_clear() calls
Vim :! may "mess up the screen" because of e.g. switching between cooked
mode, but Nvim just uses pipes. So maybe we can avoid these
redraw_later_clear() CYA calls.
2018-09-12 08:30:26 +02:00