summaryrefslogtreecommitdiffstats
path: root/build.py
diff options
context:
space:
mode:
Diffstat (limited to 'build.py')
-rwxr-xr-xbuild.py152
1 files changed, 146 insertions, 6 deletions
diff --git a/build.py b/build.py
index fd8ca04a..7008bdf0 100755
--- a/build.py
+++ b/build.py
@@ -14,6 +14,9 @@ def language(name,
extensions=None,
filenames=None,
syntax=None,
+ outer_filetype=None,
+ custom_set=None,
+ compound=False,
extra_extensions=[],
extra_filenames=[],
ignored_extensions=[]
@@ -23,20 +26,78 @@ def language(name,
polyglot_name = polyglot or filetype_name
lines.append(f"if index(g:polyglot_disabled, '{polyglot_name}') == -1")
if syntax != None:
- syntax = " syn=" + syntax
+ syntax = " syntax=" + syntax
else:
syntax = ""
if extensions == None:
extensions = language.get("extensions", [])
if filenames == None:
filenames = language.get("filenames", [])
+ if custom_set == None:
+ custom_set = f"set ft={filetype_name}{syntax}"
for ext in sorted(list(set(extensions + extra_extensions) - set(ignored_extensions))):
- lines.append(f" au BufNewFile,BufRead *{ext} set ft={filetype_name}{syntax}")
- for fn in filenames + extra_filenames:
- lines.append(f" au BufNewFile,BufRead {fn} set ft={filetype_name}{syntax}")
+ if outer_filetype != None:
+ lines.append(f" au BufNewFile *.*{ext} execute \"do BufNewFile filetypedetect \" . expand(\"<afile>:r\") | {outer_filetype}")
+ lines.append(f" au BufReadPre *.*{ext} execute \"do BufRead filetypedetect \" . expand(\"<afile>:r\") | {outer_filetype}")
+ lines.append(f" au BufNewFile,BufRead *{ext} {custom_set}")
+ for fn in sorted(filenames + extra_filenames):
+ if fn[0] == ".":
+ fn = "{.,}" + fn[1:]
+ lines.append(f" au BufNewFile,BufRead {fn} {custom_set}")
lines.append("endif")
lines.append("")
+
+lines.append("""" don't spam the user when Vim is started in Vi compatibility mode
+let s:cpo_save = &cpo
+set cpo&vim
+
+if !exists('g:polyglot_disabled')
+ let g:polyglot_disabled = []
+endif
+
+function! s:SetDefault(name, value)
+ if !exists(a:name)
+ let {a:name} = a:value
+ endif
+endfunction
+
+call s:SetDefault('g:markdown_enable_spell_checking', 0)
+call s:SetDefault('g:markdown_enable_input_abbreviations', 0)
+call s:SetDefault('g:markdown_enable_mappings', 0)
+
+" Enable jsx syntax by default
+call s:SetDefault('g:jsx_ext_required', 0)
+
+" Make csv loading faster
+call s:SetDefault('g:csv_start', 1)
+call s:SetDefault('g:csv_end', 2)
+
+" Disable json concealing by default
+call s:SetDefault('g:vim_json_syntax_conceal', 0)
+
+call s:SetDefault('g:filetype_euphoria', 'elixir')
+
+call s:SetDefault('g:python_highlight_builtins', 1)
+call s:SetDefault('g:python_highlight_builtin_objs', 1)
+call s:SetDefault('g:python_highlight_builtin_types', 1)
+call s:SetDefault('g:python_highlight_builtin_funcs', 1)
+call s:SetDefault('g:python_highlight_builtin_funcs_kwarg', 1)
+call s:SetDefault('g:python_highlight_exceptions', 1)
+call s:SetDefault('g:python_highlight_string_formatting', 1)
+call s:SetDefault('g:python_highlight_string_format', 1)
+call s:SetDefault('g:python_highlight_string_templates', 1)
+call s:SetDefault('g:python_highlight_indent_errors', 1)
+call s:SetDefault('g:python_highlight_space_errors', 1)
+call s:SetDefault('g:python_highlight_doctests', 1)
+call s:SetDefault('g:python_highlight_func_calls', 1)
+call s:SetDefault('g:python_highlight_class_vars', 1)
+call s:SetDefault('g:python_highlight_operators', 1)
+call s:SetDefault('g:python_highlight_file_headers_as_comments', 1)
+call s:SetDefault('g:python_slow_sync', 1)
+
+""")
+
language("ASL", polyglot="acpiasl", extensions=[".asl", ".dsl"])
language("API Blueprint")
language("AppleScript")
@@ -90,7 +151,7 @@ language("GraphQL")
language("Gradle", filetype="groovy", polyglot="gradle")
language("Haml", extra_extensions=[".hamlc", ".hamlbars"])
language("Handlebars", filetype="mustache", polyglot="handlebars", extra_extensions=[".hulk", ".hjs", ".mustache", ".njk"])
-language("HTML+Django", polyglot="jinja", filetype="jinja.html", ignored_extensions=[".mustache", ".njk"])
+language("HTML+Django", polyglot="jinja", filetype="jinja.html", ignored_extensions=[".mustache", ".njk"], extra_extensions=[".j2"])
language("HAProxy")
language("Haskell", extra_extensions=[".bpk", ".hsig"])
language("Haxe")
@@ -117,7 +178,86 @@ language("LilyPond")
language("LiveScript")
language("LLVM")
language("Tablegen", polyglot="llvm", extensions=[".td"], filetype="tablegen")
+language("Mako", outer_filetype="let b:mako_outer_lang = &filetype")
+language("Log", extensions=[".log"], filenames=["*_log"])
+language("Markdown", ignored_extensions=[".mdx"])
+language("Mdx", extensions=[".mdx"], polyglot="mdx", filetype="markdown.mdx")
+language("Mathematica", filetype="mma")
+language("Meson")
+language("Dosini", extensions=[".wrap"], filetype="dosini", polyglot="meson")
+language("MoonScript", filetype="moon", polyglot="moon")
+language("Nginx", extra_extensions=[".nginx"], extra_filenames=["*/etc/nginx/*", "*/usr/local/nginx/conf/*", "*/nginx/*.conf", "nginx*.conf", "*nginx.conf"])
+language("Nim")
+language("Nix")
+language("OCaml", extra_extensions=[".mlt", ".mlp", ".mlip", ".mli.cppo", ".ml.cppo"])
+language("OMake", extensions=[".om"], filenames=["OMakefile", "OMakeroot", "Omakeroot.in"], polyglot="ocaml", filetype="omake")
+language("OPam", extensions=[".opam", ".opam.template"], filenames=["opam"], filetype="opam", polyglot="ocaml")
+language("Oasis", filenames=["_oasis"], polyglot="ocaml", filetype="oasis")
+language("OpenCL")
+language("Perl")
+language("PLpgSQL", filetype="sql", ignored_extensions=[".sql"], custom_set="let b:sql_type_override='pgsql' | set ft=sql", polyglot="pgsql")
+language("PlantUML", extra_extensions=[".uml", ".pu"])
+language("Pony")
+language("PowerShell", extra_extensions=[".pssc"])
+language("Ps1XML", extensions=[".ps1xml"], polyglot="powershell", filetype="ps1xml")
+language("Protocol Buffer", polyglot="protobuf", filetype="proto")
+language("Pug")
+language("Puppet")
+language("Embedded Puppet", polyglot="puppet", filetype="embeddedpuppet", extensions=[".epp"])
+language("PureScript")
+language("QMake")
+language("QML")
+language("Racket")
+language("Raku", extra_extensions=[".rakudoc", ".rakutest", ".raku", ".rakumod", ".pod6", ".t6"])
+language("RAML")
+language("HTML+Razor", filetype="razor", polyglot="razor")
+language("Reason")
+language("Merlin", filetype="merlin", polyglot="razor", filenames=[".merlin"])
+language("Ruby", extra_extensions=[".rxml", ".rjs", ".rant", ".axlsx", ".cap", ".opal"], extra_filenames=["Rantfile", ".autotest", "Cheffile", "KitchenSink", "Routefile"])
+language("HTML+ERB", polyglot="ruby", filetype="eruby", extra_extensions=[".rhtml"])
+# Needs to be after ruby
+language("RSpec", filenames=["*_spec.rb"], polyglot="rspec", filetype="ruby", syntax="rspec")
+language("Rust")
+language("Scala", ignored_extensions=[".sbt"])
+language("Scala SBT", filetype="sbt.scala", extensions=[".sbt"], polyglot="scala")
+language("SCSS")
+language("Slim")
+language("Slime", extensions=[".slime"])
+language("SMT", filetype="smt2")
+language("Solidity", extra_extensions=[".sol"])
+language("Stylus", extra_extensions=[".stylus"])
+language("Svelte")
+language("Swift")
+language("Sxhkd", extensions=[".sxhkdrc"], filetype="sxhkdrc", polyglot="sxhkd")
+language("Systemd", extensions=[".automount", ".mount", ".path", ".service", ".socket", ".swap", ".target", ".timer"])
+language("HCL", filetype="terraform", polyglot="terraform")
+language("Textile")
+language("Thrift")
+language("Tmux", filenames=[".tmux.conf"])
+language("TOML", extra_filenames=["Pipfile", "*/.cargo/config", "*/.cargo/credentials"])
+language("TPTP", extensions=[".p", ".tptp", ".ax"])
+language("Twig", ignored_extensions=[".xml.twig"], filetype="html.twig", polyglot="twig")
+language("Twig XML", extensions=[".xml.twig"], filetype="xml.twig", polyglot="twig")
+language("TypeScript")
+language("TSX", filetype="typescriptreact", polyglot="typescript")
+language("XML", extra_extensions=[".cdxml"], ignored_extensions=[".ts", ".tsx"])
+language("V")
+language("Vala", extra_extensions=[".valadoc"])
+language("Visual Basic .NET", filetype="vbnet", polyglot="vbnet")
+language("VCL")
+language("Vifm", extensions=[".vifm"], filenames=["vifmrc", "*vifm/colors/*"])
+language("Vifm Rename", filetype="vifm-rename", filenames=["vifm.rename*"], polyglot="vifm")
+language("Velocity", extensions=[".vm"], filetype="velocity")
+language("Vue", extra_extensions=[".wpy"])
+language("XDC", extensions=[".xdc"])
+language("Zig", extra_extensions=[".zir"])
+language("Zir", extensions=[".zir"], polyglot="zig", filetype="zir")
+
+lines.append('" restore Vi compatibility settings')
+lines.append('let &cpo = s:cpo_save')
+lines.append('unlet s:cpo_save')
-f = open("ftdetect/polyglot_auto.vim", "w")
+f = open("ftdetect/polyglot.vim", "w")
f.write("\n".join(lines))
f.close()
+