Mercurial > vim
view src/kword_test.c @ 33077:d03841a271aa v9.0.1825
patch 9.0.1825: wrong cursor position with virt text and 'linebreak'
Commit: https://github.com/vim/vim/commit/6e55e85f92aff43c1b3cb564201440f3552d63f0
Author: zeertzjq <zeertzjq@outlook.com>
Date: Wed Aug 30 16:55:09 2023 +0200
patch 9.0.1825: wrong cursor position with virt text and 'linebreak'
Problem: Wrong cursor position with virtual text before a whitespace
character and 'linebreak'.
Solution: Always set "col_adj" to "size - 1" and apply 'linebreak' after
adding the size of 'breakindent' and 'showbreak'.
closes: #12956
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 30 Aug 2023 17:00:03 +0200 |
parents | aadd1cae2ff5 |
children |
line wrap: on
line source
/* vi:set ts=8 sts=4 sw=4 noet: * * VIM - Vi IMproved by Bram Moolenaar * * Do ":help uganda" in Vim to read copying and usage conditions. * Do ":help credits" in Vim to see a list of people who contributed. * See README.txt for an overview of the Vim source code. */ /* * kword_test.c: Unittests for vim_iswordc() and vim_iswordp(). */ #undef NDEBUG #include <assert.h> // Must include main.c because it contains much more than just main() #define NO_VIM_MAIN #include "main.c" // This file has to be included because the tested functions are static #include "charset.c" /* * Test the results of vim_iswordc() and vim_iswordp() are matched. */ static void test_isword_funcs_utf8(void) { buf_T buf; int c; CLEAR_FIELD(buf); p_enc = (char_u *)"utf-8"; p_isi = (char_u *)""; p_isp = (char_u *)""; p_isf = (char_u *)""; buf.b_p_isk = (char_u *)"@,48-57,_,128-167,224-235"; curbuf = &buf; mb_init(); // calls init_chartab() for (c = 0; c < 0x10000; ++c) { char_u p[4] = {0}; int c1; int retc; int retp; utf_char2bytes(c, p); c1 = utf_ptr2char(p); if (c != c1) { fprintf(stderr, "Failed: "); fprintf(stderr, "[c = %#04x, p = {%#02x, %#02x, %#02x}] ", c, p[0], p[1], p[2]); fprintf(stderr, "c != utf_ptr2char(p) (=%#04x)\n", c1); abort(); } retc = vim_iswordc_buf(c, &buf); retp = vim_iswordp_buf(p, &buf); if (retc != retp) { fprintf(stderr, "Failed: "); fprintf(stderr, "[c = %#04x, p = {%#02x, %#02x, %#02x}] ", c, p[0], p[1], p[2]); fprintf(stderr, "vim_iswordc(c) (=%d) != vim_iswordp(p) (=%d)\n", retc, retp); abort(); } } } int main(void) { estack_init(); test_isword_funcs_utf8(); return 0; }