annotate runtime/indent/context.vim @ 32443:fbcf40a2bf58 v9.0.1553

patch 9.0.1553: CI: using slightly outdated gcc version Commit: https://github.com/vim/vim/commit/b6a19594b29a7d4f33a1f4324a0579df61f48d06 Author: Philip H <47042125+pheiduck@users.noreply.github.com> Date: Sat May 13 18:05:20 2023 +0100 patch 9.0.1553: CI: using slightly outdated gcc version Problem: CI: using slightly outdated gcc version. Solution: Use "brew" to get a more recent gcc version. (closes https://github.com/vim/vim/issues/12391)
author Bram Moolenaar <Bram@vim.org>
date Sat, 13 May 2023 19:15:03 +0200
parents f00c56ee8118
children d81556766132
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
29885
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
1 vim9script
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
2
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
3 # Language: ConTeXt typesetting engine
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
4 # Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
5 # Former Maintainers: Nikolai Weibull <now@bitwi.se>
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
6 # Latest Revision: 2022 Aug 12
10301
07d2b5a3b7cc commit https://github.com/vim/vim/commit/46fceaaa8d1447a9588736d86eb4908214187b08
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
7
07d2b5a3b7cc commit https://github.com/vim/vim/commit/46fceaaa8d1447a9588736d86eb4908214187b08
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
8 if exists("b:did_indent")
07d2b5a3b7cc commit https://github.com/vim/vim/commit/46fceaaa8d1447a9588736d86eb4908214187b08
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9 finish
07d2b5a3b7cc commit https://github.com/vim/vim/commit/46fceaaa8d1447a9588736d86eb4908214187b08
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
10 endif
07d2b5a3b7cc commit https://github.com/vim/vim/commit/46fceaaa8d1447a9588736d86eb4908214187b08
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
11
29885
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
12 # Load MetaPost indentation script (this will also set b:did_indent)
10301
07d2b5a3b7cc commit https://github.com/vim/vim/commit/46fceaaa8d1447a9588736d86eb4908214187b08
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13 runtime! indent/mp.vim
07d2b5a3b7cc commit https://github.com/vim/vim/commit/46fceaaa8d1447a9588736d86eb4908214187b08
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
14
29885
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
15 setlocal indentexpr=ConTeXtIndent()
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
16
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
17 b:undo_indent = "setl indentexpr<"
10301
07d2b5a3b7cc commit https://github.com/vim/vim/commit/46fceaaa8d1447a9588736d86eb4908214187b08
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
18
29885
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
19 def PrevNotComment(l: number): number
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
20 var prevlnum = prevnonblank(l)
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
21
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
22 while prevlnum > 0 && getline(prevlnum) =~# '^\s*%'
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
23 prevlnum = prevnonblank(prevlnum - 1)
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
24 endwhile
10301
07d2b5a3b7cc commit https://github.com/vim/vim/commit/46fceaaa8d1447a9588736d86eb4908214187b08
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
25
29885
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
26 return prevlnum
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
27 enddef
10301
07d2b5a3b7cc commit https://github.com/vim/vim/commit/46fceaaa8d1447a9588736d86eb4908214187b08
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
28
29885
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
29 def FindPair(pstart: string, pmid: string, pend: string): number
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
30 cursor(v:lnum, 1)
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
31 return indent(searchpair(pstart, pmid, pend, 'bWn',
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
32 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'))
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
33 enddef
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
34
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
35 def ConTeXtIndent(): number
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
36 # Use MetaPost rules inside MetaPost graphic environments
10301
07d2b5a3b7cc commit https://github.com/vim/vim/commit/46fceaaa8d1447a9588736d86eb4908214187b08
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
37 if len(synstack(v:lnum, 1)) > 0 &&
29885
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
38 synIDattr(synstack(v:lnum, 1)[0], "name") ==# 'contextMPGraphic'
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
39 return g:MetaPostIndent()
10301
07d2b5a3b7cc commit https://github.com/vim/vim/commit/46fceaaa8d1447a9588736d86eb4908214187b08
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
40 endif
29885
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
41
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
42 const prevlnum = PrevNotComment(v:lnum - 1)
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
43 const prevind = indent(prevlnum)
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
44 const prevline = getline(prevlnum)
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
45 const currline = getline(v:lnum)
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
46
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
47 # If the current line starts with ], match indentation.
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
48 if currline =~# '^\s*\]'
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
49 return FindPair('\[', '', '\]')
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
50 endif
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
51
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
52 # If the current line starts with }, match indentation.
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
53 if currline =~# '^\s*}'
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
54 return FindPair('{', '', '}')
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
55 endif
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
56
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
57 # If the previous line ends with [ or { (possibly followed by a comment) then indent.
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
58 if prevline =~# '[{[]\s*\%(%.*\)\=$'
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
59 return prevind + shiftwidth()
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
60 endif
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
61
10301
07d2b5a3b7cc commit https://github.com/vim/vim/commit/46fceaaa8d1447a9588736d86eb4908214187b08
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
62 return -1
29885
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
63 enddef
10301
07d2b5a3b7cc commit https://github.com/vim/vim/commit/46fceaaa8d1447a9588736d86eb4908214187b08
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
64
29885
f00c56ee8118 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10301
diff changeset
65 # vim: sw=2 fdm=marker