mirror of
https://github.com/neovim/neovim.git
synced 2025-09-14 23:38:17 +00:00
*: Also fix the adjacent errors
This commit is contained in:
@@ -20,44 +20,36 @@
|
|||||||
#define OBJECT_OBJ(o) o
|
#define OBJECT_OBJ(o) o
|
||||||
|
|
||||||
#define BOOLEAN_OBJ(b) ((Object) { \
|
#define BOOLEAN_OBJ(b) ((Object) { \
|
||||||
.type = kObjectTypeBoolean, \
|
.type = kObjectTypeBoolean, \
|
||||||
.data.boolean = b \
|
.data.boolean = b })
|
||||||
})
|
|
||||||
|
|
||||||
#define INTEGER_OBJ(i) ((Object) { \
|
#define INTEGER_OBJ(i) ((Object) { \
|
||||||
.type = kObjectTypeInteger, \
|
.type = kObjectTypeInteger, \
|
||||||
.data.integer = i \
|
.data.integer = i })
|
||||||
})
|
|
||||||
|
|
||||||
#define STRING_OBJ(s) ((Object) { \
|
#define STRING_OBJ(s) ((Object) { \
|
||||||
.type = kObjectTypeString, \
|
.type = kObjectTypeString, \
|
||||||
.data.string = s \
|
.data.string = s })
|
||||||
})
|
|
||||||
|
|
||||||
#define BUFFER_OBJ(s) ((Object) { \
|
#define BUFFER_OBJ(s) ((Object) { \
|
||||||
.type = kObjectTypeBuffer, \
|
.type = kObjectTypeBuffer, \
|
||||||
.data.buffer = s \
|
.data.buffer = s })
|
||||||
})
|
|
||||||
|
|
||||||
#define WINDOW_OBJ(s) ((Object) { \
|
#define WINDOW_OBJ(s) ((Object) { \
|
||||||
.type = kObjectTypeWindow, \
|
.type = kObjectTypeWindow, \
|
||||||
.data.window = s \
|
.data.window = s })
|
||||||
})
|
|
||||||
|
|
||||||
#define TABPAGE_OBJ(s) ((Object) { \
|
#define TABPAGE_OBJ(s) ((Object) { \
|
||||||
.type = kObjectTypeTabpage, \
|
.type = kObjectTypeTabpage, \
|
||||||
.data.tabpage = s \
|
.data.tabpage = s })
|
||||||
})
|
|
||||||
|
|
||||||
#define ARRAY_OBJ(a) ((Object) { \
|
#define ARRAY_OBJ(a) ((Object) { \
|
||||||
.type = kObjectTypeArray, \
|
.type = kObjectTypeArray, \
|
||||||
.data.array = a \
|
.data.array = a })
|
||||||
})
|
|
||||||
|
|
||||||
#define DICTIONARY_OBJ(d) ((Object) { \
|
#define DICTIONARY_OBJ(d) ((Object) { \
|
||||||
.type = kObjectTypeDictionary, \
|
.type = kObjectTypeDictionary, \
|
||||||
.data.dictionary = d \
|
.data.dictionary = d })
|
||||||
})
|
|
||||||
|
|
||||||
#define NIL ((Object) {.type = kObjectTypeNil})
|
#define NIL ((Object) {.type = kObjectTypeNil})
|
||||||
|
|
||||||
|
@@ -22159,7 +22159,6 @@ typval_T eval_call_provider(char *provider, char *method, list_T *arguments)
|
|||||||
|
|
||||||
bool eval_has_provider(char *name)
|
bool eval_has_provider(char *name)
|
||||||
{
|
{
|
||||||
|
|
||||||
#define check_provider(name) \
|
#define check_provider(name) \
|
||||||
if (has_##name == -1) { \
|
if (has_##name == -1) { \
|
||||||
has_##name = !!find_func((uint8_t *)"provider#" #name "#Call"); \
|
has_##name = !!find_func((uint8_t *)"provider#" #name "#Call"); \
|
||||||
|
@@ -31,7 +31,7 @@ typedef struct loop {
|
|||||||
if (queue) { \
|
if (queue) { \
|
||||||
queue_put((queue), (handler), argc, __VA_ARGS__); \
|
queue_put((queue), (handler), argc, __VA_ARGS__); \
|
||||||
} else { \
|
} else { \
|
||||||
void *argv[argc] = {__VA_ARGS__}; \
|
void *argv[argc] = { __VA_ARGS__ }; \
|
||||||
(handler)(argv); \
|
(handler)(argv); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
@@ -45,20 +45,22 @@
|
|||||||
REAL_FATTR_UNUSED; \
|
REAL_FATTR_UNUSED; \
|
||||||
static inline void kmp_destroy_##name(kmp_##name##_t *mp) { \
|
static inline void kmp_destroy_##name(kmp_##name##_t *mp) { \
|
||||||
size_t k; \
|
size_t k; \
|
||||||
for (k = 0; k < mp->n; ++k) { \
|
for (k = 0; k < mp->n; k++) { \
|
||||||
kmpfree_f(mp->buf[k]); xfree(mp->buf[k]); \
|
kmpfree_f(mp->buf[k]); xfree(mp->buf[k]); \
|
||||||
} \
|
} \
|
||||||
xfree(mp->buf); xfree(mp); \
|
xfree(mp->buf); xfree(mp); \
|
||||||
} \
|
} \
|
||||||
static inline kmptype_t *kmp_alloc_##name(kmp_##name##_t *mp) { \
|
static inline kmptype_t *kmp_alloc_##name(kmp_##name##_t *mp) { \
|
||||||
++mp->cnt; \
|
mp->cnt++; \
|
||||||
if (mp->n == 0) return xcalloc(1, sizeof(kmptype_t)); \
|
if (mp->n == 0) { \
|
||||||
|
return xcalloc(1, sizeof(kmptype_t)); \
|
||||||
|
} \
|
||||||
return mp->buf[--mp->n]; \
|
return mp->buf[--mp->n]; \
|
||||||
} \
|
} \
|
||||||
static inline void kmp_free_##name(kmp_##name##_t *mp, kmptype_t *p) { \
|
static inline void kmp_free_##name(kmp_##name##_t *mp, kmptype_t *p) { \
|
||||||
--mp->cnt; \
|
mp->cnt--; \
|
||||||
if (mp->n == mp->max) { \
|
if (mp->n == mp->max) { \
|
||||||
mp->max = mp->max? mp->max<<1 : 16; \
|
mp->max = mp->max ? (mp->max << 1) : 16; \
|
||||||
mp->buf = xrealloc(mp->buf, sizeof(kmptype_t *) * mp->max); \
|
mp->buf = xrealloc(mp->buf, sizeof(kmptype_t *) * mp->max); \
|
||||||
} \
|
} \
|
||||||
mp->buf[mp->n++] = p; \
|
mp->buf[mp->n++] = p; \
|
||||||
@@ -93,8 +95,9 @@
|
|||||||
REAL_FATTR_UNUSED; \
|
REAL_FATTR_UNUSED; \
|
||||||
static inline void kl_destroy_##name(kl_##name##_t *kl) { \
|
static inline void kl_destroy_##name(kl_##name##_t *kl) { \
|
||||||
kl1_##name *p; \
|
kl1_##name *p; \
|
||||||
for (p = kl->head; p != kl->tail; p = p->next) \
|
for (p = kl->head; p != kl->tail; p = p->next) { \
|
||||||
kmp_free(name, kl->mp, p); \
|
kmp_free(name, kl->mp, p); \
|
||||||
|
} \
|
||||||
kmp_free(name, kl->mp, p); \
|
kmp_free(name, kl->mp, p); \
|
||||||
kmp_destroy(name, kl->mp); \
|
kmp_destroy(name, kl->mp); \
|
||||||
xfree(kl); \
|
xfree(kl); \
|
||||||
@@ -102,22 +105,23 @@
|
|||||||
static inline void kl_push_##name(kl_##name##_t *kl, kltype_t d) { \
|
static inline void kl_push_##name(kl_##name##_t *kl, kltype_t d) { \
|
||||||
kl1_##name *q, *p = kmp_alloc(name, kl->mp); \
|
kl1_##name *q, *p = kmp_alloc(name, kl->mp); \
|
||||||
q = kl->tail; p->next = 0; kl->tail->next = p; kl->tail = p; \
|
q = kl->tail; p->next = 0; kl->tail->next = p; kl->tail = p; \
|
||||||
++kl->size; \
|
kl->size++; \
|
||||||
q->data = d; \
|
q->data = d; \
|
||||||
} \
|
} \
|
||||||
static inline kltype_t kl_shift_at_##name(kl_##name##_t *kl, \
|
static inline kltype_t kl_shift_at_##name(kl_##name##_t *kl, \
|
||||||
kl1_##name **n) { \
|
kl1_##name **n) { \
|
||||||
assert((*n)->next); \
|
assert((*n)->next); \
|
||||||
kl1_##name *p; \
|
kl1_##name *p; \
|
||||||
--kl->size; \
|
kl->size--; \
|
||||||
p = *n; \
|
p = *n; \
|
||||||
*n = (*n)->next; \
|
*n = (*n)->next; \
|
||||||
if (p == kl->head) kl->head = *n; \
|
if (p == kl->head) { \
|
||||||
|
kl->head = *n; \
|
||||||
|
} \
|
||||||
kltype_t d = p->data; \
|
kltype_t d = p->data; \
|
||||||
kmp_free(name, kl->mp, p); \
|
kmp_free(name, kl->mp, p); \
|
||||||
return d; \
|
return d; \
|
||||||
} \
|
}
|
||||||
|
|
||||||
|
|
||||||
#define kliter_t(name) kl1_##name
|
#define kliter_t(name) kl1_##name
|
||||||
#define klist_t(name) kl_##name##_t
|
#define klist_t(name) kl_##name##_t
|
||||||
|
@@ -37,28 +37,34 @@
|
|||||||
// Note that the rbuffer_{produced,consumed} calls are necessary or these macros
|
// Note that the rbuffer_{produced,consumed} calls are necessary or these macros
|
||||||
// create infinite loops
|
// create infinite loops
|
||||||
#define RBUFFER_UNTIL_EMPTY(buf, rptr, rcnt) \
|
#define RBUFFER_UNTIL_EMPTY(buf, rptr, rcnt) \
|
||||||
for (size_t rcnt = 0, _r = 1; _r; _r = 0) \
|
for (size_t rcnt = 0, _r = 1; _r; _r = 0) /* NOLINT(readability/braces) */ \
|
||||||
for (char *rptr = rbuffer_read_ptr(buf, &rcnt); \
|
for ( /* NOLINT(readability/braces) */ \
|
||||||
buf->size; \
|
char *rptr = rbuffer_read_ptr(buf, &rcnt); \
|
||||||
rptr = rbuffer_read_ptr(buf, &rcnt))
|
buf->size; \
|
||||||
|
rptr = rbuffer_read_ptr(buf, &rcnt))
|
||||||
|
|
||||||
#define RBUFFER_UNTIL_FULL(buf, wptr, wcnt) \
|
#define RBUFFER_UNTIL_FULL(buf, wptr, wcnt) \
|
||||||
for (size_t wcnt = 0, _r = 1; _r; _r = 0) \
|
for (size_t wcnt = 0, _r = 1; _r; _r = 0) /* NOLINT(readability/braces) */ \
|
||||||
for (char *wptr = rbuffer_write_ptr(buf, &wcnt); \
|
for ( /* NOLINT(readability/braces) */ \
|
||||||
rbuffer_space(buf); \
|
char *wptr = rbuffer_write_ptr(buf, &wcnt); \
|
||||||
wptr = rbuffer_write_ptr(buf, &wcnt))
|
rbuffer_space(buf); \
|
||||||
|
wptr = rbuffer_write_ptr(buf, &wcnt))
|
||||||
|
|
||||||
|
|
||||||
// Iteration
|
// Iteration
|
||||||
#define RBUFFER_EACH(buf, c, i) \
|
#define RBUFFER_EACH(buf, c, i) \
|
||||||
for (size_t i = 0; i < buf->size; i = buf->size) \
|
for (size_t i = 0; /* NOLINT(readability/braces) */ \
|
||||||
for (char c = 0; \
|
i < buf->size; \
|
||||||
|
i = buf->size) \
|
||||||
|
for (char c = 0; /* NOLINT(readability/braces) */ \
|
||||||
i < buf->size ? ((int)(c = *rbuffer_get(buf, i))) || 1 : 0; \
|
i < buf->size ? ((int)(c = *rbuffer_get(buf, i))) || 1 : 0; \
|
||||||
i++)
|
i++)
|
||||||
|
|
||||||
#define RBUFFER_EACH_REVERSE(buf, c, i) \
|
#define RBUFFER_EACH_REVERSE(buf, c, i) \
|
||||||
for (size_t i = buf->size; i != SIZE_MAX; i = SIZE_MAX) \
|
for (size_t i = buf->size; /* NOLINT(readability/braces) */ \
|
||||||
for (char c = 0; \
|
i != SIZE_MAX; \
|
||||||
|
i = SIZE_MAX) \
|
||||||
|
for (char c = 0; /* NOLINT(readability/braces) */ \
|
||||||
i-- > 0 ? ((int)(c = *rbuffer_get(buf, i))) || 1 : 0; \
|
i-- > 0 ? ((int)(c = *rbuffer_get(buf, i))) || 1 : 0; \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@@ -357,13 +357,14 @@ static int nfa_ll_index = 0;
|
|||||||
# include "regexp_nfa.c.generated.h"
|
# include "regexp_nfa.c.generated.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* helper functions used when doing re2post() ... regatom() parsing */
|
// Helper functions used when doing re2post() ... regatom() parsing
|
||||||
#define EMIT(c) do { \
|
#define EMIT(c) \
|
||||||
if (post_ptr >= post_end) { \
|
do { \
|
||||||
realloc_post_list(); \
|
if (post_ptr >= post_end) { \
|
||||||
} \
|
realloc_post_list(); \
|
||||||
*post_ptr++ = c; \
|
} \
|
||||||
} while (0)
|
*post_ptr++ = c; \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize internal variables before NFA compilation.
|
* Initialize internal variables before NFA compilation.
|
||||||
@@ -2893,8 +2894,7 @@ static nfa_state_T *post2nfa(int *postfix, int *end, int nfa_calc_size)
|
|||||||
|
|
||||||
#define PUSH(s) st_push((s), &stackp, stack_end)
|
#define PUSH(s) st_push((s), &stackp, stack_end)
|
||||||
#define POP() st_pop(&stackp, stack); \
|
#define POP() st_pop(&stackp, stack); \
|
||||||
if (stackp < stack) \
|
if (stackp < stack) { \
|
||||||
{ \
|
|
||||||
st_error(postfix, end, p); \
|
st_error(postfix, end, p); \
|
||||||
xfree(stack); \
|
xfree(stack); \
|
||||||
return NULL; \
|
return NULL; \
|
||||||
|
@@ -25,9 +25,9 @@ struct ugrid {
|
|||||||
|
|
||||||
#define UGRID_FOREACH_CELL(grid, top, bot, left, right, code) \
|
#define UGRID_FOREACH_CELL(grid, top, bot, left, right, code) \
|
||||||
do { \
|
do { \
|
||||||
for (int row = top; row <= bot; ++row) { \
|
for (int row = top; row <= bot; row++) { \
|
||||||
UCell *row_cells = (grid)->cells[row]; \
|
UCell *row_cells = (grid)->cells[row]; \
|
||||||
for (int col = left; col <= right; ++col) { \
|
for (int col = left; col <= right; col++) { \
|
||||||
UCell *cell = row_cells + col; \
|
UCell *cell = row_cells + col; \
|
||||||
(void)(cell); \
|
(void)(cell); \
|
||||||
code; \
|
code; \
|
||||||
|
@@ -21,7 +21,7 @@
|
|||||||
// Call a function in the UI thread
|
// Call a function in the UI thread
|
||||||
#define UI_CALL(ui, name, argc, ...) \
|
#define UI_CALL(ui, name, argc, ...) \
|
||||||
((UIBridgeData *)ui)->scheduler( \
|
((UIBridgeData *)ui)->scheduler( \
|
||||||
event_create(1, ui_bridge_##name##_event, argc, __VA_ARGS__), UI(ui))
|
event_create(1, ui_bridge_##name##_event, argc, __VA_ARGS__), UI(ui))
|
||||||
|
|
||||||
#define INT2PTR(i) ((void *)(uintptr_t)i)
|
#define INT2PTR(i) ((void *)(uintptr_t)i)
|
||||||
#define PTR2INT(p) ((int)(uintptr_t)p)
|
#define PTR2INT(p) ((int)(uintptr_t)p)
|
||||||
|
Reference in New Issue
Block a user