aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/filetype
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2024-05-24 19:18:11 +0000
committerJosh Rahm <joshuarahm@gmail.com>2024-05-24 19:18:11 +0000
commitff7ed8f586589d620a806c3758fac4a47a8e7e15 (patch)
tree729bbcb92231538fa61dab6c3d890b025484b7f5 /runtime/lua/vim/filetype
parent376914f419eb08fdf4c1a63a77e1f035898a0f10 (diff)
parent28c04948a1c887a1cc0cb64de79fa32631700466 (diff)
downloadrneovim-ff7ed8f586589d620a806c3758fac4a47a8e7e15.tar.gz
rneovim-ff7ed8f586589d620a806c3758fac4a47a8e7e15.tar.bz2
rneovim-ff7ed8f586589d620a806c3758fac4a47a8e7e15.zip
Merge remote-tracking branch 'upstream/master' into mix_20240309
Diffstat (limited to 'runtime/lua/vim/filetype')
-rw-r--r--runtime/lua/vim/filetype/detect.lua46
1 files changed, 39 insertions, 7 deletions
diff --git a/runtime/lua/vim/filetype/detect.lua b/runtime/lua/vim/filetype/detect.lua
index 3db4f2bcdc..ba86d8de5a 100644
--- a/runtime/lua/vim/filetype/detect.lua
+++ b/runtime/lua/vim/filetype/detect.lua
@@ -458,6 +458,9 @@ end
--- @type vim.filetype.mapfn
function M.def(_, bufnr)
+ if getline(bufnr, 1):find('%%%%') then
+ return 'tex'
+ end
if vim.g.filetype_def == 'modula2' or is_modula2(bufnr) then
return modula2(bufnr)
end
@@ -738,7 +741,9 @@ end
--- @type vim.filetype.mapfn
function M.inp(_, bufnr)
- if getline(bufnr, 1):find('^%*') then
+ if getline(bufnr, 1):find('%%%%') then
+ return 'tex'
+ elseif getline(bufnr, 1):find('^%*') then
return 'abaqus'
else
for _, line in ipairs(getlines(bufnr, 1, 500)) do
@@ -889,6 +894,11 @@ local function m4(contents)
end
end
+--- @type vim.filetype.mapfn
+function M.markdown(_, _)
+ return vim.g.filetype_md or 'markdown'
+end
+
--- Rely on the file to start with a comment.
--- MS message text files use ';', Sendmail files use '#' or 'dnl'
--- @type vim.filetype.mapfn
@@ -1131,12 +1141,14 @@ end
--- Distinguish between "default", Prolog and Cproto prototype file.
--- @type vim.filetype.mapfn
function M.proto(_, bufnr)
- -- Cproto files have a comment in the first line and a function prototype in
- -- the second line, it always ends in ";". Indent files may also have
- -- comments, thus we can't match comments to see the difference.
- -- IDL files can have a single ';' in the second line, require at least one
- -- character before the ';'.
- if getline(bufnr, 2):find('.;$') then
+ if getline(bufnr, 2):find('/%* Generated automatically %*/') then
+ return 'c'
+ elseif getline(bufnr, 2):find('.;$') then
+ -- Cproto files have a comment in the first line and a function prototype in
+ -- the second line, it always ends in ";". Indent files may also have
+ -- comments, thus we can't match comments to see the difference.
+ -- IDL files can have a single ';' in the second line, require at least one
+ -- character before the ';'.
return 'cpp'
end
-- Recognize Prolog by specific text in the first non-empty line;
@@ -1574,6 +1586,26 @@ function M.typ(_, bufnr)
return 'typst'
end
+--- @type vim.filetype.mapfn
+function M.uci(_, bufnr)
+ -- Return "uci" iff the file has a config or package statement near the
+ -- top of the file and all preceding lines were comments or blank.
+ for _, line in ipairs(getlines(bufnr, 1, 3)) do
+ -- Match a config or package statement at the start of the line.
+ if
+ line:find('^%s*[cp]%s+%S')
+ or line:find('^%s*config%s+%S')
+ or line:find('^%s*package%s+%S')
+ then
+ return 'uci'
+ end
+ -- Match a line that is either all blank or blank followed by a comment
+ if not (line:find('^%s*$') or line:find('^%s*#')) then
+ break
+ end
+ end
+end
+
-- Determine if a .v file is Verilog, V, or Coq
--- @type vim.filetype.mapfn
function M.v(_, bufnr)