aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2022-07-01 07:08:44 +0200
committerGitHub <noreply@github.com>2022-07-01 07:08:44 +0200
commit60604d6a9982319673e5d5e67f0cdc29465cfe54 (patch)
tree2baba7d4452112cec108cf013ae35794539f5de7 /runtime/lua
parent8f5bcfb0e4ca3b827bcc46cb05d3530bd97da7db (diff)
downloadrneovim-60604d6a9982319673e5d5e67f0cdc29465cfe54.tar.gz
rneovim-60604d6a9982319673e5d5e67f0cdc29465cfe54.tar.bz2
rneovim-60604d6a9982319673e5d5e67f0cdc29465cfe54.zip
vim-patch:9.0.0012: signature files not detected properly (#19172)
Problem: Signature files not detected properly. Solution: Add a function to better detect signature files. (Doug Kearns) https://github.com/vim/vim/commit/cdbfc6dbab1d63aa56af316d6b13e37939e7f7a8
Diffstat (limited to 'runtime/lua')
-rw-r--r--runtime/lua/vim/filetype.lua4
-rw-r--r--runtime/lua/vim/filetype/detect.lua17
2 files changed, 20 insertions, 1 deletions
diff --git a/runtime/lua/vim/filetype.lua b/runtime/lua/vim/filetype.lua
index 72e144b708..8fe631e7ed 100644
--- a/runtime/lua/vim/filetype.lua
+++ b/runtime/lua/vim/filetype.lua
@@ -586,7 +586,6 @@ local extension = {
c = function(path, bufnr)
return require('vim.filetype.detect').lpc(bufnr)
end,
- sig = 'lprolog',
lsl = 'lsl',
lss = 'lss',
nse = 'lua',
@@ -867,6 +866,9 @@ local extension = {
end,
sieve = 'sieve',
siv = 'sieve',
+ sig = function(path, bufnr)
+ return require('vim.filetype.detect').sig(bufnr)
+ end,
sil = 'sil',
sim = 'simula',
['s85'] = 'sinda',
diff --git a/runtime/lua/vim/filetype/detect.lua b/runtime/lua/vim/filetype/detect.lua
index 342f947524..14a4381835 100644
--- a/runtime/lua/vim/filetype/detect.lua
+++ b/runtime/lua/vim/filetype/detect.lua
@@ -922,6 +922,23 @@ function M.rules(path)
end
end
+-- LambdaProlog and Standard ML signature files
+function M.sig(bufnr)
+ if vim.g.filetype_sig then
+ return vim.g.filetype_sig
+ end
+
+ local line = nextnonblank(bufnr, 1)
+
+ -- LambdaProlog comment or keyword
+ if findany(line, { '^%s*/%*', '^%s*%%', '^%s*sig%s+%a' }) then
+ return 'lprolog'
+ -- SML comment or keyword
+ elseif findany(line, { '^%s*%(%*', '^%s*signature%s+%a', '^%s*structure%s+%a' }) then
+ return 'sml'
+ end
+end
+
-- This function checks the first 25 lines of file extension "sc" to resolve
-- detection between scala and SuperCollider
function M.sc(bufnr)