diff options
Diffstat (limited to '')
| -rwxr-xr-x | scripts/build | 21 | ||||
| -rw-r--r-- | scripts/test_extensions.vim | 75 | ||||
| -rw-r--r-- | scripts/test_filetypes.vim | 8 | 
3 files changed, 97 insertions, 7 deletions
| diff --git a/scripts/build b/scripts/build index 07bc301b..c44e8cc8 100755 --- a/scripts/build +++ b/scripts/build @@ -263,7 +263,7 @@ def rule_to_code(rule)    if rule.has_key?("lines")      if rule["lines"] == 1        return <<~EOS -        let line = getline(1) +        let line = getline(nextnonblank(1))          #{indent(rule_to_code(except(rule, "lines")), 0)}        EOS @@ -423,6 +423,7 @@ def generate_ftdetect(packages, heuristics)    expected_filetypes = expected_filetypes.select { |e| filetype_names.include?(e["name"]) }    native_extensions = Set.new(native_filetypes.flat_map { |f| f["extensions"] || [] }) +  native_filenames = Set.new(native_filetypes.flat_map { |f| f["filenames"] || [] })    for package in packages      name = package.fetch("name") @@ -435,6 +436,12 @@ def generate_ftdetect(packages, heuristics)            to_disable << "*." + extension          end        end + +      for filename in filetype["filenames"] +        if native_filenames.include?(filename) +          to_disable << filename +        end +      end      end      if to_disable.size > 0 @@ -457,7 +464,7 @@ def generate_ftdetect(packages, heuristics)        set_command = "call s:Setf('#{name}')"        if filetype["syntax"] -        set_command = "if !did_filetype() | set ft=#{name} syntax=#{filetype["syntax"]} | endif" +        set_command = "set ft=#{name} syntax=#{filetype["syntax"]}"        end        if filetype["custom_set"] @@ -544,11 +551,11 @@ def generate_ftdetect(packages, heuristics)        endif      endfunc -    func! polyglot#Heuristics() +    func! polyglot#Shebang()        " Try to detect filetype from shebang -      let l:filetype = polyglot#Shebang() -      if l:filetype != "" -        exec "setf " . l:filetype +      let ft = polyglot#ShebangFiletype() +      if ft != "" +        call s:Setf(ft)          return 1        endif @@ -571,7 +578,7 @@ def generate_ftdetect(packages, heuristics)      let s:r_envflag = '%(\\S\\+=\\S\\+\\|-[iS]\\|--ignore-environment\\|--split-string\\)'      let s:r_env = '^\\%(\\' . s:r_envflag . '\\s\\+\\)*\\(\\S\\+\\)' -    func! polyglot#Shebang() +    func! polyglot#ShebangFiletype()        let l:line1 = getline(1)        if l:line1 !~# "^#!" diff --git a/scripts/test_extensions.vim b/scripts/test_extensions.vim index f2aaf66c..467ac86a 100644 --- a/scripts/test_extensions.vim +++ b/scripts/test_extensions.vim @@ -15,6 +15,12 @@ function! TestExtension(filetype, filename, content)    endtry  endfunction +" make sure native vim scripts.vim is respected +call TestExtension("rib", "renderman", "##RenderMan") + +" make sure case of file does matter when recognizing file +call TestExtension("ruby", "scripts/build", "#!/usr/bin/env ruby") +  call TestExtension("sh", "bash1", "#!/bin/bash")  call TestExtension("sh", "bash2", "#! /bin/bash")  call TestExtension("sh", "bash3", "#! /bin/bash2.3") @@ -279,3 +285,72 @@ call TestExtension("c", "foo.h", "")  unlet g:c_syntax_for_h  let g:ch_syntax_for_h = 1  call TestExtension("ch", "foo.h", "") + +" perl +call TestExtension("perl", "empty.plx", "") +call TestExtension("perl", "empty.al", "") +call TestExtension("perl", "empty.psgi", "") +call TestExtension("pod", "empty.pod", "") + +" raku +call TestExtension("raku", "empty.p6", "") +call TestExtension("raku", "empty.pm6", "") +call TestExtension("raku", "empty.pl6", "") +call TestExtension("raku", "empty.raku", "") +call TestExtension("raku", "empty.rakumod", "") +call TestExtension("raku", "empty.pod6", "") +call TestExtension("raku", "empty.rakudoc", "") +call TestExtension("raku", "empty.rakutest", "") +call TestExtension("raku", "empty.t6", "") + + +" .pm extension +call TestExtension("perl", "empty.pm", "") +call TestExtension("perl", "strict.pm", " use strict hello;") +call TestExtension("perl", "use5.pm", " use 5;") +call TestExtension("perl", "usev5.pm", " use v5;") +call TestExtension("raku", "script.pm", "#!/usr/bin/env perl6\nprint('Hello world')") +call TestExtension("raku", "class.pm", " class Class {}") +call TestExtension("raku", "module.pm", " module foobar") +call TestExtension("xpm", "xpm.pm", "/* XPM */") +call TestExtension("xpm2", "xpm2.pm", "/* XPM2 */") +let g:filetype_pm = "fizfuz" +call TestExtension("fizfuz", "fizfuz.pm", "") + +" .pl extension +call TestExtension("perl", "empty.pl", "") +call TestExtension("prolog", "comment.pl", "% hello world") +call TestExtension("prolog", "comment2.pl", "/* hello world */") +call TestExtension("prolog", "statement.pl", "happy(vincent). ") +call TestExtension("prolog", "statement2.pl", "nearbychk(X,Y) :- Y is X-1.") +call TestExtension("perl", "strict.pl", " use strict hello;") +call TestExtension("perl", "use5.pl", " use 5;") +call TestExtension("perl", "usev5.pl", " use v5;") +call TestExtension("raku", "script.pl", "#!/usr/bin/env perl6\nprint('Hello world')") +call TestExtension("raku", "class.pl", " class Class {}") +call TestExtension("raku", "module.pl", " module foobar") +let g:filetype_pl = "fizfuz" +call TestExtension("fizfuz", "fizfuz.pl", "") + +" .t extension +call TestExtension("perl", "empty.t", "") +call TestExtension("perl", "strict.t", " use strict hello;") +call TestExtension("perl", "use5.t", " use 5;") +call TestExtension("perl", "usev5.t", " use v5;") +call TestExtension("raku", "script.t", "#!/usr/bin/env perl6\nprint('Hello world')") +call TestExtension("raku", "class.t", " class Class {}") +call TestExtension("raku", "module.t", " module foobar") +call TestExtension("nroff", "module.t", ".nf\n101 Main Street") +let g:filetype_t = "fizfuz" +call TestExtension("fizfuz", "fizfuz.t", "") + +" .tt2 extension +call TestExtension("tt2", "empty.tt2", "") +call TestExtension("tt2html", "doctype.tt2", "<!DOCTYPE HTML>") +call TestExtension("tt2html", "percent.tt2", "<%filter>") +call TestExtension("tt2html", "html.tt2", "<html>") + +" .html extension +call TestExtension("html", "empty.html", "") +call TestExtension("mason", "mason1.html", "% my $planet = 42;") +call TestExtension("mason", "mason2.html", "<%filter></%filter>") diff --git a/scripts/test_filetypes.vim b/scripts/test_filetypes.vim index a84b39e3..02d44ca4 100644 --- a/scripts/test_filetypes.vim +++ b/scripts/test_filetypes.vim @@ -154,6 +154,11 @@ call TestFiletype('sexplib')  call TestFiletype('octave')  call TestFiletype('opencl')  call TestFiletype('perl') +call TestFiletype('pod') +call TestFiletype('mason') +call TestFiletype('tt2') +call TestFiletype('tt2html') +call TestFiletype('xs')  call TestFiletype('sql')  call TestFiletype('cql')  call TestFiletype('php') @@ -232,3 +237,6 @@ call TestFiletype('basic')  call TestFiletype('vb')  call TestFiletype('dosini')  call TestFiletype('odin') +call TestFiletype('bzl') +call TestFiletype('prolog') +call TestFiletype('tads') | 
