nye17
nye17

Reputation: 13357

Syntax highlighting randomly disappears during file saving

I'm using vim to edit some python files and recently it occurs sporadically that the syntax highlighting disappears after I save the buffer inside vim. I tried to reset syntax on and set filetype=python but to no avail. I have no clue of what causes this problem at all, so right now I have minimal diagnostic info. But has anyone encountered this before, or where could things break down?

Upvotes: 8

Views: 4176

Answers (4)

Piotr N.
Piotr N.

Reputation: 55

You can first save file with

:w

And afterwards refresh the buffer with

:e

Upvotes: 0

j5shi
j5shi

Reputation: 867

You can also restore the syntax by reloading the buffer simply by:

:e

Upvotes: 4

nye17
nye17

Reputation: 13357

Now after a while I realize the screwy highlighting is caused by folding rather than than any mysterious forces associated with file saving, so a simple fix* would be to put the following in my vimrc

noremap <F9> <Esc>:syntax sync fromstart<CR>
inoremap <F9> <C-o>:syntax sync fromstart<CR>

and press F9 whenever something screwy happens.

  • Solution discovered from here

Upvotes: 2

244an
244an

Reputation: 1589

This is not a solution, but it's hard to write/read in the comments.

I meant that I was messing around with syntax/highlighting when I start to fix my own .vimrc, thats why I noticed it.
syntax on / syntax enable is only preparing for file load stuff (adding a lot of au to BufNewFile / BufRead). So if some plugin is messing with syntax/highlight settings when writing the file, the file must be loaded again for all "magic" to happen, it's not enough with setting filetype. Do :au BufRead and you will see all autocommands added when starting syntax. But the file must be loaded then to get all settigs.
See this:> syntax-loading

If you don't want to reload the file, try syntax enable, I think that is different to syntax on.
Or try also doing :doautocmd filetypedetect BufRead %, see > autocmd-execute

I don't know what is causing the problem, can it be you? If you added some autocommands, or doing own colors/syntax?
Otherwise, until you get a solution, you can perhaps try to add autocmd BufWritePost * <with the commands above that works> at the end of your .vimrc, use augroup in that case.

Here is an example:

augroup myResetSyntax
  au!
  autocmd BufWritePost * syntax enable | doautocmd filetypedetect BufRead "%"
augroup END

Upvotes: 5

Related Questions