mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 19:52:54 +01:00
[vim] Add initial syntax definition for .mir files
This initial definition handles the yaml container and the embedding of the inner IRs. As a stopgap, this reuses the LLVM IR syntax highlighting for the MIR function bodies--even though it's not technically correct, it produces decent highlighting for a first pass. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D95552
This commit is contained in:
parent
5421d477d4
commit
7f4b320ea8
1
utils/vim/ftdetect/mir.vim
Normal file
1
utils/vim/ftdetect/mir.vim
Normal file
@ -0,0 +1 @@
|
||||
au BufRead,BufNewFile *.mir set filetype=mir
|
13
utils/vim/ftplugin/mir.vim
Normal file
13
utils/vim/ftplugin/mir.vim
Normal file
@ -0,0 +1,13 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: LLVM Machine IR
|
||||
" Maintainer: The LLVM team, http://llvm.org/
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal softtabstop=2 shiftwidth=2
|
||||
setlocal expandtab
|
||||
setlocal comments+=:;
|
||||
|
11
utils/vim/syntax/machine-ir.vim
Normal file
11
utils/vim/syntax/machine-ir.vim
Normal file
@ -0,0 +1,11 @@
|
||||
" Vim syntax file
|
||||
" Language: mir
|
||||
" Maintainer: The LLVM team, http://llvm.org/
|
||||
" Version: $Revision$
|
||||
|
||||
" FIXME: MIR doesn't actually match LLVM IR. Reimplement this.
|
||||
" See the MIR LangRef: https://llvm.org/docs/MIRLangRef.html
|
||||
unlet b:current_syntax " Unlet so that the LLVM syntax will load
|
||||
runtime! syntax/llvm.vim
|
||||
unlet b:current_syntax
|
||||
let b:current_syntax = "mir"
|
48
utils/vim/syntax/mir.vim
Normal file
48
utils/vim/syntax/mir.vim
Normal file
@ -0,0 +1,48 @@
|
||||
" Vim syntax file
|
||||
" Language: mir
|
||||
" Maintainer: The LLVM team, http://llvm.org/
|
||||
" Version: $Revision$
|
||||
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
syn case match
|
||||
|
||||
" MIR is embedded in a yaml container, so we load all of the yaml syntax.
|
||||
runtime! syntax/yaml.vim
|
||||
unlet b:current_syntax
|
||||
|
||||
" The first document of a file is allowed to contain an LLVM IR module inside
|
||||
" a top-level yaml block string.
|
||||
syntax include @LLVM syntax/llvm.vim
|
||||
" FIXME: This should only be allowed for the first document of the file
|
||||
syntax region llvm start=/\(^---\s*|\)\@<=/ end=/\(^\.\.\.\)\@=/ contains=@LLVM
|
||||
|
||||
" The `body:` field of a document contains the MIR dump of the function
|
||||
syntax include @MIR syntax/machine-ir.vim
|
||||
syntax region mir start=/\(^body:\s*|\)\@<=/ end=/\(^[^[:space:]]\)\@=/ contains=@MIR
|
||||
|
||||
" Syntax-highlight lit test commands and bug numbers.
|
||||
syn match mirSpecialComment /#\s*PR\d*\s*$/
|
||||
syn match mirSpecialComment /#\s*REQUIRES:.*$/
|
||||
syn match mirSpecialComment /#\s*RUN:.*$/
|
||||
syn match mirSpecialComment /#\s*ALLOW_RETRIES:.*$/
|
||||
syn match mirSpecialComment /#\s*CHECK:.*$/
|
||||
syn match mirSpecialComment "\v#\s*CHECK-(NEXT|NOT|DAG|SAME|LABEL):.*$"
|
||||
syn match mirSpecialComment /#\s*XFAIL:.*$/
|
||||
|
||||
if version >= 508 || !exists("did_c_syn_inits")
|
||||
if version < 508
|
||||
let did_c_syn_inits = 1
|
||||
command -nargs=+ HiLink hi link <args>
|
||||
else
|
||||
command -nargs=+ HiLink hi def link <args>
|
||||
endif
|
||||
|
||||
HiLink mirSpecialComment SpecialComment
|
||||
endif
|
||||
|
||||
let b:current_syntax = "mir"
|
Loading…
Reference in New Issue
Block a user