Patch 9.0.1519

3 views
Skip to first unread message

Bram Moolenaar

unread,
May 6, 2023, 4:22:27 PM5/6/23
to vim...@googlegroups.com

Patch 9.0.1519
Problem: Global 'filetype' is set when it is detected from the file content.
Solution: Set the local 'filetype' option value.
Files: runtime/autoload/dist/script.vim


*** ../vim-9.0.1518/runtime/autoload/dist/script.vim 2023-04-17 22:31:32.565014586 +0100
--- runtime/autoload/dist/script.vim 2023-05-06 21:19:53.336817904 +0100
***************
*** 71,201 ****

# Z shell scripts
elseif name =~ '^zsh\>'
! set ft=zsh

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

# Expect scripts
elseif name =~ '^expect\>'
! set ft=expect

# Gnuplot scripts
elseif name =~ '^gnuplot\>'
! set ft=gnuplot

# Makefiles
elseif name =~ 'make\>'
! set ft=make

# Pike
elseif name =~ '^pike\%(\>\|[0-9]\)'
! set ft=pike

# Lua
elseif name =~ 'lua'
! set ft=lua

# Perl
elseif name =~ 'perl'
! set ft=perl

# PHP
elseif name =~ 'php'
! set ft=php

# Python
elseif name =~ 'python'
! set ft=python

# Groovy
elseif name =~ '^groovy\>'
! set ft=groovy

# Raku
elseif name =~ 'raku'
! set ft=raku

# Ruby
elseif name =~ 'ruby'
! set ft=ruby

# JavaScript
elseif name =~ 'node\(js\)\=\>\|js\>' || name =~ 'rhino\>'
! set ft=javascript

# BC calculator
elseif name =~ '^bc\>'
! set ft=bc

# sed
elseif name =~ 'sed\>'
! set ft=sed

# OCaml-scripts
elseif name =~ 'ocaml'
! set ft=ocaml

# Awk scripts; also finds "gawk"
elseif name =~ 'awk\>'
! set ft=awk

# Website MetaLanguage
elseif name =~ 'wml'
! set ft=wml

# Scheme scripts
elseif name =~ 'scheme'
! set ft=scheme

# CFEngine scripts
elseif name =~ 'cfengine'
! set ft=cfengine

# Erlang scripts
elseif name =~ 'escript'
! set ft=erlang

# Haskell
elseif name =~ 'haskell'
! set ft=haskell

# Scala
elseif name =~ 'scala\>'
! set ft=scala

# Clojure
elseif name =~ 'clojure'
! set ft=clojure

# Free Pascal
elseif name =~ 'instantfpc\>'
! set ft=pascal

# Fennel
elseif name =~ 'fennel\>'
! set ft=fennel

# MikroTik RouterOS script
elseif name =~ 'rsc\>'
! set ft=routeros

# Fish shell
elseif name =~ 'fish\>'
! set ft=fish

# Gforth
elseif name =~ 'gforth\>'
! set ft=forth

# Icon
elseif name =~ 'icon\>'
! set ft=icon

# Guile
elseif name =~ 'guile'
! set ft=scheme

endif
enddef
--- 71,201 ----

# Z shell scripts
elseif name =~ '^zsh\>'
! setl ft=zsh

# TCL scripts
elseif name =~ '^\(tclsh\|wish\|expectk\|itclsh\|itkwish\)\>'
! setl ft=tcl

# Expect scripts
elseif name =~ '^expect\>'
! setl ft=expect

# Gnuplot scripts
elseif name =~ '^gnuplot\>'
! setl ft=gnuplot

# Makefiles
elseif name =~ 'make\>'
! setl ft=make

# Pike
elseif name =~ '^pike\%(\>\|[0-9]\)'
! setl ft=pike

# Lua
elseif name =~ 'lua'
! setl ft=lua

# Perl
elseif name =~ 'perl'
! setl ft=perl

# PHP
elseif name =~ 'php'
! setl ft=php

# Python
elseif name =~ 'python'
! setl ft=python

# Groovy
elseif name =~ '^groovy\>'
! setl ft=groovy

# Raku
elseif name =~ 'raku'
! setl ft=raku

# Ruby
elseif name =~ 'ruby'
! setl ft=ruby

# JavaScript
elseif name =~ 'node\(js\)\=\>\|js\>' || name =~ 'rhino\>'
! setl ft=javascript

# BC calculator
elseif name =~ '^bc\>'
! setl ft=bc

# sed
elseif name =~ 'sed\>'
! setl ft=sed

# OCaml-scripts
elseif name =~ 'ocaml'
! setl ft=ocaml

# Awk scripts; also finds "gawk"
elseif name =~ 'awk\>'
! setl ft=awk

# Website MetaLanguage
elseif name =~ 'wml'
! setl ft=wml

# Scheme scripts
elseif name =~ 'scheme'
! setl ft=scheme

# CFEngine scripts
elseif name =~ 'cfengine'
! setl ft=cfengine

# Erlang scripts
elseif name =~ 'escript'
! setl ft=erlang

# Haskell
elseif name =~ 'haskell'
! setl ft=haskell

# Scala
elseif name =~ 'scala\>'
! setl ft=scala

# Clojure
elseif name =~ 'clojure'
! setl ft=clojure

# Free Pascal
elseif name =~ 'instantfpc\>'
! setl ft=pascal

# Fennel
elseif name =~ 'fennel\>'
! setl ft=fennel

# MikroTik RouterOS script
elseif name =~ 'rsc\>'
! setl ft=routeros

# Fish shell
elseif name =~ 'fish\>'
! setl ft=fish

# Gforth
elseif name =~ 'gforth\>'
! setl ft=forth

# Icon
elseif name =~ 'icon\>'
! setl ft=icon

# Guile
elseif name =~ 'guile'
! setl ft=scheme

endif
enddef
***************
*** 218,245 ****
|| "\n" .. line1 .. "\n" .. line2 .. "\n" .. line3 ..
"\n" .. line4 .. "\n" .. line5
=~ '\n\s*emulate\s\+\%(-[LR]\s\+\)\=[ckz]\=sh\>'
! set ft=zsh

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

# Mason
elseif line1 =~ '^<[%&].*>'
! set ft=mason

# Vim scripts (must have '" vim' as the first line to trigger this)
elseif line1 =~ '^" *[vV]im$'
! set 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

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

# Diff file:
# - "diff" in first line (context diff)
--- 218,245 ----
|| "\n" .. line1 .. "\n" .. line2 .. "\n" .. line3 ..
"\n" .. line4 .. "\n" .. line5
=~ '\n\s*emulate\s\+\%(-[LR]\s\+\)\=[ckz]\=sh\>'
! setl ft=zsh

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

# Mason
elseif line1 =~ '^<[%&].*>'
! setl ft=mason

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

# libcxx and libstdc++ standard library headers like "iostream" do not have
# an extension, recognize the Emacs file mode.
elseif line1 =~? '-\*-.*C++.*-\*-'
! setl ft=cpp

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

# Diff file:
# - "diff" in first line (context diff)
***************
*** 258,268 ****
|| (line1 =~ '^\*\*\* ' && line2 =~ '^--- ')
|| (line1 =~ '^=== ' && ((line2 =~ '^=\{66\}' && line3 =~ '^--- ' && line4 =~ '^+++') || (line2 =~ '^--- ' && line3 =~ '^+++ ')))
|| (line1 =~ '^=== \(removed\|added\|renamed\|modified\)')
! set ft=diff

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

# M4 scripts: Guess there is a line that starts with "dnl".
elseif line1 =~ '^\s*dnl\>'
--- 258,268 ----
|| (line1 =~ '^\*\*\* ' && line2 =~ '^--- ')
|| (line1 =~ '^=== ' && ((line2 =~ '^=\{66\}' && line3 =~ '^--- ' && line4 =~ '^+++') || (line2 =~ '^--- ' && line3 =~ '^+++ ')))
|| (line1 =~ '^=== \(removed\|added\|renamed\|modified\)')
! setl ft=diff

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

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

# AmigaDos scripts
elseif $TERM == "amiga" && (line1 =~ "^;" || line1 =~? '^\.bra')
! set ft=amiga

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

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

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

# XHTML (e.g.: PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN")
elseif line1 =~ '\<DTD\s\+XHTML\s'
! set 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

# PDF
elseif line1 =~ '^%PDF-'
! set ft=pdf

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

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

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

# Prescribe
elseif line1 =~ '^!R!'
! set ft=prescribe

# Send-pr
elseif line1 =~ '^SEND-PR:'
! set ft=sendpr

# SNNS files
elseif line1 =~ '^SNNS network definition file'
! set ft=snnsnet
elseif line1 =~ '^SNNS pattern definition file'
! set ft=snnspat
elseif line1 =~ '^SNNS result file'
! set ft=snnsres

# Virata
elseif line1 =~ '^%.\{-}[Vv]irata'
--- 270,333 ----
|| line3 =~ '^\s*dnl\>'
|| line4 =~ '^\s*dnl\>'
|| line5 =~ '^\s*dnl\>'
! setl ft=m4

# AmigaDos scripts
elseif $TERM == "amiga" && (line1 =~ "^;" || line1 =~? '^\.bra')
! setl ft=amiga

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

# Purify log files start with "**** Purify"
elseif line1 =~ '^\*\*\*\* Purify'
! setl ft=purifylog

# XML
elseif line1 =~ '<?\s*xml.*?>'
! setl ft=xml

# XHTML (e.g.: PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN")
elseif line1 =~ '\<DTD\s\+XHTML\s'
! 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\>'
! setl ft=html

# PDF
elseif line1 =~ '^%PDF-'
! setl ft=pdf

# XXD output
elseif line1 =~ '^\x\{7}: \x\{2} \=\x\{2} \=\x\{2} \=\x\{2} '
! setl ft=xxd

# RCS/CVS log output
elseif line1 =~ '^RCS file:' || line2 =~ '^RCS file:'
! setl ft=rcslog

# CVS commit
elseif line2 =~ '^CVS:' || getline("$") =~ '^CVS: '
! setl ft=cvs

# Prescribe
elseif line1 =~ '^!R!'
! setl ft=prescribe

# Send-pr
elseif line1 =~ '^SEND-PR:'
! setl ft=sendpr

# SNNS files
elseif line1 =~ '^SNNS network definition file'
! setl ft=snnsnet
elseif line1 =~ '^SNNS pattern definition file'
! setl ft=snnspat
elseif line1 =~ '^SNNS result file'
! setl ft=snnsres

# Virata
elseif line1 =~ '^%.\{-}[Vv]irata'
***************
*** 335,415 ****
|| line3 =~ '^%.\{-}[Vv]irata'
|| line4 =~ '^%.\{-}[Vv]irata'
|| line5 =~ '^%.\{-}[Vv]irata'
! set 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

# VSE JCL
elseif line1 =~ '^\* $$ JOB\>' || line1 =~ '^// *JOB\>'
! set ft=vsejcl

# TAK and SINDA
elseif line4 =~ 'K & K Associates' || line2 =~ 'TAK 2000'
! set ft=takout
elseif 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 line1 .. line2 .. line3 .. line4 =~ '^; <<>> DiG [0-9.]\+.* <<>>\|$ORIGIN\|$TTL\|IN\s\+SOA'
! set ft=bindzone

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

# Valgrind
elseif line1 =~ '^==\d\+== valgrind' || line3 =~ '^==\d\+== Using valgrind'
! set ft=valgrind

# Go docs
elseif line1 =~ '^PACKAGE DOCUMENTATION$'
! set ft=godoc

# Renderman Interface Bytestream
elseif line1 =~ '^##RenderMan'
! set ft=rib

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

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

# Gprof (gnu profiler)
elseif line1 == 'Flat profile:'
&& line2 == ''
&& line3 =~ '^Each sample counts as .* seconds.$'
! set 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

# YAML
elseif line1 =~ '^%YAML'
! set ft=yaml

# MikroTik RouterOS script
elseif line1 =~ '^#.*by RouterOS.*$'
! set 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

else
var lnum = 1
--- 335,415 ----
|| line3 =~ '^%.\{-}[Vv]irata'
|| line4 =~ '^%.\{-}[Vv]irata'
|| line5 =~ '^%.\{-}[Vv]irata'
! setl ft=virata

# Strace
# inaccurate fast match first, then use accurate slow match
elseif (line1 =~ 'execve(' && line1 =~ '^[0-9:.]* *execve(')
|| line1 =~ '^__libc_start_main'
! setl ft=strace

# VSE JCL
elseif line1 =~ '^\* $$ JOB\>' || line1 =~ '^// *JOB\>'
! setl ft=vsejcl

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

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

# BAAN
elseif line1 =~ '|\*\{1,80}' && line2 =~ 'VRC '
|| line2 =~ '|\*\{1,80}' && line3 =~ 'VRC '
! setl ft=baan

# Valgrind
elseif line1 =~ '^==\d\+== valgrind' || line3 =~ '^==\d\+== Using valgrind'
! setl ft=valgrind

# Go docs
elseif line1 =~ '^PACKAGE DOCUMENTATION$'
! setl ft=godoc

# Renderman Interface Bytestream
elseif line1 =~ '^##RenderMan'
! setl ft=rib

# Scheme scripts
elseif line1 =~ 'exec\s\+\S*scheme' || line2 =~ 'exec\s\+\S*scheme'
! setl ft=scheme

# Git output
elseif line1 =~ '^\(commit\|tree\|object\) \x\{40,\}\>\|^tag \S\+$'
! setl ft=git

# Gprof (gnu profiler)
elseif line1 == 'Flat profile:'
&& line2 == ''
&& line3 =~ '^Each sample counts as .* seconds.$'
! 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.*-\*-'
! setl ft=erlang

# YAML
elseif line1 =~ '^%YAML'
! setl ft=yaml

# MikroTik RouterOS script
elseif line1 =~ '^#.*by 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\)'
! setl ft=sed

else
var lnum = 1
***************
*** 418,424 ****
endwhile
if getline(lnum) =~ '^Index:\s\+\f\+$'
# CVS diff
! 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
--- 418,424 ----
endwhile
if getline(lnum) =~ '^Index:\s\+\f\+$'
# CVS 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
*** ../vim-9.0.1518/src/version.c 2023-05-06 19:19:59.428601312 +0100
--- src/version.c 2023-05-06 21:19:36.492824116 +0100
***************
*** 697,698 ****
--- 697,700 ----
{ /* Add new patch number below this line */
+ /**/
+ 1519,
/**/

--
hundred-and-one symptoms of being an internet addict:
2. You kiss your girlfriend's home page.

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Reply all
Reply to author
Forward
0 new messages