summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1071
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1071')
-rw-r--r--data/vim/patches/8.1.1071321
1 files changed, 0 insertions, 321 deletions
diff --git a/data/vim/patches/8.1.1071 b/data/vim/patches/8.1.1071
deleted file mode 100644
index 32bed27a3..000000000
--- a/data/vim/patches/8.1.1071
+++ /dev/null
@@ -1,321 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 8.1.1071
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 8.1.1071
-Problem: Cannot get composing characters from the screen.
-Solution: Add screenchars() and screenstring(). (partly by Ozaki Kiichi,
- closes #4059)
-Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c,
- src/testdir/test_utf8.vim, src/testdir/view_util.vim
-
-
-*** ../vim-8.1.1070/runtime/doc/eval.txt 2019-03-29 12:19:34.949348952 +0100
---- runtime/doc/eval.txt 2019-03-29 13:32:41.481037953 +0100
-***************
-*** 2500,2507 ****
---- 2525,2534 ----
- rubyeval({expr}) any evaluate |Ruby| expression
- screenattr({row}, {col}) Number attribute at screen position
- screenchar({row}, {col}) Number character at screen position
-+ screenchars({row}, {col}) List List of characters at screen position
- screencol() Number current cursor column
- screenrow() Number current cursor row
-+ screenstring({row}, {col}) String characters at screen position
- search({pattern} [, {flags} [, {stopline} [, {timeout}]]])
- Number search for {pattern}
- searchdecl({name} [, {global} [, {thisblock}]])
-***************
-*** 7458,7463 ****
---- 7512,7524 ----
- This is mainly to be used for testing.
- Returns -1 when row or col is out of range.
-
-+ screenchars({row}, {col}) *screenchars()*
-+ The result is a List of Numbers. The first number is the same
-+ as what |screenchar()| returns. Further numbers are
-+ composing characters on top of the base character.
-+ This is mainly to be used for testing.
-+ Returns an empty List when row or col is out of range.
-+
- screencol() *screencol()*
- The result is a Number, which is the current screen column of
- the cursor. The leftmost column has number 1.
-***************
-*** 7479,7484 ****
---- 7540,7553 ----
-
- Note: Same restrictions as with |screencol()|.
-
-+ screenstring({row}, {col}) *screenstring()*
-+ The result is a String that contains the base character and
-+ any composing characters at position [row, col] on the screen.
-+ This is like |screenchars()| but returning a String with the
-+ characters.
-+ This is mainly to be used for testing.
-+ Returns an empty String when row or col is out of range.
-+
- search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()*
- Search for regexp pattern {pattern}. The search starts at the
- cursor position (you can use |cursor()| to set it).
-*** ../vim-8.1.1070/runtime/doc/usr_41.txt 2019-03-29 12:19:34.953348924 +0100
---- runtime/doc/usr_41.txt 2019-03-29 13:44:52.996710729 +0100
-***************
-*** 722,727 ****
---- 723,730 ----
- diff_filler() get the number of filler lines above a line
- screenattr() get attribute at a screen line/row
- screenchar() get character code at a screen line/row
-+ screenchars() get character codes at a screen line/row
-+ screenstring() get string of characters at a screen line/row
-
- Working with text in the current buffer: *text-functions*
- getline() get a line or list of lines from the buffer
-*** ../vim-8.1.1070/src/evalfunc.c 2019-03-29 12:19:34.953348924 +0100
---- src/evalfunc.c 2019-03-29 13:44:04.812822817 +0100
-***************
-*** 344,351 ****
---- 344,353 ----
- #endif
- static void f_screenattr(typval_T *argvars, typval_T *rettv);
- static void f_screenchar(typval_T *argvars, typval_T *rettv);
-+ static void f_screenchars(typval_T *argvars, typval_T *rettv);
- static void f_screencol(typval_T *argvars, typval_T *rettv);
- static void f_screenrow(typval_T *argvars, typval_T *rettv);
-+ static void f_screenstring(typval_T *argvars, typval_T *rettv);
- static void f_search(typval_T *argvars, typval_T *rettv);
- static void f_searchdecl(typval_T *argvars, typval_T *rettv);
- static void f_searchpair(typval_T *argvars, typval_T *rettv);
-***************
-*** 839,846 ****
---- 841,850 ----
- #endif
- {"screenattr", 2, 2, f_screenattr},
- {"screenchar", 2, 2, f_screenchar},
-+ {"screenchars", 2, 2, f_screenchars},
- {"screencol", 0, 0, f_screencol},
- {"screenrow", 0, 0, f_screenrow},
-+ {"screenstring", 2, 2, f_screenstring},
- {"search", 1, 4, f_search},
- {"searchdecl", 1, 3, f_searchdecl},
- {"searchpair", 3, 7, f_searchpair},
-***************
-*** 10430,10437 ****
-
- row = (int)tv_get_number_chk(&argvars[0], NULL) - 1;
- col = (int)tv_get_number_chk(&argvars[1], NULL) - 1;
-! if (row < 0 || row >= screen_Rows
-! || col < 0 || col >= screen_Columns)
- c = -1;
- else
- {
---- 10434,10440 ----
-
- row = (int)tv_get_number_chk(&argvars[0], NULL) - 1;
- col = (int)tv_get_number_chk(&argvars[1], NULL) - 1;
-! if (row < 0 || row >= screen_Rows || col < 0 || col >= screen_Columns)
- c = -1;
- else
- {
-***************
-*** 10445,10450 ****
---- 10448,10486 ----
- }
-
- /*
-+ * "screenchars()" function
-+ */
-+ static void
-+ f_screenchars(typval_T *argvars, typval_T *rettv)
-+ {
-+ int row;
-+ int col;
-+ int off;
-+ int c;
-+ int i;
-+
-+ if (rettv_list_alloc(rettv) == FAIL)
-+ return;
-+ row = (int)tv_get_number_chk(&argvars[0], NULL) - 1;
-+ col = (int)tv_get_number_chk(&argvars[1], NULL) - 1;
-+ if (row < 0 || row >= screen_Rows || col < 0 || col >= screen_Columns)
-+ return;
-+
-+ off = LineOffset[row] + col;
-+ if (enc_utf8 && ScreenLinesUC[off] != 0)
-+ c = ScreenLinesUC[off];
-+ else
-+ c = ScreenLines[off];
-+ list_append_number(rettv->vval.v_list, (varnumber_T)c);
-+
-+ if (enc_utf8)
-+
-+ for (i = 0; i < Screen_mco && ScreenLinesC[i][off] != 0; ++i)
-+ list_append_number(rettv->vval.v_list,
-+ (varnumber_T)ScreenLinesC[i][off]);
-+ }
-+
-+ /*
- * "screencol()" function
- *
- * First column is 1 to be consistent with virtcol().
-***************
-*** 10465,10470 ****
---- 10501,10543 ----
- }
-
- /*
-+ * "screenstring()" function
-+ */
-+ static void
-+ f_screenstring(typval_T *argvars, typval_T *rettv)
-+ {
-+ int row;
-+ int col;
-+ int off;
-+ int c;
-+ int i;
-+ char_u buf[MB_MAXBYTES + 1];
-+ int buflen = 0;
-+
-+ rettv->vval.v_string = NULL;
-+ rettv->v_type = VAR_STRING;
-+
-+ row = (int)tv_get_number_chk(&argvars[0], NULL) - 1;
-+ col = (int)tv_get_number_chk(&argvars[1], NULL) - 1;
-+ if (row < 0 || row >= screen_Rows || col < 0 || col >= screen_Columns)
-+ return;
-+
-+ off = LineOffset[row] + col;
-+ if (enc_utf8 && ScreenLinesUC[off] != 0)
-+ c = ScreenLinesUC[off];
-+ else
-+ c = ScreenLines[off];
-+ buflen += mb_char2bytes(c, buf);
-+
-+ if (enc_utf8)
-+ for (i = 0; i < Screen_mco && ScreenLinesC[i][off] != 0; ++i)
-+ buflen += mb_char2bytes(ScreenLinesC[i][off], buf + buflen);
-+
-+ buf[buflen] = NUL;
-+ rettv->vval.v_string = vim_strsave(buf);
-+ }
-+
-+ /*
- * "search()" function
- */
- static void
-*** ../vim-8.1.1070/src/testdir/test_utf8.vim 2019-01-24 17:59:35.143217444 +0100
---- src/testdir/test_utf8.vim 2019-03-29 14:01:18.960304440 +0100
-***************
-*** 1,5 ****
---- 1,6 ----
- " Tests for Unicode manipulations
-
-+ source view_util.vim
-
- " Visual block Insert adjusts for multi-byte char
- func Test_visual_block_insert()
-***************
-*** 60,62 ****
---- 61,97 ----
- call assert_equal(2, virtcol("'["))
- call assert_equal(2, virtcol("']"))
- endfunc
-+
-+ func Test_screenchar_utf8()
-+ new
-+
-+ " 1-cell, with composing characters
-+ call setline(1, ["ABC\u0308"])
-+ redraw
-+ call assert_equal([0x0041], screenchars(1, 1))
-+ call assert_equal([0x0042], screenchars(1, 2))
-+ call assert_equal([0x0043, 0x0308], screenchars(1, 3))
-+ call assert_equal("A", screenstring(1, 1))
-+ call assert_equal("B", screenstring(1, 2))
-+ call assert_equal("C\u0308", screenstring(1, 3))
-+
-+ " 2-cells, with composing characters
-+ let text = "\u3042\u3044\u3046\u3099"
-+ call setline(1, text)
-+ redraw
-+ call assert_equal([0x3042], screenchars(1, 1))
-+ call assert_equal([0], screenchars(1, 2))
-+ call assert_equal([0x3044], screenchars(1, 3))
-+ call assert_equal([0], screenchars(1, 4))
-+ call assert_equal([0x3046, 0x3099], screenchars(1, 5))
-+
-+ call assert_equal("\u3042", screenstring(1, 1))
-+ call assert_equal("", screenstring(1, 2))
-+ call assert_equal("\u3044", screenstring(1, 3))
-+ call assert_equal("", screenstring(1, 4))
-+ call assert_equal("\u3046\u3099", screenstring(1, 5))
-+
-+ call assert_equal([text . ' '], ScreenLinesUtf8(1, 8))
-+
-+ bwipe!
-+ endfunc
-*** ../vim-8.1.1070/src/testdir/view_util.vim 2017-09-30 20:54:26.000000000 +0200
---- src/testdir/view_util.vim 2019-03-29 13:57:25.433562107 +0100
-***************
-*** 5,10 ****
---- 5,11 ----
- finish
- endif
-
-+ " Get text on the screen, without composing characters.
- " ScreenLines(lnum, width) or
- " ScreenLines([start, end], width)
- function! ScreenLines(lnum, width) abort
-***************
-*** 22,27 ****
---- 23,47 ----
- endfor
- return lines
- endfunction
-+
-+ " Get text on the screen, including composing characters.
-+ " ScreenLines(lnum, width) or
-+ " ScreenLines([start, end], width)
-+ function! ScreenLinesUtf8(lnum, width) abort
-+ redraw!
-+ if type(a:lnum) == v:t_list
-+ let start = a:lnum[0]
-+ let end = a:lnum[1]
-+ else
-+ let start = a:lnum
-+ let end = a:lnum
-+ endif
-+ let lines = []
-+ for l in range(start, end)
-+ let lines += [join(map(range(1, a:width), 'screenstring(l, v:val)'), '')]
-+ endfor
-+ return lines
-+ endfunction
-
- function! ScreenAttrs(lnum, width) abort
- redraw!
-*** ../vim-8.1.1070/src/version.c 2019-03-29 13:12:36.163021160 +0100
---- src/version.c 2019-03-29 14:02:22.863949517 +0100
-***************
-*** 777,778 ****
---- 777,780 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 1071,
- /**/
-
---
-We are the Borg of GNU GPL. We will assimilate your source code.
-Resistance is futile.
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
-/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
-\\\ an exciting new programming language -- http://www.Zimbu.org ///
- \\\ help me help AIDS victims -- http://ICCF-Holland.org ///