]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
updated for version 7.3.748 v7.3.748
authorBram Moolenaar <Bram@vim.org>
Wed, 5 Dec 2012 15:10:42 +0000 (16:10 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 5 Dec 2012 15:10:42 +0000 (16:10 +0100)
Problem:    Cannot properly test conceal mode.
Solution:   Add the screencol() and screenrow() functions.  Use them in
            test88. (Simon Ruderich)

13 files changed:
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 [new file with mode: 0644]
src/testdir/test88.ok [new file with mode: 0644]
src/version.c

index 94c8f3129aa93e9fbf54a412fd13cbfeed98eb77..2bcd21e3e6db3e35f7a50ec1e8fd770d30f1686a 100644 (file)
@@ -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}]])
index 76b41590d043e57567e3ebbfc100ee7a88e8c4a4..7c575576548484a09cbffbb65a27c083a7ea6097 100644 (file)
@@ -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},
@@ -15724,6 +15728,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
  */
index 6809da9ff4b00d1504684d5f3e5ade81194b469d..81fa6a701ef0978bd1f4a21cd96d954a1cdc8261 100644 (file)
@@ -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 : */
index 438627aceb0e8512cb06baab460e5a2884159bcf..7e11fa4d8cadc0e437196c828bcaf4e4156486a1 100644 (file)
@@ -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;
+}
index 39f66e987c9f839766d59eac9cdc96ea11fc8589..701c304fcd2fb4aeaee46470649df78e952055f0 100644 (file)
@@ -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
index b52f249f00b49d7b09ce295184e56fcbe799dcc1..e902be3be5fdd6be8eeb9c3a8715cea7a6ae97c8 100644 (file)
@@ -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
 
index c150424684851fbd80d71cd33b2880b588edc8b4..c7bbb540f68a706af3cd86cda517b4ebab91ebe5 100644 (file)
@@ -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
 
index 9a918d4902429b7fbb5795973f9251770b6ec401..d9309260091532a106bdbec8d7cb5fb5630790b2 100644 (file)
@@ -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
 
index 6608d70677f99dfcbd1271957c09134176305a25..5398031339e46386f4afd929583aa0cdf0dcd6cd 100644 (file)
@@ -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
index c3923e0ccc499d51e5dc2242caa6af27ce9003d0..76409ce5e2b135c2edf135c8da38487352411984 100644 (file)
@@ -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 (file)
index 0000000..1536b3b
--- /dev/null
@@ -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 (file)
index 0000000..e726258
--- /dev/null
@@ -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
index ad2816e738f549b9a6ded0b6c7750dc3a029dcf0..ffefbb2741b0fa15696588933b55a2c5c28e4548 100644 (file)
@@ -725,6 +725,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    748,
 /**/
     747,
 /**/