History Report a problem
Article Edit this page Discussion

Allow Inform header files to be distinguished from C headers

From Vim Tips Wiki

Jump to: navigation, search
 

Tip 410Previous TipNext Tip

Created: January 22, 2003 Complexity: intermediate Author: Stephen Thomas, Ross Presser, Neil Cerruti Minimum version: 6.0 Karma: 19/7 Imported from: Tip#410


Inform is an Interactive Fiction authoring language. Its header files often use a '.h' extension, which causes Vim to think they are C files, or do not have any extension at all, leaving Vim unable to determine what kind of file they are. This is irritating to Inform developers using Vim with syntax highlighting.

The solution is to use a custom 'filetype.vim' and 'scripts.vim'. Create a '$HOME/.vim/filetype.vim':

if exists("did_load_filetypes")
  finish
endif
augroup filetypedetect
  au BufNewFile,BufRead *.h call FTCheck_inform()
augroup END

" function to detect inform code (any extension)
fun! FTCheck_inform()
  if getline(1) =~ "^!"
    setfiletype inform
  elseif getline(2) =~ "^!"
    setfiletype inform
  else
    let s:colnum = col('.')
    let s:linenum = line('.')
    call cursor(500, 1)
    if search('\[\(\s*\I\i*\)*\s*;', 'bW') > 0
      setfiletype inform
    endif
    call cursor(s:linenum, s:colnum)
  endif
endfun

On loading a file with a '.h' extension, a function is called to examine the file for certain Inform-specific constructs. If it finds any, it sets the filetype as inform, otherwise it leaves the filetype unset, allowing the global 'filetype.vim' to determine the filetype.

For files with no extension, create a '$HOME/.vim/scripts.vim':

" local scripts.vim gets called when
" all autocommands have failed to identify file type,
" but before global scripts.vim
"
call FTCheck_inform()

See also the site http://www.stephenthomas.uklinux.net/informvim

[edit] Comments


Rate this article:

Share this article:

Hubs Highlights International Sites Wikia messages
Entertainment
Gaming
Cartoons & Comics
Science Fiction
Hobbies
Sports
See all...
Grand Theft Auto
Terminator Wiki
Legend of Zelda Wiki
Flash Gordon
Everquest II Wiki
Yo-Yo Wiki
German
Spanish
Chinese
Japanese
More...
Wikia is hiring for several open positions
Send this article to a friend
"Allow Inform header files to be distinguished from C headers"
 
 
Hi!

I thought you'd like this page from Wikia!

http://vim.wikia.com

Come check it out!
Send confirmation