Permalink
Browse files

patch 8.0.0649: when opening a help file the filetype is set several …

…times

Problem:    When opening a help file the filetype is set several times.
Solution:   When setting the filetype to the same value from a modeline, don't
            trigger FileType autocommands.  Don't set the filetype to "help"
            when it's already set correctly.
  • Loading branch information...
brammool committed Jun 22, 2017
1 parent fadacf0 commit 9049298f8d0bbc237b7c666c7ad6cdabe738e8fc
Showing with 22 additions and 6 deletions.
  1. +4 −1 runtime/filetype.vim
  2. +3 −2 src/ex_cmds.c
  3. +13 −3 src/option.c
  4. +2 −0 src/version.c
View
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2017 Jun 12
" Last Change: 2017 Jun 20
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -48,6 +48,9 @@ func! s:StarSetf(ft)
endif
endfunc
" Vim help file
au BufNewFile,BufRead $VIMRUNTIME/doc/*.txt setf help
" Abaqus or Trasys
au BufNewFile,BufRead *.inp call s:Check_inp()
View
@@ -6832,8 +6832,9 @@ fix_help_buffer(void)
char_u *rt;
int mustfree;
/* set filetype to "help". */
set_option_value((char_u *)"ft", 0L, (char_u *)"help", OPT_LOCAL);
/* Set filetype to "help" if still needed. */
if (STRCMP(curbuf->b_p_ft, "help") != 0)
set_option_value((char_u *)"ft", 0L, (char_u *)"help", OPT_LOCAL);
#ifdef FEAT_SYN_HL
if (!syntax_present(curwin))
View
@@ -6009,6 +6009,9 @@ did_set_string_option(
/* set when changing an option that only requires a redraw in the GUI */
int redraw_gui_only = FALSE;
#endif
#ifdef FEAT_AUTOCMD
int ft_changed = FALSE;
#endif
/* Get the global option to compare with, otherwise we would have to check
* two values for all local options. */
@@ -7418,6 +7421,8 @@ did_set_string_option(
{
if (!valid_filetype(*varp))
errmsg = e_invarg;
else
ft_changed = STRCMP(oldval, *varp) != 0;
}
#endif
@@ -7531,10 +7536,15 @@ did_set_string_option(
# endif
else if (varp == &(curbuf->b_p_ft))
{
/* 'filetype' is set, trigger the FileType autocommand */
did_filetype = TRUE;
apply_autocmds(EVENT_FILETYPE, curbuf->b_p_ft,
/* 'filetype' is set, trigger the FileType autocommand.
* Skip this when called from a modeline and the filetype was
* already set to this value. */
if (!(opt_flags & OPT_MODELINE) || ft_changed)
{
did_filetype = TRUE;
apply_autocmds(EVENT_FILETYPE, curbuf->b_p_ft,
curbuf->b_fname, TRUE, curbuf);
}
}
#endif
#ifdef FEAT_SPELL
View
@@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
649,
/**/
648,
/**/

0 comments on commit 9049298

Please sign in to comment.