" Vim support file to detect file types in scripts
"
" Maintainer:	Bram Moolenaar <Bram@vim.org>
" Last change:	2010 Jul 29

" This file is called by an autocommand for every file that has just been
" loaded into a buffer.  It checks if the type of file can be recognized by
" the file contents.  The autocommand is in $VIMRUNTIME/filetype.vim.


" Only do the rest when the FileType autocommand has not been triggered yet.
if did_filetype()
  finish
endif

" Load the user defined scripts file first
" Only do this when the FileType autocommand has not been triggered yet
if exists("myscriptsfile") && filereadable(expand(myscriptsfile))
  execute "source " . myscriptsfile
  if did_filetype()
    finish
  endif
endif

" Line continuation is used here, remove 'C' from 'cpoptions'
let s:cpo_save = &cpo
set cpo&vim

let s:line1 = getline(1)

if s:line1 =~ "^#!"
  " A script that starts with "#!".

  " Check for a line like "#!/usr/bin/env VAR=val bash".  Turn it into
  " "#!/usr/bin/bash" to make matching easier.
  if s:line1 =~ '^#!\s*\S*\<env\s'
    let s:line1 = substitute(s:line1, '\S\+=\S\+', '', 'g')
    let s:line1 = substitute(s:line1, '\<env\s\+', '', '')
  endif

  " Get the program name.
  " Only accept spaces in PC style paths: "#!c:/program files/perl [args]".
  " If the word env is used, use the first word after the space:
  " "#!/usr/bin/env perl [path/args]"
  " If there is no path use the first word: "#!perl [path/args]".
  " Otherwise get the last word after a slash: "#!/usr/bin/perl [path/args]".
  if s:line1 =~ '^#!\s*\a:[/\\]'
    let s:name = substitute(s:line1, '^#!.*[/\\]\(\i\+\).*', '\1', '')
  elseif s:line1 =~ '^#!.*\<env\>'
    let s:name = substitute(s:line1, '^#!.*\<env\>\s\+\(\i\+\).*', '\1', '')
  elseif s:line1 =~ '^#!\s*[^/\\ ]*\>\([^/\\]\|$\)'
    let s:name = substitute(s:line1, '^#!\s*\([^/\\ ]*\>\).*', '\1', '')
  else
    let s:name = substitute(s:line1, '^#!\s*\S*[/\\]\(\i\+\).*', '\1', '')
  endif

  " tcl scripts may have #!/bin/sh in the first line and "exec wish" in the
  " third line.  Suggested by Steven Atkinson.
  if getline(3) =~ '^exec wish'
    let s:name = 'wish'
  endif

  " Bourne-like shell scripts: bash bash2 ksh ksh93 sh
  if s:name =~ '^\(bash\d*\|\|ksh\d*\|sh\)\>'
    call SetFileTypeSH(s:line1)	" defined in filetype.vim

    " csh scripts
  elseif s:name =~ '^csh\>'
    if exists("g:filetype_csh")
      call SetFileTypeShell(g:filetype_csh)
    else
      call SetFileTypeShell("csh")
    endif

    " tcsh scripts
  elseif s:name =~ '^tcsh\>'
    call SetFileTypeShell("tcsh")

    " Z shell scripts
  elseif s:name =~ '^zsh\>'
    set ft=zsh

    " TCL scripts
  elseif s:name =~ '^\(tclsh\|wish\|expectk\|itclsh\|itkwish\)\>'
    set ft=tcl

    " Expect scripts
  elseif s:name =~ '^expect\>'
    set ft=expect

    " Gnuplot scripts
  elseif s:name =~ '^gnuplot\>'
    set ft=gnuplot

    " Makefiles
  elseif s:name =~ 'make\>'
    set ft=make

    " Lua
  elseif s:name =~ 'lua'
    set ft=lua

    " Perl 6
  elseif s:name =~ 'perl6'
    set ft=perl6

    " Perl
  elseif s:name =~ 'perl'
    set ft=perl

    " PHP
  elseif s:name =~ 'php'
    set ft=php

    " Python
  elseif s:name =~ 'python'
    set ft=python

    " Groovy
  elseif s:name =~ '^groovy\>'
    set ft=groovy

    " Ruby
  elseif s:name =~ 'ruby'
    set ft=ruby

    " BC calculator
  elseif s:name =~ '^bc\>'
    set ft=bc

    " sed
  elseif s:name =~ 'sed\>'
    set ft=sed

    " OCaml-scripts
  elseif s:name =~ 'ocaml'
    set ft=ocaml

    " Awk scripts
  elseif s:name =~ 'awk\>'
    set ft=awk

    " Website MetaLanguage
  elseif s:name =~ 'wml'
    set ft=wml

    " Scheme scripts
  elseif s:name =~ 'scheme'
    set ft=scheme

    " CFEngine scripts
  elseif s:name =~ 'cfengine'
    set ft=cfengine

  endif
  unlet s:name

else
  " File does not start with "#!".

  let s:line2 = getline(2)
  let s:line3 = getline(3)
  let s:line4 = getline(4)
  let s:line5 = getline(5)

  " Bourne-like shell scripts: sh ksh bash bash2
  if s:line1 =~ '^:$'
    call SetFileTypeSH(s:line1)	" defined in filetype.vim

    " Z shell scripts
  elseif s:line1 =~ '^#compdef\>' || s:line1 =~ '^#autoload\>'
    set ft=zsh

  " ELM Mail files
  elseif s:line1 =~ '^From \([a-zA-Z][a-zA-Z_0-9\.=-]*\(@[^ ]*\)\=\|-\) .* \(19\|20\)\d\d$'
    set ft=mail

    " Mason
  elseif s:line1 =~ '^<[%&].*>'
    set ft=mason

    " Vim scripts (must have '" vim' as the first line to trigger this)
  elseif s:line1 =~ '^" *[vV]im$'
    set ft=vim

    " MOO
  elseif s:line1 =~ '^\*\* LambdaMOO Database, Format Version \%([1-3]\>\)\@!\d\+ \*\*$'
    set ft=moo

    " Diff file:
    " - "diff" in first line (context diff)
    " - "Only in " in first line
    " - "--- " in first line and "+++ " in second line (unified diff).
    " - "*** " in first line and "--- " in second line (context diff).
    " - "# It was generated by makepatch " in the second line (makepatch diff).
    " - "Index: <filename>" in the first line (CVS file)
    " - "=== ", line of "=", "---", "+++ " (SVK diff)
    " - "=== ", "--- ", "+++ " (bzr diff, common case)
    " - "=== (removed|added|renamed|modified)" (bzr diff, alternative)
  elseif s:line1 =~ '^\(diff\>\|Only in \|\d\+\(,\d\+\)\=[cda]\d\+\>\|# It was generated by makepatch \|Index:\s\+\f\+\r\=$\|===== \f\+ \d\+\.\d\+ vs edited\|==== //\f\+#\d\+\)'
	\ || (s:line1 =~ '^--- ' && s:line2 =~ '^+++ ')
	\ || (s:line1 =~ '^\* looking for ' && s:line2 =~ '^\* comparing to ')
	\ || (s:line1 =~ '^\*\*\* ' && s:line2 =~ '^--- ')
	\ || (s:line1 =~ '^=== ' && ((s:line2 =~ '^=\{66\}' && s:line3 =~ '^--- ' && s:line4 =~ '^+++') || (s:line2 =~ '^--- ' && s:line3 =~ '^+++ ')))
	\ || (s:line1 =~ '^=== \(removed\|added\|renamed\|modified\)')
    set ft=diff

    " PostScript Files (must have %!PS as the first line, like a2ps output)
  elseif s:line1 =~ '^%![ \t]*PS'
    set ft=postscr

    " M4 scripts: Guess there is a line that starts with "dnl".
  elseif s:line1 =~ '^\s*dnl\>'
	\ || s:line2 =~ '^\s*dnl\>'
	\ || s:line3 =~ '^\s*dnl\>'
	\ || s:line4 =~ '^\s*dnl\>'
	\ || s:line5 =~ '^\s*dnl\>'
    set ft=m4

    " AmigaDos scripts
  elseif $TERM == "amiga"
	\ && (s:line1 =~ "^;" || s:line1 =~ '^\.[bB][rR][aA]')
    set ft=amiga

    " SiCAD scripts (must have procn or procd as the first line to trigger this)
  elseif s:line1 =~? '^ *proc[nd] *$'
    set ft=sicad

    " Purify log files start with "****  Purify"
  elseif s:line1 =~ '^\*\*\*\*  Purify'
    set ft=purifylog

    " XML
  elseif s:line1 =~ '<?\s*xml.*?>'
    set ft=xml

    " XHTML (e.g.: PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN")
  elseif s:line1 =~ '\<DTD\s\+XHTML\s'
    set ft=xhtml

    " HTML (e.g.: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN")
  elseif s:line1 =~? '\<DOCTYPE\s\+html\>'
    set ft=html

    " PDF
  elseif s:line1 =~ '^%PDF-'
    set ft=pdf

    " XXD output
  elseif s:line1 =~ '^\x\{7}: \x\{2} \=\x\{2} \=\x\{2} \=\x\{2} '
    set ft=xxd

    " RCS/CVS log output
  elseif s:line1 =~ '^RCS file:' || s:line2 =~ '^RCS file:'
    set ft=rcslog

    " CVS commit
  elseif s:line2 =~ '^CVS:' || getline("$") =~ '^CVS: '
    set ft=cvs

    " Prescribe
  elseif s:line1 =~ '^!R!'
    set ft=prescribe

    " Send-pr
  elseif s:line1 =~ '^SEND-PR:'
    set ft=sendpr

    " SNNS files
  elseif s:line1 =~ '^SNNS network definition file'
    set ft=snnsnet
  elseif s:line1 =~ '^SNNS pattern definition file'
    set ft=snnspat
  elseif s:line1 =~ '^SNNS result file'
    set ft=snnsres

    " Virata
  elseif s:line1 =~ '^%.\{-}[Vv]irata'
	\ || s:line2 =~ '^%.\{-}[Vv]irata'
	\ || s:line3 =~ '^%.\{-}[Vv]irata'
	\ || s:line4 =~ '^%.\{-}[Vv]irata'
	\ || s:line5 =~ '^%.\{-}[Vv]irata'
    set ft=virata

    " Strace
  elseif s:line1 =~ '^\(\[pid \d\+\] \)\=[0-9:.]* *execve(' || s:line1 =~ '^__libc_start_main'
    set ft=strace

    " VSE JCL
  elseif s:line1 =~ '^\* $$ JOB\>' || s:line1 =~ '^// *JOB\>'
    set ft=vsejcl

    " TAK and SINDA
  elseif s:line4 =~ 'K & K  Associates' || s:line2 =~ 'TAK 2000'
    set ft=takout
  elseif s:line3 =~ 'S Y S T E M S   I M P R O V E D '
    set ft=sindaout
  elseif getline(6) =~ 'Run Date: '
    set ft=takcmp
  elseif getline(9) =~ 'Node    File  1'
    set ft=sindacmp

    " DNS zone files
  elseif s:line1.s:line2.s:line3.s:line4 =~ '^; <<>> DiG [0-9.]\+ <<>>\|BIND.*named\|$ORIGIN\|$TTL\|IN\s\+SOA'
    set ft=bindzone

    " BAAN
  elseif s:line1 =~ '|\*\{1,80}' && s:line2 =~ 'VRC '
	\ || s:line2 =~ '|\*\{1,80}' && s:line3 =~ 'VRC '
    set ft=baan

  " Valgrind
  elseif s:line1 =~ '^==\d\+== valgrind' || s:line3 =~ '^==\d\+== Using valgrind'
    set ft=valgrind

  " Renderman Interface Bytestream
  elseif s:line1 =~ '^##RenderMan'
    set ft=rib

  " Scheme scripts
  elseif s:line1 =~ 'exec\s\+\S*scheme' || s:line2 =~ 'exec\s\+\S*scheme'
    set ft=scheme

  " Git output
  elseif s:line1 =~ '^\(commit\|tree\|object\) \x\{40\}\>\|^tag \S\+$'
    set ft=git

  " CVS diff
  else
    let s:lnum = 1
    while getline(s:lnum) =~ "^? " && s:lnum < line("$")
      let s:lnum += 1
    endwhile
    if getline(s:lnum) =~ '^Index:\s\+\f\+$'
      set ft=diff

      " locale input files: Formal Definitions of Cultural Conventions
      " filename must be like en_US, fr_FR@euro or en_US.UTF-8
    elseif expand("%") =~ '\a\a_\a\a\($\|[.@]\)\|i18n$\|POSIX$\|translit_'
      let s:lnum = 1
      while s:lnum < 100 && s:lnum < line("$")
	if getline(s:lnum) =~ '^LC_\(IDENTIFICATION\|CTYPE\|COLLATE\|MONETARY\|NUMERIC\|TIME\|MESSAGES\|PAPER\|TELEPHONE\|MEASUREMENT\|NAME\|ADDRESS\)$'
	  setf fdcc
	  break
	endif
	let s:lnum += 1
      endwhile
    endif
    unlet s:lnum

  endif

  unlet s:line2 s:line3 s:line4 s:line5

endif

" Restore 'cpoptions'
let &cpo = s:cpo_save

unlet s:cpo_save s:line1
