Merge pull request #3903 from justinmk/vim-7.4.605

vim-patch:7.4.605
This commit is contained in:
Justin M. Keyes
2016-01-01 14:38:17 -05:00
6 changed files with 85 additions and 53 deletions

View File

@@ -918,13 +918,15 @@ do_buffer (
if (buf == NULL) { /* could not find it */
if (start == DOBUF_FIRST) {
/* don't warn when deleting */
if (!unload)
EMSGN(_("E86: Buffer %" PRId64 " does not exist"), count);
} else if (dir == FORWARD)
// don't warn when deleting
if (!unload) {
EMSGN(_(e_nobufnr), count);
}
} else if (dir == FORWARD) {
EMSG(_("E87: Cannot go beyond last buffer"));
else
} else {
EMSG(_("E88: Cannot go before first buffer"));
}
return FAIL;
}
@@ -1711,18 +1713,15 @@ static buf_T *buflist_findname_file_id(char_u *ffname, FileID *file_id,
return NULL;
}
/*
* Find file in buffer list by a regexp pattern.
* Return fnum of the found buffer.
* Return < 0 for error.
*/
int
buflist_findpat (
char_u *pattern,
char_u *pattern_end, /* pointer to first char after pattern */
int unlisted, /* find unlisted buffers */
int diffmode, /* find diff-mode buffers only */
int curtab_only /* find buffers in current tab only */
/// Find file in buffer list by a regexp pattern.
/// Return fnum of the found buffer.
/// Return < 0 for error.
int buflist_findpat(
const char_u *pattern,
const char_u *pattern_end, // pointer to first char after pattern
int unlisted, // find unlisted buffers
int diffmode, // find diff-mode buffers only
int curtab_only // find buffers in current tab only
)
{
int match = -1;

View File

@@ -7096,26 +7096,23 @@ int match_file_list(char_u *list, char_u *sfname, char_u *ffname)
return FALSE;
}
/*
* Convert the given pattern "pat" which has shell style wildcards in it, into
* a regular expression, and return the result in allocated memory. If there
* is a directory path separator to be matched, then TRUE is put in
* allow_dirs, otherwise FALSE is put there -- webb.
* Handle backslashes before special characters, like "\*" and "\ ".
*
* Returns NULL on failure.
*/
char_u *
file_pat_to_reg_pat (
char_u *pat,
char_u *pat_end, /* first char after pattern or NULL */
char *allow_dirs, /* Result passed back out in here */
int no_bslash /* Don't use a backward slash as pathsep */
/// Convert the given pattern "pat" which has shell style wildcards in it, into
/// a regular expression, and return the result in allocated memory. If there
/// is a directory path separator to be matched, then TRUE is put in
/// allow_dirs, otherwise FALSE is put there -- webb.
/// Handle backslashes before special characters, like "\*" and "\ ".
///
/// Returns NULL on failure.
char_u * file_pat_to_reg_pat(
const char_u *pat,
const char_u *pat_end, // first char after pattern or NULL
char *allow_dirs, // Result passed back out in here
int no_bslash // Don't use a backward slash as pathsep
)
{
char_u *endp;
const char_u *endp;
char_u *reg_pat;
char_u *p;
const char_u *p;
int nested = 0;
int add_dollar = TRUE;

View File

@@ -2,6 +2,7 @@
#define NVIM_GLOBALS_H
#include <stdbool.h>
#include <inttypes.h>
// EXTERN is only defined in main.c. That's where global variables are
// actually defined and initialized.
@@ -1239,6 +1240,7 @@ EXTERN char_u e_intern2[] INIT(= N_("E685: Internal error: %s"));
EXTERN char_u e_maxmempat[] INIT(= N_(
"E363: pattern uses more memory than 'maxmempattern'"));
EXTERN char_u e_emptybuf[] INIT(= N_("E749: empty buffer"));
EXTERN char_u e_nobufnr[] INIT(= N_("E86: Buffer %" PRId64 " does not exist"));
EXTERN char_u e_invalpat[] INIT(= N_(
"E682: Invalid search pattern or delimiter"));

View File

@@ -703,17 +703,16 @@ char_u *get_expr_line_src(void)
/// @param writing allow only writable registers
bool valid_yank_reg(int regname, bool writing)
{
if ( (regname > 0 && ASCII_ISALNUM(regname))
|| (!writing && vim_strchr((char_u *)
"/.%#:="
, regname) != NULL)
|| regname == '"'
|| regname == '-'
|| regname == '_'
|| regname == '*'
|| regname == '+'
)
if ((regname > 0 && ASCII_ISALNUM(regname))
|| (!writing && vim_strchr((char_u *) "/.%:=" , regname) != NULL)
|| regname == '#'
|| regname == '"'
|| regname == '-'
|| regname == '_'
|| regname == '*'
|| regname == '+') {
return true;
}
return false;
}
@@ -4658,6 +4657,27 @@ void write_reg_contents_ex(int name,
return;
}
if (name == '#') {
buf_T *buf;
if (ascii_isdigit(*str)) {
int num = atoi((char *)str);
buf = buflist_findnr(num);
if (buf == NULL) {
EMSGN(_(e_nobufnr), (long)num);
}
} else {
buf = buflist_findnr(buflist_findpat(str, str + STRLEN(str),
true, false, false));
}
if (buf == NULL) {
return;
}
curwin->w_alt_fnum = buf->b_fnum;
return;
}
if (name == '=') {
size_t offset = 0;
size_t totlen = (size_t) len;

View File

@@ -466,7 +466,7 @@ static int included_patches[] = {
608,
// 607 NA
606,
// 605,
605,
604,
// 603,
602,