diff options
author | Bram Moolenaar <Bram@vim.org> | 2012-12-05 16:10:42 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2012-12-05 16:10:42 +0100 |
commit | 9750bb199e0f171c185bd3a23591e57922765509 (patch) | |
tree | 29f641fcf96efd47db0615626dd41e418314b677 | |
parent | 0f9d0869c7acd08a4dc9bb4ac84c9c7c4e9f079b (diff) |
updated for version 7.3.748v7.3.748
Problem: Cannot properly test conceal mode.
Solution: Add the screencol() and screenrow() functions. Use them in
test88. (Simon Ruderich)
-rw-r--r-- | runtime/doc/eval.txt | 2 | ||||
-rw-r--r-- | src/eval.c | 28 | ||||
-rw-r--r-- | src/proto/screen.pro | 2 | ||||
-rw-r--r-- | src/screen.c | 20 | ||||
-rw-r--r-- | src/testdir/Make_amiga.mak | 3 | ||||
-rw-r--r-- | src/testdir/Make_dos.mak | 2 | ||||
-rw-r--r-- | src/testdir/Make_ming.mak | 2 | ||||
-rw-r--r-- | src/testdir/Make_os2.mak | 2 | ||||
-rw-r--r-- | src/testdir/Make_vms.mms | 4 | ||||
-rw-r--r-- | src/testdir/Makefile | 4 | ||||
-rw-r--r-- | src/testdir/test88.in | 85 | ||||
-rw-r--r-- | src/testdir/test88.ok | 23 | ||||
-rw-r--r-- | src/version.c | 2 |
13 files changed, 171 insertions, 8 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 94c8f3129a..2bcd21e3e6 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1903,6 +1903,8 @@ repeat( {expr}, {count}) String repeat {expr} {count} times 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}]]) diff --git a/src/eval.c b/src/eval.c index 76b41590d0..7c57557654 100644 --- a/src/eval.c +++ b/src/eval.c @@ -668,6 +668,8 @@ static void f_reverse __ARGS((typval_T *argvars, typval_T *rettv)); #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,6 +8035,8 @@ static struct fst #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,6 +15729,30 @@ f_round(argvars, rettv) #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 diff --git a/src/proto/screen.pro b/src/proto/screen.pro index 6809da9ff4..81fa6a701e 100644 --- a/src/proto/screen.pro +++ b/src/proto/screen.pro @@ -50,4 +50,6 @@ int redrawing __ARGS((void)); 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 : */ diff --git a/src/screen.c b/src/screen.c index 438627aceb..7e11fa4d8c 100644 --- a/src/screen.c +++ b/src/screen.c @@ -10264,3 +10264,23 @@ number_width(wp) 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; +} diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak index 39f66e987c..701c304fcd 100644 --- a/src/testdir/Make_amiga.mak +++ b/src/testdir/Make_amiga.mak @@ -31,7 +31,7 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \ 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 + test81.out test82.out test83.out test84.out test88.out .SUFFIXES: .in .out @@ -135,3 +135,4 @@ test81.out: test81.in test82.out: test82.in test83.out: test83.in test84.out: test84.in +test88.out: test88.in diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak index b52f249f00..e902be3be5 100644 --- a/src/testdir/Make_dos.mak +++ b/src/testdir/Make_dos.mak @@ -30,7 +30,7 @@ SCRIPTS = test3.out test4.out test5.out test6.out test7.out \ 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 + test84.out test85.out test86.out test87.out test88.out SCRIPTS32 = test50.out test70.out diff --git a/src/testdir/Make_ming.mak b/src/testdir/Make_ming.mak index c150424684..c7bbb540f6 100644 --- a/src/testdir/Make_ming.mak +++ b/src/testdir/Make_ming.mak @@ -50,7 +50,7 @@ SCRIPTS = test3.out test4.out test5.out test6.out test7.out \ 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 + test84.out test85.out test86.out test87.out test88.out SCRIPTS32 = test50.out test70.out diff --git a/src/testdir/Make_os2.mak b/src/testdir/Make_os2.mak index 9a918d4902..d930926009 100644 --- a/src/testdir/Make_os2.mak +++ b/src/testdir/Make_os2.mak @@ -31,7 +31,7 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \ 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 + test81.out test82.out test83.out test84.out test88.out .SUFFIXES: .in .out diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms index 6608d70677..5398031339 100644 --- a/src/testdir/Make_vms.mms +++ b/src/testdir/Make_vms.mms @@ -4,7 +4,7 @@ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> # -# Last change: 2012 Oct 06 +# 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,7 +76,7 @@ SCRIPT = test1.out test2.out test3.out test4.out test5.out \ 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 + test82.out test83.out test84.out test88.out # Known problems: # Test 30: a problem around mac format - unknown reason diff --git a/src/testdir/Makefile b/src/testdir/Makefile index c3923e0ccc..76409ce5e2 100644 --- a/src/testdir/Makefile +++ b/src/testdir/Makefile @@ -13,7 +13,7 @@ VIMPROG = ../vim 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 \ + 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,7 +27,7 @@ SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.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 test85.out test86.out test87.out + test84.out test85.out test86.out test87.out test88.out SCRIPTS_GUI = test16.out diff --git a/src/testdir/test88.in b/src/testdir/test88.in new file mode 100644 index 0000000000..1536b3bba7 --- /dev/null +++ b/src/testdir/test88.in @@ -0,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| diff --git a/src/testdir/test88.ok b/src/testdir/test88.ok new file mode 100644 index 0000000000..e726258a55 --- /dev/null +++ b/src/testdir/test88.ok @@ -0,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 diff --git a/src/version.c b/src/version.c index ad2816e738..ffefbb2741 100644 --- a/src/version.c +++ b/src/version.c @@ -726,6 +726,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 748, +/**/ 747, /**/ 746, |