1#ifndef DEFINE_FUNC_ATTRIBUTES
2# define DEFINE_FUNC_ATTRIBUTES
3#endif
4#include "nvim/func_attr.h"
5#undef DEFINE_FUNC_ATTRIBUTES
6static void newFoldLevelWin(win_T *wp);
7static int checkCloseRec(garray_T *gap, linenr_T lnum, int level);
8static int foldFind(garray_T *gap, linenr_T lnum, fold_T **fpp);
9static int foldLevelWin(win_T *wp, linenr_T lnum);
10static void checkupdate(win_T *wp);
11static void setFoldRepeat(linenr_T lnum, long count, int do_open);
12static linenr_T setManualFold(linenr_T lnum, int opening, int recurse, int *donep );
13static linenr_T setManualFoldWin(win_T *wp, linenr_T lnum, int opening, int recurse, int *donep );
14static void foldOpenNested(fold_T *fpr);
15static void deleteFoldEntry(garray_T *const gap, const int idx, const _Bool recursive);
16static void foldMarkAdjustRecurse(garray_T *gap, linenr_T line1, linenr_T line2, long amount, long amount_after);
17static int getDeepestNestingRecurse(garray_T *gap);
18static _Bool check_closed(win_T *const win, fold_T *const fp, _Bool *const use_levelp, const int level, _Bool *const maybe_smallp, const linenr_T lnum_off );
19static void checkSmall(win_T *const wp, fold_T *const fp, const linenr_T lnum_off );
20static void setSmallMaybe(garray_T *gap);
21static void foldCreateMarkers(linenr_T start, linenr_T end);
22static void foldAddMarker(linenr_T lnum, const char_u *marker, size_t markerlen);
23static void deleteFoldMarkers(fold_T *fp, int recursive, linenr_T lnum_off );
24static void foldDelMarker(linenr_T lnum, char_u *marker, size_t markerlen);
25static void foldUpdateIEMS(win_T *const wp, linenr_T top, linenr_T bot);
26static linenr_T foldUpdateIEMSRecurse(garray_T *const gap, const int level, const linenr_T startlnum, fline_T *const flp, LevelGetter getlevel, linenr_T bot, const char topflags );
27static void foldInsert(garray_T *gap, int i);
28static void foldSplit(garray_T *const gap, const int i, const linenr_T top, const linenr_T bot);
29static void foldRemove(garray_T *gap, linenr_T top, linenr_T bot);
30static void foldReverseOrder(garray_T *gap, const linenr_T start_arg, const linenr_T end_arg);
31static void truncate_fold(fold_T *fp, linenr_T end);
32static void foldMerge(fold_T *fp1, garray_T *gap, fold_T *fp2);
33static void foldlevelIndent(fline_T *flp);
34static void foldlevelDiff(fline_T *flp);
35static void foldlevelExpr(fline_T *flp);
36static void parseMarker(win_T *wp);
37static void foldlevelMarker(fline_T *flp);
38static void foldlevelSyntax(fline_T *flp);
39static int put_folds_recurse(FILE *fd, garray_T *gap, linenr_T off);
40static int put_foldopen_recurse(FILE *fd, win_T *wp, garray_T *gap, linenr_T off);
41static int put_fold_open_close(FILE *fd, fold_T *fp, linenr_T off);
42#include "nvim/func_attr.h"
43