Mercurial > vim
annotate runtime/indent/cmake.vim @ 12499:d91cf2e26ef0
Update runtime files.
commit https://github.com/vim/vim/commit/37c64c78fd87e086b5a945ad7032787c274e2dcb
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Sep 19 22:06:03 2017 +0200
Update runtime files.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 19 Sep 2017 22:15:06 +0200 |
parents | 63b0b7b79b25 |
children | 34c8ec888122 |
rev | line source |
---|---|
836 | 1 " Vim indent file |
2 " Language: CMake (ft=cmake) | |
3 " Author: Andy Cedilnik <andy.cedilnik@kitware.com> | |
12499 | 4 " Maintainer: Dimitri Merejkowsky <d.merej@gmail.com> |
5 " Former Maintainer: Karthik Krishnan <karthik.krishnan@kitware.com> | |
6 " Last Change: 2017 Aug 30 | |
836 | 7 " |
8 " Licence: The CMake license applies to this file. See | |
12499 | 9 " https://cmake.org/licensing |
836 | 10 " This implies that distribution with Vim is allowed |
11 | |
12 if exists("b:did_indent") | |
13 finish | |
14 endif | |
15 let b:did_indent = 1 | |
16 | |
12499 | 17 setlocal et |
836 | 18 setlocal indentexpr=CMakeGetIndent(v:lnum) |
2249
6d3d35ff2c2b
Use full path in undofile(). Updated docs.
Bram Moolenaar <bram@vim.org>
parents:
2034
diff
changeset
|
19 setlocal indentkeys+==ENDIF(,ENDFOREACH(,ENDMACRO(,ELSE(,ELSEIF(,ENDWHILE( |
836 | 20 |
21 " Only define the function once. | |
22 if exists("*CMakeGetIndent") | |
23 finish | |
24 endif | |
3526
dd6c2497c997
Fix more 'cpo' issues in runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2249
diff
changeset
|
25 let s:keepcpo= &cpo |
dd6c2497c997
Fix more 'cpo' issues in runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2249
diff
changeset
|
26 set cpo&vim |
836 | 27 |
28 fun! CMakeGetIndent(lnum) | |
29 let this_line = getline(a:lnum) | |
30 | |
31 " Find a non-blank line above the current line. | |
32 let lnum = a:lnum | |
33 let lnum = prevnonblank(lnum - 1) | |
34 let previous_line = getline(lnum) | |
35 | |
36 " Hit the start of the file, use zero indent. | |
37 if lnum == 0 | |
38 return 0 | |
39 endif | |
40 | |
41 let ind = indent(lnum) | |
42 | |
43 let or = '\|' | |
44 " Regular expressions used by line indentation function. | |
45 let cmake_regex_comment = '#.*' | |
46 let cmake_regex_identifier = '[A-Za-z][A-Za-z0-9_]*' | |
47 let cmake_regex_quoted = '"\([^"\\]\|\\.\)*"' | |
48 let cmake_regex_arguments = '\(' . cmake_regex_quoted . | |
49 \ or . '\$(' . cmake_regex_identifier . ')' . | |
50 \ or . '[^()\\#"]' . or . '\\.' . '\)*' | |
51 | |
52 let cmake_indent_comment_line = '^\s*' . cmake_regex_comment | |
839 | 53 let cmake_indent_blank_regex = '^\s*$' |
836 | 54 let cmake_indent_open_regex = '^\s*' . cmake_regex_identifier . |
55 \ '\s*(' . cmake_regex_arguments . | |
56 \ '\(' . cmake_regex_comment . '\)\?$' | |
57 | |
58 let cmake_indent_close_regex = '^' . cmake_regex_arguments . | |
59 \ ')\s*' . | |
60 \ '\(' . cmake_regex_comment . '\)\?$' | |
61 | |
2249
6d3d35ff2c2b
Use full path in undofile(). Updated docs.
Bram Moolenaar <bram@vim.org>
parents:
2034
diff
changeset
|
62 let cmake_indent_begin_regex = '^\s*\(IF\|MACRO\|FOREACH\|ELSE\|ELSEIF\|WHILE\|FUNCTION\)\s*(' |
6d3d35ff2c2b
Use full path in undofile(). Updated docs.
Bram Moolenaar <bram@vim.org>
parents:
2034
diff
changeset
|
63 let cmake_indent_end_regex = '^\s*\(ENDIF\|ENDFOREACH\|ENDMACRO\|ELSE\|ELSEIF\|ENDWHILE\|ENDFUNCTION\)\s*(' |
836 | 64 |
65 " Add | |
66 if previous_line =~? cmake_indent_comment_line " Handle comments | |
67 let ind = ind | |
68 else | |
69 if previous_line =~? cmake_indent_begin_regex | |
12499 | 70 let ind = ind + &sw |
836 | 71 endif |
72 if previous_line =~? cmake_indent_open_regex | |
12499 | 73 let ind = ind + &sw |
836 | 74 endif |
75 endif | |
76 | |
77 " Subtract | |
78 if this_line =~? cmake_indent_end_regex | |
12499 | 79 let ind = ind - &sw |
836 | 80 endif |
81 if previous_line =~? cmake_indent_close_regex | |
12499 | 82 let ind = ind - &sw |
836 | 83 endif |
84 | |
85 return ind | |
86 endfun | |
3526
dd6c2497c997
Fix more 'cpo' issues in runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2249
diff
changeset
|
87 |
dd6c2497c997
Fix more 'cpo' issues in runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2249
diff
changeset
|
88 let &cpo = s:keepcpo |
dd6c2497c997
Fix more 'cpo' issues in runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2249
diff
changeset
|
89 unlet s:keepcpo |