diff --git a/docs/source/plugin-development/plugin-parameters.rst b/docs/source/plugin-development/plugin-parameters.rst index 16250987..d387a656 100644 --- a/docs/source/plugin-development/plugin-parameters.rst +++ b/docs/source/plugin-development/plugin-parameters.rst @@ -38,6 +38,7 @@ a file, a plugin can ask for any of the following: - :attr:`~flake8.processor.FileProcessor.noqa` - :attr:`~flake8.processor.FileProcessor.previous_indent_level` - :attr:`~flake8.processor.FileProcessor.previous_logical` +- :attr:`~flake8.processor.FileProcessor.previous_unindented_logical_line` - :attr:`~flake8.processor.FileProcessor.tokens` Some properties are set once per file for plugins which iterate itself over diff --git a/src/flake8/processor.py b/src/flake8/processor.py index 2757e8f8..7cea0381 100644 --- a/src/flake8/processor.py +++ b/src/flake8/processor.py @@ -41,6 +41,7 @@ class FileProcessor(object): - :attr:`noqa` - :attr:`previous_indent_level` - :attr:`previous_logical` + - :attr:`previous_unindented_logical_line` - :attr:`tokens` - :attr:`file_tokens` - :attr:`total_lines` @@ -89,6 +90,8 @@ def __init__(self, filename, options, lines=None): self.previous_indent_level = 0 #: Previous logical line self.previous_logical = '' + #: Previous unindented (i.e. top-level) logical line + self.previous_unindented_logical_line = '' #: Current set of tokens self.tokens = [] #: Total number of lines in the file @@ -163,6 +166,8 @@ def next_logical_line(self): if self.logical_line: self.previous_indent_level = self.indent_level self.previous_logical = self.logical_line + if not self.indent_level: + self.previous_unindented_logical_line = self.logical_line self.blank_lines = 0 self.tokens = [] self.noqa = False