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

bc32bbddcf

N/A patch:
vim-patch:7e4b861: runtime(filetype): remove duplicated *.org file pattern

Co-authored-by: Wu, Zhenyu <wuzhenyu@ustc.edu>
This commit is contained in:
zeertzjq 2024-11-16 08:42:12 +08:00 committed by GitHub
parent 6e4df18b45
commit fbbb9d6f7b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 41 additions and 1 deletions

12
runtime/ftplugin/llvm.vim Normal file
View File

@ -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<"

View File

@ -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,

View File

@ -868,6 +868,16 @@ function M.log(path, _)
end
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

View File

@ -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