aboutsummaryrefslogblamecommitdiff
path: root/vim/filetype.vim
blob: 3e2446109392d712924231559de4c6d7e696b35b (plain) (tree)
1
2
3
4
5
6
7
8
9








                                 
















































































































































































































































                                                                           

                         
 
" Override filetypes.vim
if exists('g:did_load_filetypes')
  finish
endif
let g:did_load_filetypes = 1

" Use only the rules in ftdetect
augroup filetypedetect
  autocmd!

  " AWK files
  autocmd BufNewFile,BufRead
        \ *.awk
        \ setfiletype awk
  autocmd BufNewFile,BufRead
        \ *
        \   if getline(1) =~# '\m^#!.*\<[gm]\?awk\>'
        \ |   setfiletype awk
        \ | endif
  " C files
  autocmd BufNewFile,BufRead
        \ *.c,*.h
        \ setfiletype c
  " C++ files
  autocmd BufNewFile,BufRead
        \ *.c++,*.cpp,*.cxx,*.hh
        \ setfiletype cpp
  " CSS files
  autocmd BufNewFile,BufRead
        \ *.css
        \ setfiletype css
  " CSV files
  autocmd BufNewFile,BufRead
        \ *.csv
        \ setfiletype csv
  " Diff and patch files
  autocmd BufNewFile,BufRead
        \ *.diff,*.patch,*.rej
        \ setfiletype diff
  " Git commit messages
  autocmd BufNewFile,BufRead
        \ COMMIT_EDITMSG,MERGE_MSG,TAG_EDITMSG
        \ setfiletype gitcommit
  " Git config files
  autocmd BufNewFile,BufRead
        \ *.git*/config,.gitconfig,.gitmodules
        \ setfiletype gitconfig
  " GnuPG configuration files
  autocmd BufNewFile,BufRead
        \ *gnupg/options,*gnupg/gpg.conf
        \ setfiletype gpg
  " HTML files
  autocmd BufNewFile,BufRead
        \ *.html,*.htm
        \ setfiletype html
  " Java files
  autocmd BufNewFile,BufRead
        \ *.java,*.jav
        \ setfiletype java
  " JSON files
  autocmd BufNewFile,BufRead
        \ *.js
        \ setfiletype javascript
  " JSON files
  autocmd BufNewFile,BufRead
        \ *.json
        \ setfiletype json
  " Lex files
  autocmd BufNewFile,BufRead
        \ *.l,*.lex
        \ setfiletype lex
  " Lua files
  autocmd BufNewFile,BufRead
        \ *.lua
        \ setfiletype lua
  " m4 files
  autocmd BufNewFile,BufRead
        \ *.m4
        \ setfiletype m4
  " Mail messages
  autocmd BufNewFile,BufRead
        \ *.msg,mutt-*-*-*
        \ setfiletype mail
  " Makefiles
  autocmd BufNewFile,BufRead
        \ Makefile,makefile
        \ setfiletype make
  " Markdown files
  autocmd BufNewFile,BufRead
        \ *.markdown,*.md
        \ setfiletype markdown
  " Add automatic commands to detect .muttrc files
  autocmd BufNewFile,BufRead
        \ Muttrc,.muttrc,*muttrc.d/*.rc
        \ setfiletype muttrc
  " Perl 5 files
  autocmd BufNewFile,BufRead
        \ *.pl,*.pm,*.t,Makefile.PL
        \ setfiletype perl
  autocmd BufNewFile,BufRead
        \ *
        \   if getline(1) =~# '\m^#!.*\<perl\>'
        \ |   setfiletype perl
        \ | endif
  " Perl 6 files
  autocmd BufNewFile,BufRead
        \ *.p6,*.pl6,*.pm6
        \ setfiletype perl6
  autocmd BufNewFile,BufRead
        \ *
        \   if getline(1) =~# '\m^#!.\<perl6\>'
        \ |   setfiletype perl6
        \ | endif
  " PHP files
  autocmd BufNewFile,BufRead
        \ *.php
        \ setfiletype php
  autocmd BufNewFile,BufRead
        \ *
        \   if getline(1) =~# '\m^#!.\<php\>'
        \ |   setfiletype php
        \ | endif
        \ | if getline(1) =~? '\m^<?php\>'
        \ |   setfiletype php
        \ | endif
  " Perl 5 POD files
  autocmd BufNewFile,BufRead
        \ *.pod
        \ setfiletype pod
  " Perl 6 POD files
  autocmd BufNewFile,BufRead
        \ *.pod6
        \ setfiletype pod6
  " Python files
  autocmd BufNewFile,BufRead
        \ *.py
        \ setfiletype python
  autocmd BufNewFile,BufRead
        \ *
        \ if getline(1) =~# '\m^#!.*\<python[23]\?\>'
        \ |   setfiletype python
        \ | endif
  " Readline configuration file
  autocmd BufNewFile,BufRead
        \ .inputrc,inputrc
        \ setfiletype readline
  " Remind files
  autocmd BufNewFile,BufRead
        \ *.rem,*.remind,.reminders
        \ setfiletype remind
  " Bash filename patterns
  autocmd BufNewFile,BufRead
        \ *.bash,
        \.bash_aliases,
        \.bash_logout,
        \.bash_profile,
        \.bashrc,
        \bash-fc-*,
        \bash_profile,
        \bashrc
        \ let b:is_bash = 1
        \ | setfiletype sh
  " Korn shell filename patterns
  autocmd BufNewFile,BufRead
        \ *.ksh,
        \.kshrc,
        \kshrc
        \ let b:is_kornshell = 1
        \ | setfiletype sh
  " POSIX/Bourne shell filename patterns
  autocmd BufNewFile,BufRead
        \ *.sh,
        \.profile,
        \.shinit,
        \.shrc,
        \.xinitrc,
        \/etc/default/*,
        \configure,
        \profile,
        \shinit,
        \shrc,
        \xinitrc
        \ let b:is_posix = 1
        \ | setfiletype sh
  " If this file has a shebang, and we haven't already decided it's Bash or
  " Korn shell, use the shebang to decide
  autocmd BufNewFile,BufRead
        \ *
        \   if !exists('b:is_bash') && !exists('b:is_kornshell')
        \ |   if getline(1) =~# '\m^#!.*\<bash\>'
        \ |     let b:is_bash = 1
        \ |     setfiletype sh
        \ |   elseif getline(1) =~# '\m^#!.*\<ksh\>'
        \ |     let b:is_ksh = 1
        \ |     setfiletype sh
        \ |   elseif getline(1) =~# '\m^#!.*\<sh\>'
        \ |     let b:is_posix = 1
        \ |     setfiletype sh
        \ |   endif
        \ | endif
  " tmux configuration files
  autocmd BufNewFile,BufRead
        \ .tmux.conf,tmux.conf
        \ setfiletype tmux
  " roff files
  autocmd BufNewFile,BufRead
        \ *.[1-9],*.[1-9]df
        \ setfiletype nroff
  " Tab-separated (TSV) files
  autocmd BufNewFile,BufRead
        \ *.tsv
        \ setfiletype tsv
  " VimL files
  autocmd BufNewFile,BufRead
        \ *.vim,vimrc,*[._]vimrc,exrc,*[._]exrc
        \ setfiletype vim
  " .viminfo files
  autocmd BufNewFile,BufRead
        \ .viminfo
        \ setfiletype viminfo
  " Add automatic commands to find Xresources subfiles
  autocmd BufNewFile,BufRead
        \ .Xresources,*/.Xresources.d/*
        \ setfiletype xdefaults
  " XHTML files
  autocmd BufNewFile,BufRead
        \ *.xhtml,*.xht
        \ setfiletype xhtml
  " XML files
  autocmd BufNewFile,BufRead
        \ *.xml
        \ setfiletype xml
  " Yacc files
  autocmd BufNewFile,BufRead
        \ *.y,*.yy
        \ setfiletype yacc
  " YAML files
  autocmd BufNewFile,BufRead
        \ *.yaml
        \ setfiletype yaml
  " Z shell files
  autocmd BufNewFile,BufRead
        \ *.zsh,.zprofile,zprofile,.zshrc,zshrc
        \ setfiletype zsh
  autocmd BufNewFile,BufRead
        \ *
        \   if getline(1) =~# '^#!.*\<zsh\>'
        \ |   setfiletype zsh
        \ | endif

  runtime! ftdetect/*.vim
augroup END