if did_filetype()
finish
endif
if exists("myscriptsfile") && filereadable(expand(myscriptsfile))
execute "source " . myscriptsfile
if did_filetype()
finish
endif
endif
let s:cpo_save = &cpo
set cpo&vim
let s:line1 = getline(1)
if s:line1 =~# "^#!"
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
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
if getline(3) =~# '^exec wish'
let s:name = 'wish'
endif
if s:name =~# '^\(bash\d*\|\|ksh\d*\|sh\)\>'
call dist#ft#SetFileTypeSH(s:line1)	" defined in filetype.vim
elseif s:name =~# '^csh\>'
if exists("g:filetype_csh")
call dist#ft#SetFileTypeShell(g:filetype_csh)
else
call dist#ft#SetFileTypeShell("csh")
endif
elseif s:name =~# '^tcsh\>'
call dist#ft#SetFileTypeShell("tcsh")
elseif s:name =~# '^zsh\>'
set ft=zsh
elseif s:name =~# '^\(tclsh\|wish\|expectk\|itclsh\|itkwish\)\>'
set ft=tcl
elseif s:name =~# '^expect\>'
set ft=expect
elseif s:name =~# '^gnuplot\>'
set ft=gnuplot
elseif s:name =~# 'make\>'
set ft=make
elseif s:name =~# '^pike\%(\>\|[0-9]\)'
set ft=pike
elseif s:name =~# 'lua'
set ft=lua
elseif s:name =~# 'perl6'
set ft=perl6
elseif s:name =~# 'perl'
set ft=perl
elseif s:name =~# 'php'
set ft=php
elseif s:name =~# 'python'
set ft=python
elseif s:name =~# '^groovy\>'
set ft=groovy
elseif s:name =~# 'ruby'
set ft=ruby
elseif s:name =~# 'node\(js\)\=\>\|js\>' || s:name =~# 'rhino\>'
set ft=javascript
elseif s:name =~# '^bc\>'
set ft=bc
elseif s:name =~# 'sed\>'
set ft=sed
elseif s:name =~# 'ocaml'
set ft=ocaml
elseif s:name =~# 'awk\>'
set ft=awk
elseif s:name =~# 'wml'
set ft=wml
elseif s:name =~# 'scheme'
set ft=scheme
elseif s:name =~# 'cfengine'
set ft=cfengine
elseif s:name =~# 'escript'
set ft=erlang
elseif s:name =~# 'haskell'
set ft=haskell
elseif s:name =~# 'scala\>'
set ft=scala
elseif s:name =~# 'clojure'
set ft=clojure
endif
unlet s:name
else
let s:line2 = getline(2)
let s:line3 = getline(3)
let s:line4 = getline(4)
let s:line5 = getline(5)
if s:line1 =~# '^:$'
call dist#ft#SetFileTypeSH(s:line1)	" defined in filetype.vim
elseif s:line1 =~# '^#compdef\>' || s:line1 =~# '^#autoload\>' ||
\ "\n".s:line1."\n".s:line2."\n".s:line3."\n".s:line4."\n".s:line5 =~# '\n\s*emulate\s\+\%(-[LR]\s\+\)\=[ckz]\=sh\>'
set ft=zsh
elseif s:line1 =~# '^From \([a-zA-Z][a-zA-Z_0-9\.=-]*\(@[^ ]*\)\=\|-\) .* \(19\|20\)\d\d$'
set ft=mail
elseif s:line1 =~# '^<[%&].*>'
set ft=mason
elseif s:line1 =~# '^" *[vV]im$'
set ft=vim
elseif s:line1 =~? '-\*-.*C++.*-\*-'
set ft=cpp
elseif s:line1 =~# '^\*\* LambdaMOO Database, Format Version \%([1-3]\>\)\@!\d\+ \*\*$'
set ft=moo
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\+\|# HG changeset patch\)'
\ || (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
elseif s:line1 =~# '^%![ \t]*PS'
set ft=postscr
elseif s:line1 =~# '^\s*dnl\>'
\ || s:line2 =~# '^\s*dnl\>'
\ || s:line3 =~# '^\s*dnl\>'
\ || s:line4 =~# '^\s*dnl\>'
\ || s:line5 =~# '^\s*dnl\>'
set ft=m4
elseif $TERM == "amiga"
\ && (s:line1 =~# "^;" || s:line1 =~? '^\.bra')
set ft=amiga
elseif s:line1 =~? '^ *proc[nd] *$'
set ft=sicad
elseif s:line1 =~# '^\*\*\*\*  Purify'
set ft=purifylog
elseif s:line1 =~# '<?\s*xml.*?>'
set ft=xml
elseif s:line1 =~# '\<DTD\s\+XHTML\s'
set ft=xhtml
elseif s:line1 =~? '<!DOCTYPE\s\+html\>'
set ft=html
elseif s:line1 =~# '^%PDF-'
set ft=pdf
elseif s:line1 =~# '^\x\{7}: \x\{2} \=\x\{2} \=\x\{2} \=\x\{2} '
set ft=xxd
elseif s:line1 =~# '^RCS file:' || s:line2 =~# '^RCS file:'
set ft=rcslog
elseif s:line2 =~# '^CVS:' || getline("$") =~# '^CVS: '
set ft=cvs
elseif s:line1 =~# '^!R!'
set ft=prescribe
elseif s:line1 =~# '^SEND-PR:'
set ft=sendpr
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
elseif s:line1 =~# '^%.\{-}[Vv]irata'
\ || s:line2 =~# '^%.\{-}[Vv]irata'
\ || s:line3 =~# '^%.\{-}[Vv]irata'
\ || s:line4 =~# '^%.\{-}[Vv]irata'
\ || s:line5 =~# '^%.\{-}[Vv]irata'
set ft=virata
elseif s:line1 =~# '[0-9:.]* *execve(' || s:line1 =~# '^__libc_start_main'
set ft=strace
elseif s:line1 =~# '^\* $$ JOB\>' || s:line1 =~# '^// *JOB\>'
set ft=vsejcl
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
elseif s:line1.s:line2.s:line3.s:line4 =~# '^; <<>> DiG [0-9.]\+.* <<>>\|$ORIGIN\|$TTL\|IN\s\+SOA'
set ft=bindzone
elseif s:line1 =~# '|\*\{1,80}' && s:line2 =~# 'VRC '
\ || s:line2 =~# '|\*\{1,80}' && s:line3 =~# 'VRC '
set ft=baan
elseif s:line1 =~# '^==\d\+== valgrind' || s:line3 =~# '^==\d\+== Using valgrind'
set ft=valgrind
elseif s:line1 =~# '^PACKAGE DOCUMENTATION$'
set ft=godoc
elseif s:line1 =~# '^##RenderMan'
set ft=rib
elseif s:line1 =~# 'exec\s\+\S*scheme' || s:line2 =~# 'exec\s\+\S*scheme'
set ft=scheme
elseif s:line1 =~# '^\(commit\|tree\|object\) \x\{40\}\>\|^tag \S\+$'
set ft=git
elseif s:line1 == 'Flat profile:'
\ && s:line2 == ''
\ && s:line3 =~# '^Each sample counts as .* seconds.$'
set ft=gprof
elseif s:line1 =~? '-\*-.*erlang.*-\*-'
set ft=erlang
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
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
let &cpo = s:cpo_save
unlet s:cpo_save s:line1
