From 66108502413f46af5eb506f6b393e479e22371de Mon Sep 17 00:00:00 2001 From: Samir Benmendil Date: Sun, 14 May 2017 20:59:47 +0100 Subject: [PATCH] vim: indent/cmake update file to support modern CMake --- vim/indent/cmake.vim | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/vim/indent/cmake.vim b/vim/indent/cmake.vim index 854e3cb..691ca91 100644 --- a/vim/indent/cmake.vim +++ b/vim/indent/cmake.vim @@ -44,25 +44,31 @@ fun! CMakeGetIndent(lnum) 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 @@ -80,6 +86,9 @@ fun! CMakeGetIndent(lnum) 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 -- 2.48.1