1
0
forked from aniani/vim

Fixed: after ":ownsyntax perl" and ":e" syntax was cleared in other window.

This commit is contained in:
Bram Moolenaar 2010-06-06 16:11:09 +02:00
parent 1950c3529b
commit fd29f4628e
6 changed files with 32 additions and 18 deletions

View File

@ -1085,9 +1085,14 @@ restored. (Luc St-Louis)
Vim 7.3:
- Included conceal patch.
HL disappears in other window:
:sp
:ownsyntax perl
:e
Documentation update:
remove w:ownsyntax, automatically set w:current_syntax to the value of
b:current_syntax after loading a syntax file.
:ownsyntax only sets w:current_syntax.
b:current_syntax after loading a syntax file. :ownsyntax only sets
w:current_syntax.
- using NSIS 2.46: install on Windows 7 works, but no "Edit with Vim" menu.
Use register_shell_extension()? (George Reilly, 2010 May 26)
Ron's version: http://dev.ronware.org/p/vim/finfo?name=gvim.nsi

View File

@ -1379,12 +1379,7 @@ enter_buffer(buf)
#endif
#ifdef FEAT_SYN_HL
if (curwin->w_s != &curwin->w_buffer->b_s)
{
/* Get rid of independant syntax */
syntax_clear(curwin->w_s);
vim_free(curwin->w_s);
}
reset_synblock(curwin);
curwin->w_s = &(buf->b_s);
#endif
/* Get the buffer in the current window. */

View File

@ -3571,6 +3571,9 @@ do_ecmd(fnum, ffname, sfname, eap, newlnum, flags, oldwin)
new_name = NULL;
#endif
buf_freeall(curbuf, FALSE, FALSE); /* free all things for buffer */
#ifdef FEAT_SYN_HL
reset_synblock(curwin); /* remove any ownsyntax */
#endif
#ifdef FEAT_AUTOCMD
/* If autocommands deleted the buffer we were going to re-edit, give
* up and jump to the end. */

View File

@ -6,6 +6,7 @@ void syntax_end_parsing __ARGS((linenr_T lnum));
int syntax_check_changed __ARGS((linenr_T lnum));
int get_syntax_attr __ARGS((colnr_T col, int *p_flags, int *can_spell, int keep_state));
void syntax_clear __ARGS((synblock_T *block));
void reset_synblock __ARGS((win_T *wp));
void ex_syntax __ARGS((exarg_T *eap));
void ex_ownsyntax __ARGS((exarg_T *eap));
int syntax_present __ARGS((win_T *win));

View File

@ -3420,6 +3420,21 @@ syntax_clear(block)
invalidate_current_state();
}
/*
* Get rid of ownsyntax for window "wp".
*/
void
reset_synblock(wp)
win_T *wp;
{
if (wp->w_s != &wp->w_buffer->b_s)
{
syntax_clear(wp->w_s);
vim_free(wp->w_s);
wp->w_s = &wp->w_buffer->b_s;
}
}
/*
* Clear syncing info for one buffer.
*/
@ -3538,7 +3553,6 @@ syn_cmd_clear(eap, syncing)
if (curwin->w_s == &curwin->w_buffer->b_s)
do_unlet((char_u *)"b:current_syntax", TRUE);
do_unlet((char_u *)"w:current_syntax", TRUE);
}
}
else

View File

@ -1176,7 +1176,8 @@ win_init(newp, oldp, flags)
newp->w_buffer = oldp->w_buffer;
#ifdef FEAT_SYN_HL
newp->w_s = oldp->w_s;
/* TODO: use reference count? */
newp->w_s = &(oldp->w_buffer->b_s);
#endif
oldp->w_buffer->b_nwindows++;
newp->w_cursor = oldp->w_cursor;
@ -4408,12 +4409,7 @@ win_free(wp, tp)
#endif /* FEAT_GUI */
#ifdef FEAT_SYN_HL
/* free independent synblock */
if (wp->w_s != &wp->w_buffer->b_s)
{
syntax_clear(wp->w_s);
vim_free(wp->w_s);
}
reset_synblock(wp); /* free independent synblock */
#endif
#ifdef FEAT_AUTOCMD