To: vim_dev@googlegroups.com
Subject: Patch 7.3.748
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.3.748
Problem: Cannot properly test conceal mode.
Solution: Add the screencol() and screenrow() functions. Use them in
test88. (Simon Ruderich)
Files: runtime/doc/eval.txt, src/eval.c, src/proto/screen.pro,
src/screen.c, src/testdir/Make_amiga.mak,
src/testdir/Make_dos.mak, src/testdir/Make_ming.mak,
src/testdir/Make_os2.mak, src/testdir/Make_vms.mms
src/testdir/Makefile, src/testdir/test88.in,
src/testdir/test88.ok
*** ../vim-7.3.747/runtime/doc/eval.txt 2012-11-14 18:10:49.000000000 +0100
--- runtime/doc/eval.txt 2012-12-05 15:45:34.000000000 +0100
***************
*** 1892,1897 ****
--- 1903,1910 ----
resolve( {filename}) String get filename a shortcut points to
reverse( {list}) List reverse {list} in-place
round( {expr}) Float round off {expr}
+ screencol() Number current cursor column
+ screenrow() Number current cursor row
search( {pattern} [, {flags} [, {stopline} [, {timeout}]]])
Number search for {pattern}
searchdecl( {name} [, {global} [, {thisblock}]])
***************
*** 4848,4862 ****
echo round(-4.5)
< -5.0
{only available when compiled with the |+float| feature}
!
!
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).
If there is no match a 0 is returned and the cursor doesn't
move. No error message is given.
- When a match has been found its line number is returned.
{flags} is a String, which can contain these character flags:
'b' search backward instead of forward
--- 4874,4907 ----
echo round(-4.5)
< -5.0
{only available when compiled with the |+float| feature}
!
! screencol() *screencol()*
! The result is a Number, which is the current screen column of
! the cursor. The leftmost column has number 1.
! This function is mainly used for testing.
!
! Note: Always returns the current screen column, thus if used
! in a command (e.g. ":echo screencol()") it will return the
! column inside the command line, which is 1 when the command is
! executed. To get the cursor position in the file use one of
! the following mappings: >
! nnoremap <expr> GG ":echom ".screencol()."\n"
! nnoremap <silent> GG :echom screencol()<CR>
! <
! screenrow() *screenrow()*
! The result is a Number, which is the current screen row of the
! cursor. The top line has number one.
! This function is mainly used for testing.
!
! Note: Same restrictions as with |screencol()|.
!
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).
+ When a match has been found its line number is returned.
If there is no match a 0 is returned and the cursor doesn't
move. No error message is given.
{flags} is a String, which can contain these character flags:
'b' search backward instead of forward
*** ../vim-7.3.747/src/eval.c 2012-12-05 15:16:42.000000000 +0100
--- src/eval.c 2012-12-05 16:03:23.000000000 +0100
***************
*** 668,673 ****
--- 668,675 ----
#ifdef FEAT_FLOAT
static void f_round __ARGS((typval_T *argvars, typval_T *rettv));
#endif
+ static void f_screencol __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_screenrow __ARGS((typval_T *argvars, typval_T *rettv));
static void f_search __ARGS((typval_T *argvars, typval_T *rettv));
static void f_searchdecl __ARGS((typval_T *argvars, typval_T *rettv));
static void f_searchpair __ARGS((typval_T *argvars, typval_T *rettv));
***************
*** 8033,8038 ****
--- 8035,8042 ----
#ifdef FEAT_FLOAT
{"round", 1, 1, f_round},
#endif
+ {"screencol", 0, 0, f_screencol},
+ {"screenrow", 0, 0, f_screenrow},
{"search", 1, 4, f_search},
{"searchdecl", 1, 3, f_searchdecl},
{"searchpair", 3, 7, f_searchpair},
***************
*** 15725,15730 ****
--- 15729,15758 ----
#endif
/*
+ * "screencol()" function
+ *
+ * First column is 1 to be consistent with virtcol().
+ */
+ static void
+ f_screencol(argvars, rettv)
+ typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = screen_screencol() + 1;
+ }
+
+ /*
+ * "screenrow()" function
+ */
+ static void
+ f_screenrow(argvars, rettv)
+ typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = screen_screenrow() + 1;
+ }
+
+ /*
* "search()" function
*/
static void
*** ../vim-7.3.747/src/proto/screen.pro 2012-11-20 16:56:49.000000000 +0100
--- src/proto/screen.pro 2012-12-05 15:57:35.000000000 +0100
***************
*** 50,53 ****
--- 50,55 ----
int messaging __ARGS((void));
void showruler __ARGS((int always));
int number_width __ARGS((win_T *wp));
+ int screen_screencol __ARGS((void));
+ int screen_screenrow __ARGS((void));
/* vim: set ft=c : */
*** ../vim-7.3.747/src/screen.c 2012-12-05 15:32:24.000000000 +0100
--- src/screen.c 2012-12-05 15:58:02.000000000 +0100
***************
*** 10264,10266 ****
--- 10264,10286 ----
return n;
}
#endif
+
+ /*
+ * Return the current cursor column. This is the actual position on the
+ * screen. First column is 0.
+ */
+ int
+ screen_screencol()
+ {
+ return screen_cur_col;
+ }
+
+ /*
+ * Return the current cursor row. This is the actual position on the screen.
+ * First row is 0.
+ */
+ int
+ screen_screenrow()
+ {
+ return screen_cur_row;
+ }
*** ../vim-7.3.747/src/testdir/Make_amiga.mak 2012-06-29 12:54:32.000000000 +0200
--- src/testdir/Make_amiga.mak 2012-12-05 16:00:14.000000000 +0100
***************
*** 31,37 ****
test66.out test67.out test68.out test69.out test70.out \
test71.out test72.out test73.out test74.out test75.out \
test76.out test77.out test78.out test79.out test80.out \
! test81.out test82.out test83.out test84.out
.SUFFIXES: .in .out
--- 31,37 ----
test66.out test67.out test68.out test69.out test70.out \
test71.out test72.out test73.out test74.out test75.out \
test76.out test77.out test78.out test79.out test80.out \
! test81.out test82.out test83.out test84.out test88.out
.SUFFIXES: .in .out
***************
*** 135,137 ****
--- 135,138 ----
test82.out: test82.in
test83.out: test83.in
test84.out: test84.in
+ test88.out: test88.in
*** ../vim-7.3.747/src/testdir/Make_dos.mak 2012-10-06 19:10:29.000000000 +0200
--- src/testdir/Make_dos.mak 2012-12-05 16:00:29.000000000 +0100
***************
*** 30,36 ****
test68.out test69.out test71.out test72.out test73.out \
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
! test84.out test85.out test86.out test87.out
SCRIPTS32 = test50.out test70.out
--- 30,36 ----
test68.out test69.out test71.out test72.out test73.out \
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
! test84.out test85.out test86.out test87.out test88.out
SCRIPTS32 = test50.out test70.out
*** ../vim-7.3.747/src/testdir/Make_ming.mak 2012-10-06 19:10:29.000000000 +0200
--- src/testdir/Make_ming.mak 2012-12-05 16:00:40.000000000 +0100
***************
*** 50,56 ****
test68.out test69.out test71.out test72.out test73.out \
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
! test84.out test85.out test86.out test87.out
SCRIPTS32 = test50.out test70.out
--- 50,56 ----
test68.out test69.out test71.out test72.out test73.out \
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
! test84.out test85.out test86.out test87.out test88.out
SCRIPTS32 = test50.out test70.out
*** ../vim-7.3.747/src/testdir/Make_os2.mak 2012-06-29 12:54:32.000000000 +0200
--- src/testdir/Make_os2.mak 2012-12-05 16:00:50.000000000 +0100
***************
*** 31,37 ****
test66.out test67.out test68.out test69.out test70.out \
test71.out test72.out test73.out test74.out test75.out \
test76.out test77.out test78.out test79.out test80.out \
! test81.out test82.out test83.out test84.out
.SUFFIXES: .in .out
--- 31,37 ----
test66.out test67.out test68.out test69.out test70.out \
test71.out test72.out test73.out test74.out test75.out \
test76.out test77.out test78.out test79.out test80.out \
! test81.out test82.out test83.out test84.out test88.out
.SUFFIXES: .in .out
*** ../vim-7.3.747/src/testdir/Make_vms.mms 2012-10-06 19:10:29.000000000 +0200
--- src/testdir/Make_vms.mms 2012-12-05 16:01:03.000000000 +0100
***************
*** 4,10 ****
# Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
# Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
#
! # Last change: 2012 Oct 06
#
# This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
# Edit the lines in the Configuration section below to select.
--- 4,10 ----
# Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
# Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
#
! # Last change: 2012 Dec 05
#
# This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
# Edit the lines in the Configuration section below to select.
***************
*** 76,82 ****
test66.out test67.out test68.out test69.out \
test71.out test72.out test74.out test75.out test76.out \
test77.out test78.out test79.out test80.out test81.out \
! test82.out test83.out test84.out
# Known problems:
# Test 30: a problem around mac format - unknown reason
--- 76,82 ----
test66.out test67.out test68.out test69.out \
test71.out test72.out test74.out test75.out test76.out \
test77.out test78.out test79.out test80.out test81.out \
! test82.out test83.out test84.out test88.out
# Known problems:
# Test 30: a problem around mac format - unknown reason
*** ../vim-7.3.747/src/testdir/Makefile 2012-10-06 19:10:29.000000000 +0200
--- src/testdir/Makefile 2012-12-05 15:59:02.000000000 +0100
***************
*** 13,19 ****
SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
test7.out test8.out test9.out test10.out test11.out \
! test12.out test13.out test14.out test15.out test17.out \
test18.out test19.out test20.out test21.out test22.out \
test23.out test24.out test25.out test26.out test27.out \
test28.out test29.out test30.out test31.out test32.out \
--- 13,19 ----
SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
test7.out test8.out test9.out test10.out test11.out \
! test12.out test13.out test14.out test15.out test17.out \
test18.out test19.out test20.out test21.out test22.out \
test23.out test24.out test25.out test26.out test27.out \
test28.out test29.out test30.out test31.out test32.out \
***************
*** 27,33 ****
test69.out test70.out test71.out test72.out test73.out \
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
! test84.out test85.out test86.out test87.out
SCRIPTS_GUI = test16.out
--- 27,33 ----
test69.out test70.out test71.out test72.out test73.out \
test74.out test75.out test76.out test77.out test78.out \
test79.out test80.out test81.out test82.out test83.out \
! test84.out test85.out test86.out test87.out test88.out
SCRIPTS_GUI = test16.out
*** ../vim-7.3.747/src/testdir/test88.in 2012-12-05 16:08:56.000000000 +0100
--- src/testdir/test88.in 2012-12-05 15:40:05.000000000 +0100
***************
*** 0 ****
--- 1,85 ----
+ vim: set ft=vim
+
+ Tests for correct display (cursor column position) with +conceal and
+ tabulators.
+
+ STARTTEST
+ :so small.vim
+ :if !has('conceal')
+ e! test.ok
+ wq! test.out
+ :endif
+ :" Conceal settings.
+ :set conceallevel=2
+ :set concealcursor=nc
+ :syntax match test /|/ conceal
+ :" Save current cursor position. Only works in <expr> mode, can't be used
+ :" with :normal because it moves the cursor to the command line. Thanks to ZyX
+ :" <zyx.vim@gmail.com> for the idea to use an <expr> mapping.
+ :let positions = []
+ :nnoremap <expr> GG ":let positions += ['".screenrow().":".screencol()."']\n"
+ :" Start test.
+ /^start:
+ :normal ztj
+ GGk
+ :" We should end up in the same column when running these commands on the two
+ :" lines.
+ :normal ft
+ GGk
+ :normal $
+ GGk
+ :normal 0j
+ GGk
+ :normal ft
+ GGk
+ :normal $
+ GGk
+ :normal 0j0j
+ GGk
+ :" Same for next test block.
+ :normal ft
+ GGk
+ :normal $
+ GGk
+ :normal 0j
+ GGk
+ :normal ft
+ GGk
+ :normal $
+ GGk
+ :normal 0j0j
+ GGk
+ :" And check W with multiple tabs and conceals in a line.
+ :normal W
+ GGk
+ :normal W
+ GGk
+ :normal W
+ GGk
+ :normal $
+ GGk
+ :normal 0j
+ GGk
+ :normal W
+ GGk
+ :normal W
+ GGk
+ :normal W
+ GGk
+ :normal $
+ GGk
+ :" Display result.
+ :call append('$', 'end:')
+ :call append('$', positions)
+ :/^end/,$wq! test.out
+ ENDTEST
+
+ start:
+ .concealed. text
+ |concealed| text
+
+ .concealed. text
+ |concealed| text
+
+ .a. .b. .c. .d.
+ |a| |b| |c| |d|
*** ../vim-7.3.747/src/testdir/test88.ok 2012-12-05 16:08:56.000000000 +0100
--- src/testdir/test88.ok 2012-12-05 15:40:05.000000000 +0100
***************
*** 0 ****
--- 1,23 ----
+ end:
+ 2:1
+ 2:17
+ 2:20
+ 3:1
+ 3:17
+ 3:20
+ 5:8
+ 5:25
+ 5:28
+ 6:8
+ 6:25
+ 6:28
+ 8:1
+ 8:9
+ 8:17
+ 8:25
+ 8:27
+ 9:1
+ 9:9
+ 9:17
+ 9:25
+ 9:26
*** ../vim-7.3.747/src/version.c 2012-12-05 15:32:24.000000000 +0100
--- src/version.c 2012-12-05 16:07:46.000000000 +0100
***************
*** 727,728 ****
--- 727,730 ----
{ /* Add new patch number below this line */
+ /**/
+ 748,
/**/
--
hundred-and-one symptoms of being an internet addict:
101. U can read htis w/o ny porblm and cant figur eout Y its evn listd.
/// 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 ///