annotate src/proto/fold.pro @ 34686:83875247fbc0 v9.1.0224

patch 9.1.0224: cursor may move too many lines over "right" & "below" virt text Commit: https://github.com/vim/vim/commit/515f734e687f28f7199b2a8042197624d9f3ec15 Author: Dylan Thacker-Smith <dylan.ah.smith@gmail.com> Date: Thu Mar 28 12:01:14 2024 +0100 patch 9.1.0224: cursor may move too many lines over "right" & "below" virt text Problem: If a line has "right" & "below" virtual text properties, where the "below" property may be stored first due to lack of ordering between them, then the line height is calculated to be 1 more and causes the cursor to far over the line. Solution: Remove some unnecessary setting of a `next_right_goes_below = TRUE` flag for "below" and "above" text properties. (Dylan Thacker-Smith) I modified a regression test I recently added to cover this case, leveraging the fact that "after", "right" & "below" text properties are being stored in the reverse of the order they are added in. The previous version of this regression test was crafted to workaround this issue so it can be addressed by this separate patch. closes: #14317 Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Thu, 28 Mar 2024 12:15:03 +0100
parents 34639bba19b0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1 /* fold.c */
7668
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
2 void copyFoldingState(win_T *wp_from, win_T *wp_to);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
3 int hasAnyFolding(win_T *win);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
4 int hasFolding(linenr_T lnum, linenr_T *firstp, linenr_T *lastp);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
5 int hasFoldingWin(win_T *win, linenr_T lnum, linenr_T *firstp, linenr_T *lastp, int cache, foldinfo_T *infop);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
6 int lineFolded(win_T *win, linenr_T lnum);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
7 long foldedCount(win_T *win, linenr_T lnum, foldinfo_T *infop);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
8 int foldmethodIsManual(win_T *wp);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
9 int foldmethodIsIndent(win_T *wp);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
10 int foldmethodIsExpr(win_T *wp);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
11 int foldmethodIsMarker(win_T *wp);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
12 int foldmethodIsSyntax(win_T *wp);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
13 int foldmethodIsDiff(win_T *wp);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
14 void closeFold(linenr_T lnum, long count);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
15 void closeFoldRecurse(linenr_T lnum);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
16 void opFoldRange(linenr_T first, linenr_T last, int opening, int recurse, int had_visual);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
17 void openFold(linenr_T lnum, long count);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
18 void openFoldRecurse(linenr_T lnum);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
19 void foldOpenCursor(void);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
20 void newFoldLevel(void);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
21 void foldCheckClose(void);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
22 int foldManualAllowed(int create);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
23 void foldCreate(linenr_T start, linenr_T end);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
24 void deleteFold(linenr_T start, linenr_T end, int recursive, int had_visual);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
25 void clearFolding(win_T *win);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
26 void foldUpdate(win_T *wp, linenr_T top, linenr_T bot);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
27 void foldUpdateAll(win_T *win);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
28 int foldMoveTo(int updown, int dir, long count);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
29 void foldInitWin(win_T *new_win);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
30 int find_wl_entry(win_T *win, linenr_T lnum);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
31 void foldAdjustVisual(void);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
32 void foldAdjustCursor(void);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
33 void cloneFoldGrowArray(garray_T *from, garray_T *to);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
34 void deleteFoldRecurse(garray_T *gap);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
35 void foldMarkAdjust(win_T *wp, linenr_T line1, linenr_T line2, long amount, long amount_after);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
36 int getDeepestNesting(void);
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
37 char_u *get_foldtext(win_T *wp, linenr_T lnum, linenr_T lnume, foldinfo_T *foldinfo, char_u *buf);
13963
1174611ad715 Vim 8.1 release
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
38 void foldMoveRange(garray_T *gap, linenr_T line1, linenr_T line2, linenr_T dest);
7668
21b0a39d13ed commit https://github.com/vim/vim/commit/ef26954a35207c3f17d6ed35d9a40c918d974892
Christian Brabandt <cb@256bit.org>
parents: 3929
diff changeset
39 int put_folds(FILE *fd, win_T *wp);
17928
34639bba19b0 patch 8.1.1960: fold code is spread out
Bram Moolenaar <Bram@vim.org>
parents: 13963
diff changeset
40 void f_foldclosed(typval_T *argvars, typval_T *rettv);
34639bba19b0 patch 8.1.1960: fold code is spread out
Bram Moolenaar <Bram@vim.org>
parents: 13963
diff changeset
41 void f_foldclosedend(typval_T *argvars, typval_T *rettv);
34639bba19b0 patch 8.1.1960: fold code is spread out
Bram Moolenaar <Bram@vim.org>
parents: 13963
diff changeset
42 void f_foldlevel(typval_T *argvars, typval_T *rettv);
34639bba19b0 patch 8.1.1960: fold code is spread out
Bram Moolenaar <Bram@vim.org>
parents: 13963
diff changeset
43 void f_foldtext(typval_T *argvars, typval_T *rettv);
34639bba19b0 patch 8.1.1960: fold code is spread out
Bram Moolenaar <Bram@vim.org>
parents: 13963
diff changeset
44 void f_foldtextresult(typval_T *argvars, typval_T *rettv);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
45 /* vim: set ft=c : */