mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
updated for version 7.2-168
This commit is contained in:
91
src/buffer.c
91
src/buffer.c
@@ -44,6 +44,7 @@ static int otherfile_buf __ARGS((buf_T *buf, char_u *ffname));
|
||||
#ifdef FEAT_TITLE
|
||||
static int ti_change __ARGS((char_u *str, char_u **last));
|
||||
#endif
|
||||
static int append_arg_number __ARGS((win_T *wp, char_u *buf, int buflen, int add_file));
|
||||
static void free_buffer __ARGS((buf_T *));
|
||||
static void free_buffer_stuff __ARGS((buf_T *buf, int free_options));
|
||||
static void clear_wininfo __ARGS((buf_T *buf));
|
||||
@@ -1453,13 +1454,13 @@ enter_buffer(buf)
|
||||
|
||||
#ifdef FEAT_KEYMAP
|
||||
if (curbuf->b_kmap_state & KEYMAP_INIT)
|
||||
keymap_init();
|
||||
(void)keymap_init();
|
||||
#endif
|
||||
#ifdef FEAT_SPELL
|
||||
/* May need to set the spell language. Can only do this after the buffer
|
||||
* has been properly setup. */
|
||||
if (!curbuf->b_help && curwin->w_p_spell && *curbuf->b_p_spl != NUL)
|
||||
did_set_spelllang(curbuf);
|
||||
(void)did_set_spelllang(curbuf);
|
||||
#endif
|
||||
|
||||
redraw_later(NOT_VALID);
|
||||
@@ -2516,7 +2517,7 @@ buflist_findfpos(buf)
|
||||
buf_T *buf;
|
||||
{
|
||||
wininfo_T *wip;
|
||||
static pos_T no_position = {1, 0};
|
||||
static pos_T no_position = INIT_POS_T(1, 0, 0);
|
||||
|
||||
wip = find_wininfo(buf, FALSE);
|
||||
if (wip != NULL)
|
||||
@@ -2577,8 +2578,8 @@ buflist_list(eap)
|
||||
{
|
||||
IObuff[len++] = ' ';
|
||||
} while (--i > 0 && len < IOSIZE - 18);
|
||||
vim_snprintf((char *)IObuff + len, IOSIZE - len, _("line %ld"),
|
||||
buf == curbuf ? curwin->w_cursor.lnum
|
||||
vim_snprintf((char *)IObuff + len, (size_t)(IOSIZE - len),
|
||||
_("line %ld"), buf == curbuf ? curwin->w_cursor.lnum
|
||||
: (long)buflist_findlnum(buf));
|
||||
msg_outtrans(IObuff);
|
||||
out_flush(); /* output one line at a time */
|
||||
@@ -2967,7 +2968,7 @@ fileinfo(fullname, shorthelp, dont_truncate)
|
||||
|
||||
if (fullname > 1) /* 2 CTRL-G: include buffer number */
|
||||
{
|
||||
sprintf((char *)buffer, "buf %d: ", curbuf->b_fnum);
|
||||
vim_snprintf((char *)buffer, IOSIZE, "buf %d: ", curbuf->b_fnum);
|
||||
p = buffer + STRLEN(buffer);
|
||||
}
|
||||
else
|
||||
@@ -3041,11 +3042,12 @@ fileinfo(fullname, shorthelp, dont_truncate)
|
||||
(long)curbuf->b_ml.ml_line_count,
|
||||
n);
|
||||
validate_virtcol();
|
||||
col_print(buffer + STRLEN(buffer),
|
||||
len = STRLEN(buffer);
|
||||
col_print(buffer + len, IOSIZE - len,
|
||||
(int)curwin->w_cursor.col + 1, (int)curwin->w_virtcol + 1);
|
||||
}
|
||||
|
||||
(void)append_arg_number(curwin, buffer, !shortmess(SHM_FILE), IOSIZE);
|
||||
(void)append_arg_number(curwin, buffer, IOSIZE, !shortmess(SHM_FILE));
|
||||
|
||||
if (dont_truncate)
|
||||
{
|
||||
@@ -3073,15 +3075,16 @@ fileinfo(fullname, shorthelp, dont_truncate)
|
||||
}
|
||||
|
||||
void
|
||||
col_print(buf, col, vcol)
|
||||
col_print(buf, buflen, col, vcol)
|
||||
char_u *buf;
|
||||
size_t buflen;
|
||||
int col;
|
||||
int vcol;
|
||||
{
|
||||
if (col == vcol)
|
||||
sprintf((char *)buf, "%d", col);
|
||||
vim_snprintf((char *)buf, buflen, "%d", col);
|
||||
else
|
||||
sprintf((char *)buf, "%d-%d", col, vcol);
|
||||
vim_snprintf((char *)buf, buflen, "%d-%d", col, vcol);
|
||||
}
|
||||
|
||||
#if defined(FEAT_TITLE) || defined(PROTO)
|
||||
@@ -3194,18 +3197,18 @@ maketitle()
|
||||
if (p == buf + off)
|
||||
/* must be a help buffer */
|
||||
vim_strncpy(buf + off, (char_u *)_("help"),
|
||||
IOSIZE - off - 1);
|
||||
(size_t)(IOSIZE - off - 1));
|
||||
else
|
||||
*p = NUL;
|
||||
|
||||
/* translate unprintable chars */
|
||||
p = transstr(buf + off);
|
||||
vim_strncpy(buf + off, p, IOSIZE - off - 1);
|
||||
vim_strncpy(buf + off, p, (size_t)(IOSIZE - off - 1));
|
||||
vim_free(p);
|
||||
STRCAT(buf, ")");
|
||||
}
|
||||
|
||||
append_arg_number(curwin, buf, FALSE, IOSIZE);
|
||||
append_arg_number(curwin, buf, IOSIZE, FALSE);
|
||||
|
||||
#if defined(FEAT_CLIENTSERVER)
|
||||
if (serverName != NULL)
|
||||
@@ -3520,7 +3523,7 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, t
|
||||
n = (long)(p - t) - item[groupitem[groupdepth]].maxwid + 1;
|
||||
|
||||
*t = '<';
|
||||
mch_memmove(t + 1, t + n, p - (t + n));
|
||||
mch_memmove(t + 1, t + n, (size_t)(p - (t + n)));
|
||||
p = p - n + 1;
|
||||
#ifdef FEAT_MBYTE
|
||||
/* Fill up space left over by half a double-wide char. */
|
||||
@@ -3550,7 +3553,7 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, t
|
||||
else
|
||||
{
|
||||
/* fill by inserting characters */
|
||||
mch_memmove(t + n - l, t, p - t);
|
||||
mch_memmove(t + n - l, t, (size_t)(p - t));
|
||||
l = n - l;
|
||||
if (p + l >= out + outlen)
|
||||
l = (long)((out + outlen) - p - 1);
|
||||
@@ -3686,7 +3689,7 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, t
|
||||
p = t;
|
||||
|
||||
#ifdef FEAT_EVAL
|
||||
sprintf((char *)tmp, "%d", curbuf->b_fnum);
|
||||
vim_snprintf((char *)tmp, sizeof(tmp), "%d", curbuf->b_fnum);
|
||||
set_internal_string_var((char_u *)"actual_curbuf", tmp);
|
||||
|
||||
o_curbuf = curbuf;
|
||||
@@ -3753,13 +3756,13 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, t
|
||||
|
||||
case STL_ALTPERCENT:
|
||||
str = tmp;
|
||||
get_rel_pos(wp, str);
|
||||
get_rel_pos(wp, str, TMPLEN);
|
||||
break;
|
||||
|
||||
case STL_ARGLISTSTAT:
|
||||
fillable = FALSE;
|
||||
tmp[0] = 0;
|
||||
if (append_arg_number(wp, tmp, FALSE, (int)sizeof(tmp)))
|
||||
if (append_arg_number(wp, tmp, (int)sizeof(tmp), FALSE))
|
||||
str = tmp;
|
||||
break;
|
||||
|
||||
@@ -3794,7 +3797,7 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, t
|
||||
case STL_BYTEVAL_X:
|
||||
base = 'X';
|
||||
case STL_BYTEVAL:
|
||||
if (wp->w_cursor.col > STRLEN(linecont))
|
||||
if (wp->w_cursor.col > (colnr_T)STRLEN(linecont))
|
||||
num = 0;
|
||||
else
|
||||
{
|
||||
@@ -3967,7 +3970,7 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, t
|
||||
if (zeropad)
|
||||
*t++ = '0';
|
||||
*t++ = '*';
|
||||
*t++ = nbase == 16 ? base : (nbase == 8 ? 'o' : 'd');
|
||||
*t++ = nbase == 16 ? base : (char_u)(nbase == 8 ? 'o' : 'd');
|
||||
*t = 0;
|
||||
|
||||
for (n = num, l = 1; n >= nbase; n /= nbase)
|
||||
@@ -4160,13 +4163,14 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, t
|
||||
#if defined(FEAT_STL_OPT) || defined(FEAT_CMDL_INFO) \
|
||||
|| defined(FEAT_GUI_TABLINE) || defined(PROTO)
|
||||
/*
|
||||
* Get relative cursor position in window into "str[]", in the form 99%, using
|
||||
* "Top", "Bot" or "All" when appropriate.
|
||||
* Get relative cursor position in window into "buf[buflen]", in the form 99%,
|
||||
* using "Top", "Bot" or "All" when appropriate.
|
||||
*/
|
||||
void
|
||||
get_rel_pos(wp, str)
|
||||
get_rel_pos(wp, buf, buflen)
|
||||
win_T *wp;
|
||||
char_u *str;
|
||||
char_u *buf;
|
||||
int buflen;
|
||||
{
|
||||
long above; /* number of lines above window */
|
||||
long below; /* number of lines below window */
|
||||
@@ -4177,34 +4181,35 @@ get_rel_pos(wp, str)
|
||||
#endif
|
||||
below = wp->w_buffer->b_ml.ml_line_count - wp->w_botline + 1;
|
||||
if (below <= 0)
|
||||
STRCPY(str, above == 0 ? _("All") : _("Bot"));
|
||||
vim_strncpy(buf, (char_u *)(above == 0 ? _("All") : _("Bot")),
|
||||
(size_t)(buflen - 1));
|
||||
else if (above <= 0)
|
||||
STRCPY(str, _("Top"));
|
||||
vim_strncpy(buf, (char_u *)_("Top"), (size_t)(buflen - 1));
|
||||
else
|
||||
sprintf((char *)str, "%2d%%", above > 1000000L
|
||||
vim_snprintf((char *)buf, (size_t)buflen, "%2d%%", above > 1000000L
|
||||
? (int)(above / ((above + below) / 100L))
|
||||
: (int)(above * 100L / (above + below)));
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Append (file 2 of 8) to 'buf', if editing more than one file.
|
||||
* Append (file 2 of 8) to "buf[buflen]", if editing more than one file.
|
||||
* Return TRUE if it was appended.
|
||||
*/
|
||||
int
|
||||
append_arg_number(wp, buf, add_file, maxlen)
|
||||
static int
|
||||
append_arg_number(wp, buf, buflen, add_file)
|
||||
win_T *wp;
|
||||
char_u *buf;
|
||||
int buflen;
|
||||
int add_file; /* Add "file" before the arg number */
|
||||
int maxlen; /* maximum nr of chars in buf or zero*/
|
||||
{
|
||||
char_u *p;
|
||||
|
||||
if (ARGCOUNT <= 1) /* nothing to do */
|
||||
return FALSE;
|
||||
|
||||
p = buf + STRLEN(buf); /* go to the end of the buffer */
|
||||
if (maxlen && p - buf + 35 >= maxlen) /* getting too long */
|
||||
p = buf + STRLEN(buf); /* go to the end of the buffer */
|
||||
if (p - buf + 35 >= buflen) /* getting too long */
|
||||
return FALSE;
|
||||
*p++ = ' ';
|
||||
*p++ = '(';
|
||||
@@ -4213,7 +4218,8 @@ append_arg_number(wp, buf, add_file, maxlen)
|
||||
STRCPY(p, "file ");
|
||||
p += 5;
|
||||
}
|
||||
sprintf((char *)p, wp->w_arg_idx_invalid ? "(%d) of %d)"
|
||||
vim_snprintf((char *)p, (size_t)(buflen - (p - buf)),
|
||||
wp->w_arg_idx_invalid ? "(%d) of %d)"
|
||||
: "%d of %d)", wp->w_arg_idx + 1, ARGCOUNT);
|
||||
return TRUE;
|
||||
}
|
||||
@@ -4996,7 +5002,7 @@ read_viminfo_bufferlist(virp, writing)
|
||||
if (tab != NULL)
|
||||
{
|
||||
*tab++ = '\0';
|
||||
col = atoi((char *)tab);
|
||||
col = (colnr_T)atoi((char *)tab);
|
||||
tab = vim_strrchr(xline, '\t');
|
||||
if (tab != NULL)
|
||||
{
|
||||
@@ -5034,6 +5040,7 @@ write_viminfo_bufferlist(fp)
|
||||
#endif
|
||||
char_u *line;
|
||||
int max_buffers;
|
||||
size_t len;
|
||||
|
||||
if (find_viminfo_parameter('%') == NULL)
|
||||
return;
|
||||
@@ -5042,7 +5049,8 @@ write_viminfo_bufferlist(fp)
|
||||
max_buffers = get_viminfo_parameter('%');
|
||||
|
||||
/* Allocate room for the file name, lnum and col. */
|
||||
line = alloc(MAXPATHL + 40);
|
||||
#define LINE_BUF_LEN (MAXPATHL + 40)
|
||||
line = alloc(LINE_BUF_LEN);
|
||||
if (line == NULL)
|
||||
return;
|
||||
|
||||
@@ -5068,7 +5076,8 @@ write_viminfo_bufferlist(fp)
|
||||
break;
|
||||
putc('%', fp);
|
||||
home_replace(NULL, buf->b_ffname, line, MAXPATHL, TRUE);
|
||||
sprintf((char *)line + STRLEN(line), "\t%ld\t%d",
|
||||
len = STRLEN(line);
|
||||
vim_snprintf((char *)line + len, len - LINE_BUF_LEN, "\t%ld\t%d",
|
||||
(long)buf->b_last_cursor.lnum,
|
||||
buf->b_last_cursor.col);
|
||||
viminfo_writestring(fp, line);
|
||||
@@ -5226,7 +5235,7 @@ buf_addsign(buf, id, lnum, typenr)
|
||||
return;
|
||||
}
|
||||
|
||||
int
|
||||
linenr_T
|
||||
buf_change_sign_type(buf, markId, typenr)
|
||||
buf_T *buf; /* buffer to store sign in */
|
||||
int markId; /* sign ID */
|
||||
@@ -5243,10 +5252,10 @@ buf_change_sign_type(buf, markId, typenr)
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return (linenr_T)0;
|
||||
}
|
||||
|
||||
int_u
|
||||
int
|
||||
buf_getsigntype(buf, lnum, type)
|
||||
buf_T *buf;
|
||||
linenr_T lnum;
|
||||
|
Reference in New Issue
Block a user