diff options
author | Turiiya <34311583+tobealive@users.noreply.github.com> | 2023-04-22 21:38:47 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2023-04-22 21:38:47 +0100 |
commit | 80406c26188219f3773b2e9c49160caeeb386ee2 (patch) | |
tree | a9444688887fecf0d257649055337e2a3a940829 /runtime/autoload | |
parent | b67ba03d3ef2e6c5f207d508e85fc6906f938028 (diff) |
patch 9.0.1478: filetypes for *.v files not detected properlyv9.0.1478
Problem: Filetypes for *.v files not detected properly.
Solution: Use the file contents to detect the filetype. (Turiiya,
closes #12281)
Diffstat (limited to 'runtime/autoload')
-rw-r--r-- | runtime/autoload/dist/ft.vim | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim index 5d2053d70a..4e0906d8b4 100644 --- a/runtime/autoload/dist/ft.vim +++ b/runtime/autoload/dist/ft.vim @@ -1106,5 +1106,40 @@ export def FTlsl() endif enddef +# Set the filetype of a *.v file to Verilog, V or Cog based on the first 200 +# lines. +export def FTv() + if did_filetype() + # ":setf" will do nothing, bail out early + return + endif + + for line in getline(1, 200) + if line[0] =~ '^\s*/' + # skip comment line + continue + endif + + # Verilog: line ends with ';' followed by an optional variable number of + # spaces and an optional start of a comment. + # Example: " b <= a + 1; // Add 1". + if line =~ ';\(\s*\)\?\(/.*\)\?$' + setf verilog + return + endif + + # Coq: line ends with a '.' followed by an optional variable number of + # spaces and an optional start of a comment. + # Example: "Definition x := 10. (*". + if line =~ '\.\(\s*\)\?\((\*.*\)\?$' + setf coq + return + endif + endfor + + # No line matched, fall back to "v". + setf v +enddef + # Uncomment this line to check for compilation errors early # defcompile |