Add qml support, closes #69
This commit is contained in:
parent
2d3b20bc68
commit
a0c79360ed
@ -70,6 +70,7 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
|
|||||||
- [powershell](https://github.com/Persistent13/vim-ps1) (syntax, indent, ftplugin, ftdetect)
|
- [powershell](https://github.com/Persistent13/vim-ps1) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [protobuf](https://github.com/uarun/vim-protobuf) (syntax, ftdetect)
|
- [protobuf](https://github.com/uarun/vim-protobuf) (syntax, ftdetect)
|
||||||
- [python](https://github.com/mitsuhiko/vim-python-combined) (syntax, indent)
|
- [python](https://github.com/mitsuhiko/vim-python-combined) (syntax, indent)
|
||||||
|
- [qml](https://github.com/peterhoeg/vim-qml) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [r-lang](https://github.com/vim-scripts/R.vim) (syntax, ftplugin)
|
- [r-lang](https://github.com/vim-scripts/R.vim) (syntax, ftplugin)
|
||||||
- [ragel](https://github.com/jneen/ragel.vim) (syntax)
|
- [ragel](https://github.com/jneen/ragel.vim) (syntax)
|
||||||
- [rspec](https://github.com/sheerun/rspec.vim) (syntax, ftdetect)
|
- [rspec](https://github.com/sheerun/rspec.vim) (syntax, ftdetect)
|
||||||
|
1
build
1
build
@ -141,6 +141,7 @@ PACKS="
|
|||||||
powershell:Persistent13/vim-ps1
|
powershell:Persistent13/vim-ps1
|
||||||
protobuf:uarun/vim-protobuf
|
protobuf:uarun/vim-protobuf
|
||||||
python:mitsuhiko/vim-python-combined
|
python:mitsuhiko/vim-python-combined
|
||||||
|
qml:peterhoeg/vim-qml
|
||||||
r-lang:vim-scripts/R.vim
|
r-lang:vim-scripts/R.vim
|
||||||
ragel:jneen/ragel.vim
|
ragel:jneen/ragel.vim
|
||||||
rspec:sheerun/rspec.vim
|
rspec:sheerun/rspec.vim
|
||||||
|
@ -249,6 +249,10 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'puppet') == -1
|
|||||||
au! BufRead,BufNewFile *.pp setfiletype puppet
|
au! BufRead,BufNewFile *.pp setfiletype puppet
|
||||||
au! BufRead,BufNewFile Puppetfile setfiletype ruby
|
au! BufRead,BufNewFile Puppetfile setfiletype ruby
|
||||||
endif
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'qml') == -1
|
||||||
|
|
||||||
|
autocmd BufRead,BufNewFile *.qml setfiletype qml
|
||||||
|
endif
|
||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
|
||||||
|
|
||||||
function! s:setf(filetype) abort
|
function! s:setf(filetype) abort
|
||||||
|
41
ftplugin/qml.vim
Normal file
41
ftplugin/qml.vim
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'qml') == -1
|
||||||
|
|
||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: qml
|
||||||
|
" Last change: 2014 Feb 8
|
||||||
|
|
||||||
|
if exists( 'b:did_ftplugin' )
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
let s:cpoptions_save = &cpoptions
|
||||||
|
set cpoptions&vim
|
||||||
|
|
||||||
|
" command for undo
|
||||||
|
let b:undo_ftplugin =
|
||||||
|
\ 'let b:browsefilter = "" | ' .
|
||||||
|
\ 'setlocal ' .
|
||||||
|
\ 'comments< '.
|
||||||
|
\ 'commentstring< ' .
|
||||||
|
\ 'formatoptions< ' .
|
||||||
|
\ 'indentexpr<'
|
||||||
|
|
||||||
|
if has( 'gui_win32' )
|
||||||
|
\ && !exists( 'b:browsefilter' )
|
||||||
|
let b:browsefilter =
|
||||||
|
\ 'qml files (*.qml)\t*.qml\n' .
|
||||||
|
\ 'All files (*.*)\t*.*\n'
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Set 'comments' to format dashed lists in comments.
|
||||||
|
setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
|
||||||
|
setlocal commentstring=//%s
|
||||||
|
|
||||||
|
setlocal formatoptions-=t
|
||||||
|
setlocal formatoptions+=croql
|
||||||
|
|
||||||
|
let &cpoptions = s:cpoptions_save
|
||||||
|
unlet s:cpoptions_save
|
||||||
|
|
||||||
|
endif
|
63
indent/qml.vim
Normal file
63
indent/qml.vim
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'qml') == -1
|
||||||
|
|
||||||
|
" Vim indent file
|
||||||
|
" Language: QML
|
||||||
|
" Author: Robert Kieffer
|
||||||
|
" URL:
|
||||||
|
" Last Change: 2010-03-27 (Happy Birthday, Dash!)
|
||||||
|
"
|
||||||
|
" Improved JavaScript indent script.
|
||||||
|
|
||||||
|
" Indent script in place for this already?
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
setlocal indentexpr=GetJsIndent()
|
||||||
|
setlocal indentkeys=0{,0},0),0],:,!^F,o,O,e,*<Return>,=*/
|
||||||
|
|
||||||
|
" Only define functions once per session
|
||||||
|
if exists("*GetJsIndent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Clean up a line of code by removing trailing '//' comments, and trimming
|
||||||
|
" whitespace
|
||||||
|
function! Trim(line)
|
||||||
|
return substitute(substitute(a:line, '// .*', '', ''), '^\s*\|\s*$', '', 'g')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! GetJsIndent()
|
||||||
|
let num = v:lnum
|
||||||
|
let line = Trim(getline(num))
|
||||||
|
|
||||||
|
let pnum = prevnonblank(num - 1)
|
||||||
|
if pnum == 0
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
let pline = Trim(getline(pnum))
|
||||||
|
|
||||||
|
let ind = indent(pnum)
|
||||||
|
|
||||||
|
" bracket/brace/paren blocks
|
||||||
|
if pline =~ '[{[(]$'
|
||||||
|
let ind += &sw
|
||||||
|
endif
|
||||||
|
if line =~ '^[}\])]'
|
||||||
|
let ind -= &sw
|
||||||
|
endif
|
||||||
|
|
||||||
|
" '/*' comments
|
||||||
|
if pline =~ '^/\*.*\*/'
|
||||||
|
" no indent for single-line form
|
||||||
|
elseif pline =~ '^/\*'
|
||||||
|
let ind += 1
|
||||||
|
elseif pline =~ '^\*/'
|
||||||
|
let ind -= 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
return ind
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
endif
|
137
syntax/qml.vim
Normal file
137
syntax/qml.vim
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'qml') == -1
|
||||||
|
|
||||||
|
" Vim syntax file
|
||||||
|
" Language: QML
|
||||||
|
" Maintainer: Warwick Allison <warwick.allison@nokia.com>
|
||||||
|
" Updaters:
|
||||||
|
" URL:
|
||||||
|
" Changes:
|
||||||
|
" Last Change: 2009 Apr 30
|
||||||
|
|
||||||
|
" Based on javascript syntax (as is QML)
|
||||||
|
|
||||||
|
if !exists("main_syntax")
|
||||||
|
if version < 600
|
||||||
|
syntax clear
|
||||||
|
elseif exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let main_syntax = 'qml'
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Drop fold if it set but vim doesn't support it.
|
||||||
|
if version < 600 && exists("qml_fold")
|
||||||
|
unlet qml_fold
|
||||||
|
endif
|
||||||
|
|
||||||
|
syn case ignore
|
||||||
|
|
||||||
|
|
||||||
|
syn keyword qmlCommentTodo TODO FIXME XXX TBD contained
|
||||||
|
syn match qmlLineComment "\/\/.*" contains=@Spell,qmlCommentTodo
|
||||||
|
syn match qmlCommentSkip "^[ \t]*\*\($\|[ \t]\+\)"
|
||||||
|
syn region qmlComment start="/\*" end="\*/" contains=@Spell,qmlCommentTodo fold
|
||||||
|
syn match qmlSpecial "\\\d\d\d\|\\."
|
||||||
|
syn region qmlStringD start=+"+ skip=+\\\\\|\\"\|\\$+ end=+"\|$+ contains=qmlSpecial,@htmlPreproc
|
||||||
|
syn region qmlStringS start=+'+ skip=+\\\\\|\\'\|\\$+ end=+'\|$+ contains=qmlSpecial,@htmlPreproc
|
||||||
|
|
||||||
|
syn match qmlCharacter "'\\.'"
|
||||||
|
syn match qmlNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
|
||||||
|
syn region qmlRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\{0,2\}\s*$+ end=+/[gi]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline
|
||||||
|
syn match qmlObjectLiteralType "[A-Za-z][_A-Za-z0-9]*\s*\({\)\@="
|
||||||
|
syn match qmlNonBindingColon "?[^;]*:"
|
||||||
|
syn match qmlBindingProperty "\<[A-Za-z][_A-Za-z.0-9]*\s*:"
|
||||||
|
|
||||||
|
syn keyword qmlConditional if else switch
|
||||||
|
syn keyword qmlRepeat while for do in
|
||||||
|
syn keyword qmlBranch break continue
|
||||||
|
syn keyword qmlOperator new delete instanceof typeof
|
||||||
|
syn keyword qmlJsType Array Boolean Date Function Number Object String RegExp
|
||||||
|
syn keyword qmlType action alias bool color date double enumeration font int list point real rect size string time url variant vector3d
|
||||||
|
syn keyword qmlStatement return with
|
||||||
|
syn keyword qmlBoolean true false
|
||||||
|
syn keyword qmlNull null undefined
|
||||||
|
syn keyword qmlIdentifier arguments this var
|
||||||
|
syn keyword qmlLabel case default
|
||||||
|
syn keyword qmlException try catch finally throw
|
||||||
|
syn keyword qmlMessage alert confirm prompt status
|
||||||
|
syn keyword qmlGlobal self
|
||||||
|
syn keyword qmlDeclaration property signal
|
||||||
|
syn keyword qmlReserved abstract boolean byte char class const debugger enum export extends final float goto implements import interface long native package pragma private protected public short static super synchronized throws transient volatile
|
||||||
|
|
||||||
|
if get(g:, 'qml_fold', 0)
|
||||||
|
syn match qmlFunction "\<function\>"
|
||||||
|
syn region qmlFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend
|
||||||
|
|
||||||
|
syn sync match qmlSync grouphere qmlFunctionFold "\<function\>"
|
||||||
|
syn sync match qmlSync grouphere NONE "^}"
|
||||||
|
|
||||||
|
setlocal foldmethod=syntax
|
||||||
|
setlocal foldtext=getline(v:foldstart)
|
||||||
|
else
|
||||||
|
syn keyword qmlFunction function
|
||||||
|
syn match qmlBraces "[{}\[\]]"
|
||||||
|
syn match qmlParens "[()]"
|
||||||
|
endif
|
||||||
|
|
||||||
|
syn sync fromstart
|
||||||
|
syn sync maxlines=100
|
||||||
|
|
||||||
|
if main_syntax == "qml"
|
||||||
|
syn sync ccomment qmlComment
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Define the default highlighting.
|
||||||
|
" For version 5.7 and earlier: only when not done already
|
||||||
|
" For version 5.8 and later: only when an item doesn't have highlighting yet
|
||||||
|
if version >= 508 || !exists("did_qml_syn_inits")
|
||||||
|
if version < 508
|
||||||
|
let did_qml_syn_inits = 1
|
||||||
|
command -nargs=+ HiLink hi link <args>
|
||||||
|
else
|
||||||
|
command -nargs=+ HiLink hi def link <args>
|
||||||
|
endif
|
||||||
|
HiLink qmlComment Comment
|
||||||
|
HiLink qmlLineComment Comment
|
||||||
|
HiLink qmlCommentTodo Todo
|
||||||
|
HiLink qmlSpecial Special
|
||||||
|
HiLink qmlStringS String
|
||||||
|
HiLink qmlStringD String
|
||||||
|
HiLink qmlCharacter Character
|
||||||
|
HiLink qmlNumber Number
|
||||||
|
HiLink qmlConditional Conditional
|
||||||
|
HiLink qmlRepeat Repeat
|
||||||
|
HiLink qmlBranch Conditional
|
||||||
|
HiLink qmlOperator Operator
|
||||||
|
HiLink qmlJsType Type
|
||||||
|
HiLink qmlType Type
|
||||||
|
HiLink qmlObjectLiteralType Type
|
||||||
|
HiLink qmlStatement Statement
|
||||||
|
HiLink qmlFunction Function
|
||||||
|
HiLink qmlBraces Function
|
||||||
|
HiLink qmlError Error
|
||||||
|
HiLink qmlNull Keyword
|
||||||
|
HiLink qmlBoolean Boolean
|
||||||
|
HiLink qmlRegexpString String
|
||||||
|
|
||||||
|
HiLink qmlIdentifier Identifier
|
||||||
|
HiLink qmlLabel Label
|
||||||
|
HiLink qmlException Exception
|
||||||
|
HiLink qmlMessage Keyword
|
||||||
|
HiLink qmlGlobal Keyword
|
||||||
|
HiLink qmlReserved Keyword
|
||||||
|
HiLink qmlDebug Debug
|
||||||
|
HiLink qmlConstant Label
|
||||||
|
HiLink qmlNonBindingColon NONE
|
||||||
|
HiLink qmlBindingProperty Label
|
||||||
|
HiLink qmlDeclaration Function
|
||||||
|
|
||||||
|
delcommand HiLink
|
||||||
|
endif
|
||||||
|
|
||||||
|
let b:current_syntax = "qml"
|
||||||
|
if main_syntax == 'qml'
|
||||||
|
unlet main_syntax
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
Loading…
Reference in New Issue
Block a user