let or = '\|'
" Regular expressions used by line indentation function.
let cmake_regex_comment = '#.*'
- let cmake_regex_identifier = '[A-Za-z][A-Za-z0-9_]*'
+ let cmake_regex_identifier = '[A-Za-z0-9_]\+'
let cmake_regex_quoted = '"\([^"\\]\|\\.\)*"'
- let cmake_regex_arguments = '\(' . cmake_regex_quoted .
- \ or . '\$(' . cmake_regex_identifier . ')' .
- \ or . '[^()\\#"]' . or . '\\.' . '\)*'
+ let cmake_regex_argument = '\(' . cmake_regex_quoted .
+ \ or . cmake_regex_identifier .
+ \ or . '\${' . cmake_regex_identifier . '}' .
+ \ '\)'
+ let cmake_regex_arguments = '\(' . cmake_regex_argument .
+ \ '\(\s*' . cmake_regex_argument . '\s*\)*' .
+ \ '\)'
let cmake_indent_comment_line = '^\s*' . cmake_regex_comment
let cmake_indent_blank_regex = '^\s*$'
let cmake_indent_open_regex = '^\s*' . cmake_regex_identifier .
- \ '\s*(' . cmake_regex_arguments .
+ \ '\s*(\(' . cmake_regex_arguments . '\)\?' .
\ '\(' . cmake_regex_comment . '\)\?$'
- let cmake_indent_close_regex = '^' . cmake_regex_arguments .
- \ ')\s*' .
+ let cmake_indent_close_regex = '^\s*' . cmake_regex_arguments .
+ \ '\s*)\s*' .
+ \ '\(' . cmake_regex_comment . '\)\?$'
+ let b:cmake_indent = cmake_indent_close_regex
+ let cmake_indent_close_regex_no_arg = '^\s*)\s*' .
\ '\(' . cmake_regex_comment . '\)\?$'
let cmake_indent_begin_regex = '^\s*\(IF\|MACRO\|FOREACH\|ELSE\|ELSEIF\|WHILE\|FUNCTION\)\s*('
- let cmake_indent_end_regex = '^\s*\(ENDIF\|ENDFOREACH\|ENDMACRO\|ELSE\|ELSEIF\|ENDWHILE\|ENDFUNCTION\)\s*(' .
- \ or . ')\s*$'
+ let cmake_indent_end_regex = '^\s*\(ENDIF\|ENDFOREACH\|ENDMACRO\|ELSE\|ELSEIF\|ENDWHILE\|ENDFUNCTION\)\s*('
" Add
if previous_line =~? cmake_indent_comment_line " Handle comments
if this_line =~? cmake_indent_end_regex
let ind = ind - &sw
endif
+ if this_line =~? cmake_indent_close_regex_no_arg
+ let ind = ind - &sw
+ endif
if previous_line =~? cmake_indent_close_regex
let ind = ind - &sw
endif