Update syntax checking

* Line continuation characters should be on the same lines.
* .vim file line indentation should be a multiple of 4.
This commit is contained in:
w0rp
2019-02-06 18:05:13 +00:00
parent 4d426bf287
commit 3e11cbd18d
44 changed files with 221 additions and 191 deletions

View File

@@ -10,7 +10,7 @@ import re
INDENTATION_RE = re.compile(r'^ *')
COMMENT_LINE_RE = re.compile(r'^ *"')
COMMAND_RE = re.compile(r'^ *([a-zA-Z]+)')
COMMAND_RE = re.compile(r'^ *([a-zA-Z\\]+)')
START_BLOCKS = set(['if', 'for', 'while', 'try', 'function'])
END_BLOCKS = set(['endif', 'endfor', 'endwhile', 'endtry', 'endfunction'])
@@ -21,6 +21,7 @@ WHITESPACE_BEFORE_SET = START_BLOCKS | TERMINATORS
WHITESPACE_FORBIDDEN_BEFORE_SET = END_BLOCKS | MIDDLE_BLOCKS
WHITESPACE_AFTER_SET = END_BLOCKS
WHITESPACE_FORBIDDEN_AFTER_SET = START_BLOCKS | MIDDLE_BLOCKS
SAME_INDENTATION_SET = set(['\\'])
def remove_comment_lines(line_iter):
@@ -44,7 +45,7 @@ def check_lines(line_iter):
):
yield (
line_number,
'Blank line forbidden after `%s`' % (command,)
'Blank line forbidden after `%s`' % (previous_command,)
)
previous_line_blank = True
@@ -56,6 +57,26 @@ def check_lines(line_iter):
if command_match:
command = command_match.group(1)
if (
command in SAME_INDENTATION_SET
and previous_indentation_level is not None
and indentation_level != previous_indentation_level
):
yield (
line_number,
'Line continuation should match previous indentation'
)
if (
previous_indentation_level is not None
and indentation_level != previous_indentation_level
and abs(indentation_level - previous_indentation_level) != 4
):
yield (
line_number,
'Indentation should be 4 spaces'
)
# Check for commands requiring blank lines before them, if they
# aren't at the start of a block.
if (