diff options
| -rw-r--r-- | text.c | 4 | ||||
| -rw-r--r-- | text.h | 4 | ||||
| -rw-r--r-- | vis-operators.c | 4 |
3 files changed, 7 insertions, 5 deletions
@@ -1634,14 +1634,14 @@ Mark text_mark_set(Text *txt, size_t pos) { return (Mark)&txt->end; Location loc = piece_get_extern(txt, pos); if (!loc.piece) - return (Mark)NULL; + return EMARK; return (Mark)(loc.piece->data + loc.off); } size_t text_mark_get(Text *txt, Mark mark) { size_t cur = 0; - if (!mark) + if (mark == EMARK) return EPOS; if (mark == (Mark)&txt->begin) return 0; @@ -9,6 +9,9 @@ #include <sys/types.h> #include <sys/stat.h> +typedef uintptr_t Mark; + +#define EMARK ((Mark)0) /* invalid mark */ #define EPOS ((size_t)-1) /* invalid position */ typedef size_t Filepos; @@ -100,7 +103,6 @@ bool text_iterator_codepoint_prev(Iterator *it, char *c); bool text_iterator_char_next(Iterator*, char *c); bool text_iterator_char_prev(Iterator*, char *c); -typedef uintptr_t Mark; /* mark position `pos', the returned mark can be used to later retrieve * the same text segment */ Mark text_mark_set(Text*, size_t pos); diff --git a/vis-operators.c b/vis-operators.c index 51f03ab..8d28dc4 100644 --- a/vis-operators.c +++ b/vis-operators.c @@ -185,7 +185,7 @@ static size_t op_cursor(Vis *vis, Text *txt, OperatorContext *c) { static size_t op_join(Vis *vis, Text *txt, OperatorContext *c) { size_t pos = text_line_begin(txt, c->range.end), prev_pos; - Mark mark = NULL; + Mark mark = EMARK; /* if operator and range are both linewise, skip last line break */ if (c->linewise && text_range_is_linewise(txt, &c->range)) { @@ -208,7 +208,7 @@ static size_t op_join(Vis *vis, Text *txt, OperatorContext *c) { if (text_byte_get(txt, pos-1, &prev) && !isspace((unsigned char)prev) && text_byte_get(txt, pos, &next) && next != '\r' && next != '\n') text_insert(txt, pos, c->arg->s, len); - if (!mark) + if (mark == EMARK) mark = text_mark_set(txt, pos); } while (pos != prev_pos); |
