mirror of
https://github.com/vim/vim.git
synced 2025-08-30 20:43:35 -04:00
patch 9.0.1519: global 'filetype' is set when detected from file content
Problem: Global 'filetype' is set when it is detected from the file content. Solution: Set the local 'filetype' option value.
This commit is contained in:
parent
34a6a3617b
commit
0b70aeb49d
152
runtime/autoload/dist/script.vim
vendored
152
runtime/autoload/dist/script.vim
vendored
@ -71,131 +71,131 @@ def DetectFromHashBang(firstline: string)
|
||||
|
||||
# Z shell scripts
|
||||
elseif name =~ '^zsh\>'
|
||||
set ft=zsh
|
||||
setl ft=zsh
|
||||
|
||||
# TCL scripts
|
||||
elseif name =~ '^\(tclsh\|wish\|expectk\|itclsh\|itkwish\)\>'
|
||||
set ft=tcl
|
||||
setl ft=tcl
|
||||
|
||||
# Expect scripts
|
||||
elseif name =~ '^expect\>'
|
||||
set ft=expect
|
||||
setl ft=expect
|
||||
|
||||
# Gnuplot scripts
|
||||
elseif name =~ '^gnuplot\>'
|
||||
set ft=gnuplot
|
||||
setl ft=gnuplot
|
||||
|
||||
# Makefiles
|
||||
elseif name =~ 'make\>'
|
||||
set ft=make
|
||||
setl ft=make
|
||||
|
||||
# Pike
|
||||
elseif name =~ '^pike\%(\>\|[0-9]\)'
|
||||
set ft=pike
|
||||
setl ft=pike
|
||||
|
||||
# Lua
|
||||
elseif name =~ 'lua'
|
||||
set ft=lua
|
||||
setl ft=lua
|
||||
|
||||
# Perl
|
||||
elseif name =~ 'perl'
|
||||
set ft=perl
|
||||
setl ft=perl
|
||||
|
||||
# PHP
|
||||
elseif name =~ 'php'
|
||||
set ft=php
|
||||
setl ft=php
|
||||
|
||||
# Python
|
||||
elseif name =~ 'python'
|
||||
set ft=python
|
||||
setl ft=python
|
||||
|
||||
# Groovy
|
||||
elseif name =~ '^groovy\>'
|
||||
set ft=groovy
|
||||
setl ft=groovy
|
||||
|
||||
# Raku
|
||||
elseif name =~ 'raku'
|
||||
set ft=raku
|
||||
setl ft=raku
|
||||
|
||||
# Ruby
|
||||
elseif name =~ 'ruby'
|
||||
set ft=ruby
|
||||
setl ft=ruby
|
||||
|
||||
# JavaScript
|
||||
elseif name =~ 'node\(js\)\=\>\|js\>' || name =~ 'rhino\>'
|
||||
set ft=javascript
|
||||
setl ft=javascript
|
||||
|
||||
# BC calculator
|
||||
elseif name =~ '^bc\>'
|
||||
set ft=bc
|
||||
setl ft=bc
|
||||
|
||||
# sed
|
||||
elseif name =~ 'sed\>'
|
||||
set ft=sed
|
||||
setl ft=sed
|
||||
|
||||
# OCaml-scripts
|
||||
elseif name =~ 'ocaml'
|
||||
set ft=ocaml
|
||||
setl ft=ocaml
|
||||
|
||||
# Awk scripts; also finds "gawk"
|
||||
elseif name =~ 'awk\>'
|
||||
set ft=awk
|
||||
setl ft=awk
|
||||
|
||||
# Website MetaLanguage
|
||||
elseif name =~ 'wml'
|
||||
set ft=wml
|
||||
setl ft=wml
|
||||
|
||||
# Scheme scripts
|
||||
elseif name =~ 'scheme'
|
||||
set ft=scheme
|
||||
setl ft=scheme
|
||||
|
||||
# CFEngine scripts
|
||||
elseif name =~ 'cfengine'
|
||||
set ft=cfengine
|
||||
setl ft=cfengine
|
||||
|
||||
# Erlang scripts
|
||||
elseif name =~ 'escript'
|
||||
set ft=erlang
|
||||
setl ft=erlang
|
||||
|
||||
# Haskell
|
||||
elseif name =~ 'haskell'
|
||||
set ft=haskell
|
||||
setl ft=haskell
|
||||
|
||||
# Scala
|
||||
elseif name =~ 'scala\>'
|
||||
set ft=scala
|
||||
setl ft=scala
|
||||
|
||||
# Clojure
|
||||
elseif name =~ 'clojure'
|
||||
set ft=clojure
|
||||
setl ft=clojure
|
||||
|
||||
# Free Pascal
|
||||
elseif name =~ 'instantfpc\>'
|
||||
set ft=pascal
|
||||
setl ft=pascal
|
||||
|
||||
# Fennel
|
||||
elseif name =~ 'fennel\>'
|
||||
set ft=fennel
|
||||
setl ft=fennel
|
||||
|
||||
# MikroTik RouterOS script
|
||||
elseif name =~ 'rsc\>'
|
||||
set ft=routeros
|
||||
setl ft=routeros
|
||||
|
||||
# Fish shell
|
||||
elseif name =~ 'fish\>'
|
||||
set ft=fish
|
||||
setl ft=fish
|
||||
|
||||
# Gforth
|
||||
elseif name =~ 'gforth\>'
|
||||
set ft=forth
|
||||
setl ft=forth
|
||||
|
||||
# Icon
|
||||
elseif name =~ 'icon\>'
|
||||
set ft=icon
|
||||
setl ft=icon
|
||||
|
||||
# Guile
|
||||
elseif name =~ 'guile'
|
||||
set ft=scheme
|
||||
setl ft=scheme
|
||||
|
||||
endif
|
||||
enddef
|
||||
@ -218,28 +218,28 @@ def DetectFromText(line1: string)
|
||||
|| "\n" .. line1 .. "\n" .. line2 .. "\n" .. line3 ..
|
||||
"\n" .. line4 .. "\n" .. line5
|
||||
=~ '\n\s*emulate\s\+\%(-[LR]\s\+\)\=[ckz]\=sh\>'
|
||||
set ft=zsh
|
||||
setl ft=zsh
|
||||
|
||||
# ELM Mail files
|
||||
elseif line1 =~ '^From \([a-zA-Z][a-zA-Z_0-9\.=-]*\(@[^ ]*\)\=\|-\) .* \(19\|20\)\d\d$'
|
||||
set ft=mail
|
||||
setl ft=mail
|
||||
|
||||
# Mason
|
||||
elseif line1 =~ '^<[%&].*>'
|
||||
set ft=mason
|
||||
setl ft=mason
|
||||
|
||||
# Vim scripts (must have '" vim' as the first line to trigger this)
|
||||
elseif line1 =~ '^" *[vV]im$'
|
||||
set ft=vim
|
||||
setl ft=vim
|
||||
|
||||
# libcxx and libstdc++ standard library headers like "iostream" do not have
|
||||
# an extension, recognize the Emacs file mode.
|
||||
elseif line1 =~? '-\*-.*C++.*-\*-'
|
||||
set ft=cpp
|
||||
setl ft=cpp
|
||||
|
||||
# MOO
|
||||
elseif line1 =~ '^\*\* LambdaMOO Database, Format Version \%([1-3]\>\)\@!\d\+ \*\*$'
|
||||
set ft=moo
|
||||
setl ft=moo
|
||||
|
||||
# Diff file:
|
||||
# - "diff" in first line (context diff)
|
||||
@ -258,11 +258,11 @@ def DetectFromText(line1: string)
|
||||
|| (line1 =~ '^\*\*\* ' && line2 =~ '^--- ')
|
||||
|| (line1 =~ '^=== ' && ((line2 =~ '^=\{66\}' && line3 =~ '^--- ' && line4 =~ '^+++') || (line2 =~ '^--- ' && line3 =~ '^+++ ')))
|
||||
|| (line1 =~ '^=== \(removed\|added\|renamed\|modified\)')
|
||||
set ft=diff
|
||||
setl ft=diff
|
||||
|
||||
# PostScript Files (must have %!PS as the first line, like a2ps output)
|
||||
elseif line1 =~ '^%![ \t]*PS'
|
||||
set ft=postscr
|
||||
setl ft=postscr
|
||||
|
||||
# M4 scripts: Guess there is a line that starts with "dnl".
|
||||
elseif line1 =~ '^\s*dnl\>'
|
||||
@ -270,64 +270,64 @@ def DetectFromText(line1: string)
|
||||
|| line3 =~ '^\s*dnl\>'
|
||||
|| line4 =~ '^\s*dnl\>'
|
||||
|| line5 =~ '^\s*dnl\>'
|
||||
set ft=m4
|
||||
setl ft=m4
|
||||
|
||||
# AmigaDos scripts
|
||||
elseif $TERM == "amiga" && (line1 =~ "^;" || line1 =~? '^\.bra')
|
||||
set ft=amiga
|
||||
setl ft=amiga
|
||||
|
||||
# SiCAD scripts (must have procn or procd as the first line to trigger this)
|
||||
elseif line1 =~? '^ *proc[nd] *$'
|
||||
set ft=sicad
|
||||
setl ft=sicad
|
||||
|
||||
# Purify log files start with "**** Purify"
|
||||
elseif line1 =~ '^\*\*\*\* Purify'
|
||||
set ft=purifylog
|
||||
setl ft=purifylog
|
||||
|
||||
# XML
|
||||
elseif line1 =~ '<?\s*xml.*?>'
|
||||
set ft=xml
|
||||
setl ft=xml
|
||||
|
||||
# XHTML (e.g.: PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN")
|
||||
elseif line1 =~ '\<DTD\s\+XHTML\s'
|
||||
set ft=xhtml
|
||||
setl ft=xhtml
|
||||
|
||||
# HTML (e.g.: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN")
|
||||
# Avoid "doctype html", used by slim.
|
||||
elseif line1 =~? '<!DOCTYPE\s\+html\>'
|
||||
set ft=html
|
||||
setl ft=html
|
||||
|
||||
# PDF
|
||||
elseif line1 =~ '^%PDF-'
|
||||
set ft=pdf
|
||||
setl ft=pdf
|
||||
|
||||
# XXD output
|
||||
elseif line1 =~ '^\x\{7}: \x\{2} \=\x\{2} \=\x\{2} \=\x\{2} '
|
||||
set ft=xxd
|
||||
setl ft=xxd
|
||||
|
||||
# RCS/CVS log output
|
||||
elseif line1 =~ '^RCS file:' || line2 =~ '^RCS file:'
|
||||
set ft=rcslog
|
||||
setl ft=rcslog
|
||||
|
||||
# CVS commit
|
||||
elseif line2 =~ '^CVS:' || getline("$") =~ '^CVS: '
|
||||
set ft=cvs
|
||||
setl ft=cvs
|
||||
|
||||
# Prescribe
|
||||
elseif line1 =~ '^!R!'
|
||||
set ft=prescribe
|
||||
setl ft=prescribe
|
||||
|
||||
# Send-pr
|
||||
elseif line1 =~ '^SEND-PR:'
|
||||
set ft=sendpr
|
||||
setl ft=sendpr
|
||||
|
||||
# SNNS files
|
||||
elseif line1 =~ '^SNNS network definition file'
|
||||
set ft=snnsnet
|
||||
setl ft=snnsnet
|
||||
elseif line1 =~ '^SNNS pattern definition file'
|
||||
set ft=snnspat
|
||||
setl ft=snnspat
|
||||
elseif line1 =~ '^SNNS result file'
|
||||
set ft=snnsres
|
||||
setl ft=snnsres
|
||||
|
||||
# Virata
|
||||
elseif line1 =~ '^%.\{-}[Vv]irata'
|
||||
@ -335,81 +335,81 @@ def DetectFromText(line1: string)
|
||||
|| line3 =~ '^%.\{-}[Vv]irata'
|
||||
|| line4 =~ '^%.\{-}[Vv]irata'
|
||||
|| line5 =~ '^%.\{-}[Vv]irata'
|
||||
set ft=virata
|
||||
setl ft=virata
|
||||
|
||||
# Strace
|
||||
# inaccurate fast match first, then use accurate slow match
|
||||
elseif (line1 =~ 'execve(' && line1 =~ '^[0-9:.]* *execve(')
|
||||
|| line1 =~ '^__libc_start_main'
|
||||
set ft=strace
|
||||
setl ft=strace
|
||||
|
||||
# VSE JCL
|
||||
elseif line1 =~ '^\* $$ JOB\>' || line1 =~ '^// *JOB\>'
|
||||
set ft=vsejcl
|
||||
setl ft=vsejcl
|
||||
|
||||
# TAK and SINDA
|
||||
elseif line4 =~ 'K & K Associates' || line2 =~ 'TAK 2000'
|
||||
set ft=takout
|
||||
setl ft=takout
|
||||
elseif line3 =~ 'S Y S T E M S I M P R O V E D '
|
||||
set ft=sindaout
|
||||
setl ft=sindaout
|
||||
elseif getline(6) =~ 'Run Date: '
|
||||
set ft=takcmp
|
||||
setl ft=takcmp
|
||||
elseif getline(9) =~ 'Node File 1'
|
||||
set ft=sindacmp
|
||||
setl ft=sindacmp
|
||||
|
||||
# DNS zone files
|
||||
elseif line1 .. line2 .. line3 .. line4 =~ '^; <<>> DiG [0-9.]\+.* <<>>\|$ORIGIN\|$TTL\|IN\s\+SOA'
|
||||
set ft=bindzone
|
||||
setl ft=bindzone
|
||||
|
||||
# BAAN
|
||||
elseif line1 =~ '|\*\{1,80}' && line2 =~ 'VRC '
|
||||
|| line2 =~ '|\*\{1,80}' && line3 =~ 'VRC '
|
||||
set ft=baan
|
||||
setl ft=baan
|
||||
|
||||
# Valgrind
|
||||
elseif line1 =~ '^==\d\+== valgrind' || line3 =~ '^==\d\+== Using valgrind'
|
||||
set ft=valgrind
|
||||
setl ft=valgrind
|
||||
|
||||
# Go docs
|
||||
elseif line1 =~ '^PACKAGE DOCUMENTATION$'
|
||||
set ft=godoc
|
||||
setl ft=godoc
|
||||
|
||||
# Renderman Interface Bytestream
|
||||
elseif line1 =~ '^##RenderMan'
|
||||
set ft=rib
|
||||
setl ft=rib
|
||||
|
||||
# Scheme scripts
|
||||
elseif line1 =~ 'exec\s\+\S*scheme' || line2 =~ 'exec\s\+\S*scheme'
|
||||
set ft=scheme
|
||||
setl ft=scheme
|
||||
|
||||
# Git output
|
||||
elseif line1 =~ '^\(commit\|tree\|object\) \x\{40,\}\>\|^tag \S\+$'
|
||||
set ft=git
|
||||
setl ft=git
|
||||
|
||||
# Gprof (gnu profiler)
|
||||
elseif line1 == 'Flat profile:'
|
||||
&& line2 == ''
|
||||
&& line3 =~ '^Each sample counts as .* seconds.$'
|
||||
set ft=gprof
|
||||
setl ft=gprof
|
||||
|
||||
# Erlang terms
|
||||
# (See also: http://www.gnu.org/software/emacs/manual/html_node/emacs/Choosing-Modes.html#Choosing-Modes)
|
||||
elseif line1 =~? '-\*-.*erlang.*-\*-'
|
||||
set ft=erlang
|
||||
setl ft=erlang
|
||||
|
||||
# YAML
|
||||
elseif line1 =~ '^%YAML'
|
||||
set ft=yaml
|
||||
setl ft=yaml
|
||||
|
||||
# MikroTik RouterOS script
|
||||
elseif line1 =~ '^#.*by RouterOS.*$'
|
||||
set ft=routeros
|
||||
setl ft=routeros
|
||||
|
||||
# Sed scripts
|
||||
# #ncomment is allowed but most likely a false positive so require a space
|
||||
# before any trailing comment text
|
||||
elseif line1 =~ '^#n\%($\|\s\)'
|
||||
set ft=sed
|
||||
setl ft=sed
|
||||
|
||||
else
|
||||
var lnum = 1
|
||||
@ -418,7 +418,7 @@ def DetectFromText(line1: string)
|
||||
endwhile
|
||||
if getline(lnum) =~ '^Index:\s\+\f\+$'
|
||||
# CVS diff
|
||||
set ft=diff
|
||||
setl ft=diff
|
||||
|
||||
# locale input files: Formal Definitions of Cultural Conventions
|
||||
# filename must be like en_US, fr_FR@euro or en_US.UTF-8
|
||||
|
@ -695,6 +695,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1519,
|
||||
/**/
|
||||
1518,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user