mirror of
https://github.com/neovim/neovim.git
synced 2025-09-07 11:58:17 +00:00

Allow Include What You Use to remove unnecessary includes and only include what is necessary. This helps with reducing compilation times and makes it easier to visualise which dependencies are actually required. Work on https://github.com/neovim/neovim/issues/549, but doesn't close it since this only works fully for .c files and not headers.
94 lines
1.8 KiB
C
94 lines
1.8 KiB
C
#ifndef NVIM_EXTMARK_H
|
|
#define NVIM_EXTMARK_H
|
|
|
|
#include <stdbool.h>
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#include "klib/kvec.h"
|
|
#include "nvim/buffer_defs.h"
|
|
#include "nvim/decoration.h"
|
|
#include "nvim/extmark_defs.h"
|
|
#include "nvim/macros.h"
|
|
#include "nvim/marktree.h"
|
|
#include "nvim/pos.h"
|
|
#include "nvim/types.h"
|
|
|
|
EXTERN int extmark_splice_pending INIT(= 0);
|
|
|
|
typedef struct {
|
|
uint64_t ns_id;
|
|
uint64_t mark_id;
|
|
int row;
|
|
colnr_T col;
|
|
int end_row;
|
|
colnr_T end_col;
|
|
bool right_gravity;
|
|
bool end_right_gravity;
|
|
Decoration decor; // TODO(bfredl): CHONKY
|
|
} ExtmarkInfo;
|
|
|
|
typedef kvec_t(ExtmarkInfo) ExtmarkInfoArray;
|
|
|
|
// TODO(bfredl): good enough name for now.
|
|
typedef ptrdiff_t bcount_t;
|
|
|
|
// delete the columns between mincol and endcol
|
|
typedef struct {
|
|
int start_row;
|
|
colnr_T start_col;
|
|
int old_row;
|
|
colnr_T old_col;
|
|
int new_row;
|
|
colnr_T new_col;
|
|
bcount_t start_byte;
|
|
bcount_t old_byte;
|
|
bcount_t new_byte;
|
|
} ExtmarkSplice;
|
|
|
|
// adjust marks after :move operation
|
|
typedef struct {
|
|
int start_row;
|
|
int start_col;
|
|
int extent_row;
|
|
int extent_col;
|
|
int new_row;
|
|
int new_col;
|
|
bcount_t start_byte;
|
|
bcount_t extent_byte;
|
|
bcount_t new_byte;
|
|
} ExtmarkMove;
|
|
|
|
// extmark was updated
|
|
typedef struct {
|
|
uint64_t mark; // raw mark id of the marktree
|
|
int old_row;
|
|
colnr_T old_col;
|
|
int row;
|
|
colnr_T col;
|
|
} ExtmarkSavePos;
|
|
|
|
typedef enum {
|
|
kExtmarkSplice,
|
|
kExtmarkMove,
|
|
kExtmarkUpdate,
|
|
kExtmarkSavePos,
|
|
kExtmarkClear,
|
|
} UndoObjectType;
|
|
|
|
// TODO(bfredl): reduce the number of undo action types
|
|
struct undo_object {
|
|
UndoObjectType type;
|
|
union {
|
|
ExtmarkSplice splice;
|
|
ExtmarkMove move;
|
|
ExtmarkSavePos savepos;
|
|
} data;
|
|
};
|
|
|
|
#ifdef INCLUDE_GENERATED_DECLARATIONS
|
|
# include "extmark.h.generated.h"
|
|
#endif
|
|
|
|
#endif // NVIM_EXTMARK_H
|