From a0c79360edaad50966bdc1ac537d0b7ee048a515 Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Sat, 10 Oct 2015 17:25:38 +0200 Subject: Add qml support, closes #69 --- indent/qml.vim | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 indent/qml.vim (limited to 'indent') diff --git a/indent/qml.vim b/indent/qml.vim new file mode 100644 index 00000000..ea083707 --- /dev/null +++ b/indent/qml.vim @@ -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,*,=*/ + +" 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 -- cgit v1.2.3