0
0
mirror of https://github.com/vim/vim.git synced 2025-09-28 04:24:06 -04:00

updated for version 7.0151

This commit is contained in:
Bram Moolenaar
2005-09-29 18:26:07 +00:00
parent 4463f296d0
commit 482aaeb058
49 changed files with 3715 additions and 529 deletions

View File

@@ -128,7 +128,7 @@ static foldinfo_T win_foldinfo; /* info for 'foldcolumn' */
static schar_T *current_ScreenLine;
static void win_update __ARGS((win_T *wp));
static void win_draw_end __ARGS((win_T *wp, int c1, int c2, int row, int endrow, enum hlf_value hl));
static void win_draw_end __ARGS((win_T *wp, int c1, int c2, int row, int endrow, hlf_T hl));
#ifdef FEAT_FOLDING
static void fold_line __ARGS((win_T *wp, long fold_count, foldinfo_T *foldinfo, linenr_T lnum, int row));
static void fill_foldcolumn __ARGS((char_u *p, win_T *wp, int closed, linenr_T lnum));
@@ -1904,7 +1904,7 @@ win_draw_end(wp, c1, c2, row, endrow, hl)
int c2;
int row;
int endrow;
enum hlf_value hl;
hlf_T hl;
{
#if defined(FEAT_FOLDING) || defined(FEAT_SIGNS) || defined(FEAT_CMDWIN)
int n = 0;
@@ -2531,7 +2531,7 @@ win_line(wp, lnum, startrow, endrow)
#ifdef FEAT_DIFF
int filler_lines; /* nr of filler lines to be drawn */
int filler_todo; /* nr of filler lines still to do + 1 */
enum hlf_value diff_hlf = (enum hlf_value)0; /* type of diff highlighting */
hlf_T diff_hlf = (hlf_T)0; /* type of diff highlighting */
int change_start = MAXCOL; /* first col of changed area */
int change_end = -1; /* last col of changed area */
#endif
@@ -2926,22 +2926,28 @@ win_line(wp, lnum, startrow, endrow)
if (has_spell)
{
int len;
hlf_T spell_hlf = HLF_COUNT;
pos = wp->w_cursor;
wp->w_cursor.lnum = lnum;
wp->w_cursor.col = ptr - line;
len = spell_move_to(wp, FORWARD, TRUE, TRUE, &spell_attr);
len = spell_move_to(wp, FORWARD, TRUE, TRUE, &spell_hlf);
if (len == 0 || (int)wp->w_cursor.col > ptr - line)
{
/* no bad word found at line start, don't check until end of a
* word */
spell_attr = 0;
spell_hlf = HLF_COUNT;
word_end = spell_to_word_end(ptr, wp->w_buffer) - line + 1;
}
else
{
/* bad word found, use attributes until end of word */
word_end = wp->w_cursor.col + len + 1;
/* Turn index into actual attributes. */
if (spell_hlf != HLF_COUNT)
spell_attr = highlight_attr[spell_hlf];
}
wp->w_cursor = pos;
/* Need to restart syntax highlighting for this line. */
@@ -3353,7 +3359,7 @@ win_line(wp, lnum, startrow, endrow)
char_attr = search_attr;
#ifdef FEAT_DIFF
if (diff_hlf != (enum hlf_value)0 && n_extra == 0)
if (diff_hlf != (hlf_T)0 && n_extra == 0)
{
if (diff_hlf == HLF_CHD && ptr - line >= change_start)
diff_hlf = HLF_TXD; /* changed text */
@@ -3719,6 +3725,7 @@ win_line(wp, lnum, startrow, endrow)
{
char_u *prev_ptr, *p;
int len;
hlf_T spell_hlf = HLF_COUNT;
# ifdef FEAT_MBYTE
if (has_mbyte)
{
@@ -3736,23 +3743,23 @@ win_line(wp, lnum, startrow, endrow)
else
p = prev_ptr;
cap_col -= (prev_ptr - line);
len = spell_check(wp, p, &spell_attr, &cap_col);
len = spell_check(wp, p, &spell_hlf, &cap_col);
word_end = v + len;
/* In Insert mode only highlight a word that
* doesn't touch the cursor. */
if (spell_attr != 0
if (spell_hlf != HLF_COUNT
&& (State & INSERT) != 0
&& wp->w_cursor.lnum == lnum
&& wp->w_cursor.col >=
(colnr_T)(prev_ptr - line)
&& wp->w_cursor.col < (colnr_T)word_end)
{
spell_attr = 0;
spell_hlf = HLF_COUNT;
spell_redraw_lnum = lnum;
}
if (spell_attr == 0 && p != prev_ptr
if (spell_hlf == HLF_COUNT && p != prev_ptr
&& (p - nextline) + len > nextline_idx)
{
/* Remember that the good word continues at the
@@ -3761,6 +3768,10 @@ win_line(wp, lnum, startrow, endrow)
checked_col = (p - nextline) + len - nextline_idx;
}
/* Turn index into actual attributes. */
if (spell_hlf != HLF_COUNT)
spell_attr = highlight_attr[spell_hlf];
if (cap_col > 0)
{
if (p != prev_ptr
@@ -3889,7 +3900,7 @@ win_line(wp, lnum, startrow, endrow)
* "$". */
if (
# ifdef FEAT_DIFF
diff_hlf == (enum hlf_value)0
diff_hlf == (hlf_T)0
# ifdef LINE_ATTR
&&
# endif
@@ -3976,7 +3987,7 @@ win_line(wp, lnum, startrow, endrow)
#if defined(FEAT_DIFF) || defined(LINE_ATTR)
else if ((
# ifdef FEAT_DIFF
diff_hlf != (enum hlf_value)0
diff_hlf != (hlf_T)0
# ifdef LINE_ATTR
||
# endif
@@ -6398,6 +6409,10 @@ screen_draw_rectangle(row, col, height, width, invert)
int r, c;
int off;
/* Can't use ScreenLines unless initialized */
if (ScreenLines == NULL)
return;
if (invert)
screen_char_attr = HL_INVERSE;
for (r = row; r < row + height; ++r)
@@ -6696,6 +6711,7 @@ screenalloc(clear)
unsigned *new_LineOffset;
char_u *new_LineWraps;
static int entered = FALSE; /* avoid recursiveness */
static int did_outofmem_msg = FALSE; /* did outofmem message */
/*
* Allocation of the screen buffers is done only when the size changes and
@@ -6790,7 +6806,15 @@ screenalloc(clear)
|| new_LineWraps == NULL
|| outofmem)
{
do_outofmem_msg((long_u)((Rows + 1) * Columns)); /* guess the size */
if (ScreenLines != NULL || !did_outofmem_msg)
{
/* guess the size */
do_outofmem_msg((long_u)((Rows + 1) * Columns));
/* Remember we did this to avoid getting outofmem messages over
* and over again. */
did_outofmem_msg = TRUE;
}
vim_free(new_ScreenLines);
new_ScreenLines = NULL;
#ifdef FEAT_MBYTE
@@ -6812,6 +6836,8 @@ screenalloc(clear)
}
else
{
did_outofmem_msg = FALSE;
for (new_row = 0; new_row < Rows; ++new_row)
{
new_LineOffset[new_row] = new_row * Columns;
@@ -6844,7 +6870,7 @@ screenalloc(clear)
(void)vim_memset(new_ScreenAttrs + new_row * Columns,
0, (size_t)Columns * sizeof(sattr_T));
old_row = new_row + (screen_Rows - Rows);
if (old_row >= 0)
if (old_row >= 0 && ScreenLines != NULL)
{
if (screen_Columns < Columns)
len = screen_Columns;