vim/7.3.609
2012-08-06 14:10:21 +02:00

252 lines
5.7 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

To: vim_dev@googlegroups.com
Subject: Patch 7.3.609
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.609
Problem: File names in :checkpath! output are garbled.
Solution: Check for \zs in the pattern. (Lech Lorens)
Files: src/search.c, src/testdir/test17.in, src/testdir/test17.ok
*** ../vim-7.3.608/src/search.c 2012-07-19 17:18:21.000000000 +0200
--- src/search.c 2012-07-25 13:33:08.000000000 +0200
***************
*** 4740,4756 ****
* Isolate the file name.
* Include the surrounding "" or <> if present.
*/
! for (p = incl_regmatch.endp[0]; !vim_isfilec(*p); p++)
! ;
! for (i = 0; vim_isfilec(p[i]); i++)
! ;
if (i == 0)
{
/* Nothing found, use the rest of the line. */
p = incl_regmatch.endp[0];
i = (int)STRLEN(p);
}
! else
{
if (p[-1] == '"' || p[-1] == '<')
{
--- 4740,4772 ----
* Isolate the file name.
* Include the surrounding "" or <> if present.
*/
! if (inc_opt != NULL
! && strstr((char *)inc_opt, "\\zs") != NULL)
! {
! /* pattern contains \zs, use the match */
! p = incl_regmatch.startp[0];
! i = (int)(incl_regmatch.endp[0]
! - incl_regmatch.startp[0]);
! }
! else
! {
! /* find the file name after the end of the match */
! for (p = incl_regmatch.endp[0];
! *p && !vim_isfilec(*p); p++)
! ;
! for (i = 0; vim_isfilec(p[i]); i++)
! ;
! }
!
if (i == 0)
{
/* Nothing found, use the rest of the line. */
p = incl_regmatch.endp[0];
i = (int)STRLEN(p);
}
! /* Avoid checking before the start of the line, can
! * happen if \zs appears in the regexp. */
! else if (p > line)
{
if (p[-1] == '"' || p[-1] == '<')
{
*** ../vim-7.3.608/src/testdir/test17.in 2010-08-15 21:57:29.000000000 +0200
--- src/testdir/test17.in 2012-07-25 13:41:43.000000000 +0200
***************
*** 1,4 ****
! Tests for "gf" on ${VAR}
STARTTEST
:so small.vim
--- 1,6 ----
! Tests for:
! - "gf" on ${VAR},
! - ":checkpath!" with various 'include' settings.
STARTTEST
:so small.vim
***************
*** 20,27 ****
:endif
gf
:w! test.out
! :qa!
ENDTEST
${CDIR}/test17a.in
$TDIR/test17a.in
--- 22,120 ----
:endif
gf
:w! test.out
! :brewind
ENDTEST
${CDIR}/test17a.in
$TDIR/test17a.in
+
+ STARTTEST
+ :" check for 'include' without \zs or \ze
+ :lang C
+ :!rm -f ./Xbase.a
+ :!rm -rf ./Xdir1
+ :!mkdir -p Xdir1/dir2
+ :e Xdir1/dir2/foo.a
+ i#include "bar.a"
+ :w
+ :e Xdir1/dir2/bar.a
+ i#include "baz.a"
+ :w
+ :e Xdir1/dir2/baz.a
+ i#include "foo.a"
+ :w
+ :e Xbase.a
+ :set path=Xdir1/dir2
+ i#include <foo.a>
+ :w
+ :redir! >>test.out
+ :checkpath!
+ :redir END
+ :brewind
+ ENDTEST
+
+ STARTTEST
+ :" check for 'include' with \zs and \ze
+ :!rm -f ./Xbase.b
+ :!rm -rf ./Xdir1
+ :!mkdir -p Xdir1/dir2
+ :let &include='^\s*%inc\s*/\zs[^/]\+\ze'
+ :function! DotsToSlashes()
+ : return substitute(v:fname, '\.', '/', 'g') . '.b'
+ :endfunction
+ :let &includeexpr='DotsToSlashes()'
+ :e Xdir1/dir2/foo.b
+ i%inc /bar/
+ :w
+ :e Xdir1/dir2/bar.b
+ i%inc /baz/
+ :w
+ :e Xdir1/dir2/baz.b
+ i%inc /foo/
+ :w
+ :e Xbase.b
+ :set path=Xdir1/dir2
+ i%inc /foo/
+ :w
+ :redir! >>test.out
+ :checkpath!
+ :redir END
+ :brewind
+ ENDTEST
+
+ STARTTEST
+ :" check for 'include' with \zs and no \ze
+ :!rm -f ./Xbase.c
+ :!rm -rf ./Xdir1
+ :!mkdir -p Xdir1/dir2
+ :let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
+ :function! StripNewlineChar()
+ : if v:fname =~ '\n$'
+ : return v:fname[:-2]
+ : endif
+ : return v:fname
+ :endfunction
+ :let &includeexpr='StripNewlineChar()'
+ :e Xdir1/dir2/foo.c
+ i%inc bar.c
+ :w
+ :e Xdir1/dir2/bar.c
+ i%inc baz.c
+ :w
+ :e Xdir1/dir2/baz.c
+ i%inc foo.c
+ :w
+ :e Xdir1/dir2/FALSE.c
+ i%inc foo.c
+ :w
+ :e Xbase.c
+ :set path=Xdir1/dir2
+ i%inc FALSE.c foo.c
+ :w
+ :redir! >>test.out
+ :checkpath!
+ :redir END
+ :brewind
+ :q
+ ENDTEST
+
*** ../vim-7.3.608/src/testdir/test17.ok 2010-08-15 21:57:29.000000000 +0200
--- src/testdir/test17.ok 2012-07-25 13:45:37.000000000 +0200
***************
*** 1,3 ****
--- 1,33 ----
This file is just to test "gf" in test 17.
The contents is not important.
Just testing!
+
+
+ --- Included files in path ---
+ Xdir1/dir2/foo.a
+ Xdir1/dir2/foo.a -->
+ Xdir1/dir2/bar.a
+ Xdir1/dir2/bar.a -->
+ Xdir1/dir2/baz.a
+ Xdir1/dir2/baz.a -->
+ "foo.a" (Already listed)
+
+
+ --- Included files in path ---
+ Xdir1/dir2/foo.b
+ Xdir1/dir2/foo.b -->
+ Xdir1/dir2/bar.b
+ Xdir1/dir2/bar.b -->
+ Xdir1/dir2/baz.b
+ Xdir1/dir2/baz.b -->
+ foo (Already listed)
+
+
+ --- Included files in path ---
+ Xdir1/dir2/foo.c
+ Xdir1/dir2/foo.c -->
+ Xdir1/dir2/bar.c
+ Xdir1/dir2/bar.c -->
+ Xdir1/dir2/baz.c
+ Xdir1/dir2/baz.c -->
+ foo.c^@ (Already listed)
*** ../vim-7.3.608/src/version.c 2012-07-19 18:05:40.000000000 +0200
--- src/version.c 2012-07-25 13:38:54.000000000 +0200
***************
*** 716,717 ****
--- 716,719 ----
{ /* Add new patch number below this line */
+ /**/
+ 609,
/**/
--
"The question of whether computers can think is just like the question
of whether submarines can swim." -- Edsger W. Dijkstra
/// 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 ///