mirror of
https://github.com/neovim/neovim.git
synced 2025-09-29 14:38:32 +00:00
feat(extmark): window scoped extmark
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
#include <stddef.h> // IWYU pragma: keep
|
||||
#include <stdint.h>
|
||||
|
||||
#include "nvim/buffer_defs.h"
|
||||
#include "nvim/decoration_defs.h"
|
||||
#include "nvim/marktree_defs.h" // IWYU pragma: keep
|
||||
#include "nvim/pos_defs.h" // IWYU pragma: keep
|
||||
@@ -34,6 +35,8 @@
|
||||
#define MT_FLAG_DECOR_VIRT_LINES (((uint16_t)1) << 11)
|
||||
#define MT_FLAG_DECOR_VIRT_TEXT_INLINE (((uint16_t)1) << 12)
|
||||
|
||||
#define MT_FLAG_SCOPED (((uint16_t)1) << 13)
|
||||
|
||||
// These _must_ be last to preserve ordering of marks
|
||||
#define MT_FLAG_RIGHT_GRAVITY (((uint16_t)1) << 14)
|
||||
#define MT_FLAG_LAST (((uint16_t)1) << 15)
|
||||
@@ -43,7 +46,7 @@
|
||||
| MT_FLAG_DECOR_VIRT_TEXT_INLINE)
|
||||
|
||||
#define MT_FLAG_EXTERNAL_MASK (MT_FLAG_DECOR_MASK | MT_FLAG_NO_UNDO \
|
||||
| MT_FLAG_INVALIDATE | MT_FLAG_INVALID)
|
||||
| MT_FLAG_INVALIDATE | MT_FLAG_INVALID | MT_FLAG_SCOPED)
|
||||
|
||||
// this is defined so that start and end of the same range have adjacent ids
|
||||
#define MARKTREE_END_FLAG ((uint64_t)1)
|
||||
@@ -107,12 +110,24 @@ static inline bool mt_decor_sign(MTKey key)
|
||||
return key.flags & (MT_FLAG_DECOR_SIGNTEXT | MT_FLAG_DECOR_SIGNHL);
|
||||
}
|
||||
|
||||
static inline uint16_t mt_flags(bool right_gravity, bool no_undo, bool invalidate, bool decor_ext)
|
||||
static inline bool mt_scoped(MTKey key)
|
||||
{
|
||||
return key.flags & MT_FLAG_SCOPED;
|
||||
}
|
||||
|
||||
static inline bool mt_scoped_in_win(MTKey key, win_T *wp)
|
||||
{
|
||||
return !mt_scoped(key) || set_has(uint32_t, &wp->w_ns_set, key.ns);
|
||||
}
|
||||
|
||||
static inline uint16_t mt_flags(bool right_gravity, bool no_undo, bool invalidate, bool decor_ext,
|
||||
bool scoped)
|
||||
{
|
||||
return (uint16_t)((right_gravity ? MT_FLAG_RIGHT_GRAVITY : 0)
|
||||
| (no_undo ? MT_FLAG_NO_UNDO : 0)
|
||||
| (invalidate ? MT_FLAG_INVALIDATE : 0)
|
||||
| (decor_ext ? MT_FLAG_DECOR_EXT : 0));
|
||||
| (decor_ext ? MT_FLAG_DECOR_EXT : 0)
|
||||
| (scoped ? MT_FLAG_SCOPED : 0));
|
||||
}
|
||||
|
||||
static inline MTPair mtpair_from(MTKey start, MTKey end)
|
||||
|
Reference in New Issue
Block a user