aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval/funcs.c
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-08-23 18:03:41 -0400
committerJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-08-23 18:32:39 -0400
commit107e50b25e4b9098c0d1b4c34fec4bb17a9c7ad7 (patch)
tree342665a263ff3d076b8d28df9b46f78eb4275187 /src/nvim/eval/funcs.c
parentbf8d96a30d27d123de723aa8985cf73588a08eea (diff)
downloadrneovim-107e50b25e4b9098c0d1b4c34fec4bb17a9c7ad7.tar.gz
rneovim-107e50b25e4b9098c0d1b4c34fec4bb17a9c7ad7.tar.bz2
rneovim-107e50b25e4b9098c0d1b4c34fec4bb17a9c7ad7.zip
vim-patch:8.2.1517: cannot easily get the character under the cursor
Problem: Cannot easily get the character under the cursor. Solution: Add the {chars} argument to strpart(). https://github.com/vim/vim/commit/6c53fca02301ff871cddc1c74c388e23e53a424a
Diffstat (limited to 'src/nvim/eval/funcs.c')
-rw-r--r--src/nvim/eval/funcs.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c
index 18e514b9a0..8e0e420eb0 100644
--- a/src/nvim/eval/funcs.c
+++ b/src/nvim/eval/funcs.c
@@ -9946,6 +9946,16 @@ static void f_strpart(typval_T *argvars, typval_T *rettv, FunPtr fptr)
len = slen - n;
}
+ if (argvars[2].v_type != VAR_UNKNOWN && argvars[3].v_type != VAR_UNKNOWN) {
+ int off;
+
+ // length in characters
+ for (off = n; off < (int)slen && len > 0; len--) {
+ off += utfc_ptr2len((char_u *)p + off);
+ }
+ len = off - n;
+ }
+
rettv->v_type = VAR_STRING;
rettv->vval.v_string = (char_u *)xmemdupz(p + n, (size_t)len);
}