Commit Graph

192 Commits

Author SHA1 Message Date
Björn Linse
48a869dc6d shed biking: it's always extmarks, never marks extended 2020-01-20 19:36:35 +01:00
Björn Linse
ca1a00edd6 extmarks/bufhl: reimplement using new marktree data structure
Add new "splice" interface for tracking buffer changes at the byte
level. This will later be reused for byte-resolution buffer updates.
(Implementation has been started, but using undocumented "_on_bytes"
option now as interface hasn't been finalized).

Use this interface to improve many edge cases of extmark adjustment.
Changed tests indicate previously incorrect behavior. Adding tests for
more edge cases will be follow-up work (overlaps on_bytes tests)

Don't consider creation/deletion of marks an undoable event by itself.
This behavior was never documented, and imposes  complexity for little gain.

Add nvim__buf_add_decoration temporary API for direct access to the new
implementation. This should be refactored into a proper API for
decorations, probably involving a huge dict.

fixes #11598
2020-01-16 12:36:10 +01:00
Jan Edmund Lazo
7274f5c177 vim-patch:8.1.1922: in diff mode global operations can be very slow
Problem:    In diff mode global operations can be very slow.
Solution:   Do not call diff_redraw() many times, call it once when redrawing.
            And also don't update folds multiple times.
4f57eefe1e
2019-11-16 16:40:24 -05:00
Jan Edmund Lazo
ec9b57cb6e vim-patch:8.1.1890: ml_get error when deleting fold marker
Problem:    Ml_get error when deleting fold marker.
Solution:   Check that the line number is not below the last line.  Adjust the
            fold when deleting the empty line.  (Christian Brabandt,
            closes vim/vim#4834)
9a4a8c4d59
2019-08-19 21:32:24 -04:00
Daniel Hahler
0e3b9ea74d includes 2019-08-07 14:21:23 +02:00
Björn Linse
f5c56f03bb api: allow nvim_buf_attach from lua using callbacks 2019-06-04 13:45:20 +02:00
Jan Edmund Lazo
f6ed446817 vim-patch:8.1.0527: using 'shiftwidth' from wrong buffer for folding (#9234)
Problem:    Using 'shiftwidth' from wrong buffer for folding.
Solution:   Use "buf" instead of "curbuf". (Christian Brabandt)
0c27cbcacf
2018-11-15 02:10:05 +01:00
Jan Edmund Lazo
db90c0c9bf globals: KeyTyped is bool 2018-09-14 01:01:00 -04:00
Justin M. Keyes
b7a417c5e6 Merge #8744 from janlazo/vim-8.0.0890 2018-08-08 02:22:34 +02:00
Jan Edmund Lazo
672449e448 memline: copy in ml_replace() is bool 2018-08-07 13:11:51 -04:00
ZviRackover
5cecd7a93a style: fixing minor issues noted in code review. 2018-08-06 22:27:10 +03:00
ZviRackover
cd3b2e4b6b lint: clean-up after parent commit 2018-08-06 20:48:07 +03:00
ZviRackover
10b6afd652 Remove all occurences of the mb_ptr2char macro
First step towards implemening issue #7401.

The same can be done for all deprecated mb_ functions in follow-up
patches.
2018-08-06 20:48:07 +03:00
Jan Edmund Lazo
766683622a fold: add const to foldSplit() variables 2018-08-02 18:29:16 -04:00
Jan Edmund Lazo
6710522751 fold: add const to foldUpdateIEMSRecurse() vars 2018-08-02 17:51:38 -04:00
Jan Edmund Lazo
21acc7c0fa fold: add const to foldUpdateIEMS() variables 2018-08-02 17:29:21 -04:00
Jan Edmund Lazo
1ec5485db4 fold: add const to checkSmall() variables 2018-08-02 17:15:53 -04:00
Jan Edmund Lazo
20eeb61fb2 fold: declare and init vars in deleteFoldEntry()
Use sizeof() on pointer value, not explicit type, for memmove.
2018-08-02 13:10:25 -04:00
Jan Edmund Lazo
a515401cf0 fold: add const to foldMoveTo() variables
Declare and initialize variables on same line if possible.
2018-08-02 12:50:50 -04:00
Jan Edmund Lazo
407ac8b42d fold: add const to deleteFold() variables
Declare and initialize variables on same line if possible.
2018-08-02 11:58:50 -04:00
Jan Edmund Lazo
3de785e7b5 fold: add const to hasFoldingWin() variables
cache is bool so update callers to pass true/false, not TRUE/FALSE.
2018-08-02 08:44:42 -04:00
Jan Edmund Lazo
c0dbd8df95 fold: use_level,maybe_small are bool
use_levelp, maybe_smallp in check_closed() are bool ptrs.
2018-08-01 15:28:50 -04:00
Jan Edmund Lazo
faa9869a9e fold: recursive in deleteFoldEntry() is bool 2018-08-01 15:28:49 -04:00
Jan Edmund Lazo
14cffc3d1d fold: fold_changed is bool 2018-08-01 15:28:49 -04:00
Jan Edmund Lazo
667b8cd108 fold: finish in foldUpdateIEMSRecurse() is bool 2018-08-01 15:28:49 -04:00
Jan Edmund Lazo
971e9370ad fold: lineFolded() is bool 2018-08-01 15:28:49 -04:00
Jan Edmund Lazo
6dfaf8e914 fold: check_closed() returns bool
Update affected variables (ie. had_folded).
Add const to params to restrict usage.

TODO: refactor win_T.w_lines[idx].wl_folded from char to bool
2018-08-01 15:28:49 -04:00
Jan Edmund Lazo
f193b5241f fold: fold_T.fd_small is TriState 2018-08-01 15:28:49 -04:00
Jan Edmund Lazo
8794a551bd vim-patch:8.0.0{469,581,583} (#8601)
vim-patch:8.0.0469: compiler warnings on MS-Windows
Problem:    Compiler warnings on MS-Windows.
Solution:   Add type casts. (Christian Brabandt)
0c0d4eca4d

vim-patch:8.0.0581: moving folded text is sometimes not correct
Problem:    Moving folded text is sometimes not correct.
Solution:   Bail out when "move_end" is zero. (Matthew Malcomson)
94be619e30

vim-patch:8.0.0583: fold test hangs on MS-Windows
Problem:    Fold test hangs on MS-Windows.
Solution:   Avoid overflow in compare.
b11c826ddc
2018-06-20 10:29:09 +02:00
Jan Edmund Lazo
3c7ea8d619 vim-patch:8.0.0451: some macros are in lower case
Problem:    Some macros are in lower case.
Solution:   Make a few more macros upper case. Avoid lower case macros use an
            argument twice.
91acfffc1e
2018-06-12 02:00:50 -04:00
Jan Edmund Lazo
77192889f0 vim-patch:8.0.0452: some macros are in lower case (#8505)
Problem:    Some macros are in lower case.
Solution:   Make a few more macros upper case.
1c46544412
2018-06-08 19:24:58 +02:00
Justin M. Keyes
f85cbea725 Merge #7917 'API: buffer updates' 2018-06-08 10:13:04 +02:00
KunMing Xie
77a2eaf08b vim-patch:8.0.0515: ml_get errors in silent Ex mode (#8452)
Problem:    ml_get errors in silent Ex mode. (Dominique Pelle)
Solution:   Clear valid flags when setting the cursor.  Set the topline when
            not in full screen mode.
d5d37537d1
2018-05-30 09:11:52 +02:00
nthanben
c67139f8aa vim-patch:8.0.0503: endless loop in updating folds with 32 bit ints (#8433)
Problem:    Endless loop in updating folds with 32 bit ints.
Solution:   Subtract from LHS instead of add to the RHS. (Matthew Malcomson)
vim/vim@9d20ce6
2018-05-24 23:30:21 +02:00
KillTheMule
65e7f6f0b9 Rename some more, fixe borked renaming 2018-05-23 22:07:27 +02:00
KillTheMule
491efc89d2 Lint 2018-05-23 22:07:27 +02:00
KillTheMule
e7451f8a91 Some renamings and doc changes 2018-05-23 22:07:27 +02:00
KillTheMule
2106bada5b Enable -Wconversion 2018-05-23 22:07:27 +02:00
KillTheMule
6bdcbef2f5 The grand renaming 2018-05-23 22:07:27 +02:00
Peter Hodge
edcc73e766 API: Implement buffer updates
Originally written by @phodge in
https://github.com/neovim/neovim/pull/5269.
2018-05-23 22:07:27 +02:00
ZyX
0d7daaad98 charset,*: Refactor transstr() 2018-04-09 01:39:33 +03:00
James McCoy
81be7358be vim-patch:7.4.1976
Problem:    Number variables are not 64 bits while they could be.
Solution:   Add the num64 feature. (Ken Takata)

22fcfad292
2017-06-04 22:12:13 -04:00
Justin M. Keyes
15af803cce Merge #6550 from ZyX-I/pvs-check-comment 2017-04-20 22:00:03 +02:00
James McCoy
c5d7eaf664 vim-patch:7.4.2152
Problem:    No proper translation of messages with a count.
Solution:   Use ngettext(). (Sergey Alyoshin)

ee695f787a
2017-04-19 22:24:58 -04:00
ZyX
c2f3e361c5 *: Add comment to all C files 2017-04-19 19:11:50 +03:00
Matthew Malcomson
263849b2dd fold: foldMoveRange(): fix :move bug #6534
Closes #6540

In #6221 there was a mistake in calculating which folds need to be
re-ordered. When there are no folds after those that have been adjusted,
then `move_end` remains 0. This results in reverse_fold_order()
swapping folds that have been adjusted with uninitialised folds in the
remainder of the grow array.

Add a check in foldMoveRange() to account for this case.
2017-04-17 04:45:55 +02:00
Matthew Malcomson
3a9dd13f9e fold.c: more edge-cases when updating (#6207)
When foldUpdateIEMSRecurse() re-uses an existing fold, it misses the
case where the existing fold spans from before startlnum to after
firstlnum, the new fold does not span this range, and there is no
"forced start" of a fold. We add a case for this in.

Ensure that if there was no forced break in folds, we merge folds that
now touch each other.

Include testing for a tricky foldmethod=expr case that has never been a
bug. This case works at the moment because of some effects that are not
obvious when reading the code.
A test for this could be useful to ensure a regression doesn't happen.

vim-patch:8.0.0408
2017-03-31 01:21:26 +02:00
Justin M. Keyes
90ac8b09f5 fold.c: uppercase macros 2017-03-25 00:15:31 +01:00
Matthew Malcomson
308a953e0b Fix wrap-around in 32 bit 2017-03-23 14:37:47 +00:00
Matthew Malcomson
b2b88423aa Robustly handle folds during a :move command
In order to re-order marks according to the :move command, do_move()
uses mark_adjust() in a non-standard manner. The non-standard action is
that it moves some marks *past* other marks. This doesn't matter for
marks, but mark_adjust() calls foldMarkAdjust() which simply changes
fold starts and lengths and doesn't have enough information to know that
other folds have to be checked and reordered.

The array of folds for each window are assumed to be in order of
increasing line number, and if this gets broken some folds can get
"lost".

There has been a previous patch to avoid this problem by deleting and
recalculating all folds in the window, but this comes at the cost of
closing all folds when executing :move, and doesn't cover the case of
manual folds.
This patch adds a new function foldMoveRange() specifically for the
:move command that handles reordering folds as well as simply moving
them. Additionally, we allow calling mark_adjust_nofold() that does the
same as mark_adjust() but doesn't affect any fold array.

Calling mark_adjust_nofold() should be done in the same manner as
calling mark_adjust(), but according changes to the fold arrays must be
done seperately by the calling function.

vim-patch:8.0.0457
vim-patch:8.0.0459
vim-patch:8.0.0461
vim-patch:8.0.0465
2017-03-23 14:37:47 +00:00