annotate runtime/indent/qml.vim @ 32942:f2143ef2e979 v9.0.1766

patch 9.0.1766: Runtime: Missing QML support Problem: Runtime: Missing QML support Solution: Add QML support to Vim closes: #12810 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: ChaseKnowlden <haroldknowlden@gmail.com>
author Christian Brabandt <cb@256bit.org>
date Sun, 20 Aug 2023 21:59:22 +0200
parents
children c781be83e11e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
32942
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
1 " Vim indent file
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
2 " Language: QML
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
3 " Maintainer: Chase Knowlden <haroldknowlden@gmail.com>
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
4 " Last Change: 2023 Aug 16
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
5 "
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
6 " Improved JavaScript indent script.
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
7
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
8 " Indent script in place for this already?
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9 if exists("b:did_indent")
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
10 finish
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
11 endif
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
12 let b:did_indent = 1
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13 let b:undo_indent = "setlocal indentexpr< indentkeys<"
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
14
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
15 setlocal indentexpr=s:GetQmlIndent()
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
16 setlocal indentkeys=0{,0},0),0],:,!^F,o,O,e,*<Return>,=*/
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
17
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
18 " Only define functions once per session
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
19 if exists("*s:GetQmlIndent")
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
20 finish
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
21 endif
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
22
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
23 " Clean up a line of code by removing trailing '//' and '/* */' comments, and trimming
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
24 " whitespace
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
25 function! s:Trim(line)
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
26 return substitute(substitute(substitute(a:line, '// .*', '', ''), '/\* .* \*/', '', ''), '^\s*\|\s*$', '', 'g')
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
27 endfunction
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
28
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
29 function! s:GetQmlIndent()
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
30 let num = v:lnum
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
31 let line = s:Trim(getline(num))
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
32
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
33 let pnum = prevnonblank(num - 1)
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
34 if pnum == 0
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
35 return 0
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
36 endif
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
37 let pline = s:Trim(getline(pnum))
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
38
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
39 let ind = indent(pnum)
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
40
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
41 " bracket/brace/paren blocks
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
42 if pline =~ '[{[(]$'
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
43 let ind += &sw
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
44 endif
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
45 if line =~ '^[}\])]'
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
46 let ind -= &sw
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
47 endif
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
48
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
49 " '/*' comments
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
50 if pline =~ '^/\*.*\*/'
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
51 " no indent for single-line form
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
52 elseif pline =~ '^/\*'
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
53 let ind += 1
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
54 elseif pline =~ '^\*/'
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
55 let ind -= 1
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
56 endif
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
57
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
58 return ind
f2143ef2e979 patch 9.0.1766: Runtime: Missing QML support
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
59 endfunction