mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
updated for version 7.4.642
Problem: When using "gf" escaped spaces are not handled. Solution: Recognize escaped spaces.
This commit is contained in:
11
src/misc2.c
11
src/misc2.c
@@ -5474,6 +5474,7 @@ free_findfile()
|
|||||||
*
|
*
|
||||||
* options:
|
* options:
|
||||||
* FNAME_MESS give error message when not found
|
* FNAME_MESS give error message when not found
|
||||||
|
* FNAME_UNESC unescape backslashes.
|
||||||
*
|
*
|
||||||
* Uses NameBuff[]!
|
* Uses NameBuff[]!
|
||||||
*
|
*
|
||||||
@@ -5491,7 +5492,8 @@ find_directory_in_path(ptr, len, options, rel_fname)
|
|||||||
}
|
}
|
||||||
|
|
||||||
char_u *
|
char_u *
|
||||||
find_file_in_path_option(ptr, len, options, first, path_option, find_what, rel_fname, suffixes)
|
find_file_in_path_option(ptr, len, options, first, path_option,
|
||||||
|
find_what, rel_fname, suffixes)
|
||||||
char_u *ptr; /* file name */
|
char_u *ptr; /* file name */
|
||||||
int len; /* length of file name */
|
int len; /* length of file name */
|
||||||
int options;
|
int options;
|
||||||
@@ -5530,6 +5532,13 @@ find_file_in_path_option(ptr, len, options, first, path_option, find_what, rel_f
|
|||||||
file_name = NULL;
|
file_name = NULL;
|
||||||
goto theend;
|
goto theend;
|
||||||
}
|
}
|
||||||
|
if (options & FNAME_UNESC)
|
||||||
|
{
|
||||||
|
/* Change all "\ " to " ". */
|
||||||
|
for (ptr = ff_file_to_find; *ptr != NUL; ++ptr)
|
||||||
|
if (ptr[0] == '\\' && ptr[1] == ' ')
|
||||||
|
mch_memmove(ptr, ptr + 1, STRLEN(ptr));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rel_to_curdir = (ff_file_to_find[0] == '.'
|
rel_to_curdir = (ff_file_to_find[0] == '.'
|
||||||
|
@@ -741,6 +741,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
642,
|
||||||
/**/
|
/**/
|
||||||
641,
|
641,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -939,6 +939,7 @@ extern char *(*dyn_libintl_textdomain)(const char *domainname);
|
|||||||
#define FNAME_INCL 8 /* apply 'includeexpr' */
|
#define FNAME_INCL 8 /* apply 'includeexpr' */
|
||||||
#define FNAME_REL 16 /* ".." and "./" are relative to the (current)
|
#define FNAME_REL 16 /* ".." and "./" are relative to the (current)
|
||||||
file instead of the current directory */
|
file instead of the current directory */
|
||||||
|
#define FNAME_UNESC 32 /* remove backslashes used for escaping */
|
||||||
|
|
||||||
/* Values for buflist_getfile() */
|
/* Values for buflist_getfile() */
|
||||||
#define GETF_SETMARK 0x01 /* set pcmark before jumping */
|
#define GETF_SETMARK 0x01 /* set pcmark before jumping */
|
||||||
|
16
src/window.c
16
src/window.c
@@ -6219,6 +6219,8 @@ grab_file_name(count, file_lnum)
|
|||||||
long count;
|
long count;
|
||||||
linenr_T *file_lnum;
|
linenr_T *file_lnum;
|
||||||
{
|
{
|
||||||
|
int options = FNAME_MESS|FNAME_EXP|FNAME_REL|FNAME_UNESC;
|
||||||
|
|
||||||
if (VIsual_active)
|
if (VIsual_active)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
@@ -6226,11 +6228,10 @@ grab_file_name(count, file_lnum)
|
|||||||
|
|
||||||
if (get_visual_text(NULL, &ptr, &len) == FAIL)
|
if (get_visual_text(NULL, &ptr, &len) == FAIL)
|
||||||
return NULL;
|
return NULL;
|
||||||
return find_file_name_in_path(ptr, len,
|
return find_file_name_in_path(ptr, len, options,
|
||||||
FNAME_MESS|FNAME_EXP|FNAME_REL, count, curbuf->b_ffname);
|
count, curbuf->b_ffname);
|
||||||
}
|
}
|
||||||
return file_name_at_cursor(FNAME_MESS|FNAME_HYP|FNAME_EXP|FNAME_REL, count,
|
return file_name_at_cursor(options | FNAME_HYP, count, file_lnum);
|
||||||
file_lnum);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6310,14 +6311,19 @@ file_name_in_line(line, col, options, count, rel_fname, file_lnum)
|
|||||||
* Also allow "://" when ':' is not in 'isfname'.
|
* Also allow "://" when ':' is not in 'isfname'.
|
||||||
*/
|
*/
|
||||||
len = 0;
|
len = 0;
|
||||||
while (vim_isfilec(ptr[len])
|
while (vim_isfilec(ptr[len]) || (ptr[len] == '\\' && ptr[len + 1] == ' ')
|
||||||
|| ((options & FNAME_HYP) && path_is_url(ptr + len)))
|
|| ((options & FNAME_HYP) && path_is_url(ptr + len)))
|
||||||
|
{
|
||||||
|
if (ptr[len] == '\\')
|
||||||
|
/* Skip over the "\" in "\ ". */
|
||||||
|
++len;
|
||||||
#ifdef FEAT_MBYTE
|
#ifdef FEAT_MBYTE
|
||||||
if (has_mbyte)
|
if (has_mbyte)
|
||||||
len += (*mb_ptr2len)(ptr + len);
|
len += (*mb_ptr2len)(ptr + len);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
++len;
|
++len;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If there is trailing punctuation, remove it.
|
* If there is trailing punctuation, remove it.
|
||||||
|
Reference in New Issue
Block a user