diff options
Diffstat (limited to 'src/nvim/charset.c')
| -rw-r--r-- | src/nvim/charset.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/src/nvim/charset.c b/src/nvim/charset.c index 99ced6c8c2..ab20996df7 100644 --- a/src/nvim/charset.c +++ b/src/nvim/charset.c @@ -826,7 +826,7 @@ bool vim_isIDc(int c) /// For multi-byte characters mb_get_class() is used (builtin rules). /// /// @param c character to check -bool vim_iswordc(int c) +bool vim_iswordc(const int c) FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT { return vim_iswordc_buf(c, curbuf); @@ -842,7 +842,7 @@ bool vim_iswordc_tab(const int c, const uint64_t *const chartab) FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL { return (c >= 0x100 - ? (utf_class(c) >= 2) + ? (utf_class_tab(c, chartab) >= 2) : (c > 0 && GET_CHARTAB_TAB(chartab, c) != 0)); } @@ -852,7 +852,7 @@ bool vim_iswordc_tab(const int c, const uint64_t *const chartab) /// /// @param c character to check /// @param buf buffer whose keywords to use -bool vim_iswordc_buf(int c, buf_T *buf) +bool vim_iswordc_buf(const int c, buf_T *const buf) FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ARG(2) { return vim_iswordc_tab(c, buf->b_chartab); @@ -863,13 +863,10 @@ bool vim_iswordc_buf(int c, buf_T *buf) /// @param p pointer to the multi-byte character /// /// @return true if "p" points to a keyword character. -bool vim_iswordp(char_u *p) +bool vim_iswordp(const char_u *const p) FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL { - if (MB_BYTE2LEN(*p) > 1) { - return mb_get_class(p) >= 2; - } - return GET_CHARTAB(curbuf, *p) != 0; + return vim_iswordp_buf(p, curbuf); } /// Just like vim_iswordc_buf() but uses a pointer to the (multi-byte) @@ -879,13 +876,15 @@ bool vim_iswordp(char_u *p) /// @param buf buffer whose keywords to use /// /// @return true if "p" points to a keyword character. -bool vim_iswordp_buf(char_u *p, buf_T *buf) +bool vim_iswordp_buf(const char_u *const p, buf_T *const buf) FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL { - if (MB_BYTE2LEN(*p) > 1) { - return mb_get_class(p) >= 2; + int c = *p; + + if (MB_BYTE2LEN(c) > 1) { + c = utf_ptr2char(p); } - return GET_CHARTAB(buf, *p) != 0; + return vim_iswordc_buf(c, buf); } /// Check that "c" is a valid file-name character. |
