diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2020-09-24 18:52:58 +0200 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2020-09-24 18:52:58 +0200 | 
| commit | 9ff714cb6c43b920fd76ff793641c5191bf2e991 (patch) | |
| tree | 510d832c908133a33ac095e17acf025d6f46a907 /scripts | |
| parent | e2bbed8acc1f1cf498a0085cf771cf9bf40fb709 (diff) | |
| download | vim-polyglot-9ff714cb6c43b920fd76ff793641c5191bf2e991.tar.gz vim-polyglot-9ff714cb6c43b920fd76ff793641c5191bf2e991.zip | |
Extract non-generated code to polyglot.vim
Diffstat (limited to '')
| -rwxr-xr-x | scripts/build | 83 | 
1 files changed, 17 insertions, 66 deletions
| diff --git a/scripts/build b/scripts/build index 260beddb..0ed76045 100755 --- a/scripts/build +++ b/scripts/build @@ -12,6 +12,10 @@ Dir.chdir(File.dirname(__dir__))  BASE_URL = 'https://raw.githubusercontent.com/github/linguist/master' +def read_section(name) +  File.read('polyglot.vim').match(/""" #{Regexp.escape(name)}.*\n(?=\n""")/m)[0] +end +  def camelize(str)    str.split(/[-_\.]/).map { |a| a.capitalize }.join("")  end @@ -121,6 +125,10 @@ def transform_patterns(heuristics)    patterns_mapping = Hash[patterns.zip(patterns_to_vim_patterns(patterns))]    each_hash(heuristics) do |h|      if h.has_key?("pattern") +      if h["pattern"].include?("#import") +        puts h["pattern"] +        puts patterns_mapping.fetch(h["pattern"]) +      end        h["pattern"] = patterns_mapping.fetch(h["pattern"])      end    end @@ -554,25 +562,14 @@ def generate_ftdetect(packages, heuristics)      puts "Missing filename for #{name}: #{e}"    end -  ftdetect = File.read('ftdetect/polyglot.vim') -  File.write('ftdetect/polyglot.vim', ftdetect.gsub(/(?<=" filetypes\n).*(?=\n" end filetypes)/m, output)) +  ftdetect = read_section('ftdetect/polyglot.vim') -  output = <<~EOS -    " Line continuation is used here, remove 'C' from 'cpoptions' -    let s:cpo_save = &cpo -    set cpo&vim - -    func! polyglot#Shebang() -      " Try to detect filetype from shebang -      let ft = polyglot#ShebangFiletype() -      if ft != "" -        let &ft = ft -        return 1 -      endif +  File.write( +    'ftdetect/polyglot.vim', +     ftdetect.gsub('" scripts/build inserts here filetype detection autocommands') { output } +  ) -      return 0 -    endfunc -     +  output = <<~EOS      let s:interpreters = {      EOS @@ -585,47 +582,6 @@ def generate_ftdetect(packages, heuristics)    output << <<~EOS        \\ } -    let s:r_hashbang = '^#!\\s*\\(\\S\\+\\)\\s*\\(.*\\)\\s*' -    let s:r_envflag = '%(\\S\\+=\\S\\+\\|-[iS]\\|--ignore-environment\\|--split-string\\)' -    let s:r_env = '^\\%(\\' . s:r_envflag . '\\s\\+\\)*\\(\\S\\+\\)' - -    func! polyglot#ShebangFiletype() -      let l:line1 = getline(1) - -      if l:line1 !~# "^#!" -        return -      endif - -      let l:pathrest = matchlist(l:line1, s:r_hashbang) - -      if len(l:pathrest) == 0 -        return  -      endif - -      let [_, l:path, l:rest; __] = l:pathrest - -      let l:script = split(l:path, "/")[-1] - -      if l:script == "env" -        let l:argspath = matchlist(l:rest, s:r_env) -        if len(l:argspath) == 0 -          return -        endif - -        let l:script = l:argspath[1] -      endif - -      if has_key(s:interpreters, l:script) -        return s:interpreters[l:script] -      endif - -      for interpreter in keys(s:interpreters) -        if l:script =~# '^' . interpreter -          return s:interpreters[interpreter] -        endif -      endfor -    endfunc -    EOS    for heuristic in heuristics @@ -637,13 +593,10 @@ def generate_ftdetect(packages, heuristics)      EOS    end -  output << <<~EOS -    " Restore 'cpoptions' -    let &cpo = s:cpo_save -    unlet s:cpo_save -  EOS +  autoload_script = read_section('autoload/polyglot.vim') +  autoload_script["\" scripts/build generates heuristics functions here\n"] = output -  File.write('autoload/polyglot.vim', output) +  File.write('autoload/polyglot.vim', autoload_script)  end  def generate_tests(packages) @@ -742,8 +695,6 @@ def detect_filetypes(glob)  end  def generate_plugins(packages) -  FileUtils.mkdir_p('autoload/polyglot') -    output = "let s:globs = {\n"    patterns = Hash.new { |h, k| h[k] = [] } | 
