- patchlevel 872
This commit is contained in:
parent
9681cac6fc
commit
30914c92e2
524
7.3.872
Normal file
524
7.3.872
Normal file
@ -0,0 +1,524 @@
|
||||
To: vim_dev@googlegroups.com
|
||||
Subject: Patch 7.3.872
|
||||
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.872
|
||||
Problem: On some systems case of file names is always ignored, on others
|
||||
never.
|
||||
Solution: Add the 'fileignorecase' option to control this at runtime.
|
||||
Implies 'wildignorecase'.
|
||||
Files: src/buffer.c, src/edit.c, src/ex_cmds2.c, src/ex_getln.c,
|
||||
src/fileio.c, src/misc1.c, src/misc2.c, src/option.c,
|
||||
src/option.h, src/vim.h, runtime/doc/options.txt
|
||||
|
||||
|
||||
*** ../vim-7.3.871/src/buffer.c 2013-03-19 14:25:50.000000000 +0100
|
||||
--- src/buffer.c 2013-03-19 16:03:42.000000000 +0100
|
||||
***************
|
||||
*** 2401,2412 ****
|
||||
if (name != NULL)
|
||||
{
|
||||
regmatch.regprog = prog;
|
||||
! #ifdef CASE_INSENSITIVE_FILENAME
|
||||
! regmatch.rm_ic = TRUE; /* Always ignore case */
|
||||
! #else
|
||||
! regmatch.rm_ic = FALSE; /* Never ignore case */
|
||||
! #endif
|
||||
!
|
||||
if (vim_regexec(®match, name, (colnr_T)0))
|
||||
match = name;
|
||||
else
|
||||
--- 2401,2407 ----
|
||||
if (name != NULL)
|
||||
{
|
||||
regmatch.regprog = prog;
|
||||
! regmatch.rm_ic = p_fic; /* ignore case when 'fileignorecase' is set */
|
||||
if (vim_regexec(®match, name, (colnr_T)0))
|
||||
match = name;
|
||||
else
|
||||
*** ../vim-7.3.871/src/edit.c 2013-03-19 13:33:18.000000000 +0100
|
||||
--- src/edit.c 2013-03-19 15:43:19.000000000 +0100
|
||||
***************
|
||||
*** 4336,4348 ****
|
||||
|
||||
/* May change home directory back to "~". */
|
||||
tilde_replace(compl_pattern, num_matches, matches);
|
||||
! ins_compl_add_matches(num_matches, matches,
|
||||
! #ifdef CASE_INSENSITIVE_FILENAME
|
||||
! TRUE
|
||||
! #else
|
||||
! FALSE
|
||||
! #endif
|
||||
! );
|
||||
}
|
||||
break;
|
||||
|
||||
--- 4336,4342 ----
|
||||
|
||||
/* May change home directory back to "~". */
|
||||
tilde_replace(compl_pattern, num_matches, matches);
|
||||
! ins_compl_add_matches(num_matches, matches, p_fic || p_wic);
|
||||
}
|
||||
break;
|
||||
|
||||
*** ../vim-7.3.871/src/ex_cmds2.c 2012-10-03 18:24:55.000000000 +0200
|
||||
--- src/ex_cmds2.c 2013-03-19 16:03:50.000000000 +0100
|
||||
***************
|
||||
*** 1926,1936 ****
|
||||
* Delete the items: use each item as a regexp and find a match in the
|
||||
* argument list.
|
||||
*/
|
||||
! #ifdef CASE_INSENSITIVE_FILENAME
|
||||
! regmatch.rm_ic = TRUE; /* Always ignore case */
|
||||
! #else
|
||||
! regmatch.rm_ic = FALSE; /* Never ignore case */
|
||||
! #endif
|
||||
for (i = 0; i < new_ga.ga_len && !got_int; ++i)
|
||||
{
|
||||
p = ((char_u **)new_ga.ga_data)[i];
|
||||
--- 1926,1932 ----
|
||||
* Delete the items: use each item as a regexp and find a match in the
|
||||
* argument list.
|
||||
*/
|
||||
! regmatch.rm_ic = p_fic; /* ignore case when 'fileignorecase' is set */
|
||||
for (i = 0; i < new_ga.ga_len && !got_int; ++i)
|
||||
{
|
||||
p = ((char_u **)new_ga.ga_data)[i];
|
||||
*** ../vim-7.3.871/src/ex_getln.c 2012-11-28 16:49:53.000000000 +0100
|
||||
--- src/ex_getln.c 2013-03-19 16:03:53.000000000 +0100
|
||||
***************
|
||||
*** 3653,3671 ****
|
||||
{
|
||||
for (i = 0; i < xp->xp_numfiles; ++i)
|
||||
{
|
||||
! #ifdef CASE_INSENSITIVE_FILENAME
|
||||
! if (xp->xp_context == EXPAND_DIRECTORIES
|
||||
|| xp->xp_context == EXPAND_FILES
|
||||
|| xp->xp_context == EXPAND_SHELLCMD
|
||||
! || xp->xp_context == EXPAND_BUFFERS)
|
||||
{
|
||||
if (TOLOWER_LOC(xp->xp_files[i][len]) !=
|
||||
TOLOWER_LOC(xp->xp_files[0][len]))
|
||||
break;
|
||||
}
|
||||
! else
|
||||
! #endif
|
||||
! if (xp->xp_files[i][len] != xp->xp_files[0][len])
|
||||
break;
|
||||
}
|
||||
if (i < xp->xp_numfiles)
|
||||
--- 3653,3668 ----
|
||||
{
|
||||
for (i = 0; i < xp->xp_numfiles; ++i)
|
||||
{
|
||||
! if (p_fic && (xp->xp_context == EXPAND_DIRECTORIES
|
||||
|| xp->xp_context == EXPAND_FILES
|
||||
|| xp->xp_context == EXPAND_SHELLCMD
|
||||
! || xp->xp_context == EXPAND_BUFFERS))
|
||||
{
|
||||
if (TOLOWER_LOC(xp->xp_files[i][len]) !=
|
||||
TOLOWER_LOC(xp->xp_files[0][len]))
|
||||
break;
|
||||
}
|
||||
! else if (xp->xp_files[i][len] != xp->xp_files[0][len])
|
||||
break;
|
||||
}
|
||||
if (i < xp->xp_numfiles)
|
||||
*** ../vim-7.3.871/src/fileio.c 2013-03-19 13:33:18.000000000 +0100
|
||||
--- src/fileio.c 2013-03-19 15:49:28.000000000 +0100
|
||||
***************
|
||||
*** 6485,6493 ****
|
||||
#ifdef HAVE_ACL
|
||||
vim_acl_T acl; /* ACL from original file */
|
||||
#endif
|
||||
- #if defined(UNIX) || defined(CASE_INSENSITIVE_FILENAME)
|
||||
int use_tmp_file = FALSE;
|
||||
- #endif
|
||||
|
||||
/*
|
||||
* When the names are identical, there is nothing to do. When they refer
|
||||
--- 6485,6491 ----
|
||||
***************
|
||||
*** 6496,6506 ****
|
||||
*/
|
||||
if (fnamecmp(from, to) == 0)
|
||||
{
|
||||
! #ifdef CASE_INSENSITIVE_FILENAME
|
||||
! if (STRCMP(gettail(from), gettail(to)) != 0)
|
||||
use_tmp_file = TRUE;
|
||||
else
|
||||
- #endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
--- 6494,6502 ----
|
||||
*/
|
||||
if (fnamecmp(from, to) == 0)
|
||||
{
|
||||
! if (p_fic && STRCMP(gettail(from), gettail(to)) != 0)
|
||||
use_tmp_file = TRUE;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
***************
|
||||
*** 6539,6545 ****
|
||||
}
|
||||
#endif
|
||||
|
||||
- #if defined(UNIX) || defined(CASE_INSENSITIVE_FILENAME)
|
||||
if (use_tmp_file)
|
||||
{
|
||||
char tempname[MAXPATHL + 1];
|
||||
--- 6535,6540 ----
|
||||
***************
|
||||
*** 6572,6578 ****
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
- #endif
|
||||
|
||||
/*
|
||||
* Delete the "to" file, this is required on some systems to make the
|
||||
--- 6567,6572 ----
|
||||
***************
|
||||
*** 10007,10017 ****
|
||||
int match = FALSE;
|
||||
#endif
|
||||
|
||||
! #ifdef CASE_INSENSITIVE_FILENAME
|
||||
! regmatch.rm_ic = TRUE; /* Always ignore case */
|
||||
! #else
|
||||
! regmatch.rm_ic = FALSE; /* Don't ever ignore case */
|
||||
! #endif
|
||||
#ifdef FEAT_OSFILETYPE
|
||||
if (*pattern == '<')
|
||||
{
|
||||
--- 10001,10007 ----
|
||||
int match = FALSE;
|
||||
#endif
|
||||
|
||||
! regmatch.rm_ic = p_fic; /* ignore case if 'fileignorecase' is set */
|
||||
#ifdef FEAT_OSFILETYPE
|
||||
if (*pattern == '<')
|
||||
{
|
||||
*** ../vim-7.3.871/src/misc1.c 2013-03-16 21:35:28.000000000 +0100
|
||||
--- src/misc1.c 2013-03-19 16:16:24.000000000 +0100
|
||||
***************
|
||||
*** 5026,5041 ****
|
||||
return retval;
|
||||
}
|
||||
|
||||
- #if (defined(CASE_INSENSITIVE_FILENAME) && defined(BACKSLASH_IN_FILENAME)) \
|
||||
- || defined(PROTO)
|
||||
/*
|
||||
! * Versions of fnamecmp() and fnamencmp() that handle '/' and '\' equally.
|
||||
*/
|
||||
int
|
||||
vim_fnamecmp(x, y)
|
||||
char_u *x, *y;
|
||||
{
|
||||
return vim_fnamencmp(x, y, MAXPATHL);
|
||||
}
|
||||
|
||||
int
|
||||
--- 5026,5046 ----
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
! * Versions of fnamecmp() and fnamencmp() that handle '/' and '\' equally
|
||||
! * and deal with 'fileignorecase'.
|
||||
*/
|
||||
int
|
||||
vim_fnamecmp(x, y)
|
||||
char_u *x, *y;
|
||||
{
|
||||
+ #ifdef BACKSLASH_IN_FILENAME
|
||||
return vim_fnamencmp(x, y, MAXPATHL);
|
||||
+ #else
|
||||
+ if (p_fic)
|
||||
+ return MB_STRICMP(x, y);
|
||||
+ return STRCMP(x, y);
|
||||
+ #endif
|
||||
}
|
||||
|
||||
int
|
||||
***************
|
||||
*** 5043,5051 ****
|
||||
char_u *x, *y;
|
||||
size_t len;
|
||||
{
|
||||
while (len > 0 && *x && *y)
|
||||
{
|
||||
! if (TOLOWER_LOC(*x) != TOLOWER_LOC(*y)
|
||||
&& !(*x == '/' && *y == '\\')
|
||||
&& !(*x == '\\' && *y == '/'))
|
||||
break;
|
||||
--- 5048,5058 ----
|
||||
char_u *x, *y;
|
||||
size_t len;
|
||||
{
|
||||
+ #ifdef BACKSLASH_IN_FILENAME
|
||||
+ /* TODO: multi-byte characters. */
|
||||
while (len > 0 && *x && *y)
|
||||
{
|
||||
! if ((p_fic ? TOLOWER_LOC(*x) != TOLOWER_LOC(*y) : *x != *y)
|
||||
&& !(*x == '/' && *y == '\\')
|
||||
&& !(*x == '\\' && *y == '/'))
|
||||
break;
|
||||
***************
|
||||
*** 5056,5063 ****
|
||||
if (len == 0)
|
||||
return 0;
|
||||
return (*x - *y);
|
||||
! }
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Concatenate file names fname1 and fname2 into allocated memory.
|
||||
--- 5063,5074 ----
|
||||
if (len == 0)
|
||||
return 0;
|
||||
return (*x - *y);
|
||||
! #else
|
||||
! if (p_fic)
|
||||
! return MB_STRNICMP(x, y, len);
|
||||
! return STRNCMP(x, y, len);
|
||||
#endif
|
||||
+ }
|
||||
|
||||
/*
|
||||
* Concatenate file names fname1 and fname2 into allocated memory.
|
||||
***************
|
||||
*** 9835,9845 ****
|
||||
}
|
||||
else if (path_end >= path + wildoff
|
||||
&& (vim_strchr((char_u *)"*?[{~$", *path_end) != NULL
|
||||
! #ifndef CASE_INSENSITIVE_FILENAME
|
||||
! || ((flags & EW_ICASE)
|
||||
! && isalpha(PTR2CHAR(path_end)))
|
||||
! #endif
|
||||
! ))
|
||||
e = p;
|
||||
#ifdef FEAT_MBYTE
|
||||
if (has_mbyte)
|
||||
--- 9846,9853 ----
|
||||
}
|
||||
else if (path_end >= path + wildoff
|
||||
&& (vim_strchr((char_u *)"*?[{~$", *path_end) != NULL
|
||||
! || (!p_fic && (flags & EW_ICASE)
|
||||
! && isalpha(PTR2CHAR(path_end)))))
|
||||
e = p;
|
||||
#ifdef FEAT_MBYTE
|
||||
if (has_mbyte)
|
||||
***************
|
||||
*** 9882,9895 ****
|
||||
}
|
||||
|
||||
/* compile the regexp into a program */
|
||||
- #ifdef CASE_INSENSITIVE_FILENAME
|
||||
- regmatch.rm_ic = TRUE; /* Behave like Terminal.app */
|
||||
- #else
|
||||
if (flags & EW_ICASE)
|
||||
regmatch.rm_ic = TRUE; /* 'wildignorecase' set */
|
||||
else
|
||||
! regmatch.rm_ic = FALSE; /* Don't ignore case */
|
||||
! #endif
|
||||
if (flags & (EW_NOERROR | EW_NOTWILD))
|
||||
++emsg_silent;
|
||||
regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
|
||||
--- 9890,9899 ----
|
||||
}
|
||||
|
||||
/* compile the regexp into a program */
|
||||
if (flags & EW_ICASE)
|
||||
regmatch.rm_ic = TRUE; /* 'wildignorecase' set */
|
||||
else
|
||||
! regmatch.rm_ic = p_fic; /* ignore case when 'fileignorecase' is set */
|
||||
if (flags & (EW_NOERROR | EW_NOTWILD))
|
||||
++emsg_silent;
|
||||
regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
|
||||
*** ../vim-7.3.871/src/misc2.c 2012-11-28 18:31:49.000000000 +0100
|
||||
--- src/misc2.c 2013-03-19 16:39:56.000000000 +0100
|
||||
***************
|
||||
*** 5362,5374 ****
|
||||
if (STRLEN(s1) != STRLEN(s2))
|
||||
return FAIL;
|
||||
|
||||
for (i = 0; s1[i] != NUL && s2[i] != NUL; i++)
|
||||
{
|
||||
if (s1[i] != s2[i]
|
||||
! #ifdef CASE_INSENSITIVE_FILENAME
|
||||
! && TOUPPER_LOC(s1[i]) != TOUPPER_LOC(s2[i])
|
||||
! #endif
|
||||
! )
|
||||
{
|
||||
if (i >= 2)
|
||||
if (s1[i-1] == '*' && s1[i-2] == '*')
|
||||
--- 5362,5372 ----
|
||||
if (STRLEN(s1) != STRLEN(s2))
|
||||
return FAIL;
|
||||
|
||||
+ /* TODO: handle multi-byte characters. */
|
||||
for (i = 0; s1[i] != NUL && s2[i] != NUL; i++)
|
||||
{
|
||||
if (s1[i] != s2[i]
|
||||
! && (!p_fic || TOUPPER_LOC(s1[i]) != TOUPPER_LOC(s2[i])))
|
||||
{
|
||||
if (i >= 2)
|
||||
if (s1[i-1] == '*' && s1[i-2] == '*')
|
||||
***************
|
||||
*** 6123,6134 ****
|
||||
break;
|
||||
}
|
||||
|
||||
! if (
|
||||
! #ifdef CASE_INSENSITIVE_FILENAME
|
||||
! TOUPPER_LOC(p[i]) != TOUPPER_LOC(q[i])
|
||||
! #else
|
||||
! p[i] != q[i]
|
||||
! #endif
|
||||
#ifdef BACKSLASH_IN_FILENAME
|
||||
/* consider '/' and '\\' to be equal */
|
||||
&& !((p[i] == '/' && q[i] == '\\')
|
||||
--- 6121,6127 ----
|
||||
break;
|
||||
}
|
||||
|
||||
! if ((p_fic ? TOUPPER_LOC(p[i]) != TOUPPER_LOC(q[i]) : p[i] != q[i])
|
||||
#ifdef BACKSLASH_IN_FILENAME
|
||||
/* consider '/' and '\\' to be equal */
|
||||
&& !((p[i] == '/' && q[i] == '\\')
|
||||
*** ../vim-7.3.871/src/option.c 2013-03-13 20:42:28.000000000 +0100
|
||||
--- src/option.c 2013-03-19 15:40:25.000000000 +0100
|
||||
***************
|
||||
*** 1108,1113 ****
|
||||
--- 1108,1122 ----
|
||||
(char_u *)&p_ffs, PV_NONE,
|
||||
{(char_u *)DFLT_FFS_VI, (char_u *)DFLT_FFS_VIM}
|
||||
SCRIPTID_INIT},
|
||||
+ {"fileignorecase", "fic", P_BOOL|P_VI_DEF,
|
||||
+ (char_u *)&p_fic, PV_NONE,
|
||||
+ {
|
||||
+ #ifdef CASE_INSENSITIVE_FILENAME
|
||||
+ (char_u *)TRUE,
|
||||
+ #else
|
||||
+ (char_u *)FALSE,
|
||||
+ #endif
|
||||
+ (char_u *)0L} SCRIPTID_INIT},
|
||||
{"filetype", "ft", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB|P_NFNAME,
|
||||
#ifdef FEAT_AUTOCMD
|
||||
(char_u *)&p_ft, PV_FT,
|
||||
*** ../vim-7.3.871/src/option.h 2012-08-15 16:20:59.000000000 +0200
|
||||
--- src/option.h 2013-03-19 15:42:24.000000000 +0100
|
||||
***************
|
||||
*** 453,458 ****
|
||||
--- 453,459 ----
|
||||
EXTERN char_u *p_fencs; /* 'fileencodings' */
|
||||
#endif
|
||||
EXTERN char_u *p_ffs; /* 'fileformats' */
|
||||
+ EXTERN long p_fic; /* 'fileignorecase' */
|
||||
#ifdef FEAT_FOLDING
|
||||
EXTERN char_u *p_fcl; /* 'foldclose' */
|
||||
EXTERN long p_fdls; /* 'foldlevelstart' */
|
||||
*** ../vim-7.3.871/src/vim.h 2013-03-19 13:33:18.000000000 +0100
|
||||
--- src/vim.h 2013-03-19 16:14:29.000000000 +0100
|
||||
***************
|
||||
*** 1627,1644 ****
|
||||
* (this does not account for maximum name lengths and things like "../dir",
|
||||
* thus it is not 100% accurate!)
|
||||
*/
|
||||
! #ifdef CASE_INSENSITIVE_FILENAME
|
||||
! # ifdef BACKSLASH_IN_FILENAME
|
||||
! # define fnamecmp(x, y) vim_fnamecmp((x), (y))
|
||||
! # define fnamencmp(x, y, n) vim_fnamencmp((x), (y), (size_t)(n))
|
||||
! # else
|
||||
! # define fnamecmp(x, y) MB_STRICMP((x), (y))
|
||||
! # define fnamencmp(x, y, n) MB_STRNICMP((x), (y), (n))
|
||||
! # endif
|
||||
! #else
|
||||
! # define fnamecmp(x, y) strcmp((char *)(x), (char *)(y))
|
||||
! # define fnamencmp(x, y, n) strncmp((char *)(x), (char *)(y), (size_t)(n))
|
||||
! #endif
|
||||
|
||||
#ifdef HAVE_MEMSET
|
||||
# define vim_memset(ptr, c, size) memset((ptr), (c), (size))
|
||||
--- 1627,1634 ----
|
||||
* (this does not account for maximum name lengths and things like "../dir",
|
||||
* thus it is not 100% accurate!)
|
||||
*/
|
||||
! #define fnamecmp(x, y) vim_fnamecmp((char_u *)(x), (char_u *)(y))
|
||||
! #define fnamencmp(x, y, n) vim_fnamencmp((char_u *)(x), (char_u *)(y), (size_t)(n))
|
||||
|
||||
#ifdef HAVE_MEMSET
|
||||
# define vim_memset(ptr, c, size) memset((ptr), (c), (size))
|
||||
*** ../vim-7.3.871/runtime/doc/options.txt 2013-01-23 18:37:31.000000000 +0100
|
||||
--- runtime/doc/options.txt 2013-03-19 16:25:49.000000000 +0100
|
||||
***************
|
||||
*** 2895,2900 ****
|
||||
--- 2941,2954 ----
|
||||
NOTE: This option is set to the Vi default value when 'compatible' is
|
||||
set and to the Vim default value when 'compatible' is reset.
|
||||
|
||||
+ *'fileignorecase'* *'wic'* *'nofileignorecase'* *'nowic'*
|
||||
+ 'fileignorecase' 'wic' boolean (default on for systems where case in file
|
||||
+ names is normally ignored.
|
||||
+ global
|
||||
+ {not in Vi}
|
||||
+ When set case is ignored when using file names and directories.
|
||||
+ See 'wildignorecase' for only ignoring case when doing completion.
|
||||
+
|
||||
*'filetype'* *'ft'*
|
||||
'filetype' 'ft' string (default: "")
|
||||
local to buffer
|
||||
***************
|
||||
*** 7832,7843 ****
|
||||
uses another default.
|
||||
|
||||
|
||||
! *'wildignorecase* *'wic'* *'nowildignorecase* *'nowic'*
|
||||
'wildignorecase' 'wic' boolean (default off)
|
||||
global
|
||||
{not in Vi}
|
||||
When set case is ignored when completing file names and directories.
|
||||
! Has no effect on systems where file name case is generally ignored.
|
||||
Does not apply when the shell is used to expand wildcards, which
|
||||
happens when there are special characters.
|
||||
|
||||
--- 7906,7917 ----
|
||||
uses another default.
|
||||
|
||||
|
||||
! *'wildignorecase'* *'wic'* *'nowildignorecase'* *'nowic'*
|
||||
'wildignorecase' 'wic' boolean (default off)
|
||||
global
|
||||
{not in Vi}
|
||||
When set case is ignored when completing file names and directories.
|
||||
! Has no effect when 'fileignorecase' is set.
|
||||
Does not apply when the shell is used to expand wildcards, which
|
||||
happens when there are special characters.
|
||||
|
||||
*** ../vim-7.3.871/src/version.c 2013-03-19 15:27:43.000000000 +0100
|
||||
--- src/version.c 2013-03-19 16:22:46.000000000 +0100
|
||||
***************
|
||||
*** 730,731 ****
|
||||
--- 730,733 ----
|
||||
{ /* Add new patch number below this line */
|
||||
+ /**/
|
||||
+ 872,
|
||||
/**/
|
||||
|
||||
--
|
||||
hundred-and-one symptoms of being an internet addict:
|
||||
76. Your ISP regards you as a business partner rather than as a customer.
|
||||
|
||||
/// 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 ///
|
Loading…
Reference in New Issue
Block a user