Mercurial > vim
annotate runtime/indent/kotlin.vim @ 34264:cce6b834635c v9.1.0071
patch 9.1.0071: Need a diff() Vim script function
Commit: https://github.com/vim/vim/commit/fa37835b8c0ed0f83952978fca4c332335ca7c46
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Thu Feb 1 22:05:27 2024 +0100
patch 9.1.0071: Need a diff() Vim script function
Problem: Need a diff() Vim script function
Solution: Add the diff() Vim script function using the
xdiff internal diff library, add support for
"unified" and "indices" mode.
(Yegappan Lakshmanan)
fixes: #4241
closes: #12321
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 01 Feb 2024 22:30:03 +0100 |
parents | c9c720360002 |
children |
rev | line source |
---|---|
33282
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
1 " Vim indent file |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
2 " Language: Kotlin |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
3 " Maintainer: Alexander Udalov |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
4 " URL: https://github.com/udalov/kotlin-vim |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
5 " Last Change: 7 November 2021 |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
6 " 2023 Sep 17 by Vim Project (undo_indent) |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
7 |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
8 if exists('b:did_indent') |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
9 finish |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
10 endif |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
11 let b:did_indent = 1 |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
12 |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
13 setlocal cinoptions& cinoptions+=j1,L0 |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
14 setlocal indentexpr=GetKotlinIndent() |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
15 setlocal indentkeys=0},0),!^F,o,O,e,<CR> |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
16 setlocal autoindent " TODO ? |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
17 |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
18 let b:undo_indent = "setlocal autoindent< cinoptions< indentexpr< indentkeys<" |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
19 |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
20 " TODO teach it to count bracket balance, etc. |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
21 function! GetKotlinIndent() |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
22 if v:lnum == 0 |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
23 return 0 |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
24 endif |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
25 |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
26 let prev_num = prevnonblank(v:lnum - 1) |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
27 let prev = getline(prev_num) |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
28 let prev_indent = indent(prev_num) |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
29 let cur = getline(v:lnum) |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
30 |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
31 if cur =~ '^\s*\*' |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
32 return cindent(v:lnum) |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
33 endif |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
34 |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
35 if prev =~ '^\s*\*/' |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
36 let st = prev |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
37 while st > 1 |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
38 if getline(st) =~ '^\s*/\*' |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
39 break |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
40 endif |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
41 let st = st - 1 |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
42 endwhile |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
43 return indent(st) |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
44 endif |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
45 |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
46 let prev_open_paren = prev =~ '^.*(\s*$' |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
47 let cur_close_paren = cur =~ '^\s*).*$' |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
48 let prev_open_brace = prev =~ '^.*\({\|->\)\s*$' |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
49 let cur_close_brace = cur =~ '^\s*}.*$' |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
50 |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
51 if prev_open_paren && !cur_close_paren || prev_open_brace && !cur_close_brace |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
52 return prev_indent + shiftwidth() |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
53 endif |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
54 |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
55 if cur_close_paren && !prev_open_paren || cur_close_brace && !prev_open_brace |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
56 return prev_indent - shiftwidth() |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
57 endif |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
58 |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
59 return prev_indent |
c9c720360002
runtime(kotlin): Add Kotlin runtime files (#13110)
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
60 endfunction |