annotate runtime/indent/bzl.vim @ 29579:f7a64755dbe9 v9.0.0130

patch 9.0.0130: cursor position wrong when inserting around virtual text Commit: https://github.com/vim/vim/commit/1f4ee19eefecd8f70b7cbe8ee9db8ace6352e23e Author: Bram Moolenaar <Bram@vim.org> Date: Mon Aug 1 15:52:55 2022 +0100 patch 9.0.0130: cursor position wrong when inserting around virtual text Problem: Cursor position wrong when inserting around virtual text. Solution: Update the cursor position properly.
author Bram Moolenaar <Bram@vim.org>
date Mon, 01 Aug 2022 17:00:04 +0200
parents bdda48f01a68
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7176
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
1 " Vim indent file
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
2 " Language: Bazel (http://bazel.io)
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
3 " Maintainer: David Barnett (https://github.com/google/vim-ft-bzl)
25402
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
4 " Last Change: 2021 Jul 08
7176
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
5
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
6 if exists('b:did_indent')
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
7 finish
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
8 endif
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
10 " Load base python indent.
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
11 if !exists('*GetPythonIndent')
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
12 runtime! indent/python.vim
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13 endif
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
14
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
15 let b:did_indent = 1
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
16
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
17 " Only enable bzl google indent if python google indent is enabled.
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
18 if !get(g:, 'no_google_python_indent')
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
19 setlocal indentexpr=GetBzlIndent(v:lnum)
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
20 endif
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
21
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
22 if exists('*GetBzlIndent')
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
23 finish
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
24 endif
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
25
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
26 let s:save_cpo = &cpo
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
27 set cpo-=C
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
28
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
29 " Maximum number of lines to look backwards.
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
30 let s:maxoff = 50
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
31
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
32 ""
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
33 " Determine the correct indent level given an {lnum} in the current buffer.
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
34 function GetBzlIndent(lnum) abort
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
35 let l:use_recursive_indent = !get(g:, 'no_google_python_recursive_indent')
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
36 if l:use_recursive_indent
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
37 " Backup and override indent setting variables.
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
38 if exists('g:pyindent_nested_paren')
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
39 let l:pyindent_nested_paren = g:pyindent_nested_paren
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
40 endif
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
41 if exists('g:pyindent_open_paren')
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
42 let l:pyindent_open_paren = g:pyindent_open_paren
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
43 endif
25402
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
44 let g:pyindent_nested_paren = 'shiftwidth()'
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
45 let g:pyindent_open_paren = 'shiftwidth()'
7176
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
46 endif
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
47
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
48 let l:indent = -1
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
49
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
50 call cursor(a:lnum, 1)
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
51 let [l:par_line, l:par_col] = searchpairpos('(\|{\|\[', '', ')\|}\|\]', 'bW',
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
52 \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" .
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
53 \ " synIDattr(synID(line('.'), col('.'), 1), 'name')" .
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
54 \ " =~ '\\(Comment\\|String\\)$'")
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
55 if l:par_line > 0
25402
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
56 " Indent inside parens.
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
57 if searchpair('(\|{\|\[', '', ')\|}\|\]', 'W',
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
58 \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" .
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
59 \ " synIDattr(synID(line('.'), col('.'), 1), 'name')" .
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
60 \ " =~ '\\(Comment\\|String\\)$'") && line('.') == a:lnum
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
61 " If cursor is at close parens, match indent with open parens.
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
62 " E.g.
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
63 " foo(
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
64 " )
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
65 let l:indent = indent(l:par_line)
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
66 else
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
67 " Align with the open paren unless it is at the end of the line.
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
68 " E.g.
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
69 " open_paren_not_at_EOL(100,
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
70 " (200,
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
71 " 300),
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
72 " 400)
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
73 " open_paren_at_EOL(
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
74 " 100, 200, 300, 400)
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
75 call cursor(l:par_line, 1)
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
76 if l:par_col != col('$') - 1
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
77 let l:indent = l:par_col
bdda48f01a68 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 11518
diff changeset
78 endif
7176
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
79 endif
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
80 endif
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
81
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
82 " Delegate the rest to the original function.
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
83 if l:indent == -1
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
84 let l:indent = GetPythonIndent(a:lnum)
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
85 endif
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
86
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
87 if l:use_recursive_indent
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
88 " Restore global variables.
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
89 if exists('l:pyindent_nested_paren')
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
90 let g:pyindent_nested_paren = l:pyindent_nested_paren
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
91 else
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
92 unlet g:pyindent_nested_paren
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
93 endif
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
94 if exists('l:pyindent_open_paren')
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
95 let g:pyindent_open_paren = l:pyindent_open_paren
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
96 else
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
97 unlet g:pyindent_open_paren
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
98 endif
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
99 endif
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
100
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
101 return l:indent
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
102 endfunction
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
103
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
104 let &cpo = s:save_cpo
30042ddff503 commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
105 unlet s:save_cpo