aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/lib
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2021-10-13 21:35:37 +0200
committerBjörn Linse <bjorn.linse@gmail.com>2021-10-23 14:17:09 +0200
commit8d7816cf27c4ab08d9eff9e7ce3c541105c30ece (patch)
tree5ae91446ed6602a509ff06ea24aab525281b6b67 /src/nvim/lib
parent8ade2f5b0495ee41868e52d48816d02249e2364d (diff)
downloadrneovim-8d7816cf27c4ab08d9eff9e7ce3c541105c30ece.tar.gz
rneovim-8d7816cf27c4ab08d9eff9e7ce3c541105c30ece.tar.bz2
rneovim-8d7816cf27c4ab08d9eff9e7ce3c541105c30ece.zip
feat(decorations): support more than one virt_lines block
Diffstat (limited to 'src/nvim/lib')
-rw-r--r--src/nvim/lib/kvec.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/nvim/lib/kvec.h b/src/nvim/lib/kvec.h
index eb2d9bbb77..ff0a8bcb7c 100644
--- a/src/nvim/lib/kvec.h
+++ b/src/nvim/lib/kvec.h
@@ -94,6 +94,17 @@
memcpy((v1).items, (v0).items, sizeof((v1).items[0]) * (v0).size); \
} while (0)
+#define kv_splice(v1, v0) \
+ do { \
+ if ((v1).capacity < (v1).size + (v0).size) { \
+ (v1).capacity = (v1).size + (v0).size; \
+ kv_roundup32((v1).capacity); \
+ kv_resize((v1), (v1).capacity); \
+ } \
+ memcpy((v1).items + (v1).size, (v0).items, sizeof((v1).items[0]) * (v0).size); \
+ (v1).size = (v1).size + (v0).size; \
+ } while (0)
+
#define kv_pushp(v) \
((((v).size == (v).capacity) ? (kv_resize_full(v), 0) : 0), \
((v).items + ((v).size++)))
@@ -101,6 +112,7 @@
#define kv_push(v, x) \
(*kv_pushp(v) = (x))
+
#define kv_a(v, i) \
(*(((v).capacity <= (size_t)(i) \
? ((v).capacity = (v).size = (i) + 1, \