Commit Graph

429 Commits

Author SHA1 Message Date
Marco Hinz
357f95a77e cursormoved: make global last_cursormoved window-local
Fixes https://github.com/neovim/neovim/issues/9755
2019-03-29 10:58:53 +01:00
Dan Aloni
36762a00a8 signs: support multiple columns #9295
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.
2019-03-25 02:17:47 +01:00
Björn Linse
be8ebba325 Allow using internal popupmenu or ext_popupmenu for wildmenu
Deprecate ext_wildmenu. ext_popupmenu already contains more state (anchor
position), and will allow further expansion (info about items).
2019-03-16 19:53:21 +01:00
Björn Linse
175398f216 Merge pull request #9616 from chemzqm/completechange
add MenuPopupChanged autocmd
2019-03-16 10:36:54 +01:00
Jan Edmund Lazo
680252aa15 vim-patch:8.1.0728: avoid breaking after single space #9733
Problem:    Cannot avoid breaking after a single space.
Solution:   Add the 'p' flag to 'formatoptions'. (Tom Ryder)
c3c3158756
2019-03-15 12:14:42 +01:00
chemzqm
6c375d71c3 autocmd: add MenuPopupChanged autocmd
Update src/nvim/auevents.lua

Co-Authored-By: chemzqm <chemzqm@gmail.com>
2019-03-15 04:24:41 +08:00
Billy Su
241b905b13 vim-patch:8.0.0643: when a pattern search is slow Vim becomes unusable
Problem:    When 'hlsearch' is set and matching with the last search pattern
            is very slow, Vim becomes unusable.  Cannot quit search by
            pressing CTRL-C.
Solution:   When the search times out set a flag and don't try again.  Check
            for timeout and CTRL-C in NFA loop that adds states.
fbd0b0af68
2019-03-07 23:27:19 +08:00
lePerdu
f288a64264 edit.c: Disable indent during completion
closes #8345
2019-03-03 23:08:08 +01:00
Justin M. Keyes
ed4132d7e9 cleanup: remove legacy enc_dbcs global #9660 2019-03-02 02:33:36 +01:00
Justin M. Keyes
33ce70c883 vim-patch:8.1.0932: remove Farsi support (#9622)
Problem:    Farsi support is outdated and unused.
Solution:   Delete the Farsi support.
14184a3133
2019-02-17 10:54:00 +01:00
Justin M. Keyes
01b4efe9d9 rename ui_is_external to ui_has (#9576) 2019-02-03 16:42:44 +01:00
Björn Linse
2405cf8255 vim-patch:8.1.0792: bad display if opening cmdline window from Insert completion 2019-02-02 16:31:49 +01:00
Björn Linse
2c01e79dc4 Reduce pum redraws from edit.c by delaying undisplay of pum
This makes it possible for the compositor to compare the old pum with
the new position, and only clear what is necessary.
2019-02-02 16:31:49 +01:00
Björn Linse
2ab70cb55c window/ui: reorganize size variables, fix terminal window size with multigrid.
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
2019-01-27 12:07:06 +01:00
Björn Linse
a2be9c7218 ui: multigrid mouse support 2019-01-20 10:32:05 +01:00
Björn Linse
23c71d5182 display: unify cursorline and concealcursor redraw logic
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.
2019-01-13 12:08:11 +01:00
Björn Linse
ca58c3a4f5 normal/edit: add missing "need_cursor_line_redraw = false"
vim-patch:8.1.0726: redrawing specifically for conceal feature
2019-01-12 09:22:21 +01:00
Björn Linse
889f73e861 screen: make update_screen() the only entry point for redrawing
update_single_line() was only used for 'concealcursor'. But 'cursorline'
has very similiar characteristics (redraw both lines on move cursor
between lines) and works without its own special entry point to the
redraw subsystem.

Later on 'concealcursor' and 'cursorline' could share more logic, but for
now make the former use standard redrawWinline(). Make sure it is called
before update_screen(), so that it is immediately visible.

Get rid of update_prepare() and update_finish(), and all issues from
them and their callsites not being in sync with changes to
update_screen()
2019-01-11 10:55:43 +01:00
Björn Linse
1ca2c8950f Merge pull request #9479 from bfredl/redrawsign
screen: remove ad-hoc code path for redrawing signs.
2019-01-09 21:26:49 +01:00
Björn Linse
b819795661 remove dead argument of redrawWinline 2019-01-09 10:23:26 +01:00
Björn Linse
ae218c108f api: select items in popupmenu 2019-01-09 10:17:48 +01:00
Jan Edmund Lazo
b5216a3e5b lint 2019-01-07 01:00:13 -05:00
Jan Edmund Lazo
5395dd6209 vim-patch:8.1.0696: when test_edit fails 'insertmode' may not be reset
Problem:    When test_edit fails 'insertmode' may not be reset and the next
            test may get stuck. (James McCoy)
Solution:   Always reset 'insertmode' after executing a test.  Avoid that an
            InsertCharPre autocommand or a 'complete' function can change the
            state. (closes vim/vim#3768)
8ad16da729
2019-01-06 20:30:38 -05:00
Björn Linse
c72d9ce0a6 multigrid: rename grid->ScreenLines and other grid arrays 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
Utkarsh Maheshwari
ba6f9f60ad multigrid: Fix lint errors 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
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
f102f50ebe multigrid: Change screen_* functions to grid_* functions 2018-12-31 12:44:21 +01:00
Björn Linse
2271b10a8e insert: make <cmd> mapping work in completion (CTRL-X) mode 2018-12-01 10:37:46 +01:00
Jan Edmund Lazo
bebd1f9f76 vim-patch:8.0.1731: characters deleted on completion
Problem:    Characters deleted on completion. (Adrià Farrés)
Solution:   Also check the last item for the ORIGINAL_TEXT flag. (Christian
            Brabandt, closes vim/vim#1645)
e87edf3b85
2018-11-20 21:14:50 -05:00
Jan Edmund Lazo
a6661178aa vim-patch:8.1.0504: when CTRL-C is mapped it triggers InsertLeave (#9192)
Problem:    When CTRL-C is mapped it triggers InsertLeave.
Solution:   Make CTRL-C behave the same way when typed or used in a mapping.
4dbc262764
2018-11-03 12:04:33 +01:00
Jan Edmund Lazo
a9b7debbbc vim-patch:8.0.1766: expanding abbreviation doesn't work
Problem:    Expanding abbreviation doesn't work. (Tooth Pik)
Solution:   Return OK instead of FALSE and FAIL instead of TRUE. (Christian
            Brabandt)
c3c3e69896
2018-11-01 23:20:06 -04:00
Jan Edmund Lazo
44c111e49f vim-patch:8.0.1758: open_line() returns TRUE/FALSE for success/failure
Problem:    open_line() returns TRUE/FALSE for success/failure.
Solution:   Return OK or FAIL.
24a2d7264f
2018-11-01 23:19:25 -04:00
Jan Edmund Lazo
300a7a4cf4 replace fallthrough comment with macro
Follow-up of vim-patch:8.0.1215
2018-09-21 00:05:06 -04:00
Jan Edmund Lazo
6a329b0548 vim-patch:8.0.1215: newer gcc warns for implicit fallthrough
Problem:    Newer gcc warns for implicit fallthrough.
Solution:   Consistently use a FALLTHROUGH comment. (Christian Brabandt)
2f40d129bf
2018-09-20 06:59:04 -04: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
Jan Edmund Lazo
38c52c63ac vim-patch:8.0.1809: various typos
Problem:    Various typos.
Solution:   Correct the mistakes, change "cursur" to "cursor". (closes vim/vim#2887)
b946482190
2018-09-11 23:02:22 -04:00
Jan Edmund Lazo
61df24b998 vim-patch:8.0.1154: 'indentkeys' does not work properly (#8980)
Problem:    'indentkeys' does not work properly. (Gary Johnson)
Solution:   Get the cursor line again. (Christian Brabandt, closes vim/vim#2151)
1b38344e00
2018-09-11 19:55:46 +02:00
ZviRackover
329cfc3303 lint: clean-up after parent commits 2018-09-09 10:45:50 +03:00
ZviRackover
ac13e65ae0 Remove has_mbytes local to lines changed in parent commit 2018-09-09 10:45:50 +03:00
ZviRackover
cbdbc4f63d Refactor: Remove occurences of mb_char2bytes 2018-09-09 10:45:50 +03:00
Justin M. Keyes
a2403a0ed9 Merge #8863 'refactor: Remove mb_head_off() ' 2018-08-28 23:37:30 +02:00
Jan Edmund Lazo
6c8851be4e lint 2018-08-23 10:00:53 -04:00
Jan Edmund Lazo
d677ae5f64 vim-patch:8.0.1041: bogus characters when indenting during visual-block append
Problem:    Bogus characters appear when indenting kicks in while doing a
            visual-block append.
Solution:   Recompute when indenting is done. (Christian Brabandt)
e2e69e4813
2018-08-23 10:00:53 -04:00
ZviRackover
d110c6d790 lint: cleanup after parent commits 2018-08-16 07:39:48 +03:00
ZviRackover
30392b6356 Remove has_mbyte from lines near changes in parent commit 2018-08-16 06:03:49 +03:00
ZviRackover
2bddc4ca54 Remove occurences of mb_head_off 2018-08-15 22:02:33 +03:00
Justin M. Keyes
bec5e4cb61 Merge #8832 from eraserhd/vim-insert-setline-undo-fixes 2018-08-14 02:17:05 +02:00