aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-11-16 08:42:12 +0800
committerGitHub <noreply@github.com>2024-11-16 00:42:12 +0000
commitfbbb9d6f7bc8fd3ed309d195d723894572549cf8 (patch)
treec0064b248b27f3873a8c182c3916e597aafd2ff9
parent6e4df18b457e9743c34068fd6e0a89fd04d3526c (diff)
downloadrneovim-fbbb9d6f7bc8fd3ed309d195d723894572549cf8.tar.gz
rneovim-fbbb9d6f7bc8fd3ed309d195d723894572549cf8.tar.bz2
rneovim-fbbb9d6f7bc8fd3ed309d195d723894572549cf8.zip
vim-patch:9.1.0866: filetype: LLVM IR files are not recognized (#31228)
Problem: filetype: LLVM IR files are not recognized Solution: detect '*.ll' files either as lifelines or llvm filetype (Wu, Zhenyu) closes: vim/vim#15824 https://github.com/vim/vim/commit/bc32bbddcfc2671158a4780838766ed2d1e14fa6 N/A patch: vim-patch:7e4b861: runtime(filetype): remove duplicated *.org file pattern Co-authored-by: Wu, Zhenyu <wuzhenyu@ustc.edu>
-rw-r--r--runtime/ftplugin/llvm.vim12
-rw-r--r--runtime/lua/vim/filetype.lua2
-rw-r--r--runtime/lua/vim/filetype/detect.lua10
-rw-r--r--test/old/testdir/test_filetype.vim18
4 files changed, 41 insertions, 1 deletions
diff --git a/runtime/ftplugin/llvm.vim b/runtime/ftplugin/llvm.vim
new file mode 100644
index 0000000000..148b12f102
--- /dev/null
+++ b/runtime/ftplugin/llvm.vim
@@ -0,0 +1,12 @@
+" Vim filetype plugin file
+" Language: LLVM IR
+" Last Change: 2024 Oct 22
+" Maintainer: Wu, Zhenyu <wuzhenyu@ustc.edu>
+
+if exists("b:did_ftplugin") | finish | endif
+let b:did_ftplugin = 1
+
+setl comments=:;
+setl commentstring=;\ %s
+
+let b:undo_ftplugin = "setl commentstring< comments<"
diff --git a/runtime/lua/vim/filetype.lua b/runtime/lua/vim/filetype.lua
index f22d814647..3b3c4481f2 100644
--- a/runtime/lua/vim/filetype.lua
+++ b/runtime/lua/vim/filetype.lua
@@ -682,7 +682,6 @@ local extension = {
l = 'lex',
lhs = 'lhaskell',
lidr = 'lidris2',
- ll = 'lifelines',
ly = 'lilypond',
ily = 'lilypond',
liquid = 'liquid',
@@ -697,6 +696,7 @@ local extension = {
lt = 'lite',
lite = 'lite',
livemd = 'livebook',
+ ll = detect.ll,
log = detect.log,
Log = detect.log,
LOG = detect.log,
diff --git a/runtime/lua/vim/filetype/detect.lua b/runtime/lua/vim/filetype/detect.lua
index 1b9e28efad..98b001bd51 100644
--- a/runtime/lua/vim/filetype/detect.lua
+++ b/runtime/lua/vim/filetype/detect.lua
@@ -869,6 +869,16 @@ function M.log(path, _)
end
--- @type vim.filetype.mapfn
+function M.ll(_, bufnr)
+ local first_line = getline(bufnr, 1)
+ if matchregex(first_line, [[;\|\<source_filename\>\|\<target\>]]) then
+ return 'llvm'
+ else
+ return 'lifelines'
+ end
+end
+
+--- @type vim.filetype.mapfn
function M.lpc(_, bufnr)
if vim.g.lpc_syntax_for_c then
for _, line in ipairs(getlines(bufnr, 1, 12)) do
diff --git a/test/old/testdir/test_filetype.vim b/test/old/testdir/test_filetype.vim
index 62053f1c2c..f70144b379 100644
--- a/test/old/testdir/test_filetype.vim
+++ b/test/old/testdir/test_filetype.vim
@@ -2440,6 +2440,24 @@ func Test_inc_file()
filetype off
endfunc
+func Test_ll_file()
+ filetype on
+
+ " LLVM IR
+ call writefile(['target triple = "nvptx64-nvidia-cuda"'], 'Xfile.ll', 'D')
+ split Xfile.ll
+ call assert_equal('llvm', &filetype)
+ bwipe!
+
+ " lifelines
+ call writefile(['proc main() {}'], 'Xfile.ll', 'D')
+ split Xfile.ll
+ call assert_equal('lifelines', &filetype)
+ bwipe!
+
+ filetype off
+endfunc
+
func Test_lsl_file()
filetype on