Commit Graph

346 Commits

Author SHA1 Message Date
Jan Edmund Lazo
287f7a46a4 vim-patch:8.0.1479: insert mode completion state is confusing
Problem:    Insert mode completion state is confusing.
Solution:   Move ctrl_x_mode into edit.c.  Add CTRL_X_NORMAL for zero.
bc0e9adae9
2019-06-23 22:23:50 -04:00
Jan Edmund Lazo
3dcf2d5c16 vim-patch:8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Problem:    CTRL-G U in Insert mode doesn't work to avoid splitting the undo
            sequence for shift-left and shift-right.
Solution:   Also check dont_sync_undo for shifted cursor keys. (Christian
            Brabandt)
75bf3d22f4
2019-06-23 20:50:37 -04:00
Jan Edmund Lazo
1935cc2639 vim-patch:8.1.0242: Insert mode completion may use an invalid buffer pointer
Problem:    Insert mode completion may use an invalid buffer pointer.
Solution:   Check for ins_buf to be valid. (closes vim/vim#3290)
02ab97709d
2019-06-23 18:17:09 -04:00
erw7
485972dd64 vim-patch:8.1.0629: "gn" selects the wrong text with a multi-line match
Problem:    "gn" selects the wrong text with a multi-line match.
Solution:   Get the end position from searchit() directly. (closes vim/vim#3695)
5d24a2257e
2019-06-04 09:53:55 +09:00
Jan Edmund Lazo
21f160746a vim-patch:8.1.0020: cannot tell whether a register is executing or recording
Problem:    Cannot tell whether a register is being used for executing or
            recording.
Solution:   Add reg_executing() and reg_recording(). (Hirohito Higashi,
            closes vim/vim#2745)  Rename the global variables for consistency.  Store
            the register name in reg_executing.
0b6d911e5d
2019-05-26 20:24:11 -04:00
Andrej Zieger
80f40f0203 lint 2019-05-26 19:32:32 +02:00
Justin M. Keyes
51a59a0f62 lint 2019-05-25 13:51:30 +02:00
Justin M. Keyes
ae846b41df vim-patch:8.0.1496: VIM_CLEAR()
Problem:    Clearing a pointer takes two lines.
Solution:   Add VIM_CLEAR() and replace vim_clear(). (Hirohito Higashi,
            closes #2629)

vim-patch:8.0.1481
2019-05-25 10:07:05 +02:00
Justin M. Keyes
cf072cf223 build: fix warning 2019-04-07 01:41:41 +02:00
roxma
8376d2c4b1 vim-patch:8.1.1123: avoid filtering autocomplete
Author: roxma <roxma@qq.com>

Problem:    No way to avoid filtering for autocomplete function, causing
            flickering of the popup menu.
Solution:   Add the "equal" field to complete items. (closes vim/vim#3887)
73655cf0ca

closes #9566
2019-04-07 00:56:26 +02:00
Justin M. Keyes
acdcae6b1e PVS/V560: expression is always true 2019-04-01 03:07:24 +02:00
Justin M. Keyes
cf4e14c746 clang/"null pointer dereference": insert_execute 2019-04-01 03:05:02 +02:00
Marco Hinz
4c4a570156 Merge #9807 from mhinz/window-local-last-cursormoved 2019-03-31 15:13:38 +02:00
Qiming zhao
9e52255de2 autocmd: rename MenuPopupChanged to CompleteChanged #9819 2019-03-31 01:15:41 +01:00
Justin M. Keyes
1ae52a3bba complete_info(): fix null reference 2019-03-30 22:16:17 +01:00
Justin M. Keyes
a8783012e4 Merge #9815 'vim-patch:8.1.1068: complete_info()' 2019-03-30 21:30:16 +01:00
Shougo Matsushita
2d63b6d2c1 vim-patch:8.1.1068: cannot get all the information about current completion
Problem:    Cannot get all the information about current completion.
Solution:   Add complete_info(). (Shougo, Hirohito Higashi, closes vim/vim#4106)
fd133323d4
2019-03-30 22:24:35 +09:00
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