Merge with default branch. Py2 comp.

Sun, 08 Sep 2013 19:04:07 +0200

author
T.Rzepka <Tobias.Rzepka@gmail.com>
date
Sun, 08 Sep 2013 19:04:07 +0200
branch
Py2 comp.
changeset 2911
ce77f0b1ee67
parent 2847
1843ef6e2656 (current diff)
parent 2885
7adb2d9880be (diff)
child 3056
9986ec0e559a

Merge with default branch.

APIs/Python3/eric5.api file | annotate | diff | comparison | revisions
APIs/Python3/eric5.bas file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Utilities.__init__.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric5.Plugins.CheckerPlugins.Pep8.html file | annotate | diff | comparison | revisions
E5Network/E5Ftp.py file | annotate | diff | comparison | revisions
PluginManager/PluginInstallDialog.py file | annotate | diff | comparison | revisions
PluginManager/PluginUninstallDialog.py file | annotate | diff | comparison | revisions
Plugins/CheckerPlugins/Pep8/Pep8Checker.py file | annotate | diff | comparison | revisions
Plugins/CheckerPlugins/Pep8/Pep8Dialog.py file | annotate | diff | comparison | revisions
Plugins/CheckerPlugins/Pep8/Pep8Fixer.py file | annotate | diff | comparison | revisions
Plugins/CheckerPlugins/Pep8/Pep8StatisticsDialog.py file | annotate | diff | comparison | revisions
Plugins/CheckerPlugins/Pep8/pep8.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/HgLogDialog.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsPySvn/SvnLogBrowserDialog.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsPySvn/SvnLogDialog.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsSubversion/SvnLogBrowserDialog.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsSubversion/SvnLogDialog.py file | annotate | diff | comparison | revisions
Project/Project.py file | annotate | diff | comparison | revisions
VCS/VersionControl.py file | annotate | diff | comparison | revisions
eric5.e4p file | annotate | diff | comparison | revisions
i18n/eric5_cs.ts file | annotate | diff | comparison | revisions
i18n/eric5_de.qm file | annotate | diff | comparison | revisions
i18n/eric5_de.ts file | annotate | diff | comparison | revisions
i18n/eric5_en.ts file | annotate | diff | comparison | revisions
i18n/eric5_es.ts file | annotate | diff | comparison | revisions
i18n/eric5_fr.ts file | annotate | diff | comparison | revisions
i18n/eric5_it.ts file | annotate | diff | comparison | revisions
i18n/eric5_ru.ts file | annotate | diff | comparison | revisions
i18n/eric5_tr.ts file | annotate | diff | comparison | revisions
i18n/eric5_zh_CN.GB2312.ts file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric5.api	Mon Aug 12 22:21:53 2013 +0200
+++ b/APIs/Python3/eric5.api	Sun Sep 08 19:04:07 2013 +0200
@@ -3716,105 +3716,160 @@
 eric5.Plugins.AboutPlugin.AboutDialog.licenseText?7
 eric5.Plugins.AboutPlugin.AboutDialog.thanksText?7
 eric5.Plugins.AboutPlugin.AboutDialog.titleText?7
-eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.Pep8Checker.report_error_args?4(line_number, offset, code, check, *args)
-eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.Pep8Checker?1(filename, lines, repeat=False, select="", ignore="")
 eric5.Plugins.CheckerPlugins.Pep8.Pep8CodeSelectionDialog.Pep8CodeSelectionDialog.getSelectedCodes?4()
 eric5.Plugins.CheckerPlugins.Pep8.Pep8CodeSelectionDialog.Pep8CodeSelectionDialog?1(codes, showFixCodes, parent=None)
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.codeRole?7
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.filenameRole?7
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.fixableRole?7
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.lineRole?7
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.messageRole?7
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.on_buttonBox_clicked?4(button)
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.on_excludeMessagesSelectButton_clicked?4()
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.on_fixButton_clicked?4()
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.on_fixIssuesSelectButton_clicked?4()
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.on_includeMessagesSelectButton_clicked?4()
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.on_loadDefaultButton_clicked?4()
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.on_noFixIssuesSelectButton_clicked?4()
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.on_resetDefaultButton_clicked?4()
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.on_resultList_itemActivated?4(item, column)
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.on_resultList_itemSelectionChanged?4()
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.on_showButton_clicked?4()
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.on_startButton_clicked?4()
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.on_statisticsButton_clicked?4()
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.on_storeDefaultButton_clicked?4()
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.positionRole?7
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.prepare?4(fileList, project)
-eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.settingsKey?7
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.start?4(fn, save=False, repeat=None)
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog?1(parent=None)
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Report.error_args?4(line_number, offset, code, check, *args)
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Report?1(options)
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.Pep8FixableIssues?7
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.Pep8Fixer.fixIssue?4(line, pos, message)
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.Pep8Fixer.mutualStartswith?4(b)
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.Pep8Fixer.saveFile?4(encoding)
-eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.Pep8Fixer?1(project, filename, sourceLines, fixCodes, inPlace)
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.Pep8Fixer?1(project, filename, sourceLines, fixCodes, noFixCodes, maxLineLength, inPlace)
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.Pep8IndentationWrapper.SKIP_TOKENS?7
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.Pep8IndentationWrapper.pep8Expected?4()
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.Pep8IndentationWrapper?1(physical_lines)
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.Pep8LineShortener.shorten?4()
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.Pep8LineShortener?1(curLine, prevLine, nextLine, maxLength=79, eol="\n", indentWord="    ", isDocString=False)
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.Pep8Reindenter.fixedLine?4(line)
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.Pep8Reindenter.getline?4()
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.Pep8Reindenter.run?4()
+eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.Pep8Reindenter?1(sourceLines)
 eric5.Plugins.CheckerPlugins.Pep8.Pep8StatisticsDialog.Pep8StatisticsDialog?1(statistics, parent=None)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.ARITHMETIC_OP?7
 eric5.Plugins.CheckerPlugins.Pep8.pep8.BENCHMARK_KEYS?7
-eric5.Plugins.CheckerPlugins.Pep8.pep8.BINARY_OPERATORS?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.BaseReport.error?4(line_number, offset, text, check)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.BaseReport.error_args?4(line_number, offset, code, check, *args)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.BaseReport.get_count?4(prefix='')
+eric5.Plugins.CheckerPlugins.Pep8.pep8.BaseReport.get_file_results?4()
+eric5.Plugins.CheckerPlugins.Pep8.pep8.BaseReport.get_statistics?4(prefix='')
+eric5.Plugins.CheckerPlugins.Pep8.pep8.BaseReport.increment_logical_line?4()
+eric5.Plugins.CheckerPlugins.Pep8.pep8.BaseReport.init_file?4(filename, lines, expected, line_offset)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.BaseReport.print_benchmark?4()
+eric5.Plugins.CheckerPlugins.Pep8.pep8.BaseReport.print_filename?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.BaseReport.print_statistics?4(prefix='')
+eric5.Plugins.CheckerPlugins.Pep8.pep8.BaseReport.start?4()
+eric5.Plugins.CheckerPlugins.Pep8.pep8.BaseReport.stop?4()
+eric5.Plugins.CheckerPlugins.Pep8.pep8.BaseReport?1(options)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.COMMENT_WITH_NL?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.COMPARE_SINGLETON_REGEX?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.COMPARE_TYPE_REGEX?7
 eric5.Plugins.CheckerPlugins.Pep8.pep8.Checker.build_tokens_line?4()
 eric5.Plugins.CheckerPlugins.Pep8.pep8.Checker.check_all?4(expected=None, line_offset=0)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.Checker.check_ast?4()
 eric5.Plugins.CheckerPlugins.Pep8.pep8.Checker.check_logical?4()
 eric5.Plugins.CheckerPlugins.Pep8.pep8.Checker.check_physical?4(line)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.Checker.generate_tokens?4()
 eric5.Plugins.CheckerPlugins.Pep8.pep8.Checker.readline?4()
 eric5.Plugins.CheckerPlugins.Pep8.pep8.Checker.readline_check_physical?4()
-eric5.Plugins.CheckerPlugins.Pep8.pep8.Checker.report_error?4(line_number, offset, text, check)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.Checker.report_invalid_syntax?4()
 eric5.Plugins.CheckerPlugins.Pep8.pep8.Checker.run_check?4(check, argument_names)
-eric5.Plugins.CheckerPlugins.Pep8.pep8.Checker?1(filename, lines=None)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.Checker?1(filename=None, lines=None, options=None, report=None, **kwargs)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.DEFAULT_EXCLUDE?7
 eric5.Plugins.CheckerPlugins.Pep8.pep8.DEFAULT_IGNORE?7
 eric5.Plugins.CheckerPlugins.Pep8.pep8.DOCSTRING_REGEX?7
-eric5.Plugins.CheckerPlugins.Pep8.pep8.E225NOT_KEYWORDS?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.DiffReport.error?4(line_number, offset, text, check)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.DiffReport?1(options)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.ERRORCODE_REGEX?7
 eric5.Plugins.CheckerPlugins.Pep8.pep8.EXTRANEOUS_WHITESPACE_REGEX?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.FileReport.print_filename?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.HUNK_REGEX?7
 eric5.Plugins.CheckerPlugins.Pep8.pep8.INDENT_REGEX?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.KEYWORDS?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.KEYWORD_REGEX?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.LAMBDA_REGEX?7
 eric5.Plugins.CheckerPlugins.Pep8.pep8.MAX_LINE_LENGTH?7
-eric5.Plugins.CheckerPlugins.Pep8.pep8.OPERATORS?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.OPERATOR_REGEX?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.PROJECT_CONFIG?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.PyCF_ONLY_AST?7
 eric5.Plugins.CheckerPlugins.Pep8.pep8.RAISE_COMMA_REGEX?7
-eric5.Plugins.CheckerPlugins.Pep8.pep8.SELFTEST_REGEX?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.REPORT_FORMAT?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.RERAISE_COMMA_REGEX?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.SINGLETONS?7
 eric5.Plugins.CheckerPlugins.Pep8.pep8.SKIP_TOKENS?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.StandardReport.error?4(line_number, offset, text, check)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.StandardReport.error_args?4(line_number, offset, code, check, *args)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.StandardReport.get_file_results?4()
+eric5.Plugins.CheckerPlugins.Pep8.pep8.StandardReport.init_file?4(filename, lines, expected, line_offset)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.StandardReport?1(options)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.StyleGuide.check_files?4(paths=None)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.StyleGuide.excluded?4(filename, parent=None)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.StyleGuide.get_checks?4(argument_name)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.StyleGuide.ignore_code?4(code)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.StyleGuide.init_report?4(reporter=None)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.StyleGuide.input_dir?4(dirname)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.StyleGuide.input_file?4(filename, lines=None, expected=None, line_offset=0)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.StyleGuide?1(*args, **kwargs)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.TESTSUITE_PATH?7
 eric5.Plugins.CheckerPlugins.Pep8.pep8.UNARY_OPERATORS?7
 eric5.Plugins.CheckerPlugins.Pep8.pep8.WHITESPACE?7
-eric5.Plugins.CheckerPlugins.Pep8.pep8.WHITESPACE_AROUND_NAMED_PARAMETER_REGEX?7
-eric5.Plugins.CheckerPlugins.Pep8.pep8.WHITESPACE_AROUND_OPERATOR_REGEX?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.WHITESPACE_AFTER_COMMA_REGEX?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.WS_NEEDED_OPERATORS?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.WS_OPTIONAL_OPERATORS?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8._add_check?5(check, kind, codes, args)
+eric5.Plugins.CheckerPlugins.Pep8.pep8._checks?8
 eric5.Plugins.CheckerPlugins.Pep8.pep8._main?5()
-eric5.Plugins.CheckerPlugins.Pep8.pep8.args?7
-eric5.Plugins.CheckerPlugins.Pep8.pep8.blank_lines?4(logical_line, blank_lines, indent_level, line_number, previous_logical, previous_indent_level, blank_lines_before_comment)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.blank_lines?4(logical_line, blank_lines, indent_level, line_number, previous_logical, previous_indent_level)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.comparison_to_singleton?4(logical_line, noqa)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.comparison_type?4(logical_line)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.compound_statements?4(logical_line)
-eric5.Plugins.CheckerPlugins.Pep8.pep8.excluded?4(filename)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.continued_indentation?4(logical_line, tokens, indent_level, hang_closing, noqa, verbose)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.expand_indent?4(line)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.explicit_line_join?4(logical_line, tokens)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.extraneous_whitespace?4(logical_line)
-eric5.Plugins.CheckerPlugins.Pep8.pep8.filename_match?4(filename)
-eric5.Plugins.CheckerPlugins.Pep8.pep8.find_checks?4(argument_name)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.filename_match?4(filename, patterns, default=True)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.getMessage?4(code, *args)
-eric5.Plugins.CheckerPlugins.Pep8.pep8.get_count?4(prefix='')
-eric5.Plugins.CheckerPlugins.Pep8.pep8.get_error_statistics?4()
-eric5.Plugins.CheckerPlugins.Pep8.pep8.get_statistics?4(prefix='')
-eric5.Plugins.CheckerPlugins.Pep8.pep8.get_warning_statistics?4()
-eric5.Plugins.CheckerPlugins.Pep8.pep8.ignore_code?4(code)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.get_parser?4(prog='pep8', version=__version__)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.imports_on_separate_lines?4(logical_line)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.indentation?4(logical_line, previous_logical, indent_char, indent_level, previous_indent_level)
-eric5.Plugins.CheckerPlugins.Pep8.pep8.input_dir?4(dirname, runner=None)
-eric5.Plugins.CheckerPlugins.Pep8.pep8.input_file?4(filename)
-eric5.Plugins.CheckerPlugins.Pep8.pep8.maximum_line_length?4(physical_line)
-eric5.Plugins.CheckerPlugins.Pep8.pep8.message?4(text)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.init_checks_registry?4()
+eric5.Plugins.CheckerPlugins.Pep8.pep8.maximum_line_length?4(physical_line, max_line_length)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.missing_newline?4(physical_line)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.missing_whitespace?4(logical_line)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.missing_whitespace_around_operator?4(logical_line, tokens)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.mute_string?4(text)
-eric5.Plugins.CheckerPlugins.Pep8.pep8.options?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.noqa?7
+eric5.Plugins.CheckerPlugins.Pep8.pep8.parse_udiff?4(diff, patterns=None, parent='.')
 eric5.Plugins.CheckerPlugins.Pep8.pep8.pep8_messages?7
 eric5.Plugins.CheckerPlugins.Pep8.pep8.pep8_messages_sample_args?7
-eric5.Plugins.CheckerPlugins.Pep8.pep8.print_benchmark?4(elapsed)
-eric5.Plugins.CheckerPlugins.Pep8.pep8.print_statistics?4(prefix='')
-eric5.Plugins.CheckerPlugins.Pep8.pep8.process_options?4(arglist=None)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.process_options?4(arglist=None, parse_argv=False, config_file=None, parser=None)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.python_3000_backticks?4(logical_line)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.python_3000_has_key?4(logical_line)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.python_3000_not_equal?4(logical_line)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.python_3000_raise_comma?4(logical_line)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.read_config?4(options, args, arglist, parser)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.readlines?4(filename)
-eric5.Plugins.CheckerPlugins.Pep8.pep8.reset_counters?4()
-eric5.Plugins.CheckerPlugins.Pep8.pep8.run_tests?4(filename)
-eric5.Plugins.CheckerPlugins.Pep8.pep8.selftest?4()
+eric5.Plugins.CheckerPlugins.Pep8.pep8.register_check?4(check, codes=None)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.stdin_get_value?4()
 eric5.Plugins.CheckerPlugins.Pep8.pep8.tabs_obsolete?4(physical_line)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.tabs_or_spaces?4(physical_line, indent_char)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.trailing_blank_lines?4(physical_line, lines, line_number)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.trailing_whitespace?4(physical_line)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.whitespace_around_comma?4(logical_line)
-eric5.Plugins.CheckerPlugins.Pep8.pep8.whitespace_around_named_parameter_equals?4(logical_line)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.whitespace_around_keywords?4(logical_line)
+eric5.Plugins.CheckerPlugins.Pep8.pep8.whitespace_around_named_parameter_equals?4(logical_line, tokens)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.whitespace_around_operator?4(logical_line)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.whitespace_before_inline_comment?4(logical_line, tokens)
 eric5.Plugins.CheckerPlugins.Pep8.pep8.whitespace_before_parameters?4(logical_line, tokens)
@@ -6269,6 +6324,7 @@
 eric5.Project.Project.Project.othersAdded?4(fn, updateModel=True)
 eric5.Project.Project.Project.prepareRepopulateItem?7
 eric5.Project.Project.Project.projectAboutToBeCreated?7
+eric5.Project.Project.Project.projectChanged?7
 eric5.Project.Project.Project.projectClosed?7
 eric5.Project.Project.Project.projectClosedHooks?7
 eric5.Project.Project.Project.projectFileRenamed?7
@@ -8522,6 +8578,7 @@
 eric5.VCS.VersionControl.VersionControl.vcsSetOtherData?4(data)
 eric5.VCS.VersionControl.VersionControl.vcsShutdown?4()
 eric5.VCS.VersionControl.VersionControl.vcsStatus?4(name)
+eric5.VCS.VersionControl.VersionControl.vcsStatusChanged?7
 eric5.VCS.VersionControl.VersionControl.vcsStatusMonitorData?7
 eric5.VCS.VersionControl.VersionControl.vcsStatusMonitorStatus?7
 eric5.VCS.VersionControl.VersionControl.vcsSwitch?4(name)
--- a/APIs/Python3/eric5.bas	Mon Aug 12 22:21:53 2013 +0200
+++ b/APIs/Python3/eric5.bas	Sun Sep 08 19:04:07 2013 +0200
@@ -124,6 +124,7 @@
 Definition Binding
 DeleteFilesConfirmationDialog QDialog Ui_DeleteFilesConfirmationDialog
 DiffDialog QWidget Ui_DiffDialog
+DiffReport StandardReport
 DiffWindow E5MainWindow
 DirectorySyncHandler SyncHandler
 DownloadAskActionDialog QDialog Ui_DownloadAskActionDialog
@@ -238,6 +239,7 @@
 FileDialogWizard QObject
 FileDialogWizardDialog QDialog Ui_FileDialogWizardDialog
 FileReply QNetworkReply
+FileReport BaseReport
 FiletypeAssociationDialog QDialog Ui_FiletypeAssociationDialog
 FindFileDialog QDialog Ui_FindFileDialog
 FindFileNameDialog QWidget Ui_FindFileNameDialog
@@ -475,11 +477,11 @@
 PasswordReader QXmlStreamReader
 PasswordWriter QXmlStreamWriter
 PasswordsDialog QDialog Ui_PasswordsDialog
-Pep8Checker pep8.Checker
 Pep8CheckerPlugin QObject
 Pep8CodeSelectionDialog QDialog Ui_Pep8CodeSelectionDialog
 Pep8Dialog QDialog Ui_Pep8Dialog
 Pep8Fixer QObject
+Pep8Report pep8.BaseReport
 Pep8StatisticsDialog QDialog Ui_Pep8StatisticsDialog
 PersonalDataDialog QDialog Ui_PersonalDataDialog
 PersonalInformationManager QObject
@@ -621,6 +623,7 @@
 SslLabel QLabel
 StackedUrlBar QStackedWidget
 StackedWidget QStackedWidget
+StandardReport BaseReport
 StartDialog QDialog
 StatusMonitorLed E5Led
 Subversion VersionControl
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Mon Aug 12 22:21:53 2013 +0200
+++ b/Documentation/Help/source.qhp	Sun Sep 08 19:04:07 2013 +0200
@@ -454,7 +454,6 @@
             </section>
             <section title="eric5.Plugins.CheckerPlugins" ref="index-eric5.Plugins.CheckerPlugins.html">
               <section title="eric5.Plugins.CheckerPlugins.Pep8" ref="index-eric5.Plugins.CheckerPlugins.Pep8.html">
-                <section title="eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.html" />
                 <section title="eric5.Plugins.CheckerPlugins.Pep8.Pep8CodeSelectionDialog" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8CodeSelectionDialog.html" />
                 <section title="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html" />
                 <section title="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html" />
@@ -952,6 +951,10 @@
               <section title="eric5.Utilities.crypto.py3AES" ref="eric5.Utilities.crypto.py3AES.html" />
               <section title="eric5.Utilities.crypto.py3PBKDF2" ref="eric5.Utilities.crypto.py3PBKDF2.html" />
             </section>
+            <section title="eric5.Utilities.py2flakes" ref="index-eric5.Utilities.py2flakes.html">
+              <section title="eric5.Utilities.py2flakes.checker" ref="eric5.Utilities.py2flakes.checker.html" />
+              <section title="eric5.Utilities.py2flakes.messages" ref="eric5.Utilities.py2flakes.messages.html" />
+            </section>
             <section title="eric5.Utilities.py3flakes" ref="index-eric5.Utilities.py3flakes.html">
               <section title="eric5.Utilities.py3flakes.checker" ref="eric5.Utilities.py3flakes.checker.html" />
               <section title="eric5.Utilities.py3flakes.messages" ref="eric5.Utilities.py3flakes.messages.html" />
@@ -960,23 +963,13 @@
             <section title="eric5.Utilities.FtpUtilities" ref="eric5.Utilities.FtpUtilities.html" />
             <section title="eric5.Utilities.ModuleParser" ref="eric5.Utilities.ModuleParser.html" />
             <section title="eric5.Utilities.PasswordChecker" ref="eric5.Utilities.PasswordChecker.html" />
+            <section title="eric5.Utilities.PySideImporter" ref="eric5.Utilities.PySideImporter.html" />
+            <section title="eric5.Utilities.SyntaxCheck" ref="eric5.Utilities.SyntaxCheck.html" />
             <section title="eric5.Utilities.__init__" ref="eric5.Utilities.__init__.html" />
             <section title="eric5.Utilities.binplistlib" ref="eric5.Utilities.binplistlib.html" />
+            <section title="eric5.Utilities.compatibility_fixes" ref="eric5.Utilities.compatibility_fixes.html" />
             <section title="eric5.Utilities.uic" ref="eric5.Utilities.uic.html" />
           </section>
-          <section title="eric5.UtilitiesPython2" ref="index-eric5.UtilitiesPython2.html">
-            <section title="eric5.UtilitiesPython2.py2flakes" ref="index-eric5.UtilitiesPython2.py2flakes.html">
-              <section title="eric5.UtilitiesPython2.py2flakes.checker" ref="eric5.UtilitiesPython2.py2flakes.checker.html" />
-              <section title="eric5.UtilitiesPython2.py2flakes.messages" ref="eric5.UtilitiesPython2.py2flakes.messages.html" />
-            </section>
-            <section title="eric5.UtilitiesPython2.Pep8Checker" ref="eric5.UtilitiesPython2.Pep8Checker.html" />
-            <section title="eric5.UtilitiesPython2.Py2SyntaxChecker" ref="eric5.UtilitiesPython2.Py2SyntaxChecker.html" />
-            <section title="eric5.UtilitiesPython2.PySideImporter" ref="eric5.UtilitiesPython2.PySideImporter.html" />
-            <section title="eric5.UtilitiesPython2.Tabnanny" ref="eric5.UtilitiesPython2.Tabnanny.html" />
-            <section title="eric5.UtilitiesPython2.TabnannyChecker" ref="eric5.UtilitiesPython2.TabnannyChecker.html" />
-            <section title="eric5.UtilitiesPython2.Tools" ref="eric5.UtilitiesPython2.Tools.html" />
-            <section title="eric5.UtilitiesPython2.pep8" ref="eric5.UtilitiesPython2.pep8.html" />
-          </section>
           <section title="eric5.VCS" ref="index-eric5.VCS.html">
             <section title="eric5.VCS.CommandOptionsDialog" ref="eric5.VCS.CommandOptionsDialog.html" />
             <section title="eric5.VCS.ProjectBrowserHelper" ref="eric5.VCS.ProjectBrowserHelper.html" />
@@ -1335,8 +1328,8 @@
       <keyword name="ApplicationPage (Constructor)" id="ApplicationPage (Constructor)" ref="eric5.Preferences.ConfigurationPages.ApplicationPage.html#ApplicationPage.__init__" />
       <keyword name="ApplicationPage (Module)" id="ApplicationPage (Module)" ref="eric5.Preferences.ConfigurationPages.ApplicationPage.html" />
       <keyword name="ApplicationPage.save" id="ApplicationPage.save" ref="eric5.Preferences.ConfigurationPages.ApplicationPage.html#ApplicationPage.save" />
+      <keyword name="Argument" id="Argument" ref="eric5.Utilities.py2flakes.checker.html#Argument" />
       <keyword name="Argument" id="Argument" ref="eric5.Utilities.py3flakes.checker.html#Argument" />
-      <keyword name="Argument" id="Argument" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Argument" />
       <keyword name="ArgumentsError" id="ArgumentsError" ref="eric5.E5Gui.E5Action.html#ArgumentsError" />
       <keyword name="ArgumentsError (Constructor)" id="ArgumentsError (Constructor)" ref="eric5.E5Gui.E5Action.html#ArgumentsError.__init__" />
       <keyword name="ArgumentsError.__repr__" id="ArgumentsError.__repr__" ref="eric5.E5Gui.E5Action.html#ArgumentsError.__repr__" />
@@ -1344,8 +1337,8 @@
       <keyword name="ArrayElementVarItem" id="ArrayElementVarItem" ref="eric5.Debugger.VariablesViewer.html#ArrayElementVarItem" />
       <keyword name="ArrayElementVarItem (Constructor)" id="ArrayElementVarItem (Constructor)" ref="eric5.Debugger.VariablesViewer.html#ArrayElementVarItem.__init__" />
       <keyword name="ArrayElementVarItem.key" id="ArrayElementVarItem.key" ref="eric5.Debugger.VariablesViewer.html#ArrayElementVarItem.key" />
+      <keyword name="Assignment" id="Assignment" ref="eric5.Utilities.py2flakes.checker.html#Assignment" />
       <keyword name="Assignment" id="Assignment" ref="eric5.Utilities.py3flakes.checker.html#Assignment" />
-      <keyword name="Assignment" id="Assignment" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Assignment" />
       <keyword name="AssociationItem" id="AssociationItem" ref="eric5.Graphics.AssociationItem.html#AssociationItem" />
       <keyword name="AssociationItem (Constructor)" id="AssociationItem (Constructor)" ref="eric5.Graphics.AssociationItem.html#AssociationItem.__init__" />
       <keyword name="AssociationItem (Module)" id="AssociationItem (Module)" ref="eric5.Graphics.AssociationItem.html" />
@@ -1462,6 +1455,19 @@
       <keyword name="AutoSaver.changeOccurred" id="AutoSaver.changeOccurred" ref="eric5.Utilities.AutoSaver.html#AutoSaver.changeOccurred" />
       <keyword name="AutoSaver.saveIfNeccessary" id="AutoSaver.saveIfNeccessary" ref="eric5.Utilities.AutoSaver.html#AutoSaver.saveIfNeccessary" />
       <keyword name="AutoSaver.timerEvent" id="AutoSaver.timerEvent" ref="eric5.Utilities.AutoSaver.html#AutoSaver.timerEvent" />
+      <keyword name="BaseReport" id="BaseReport" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#BaseReport" />
+      <keyword name="BaseReport (Constructor)" id="BaseReport (Constructor)" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#BaseReport.__init__" />
+      <keyword name="BaseReport.error" id="BaseReport.error" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#BaseReport.error" />
+      <keyword name="BaseReport.error_args" id="BaseReport.error_args" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#BaseReport.error_args" />
+      <keyword name="BaseReport.get_count" id="BaseReport.get_count" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#BaseReport.get_count" />
+      <keyword name="BaseReport.get_file_results" id="BaseReport.get_file_results" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#BaseReport.get_file_results" />
+      <keyword name="BaseReport.get_statistics" id="BaseReport.get_statistics" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#BaseReport.get_statistics" />
+      <keyword name="BaseReport.increment_logical_line" id="BaseReport.increment_logical_line" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#BaseReport.increment_logical_line" />
+      <keyword name="BaseReport.init_file" id="BaseReport.init_file" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#BaseReport.init_file" />
+      <keyword name="BaseReport.print_benchmark" id="BaseReport.print_benchmark" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#BaseReport.print_benchmark" />
+      <keyword name="BaseReport.print_statistics" id="BaseReport.print_statistics" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#BaseReport.print_statistics" />
+      <keyword name="BaseReport.start" id="BaseReport.start" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#BaseReport.start" />
+      <keyword name="BaseReport.stop" id="BaseReport.stop" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#BaseReport.stop" />
       <keyword name="BinaryModel" id="BinaryModel" ref="eric5.UI.NumbersWidget.html#BinaryModel" />
       <keyword name="BinaryModel (Constructor)" id="BinaryModel (Constructor)" ref="eric5.UI.NumbersWidget.html#BinaryModel.__init__" />
       <keyword name="BinaryModel.columnCount" id="BinaryModel.columnCount" ref="eric5.UI.NumbersWidget.html#BinaryModel.columnCount" />
@@ -1474,14 +1480,14 @@
       <keyword name="BinaryModel.setBitsAndValue" id="BinaryModel.setBitsAndValue" ref="eric5.UI.NumbersWidget.html#BinaryModel.setBitsAndValue" />
       <keyword name="BinaryModel.setData" id="BinaryModel.setData" ref="eric5.UI.NumbersWidget.html#BinaryModel.setData" />
       <keyword name="BinaryModel.setValue" id="BinaryModel.setValue" ref="eric5.UI.NumbersWidget.html#BinaryModel.setValue" />
+      <keyword name="Binding" id="Binding" ref="eric5.Utilities.py2flakes.checker.html#Binding" />
       <keyword name="Binding" id="Binding" ref="eric5.Utilities.py3flakes.checker.html#Binding" />
-      <keyword name="Binding" id="Binding" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Binding" />
+      <keyword name="Binding (Constructor)" id="Binding (Constructor)" ref="eric5.Utilities.py2flakes.checker.html#Binding.__init__" />
       <keyword name="Binding (Constructor)" id="Binding (Constructor)" ref="eric5.Utilities.py3flakes.checker.html#Binding.__init__" />
-      <keyword name="Binding (Constructor)" id="Binding (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Binding.__init__" />
+      <keyword name="Binding.__repr__" id="Binding.__repr__" ref="eric5.Utilities.py2flakes.checker.html#Binding.__repr__" />
       <keyword name="Binding.__repr__" id="Binding.__repr__" ref="eric5.Utilities.py3flakes.checker.html#Binding.__repr__" />
-      <keyword name="Binding.__repr__" id="Binding.__repr__" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Binding.__repr__" />
+      <keyword name="Binding.__str__" id="Binding.__str__" ref="eric5.Utilities.py2flakes.checker.html#Binding.__str__" />
       <keyword name="Binding.__str__" id="Binding.__str__" ref="eric5.Utilities.py3flakes.checker.html#Binding.__str__" />
-      <keyword name="Binding.__str__" id="Binding.__str__" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Binding.__str__" />
       <keyword name="BookmarkActionSelectionDialog" id="BookmarkActionSelectionDialog" ref="eric5.Helpviewer.UrlBar.BookmarkActionSelectionDialog.html#BookmarkActionSelectionDialog" />
       <keyword name="BookmarkActionSelectionDialog (Constructor)" id="BookmarkActionSelectionDialog (Constructor)" ref="eric5.Helpviewer.UrlBar.BookmarkActionSelectionDialog.html#BookmarkActionSelectionDialog.__init__" />
       <keyword name="BookmarkActionSelectionDialog (Module)" id="BookmarkActionSelectionDialog (Module)" ref="eric5.Helpviewer.UrlBar.BookmarkActionSelectionDialog.html" />
@@ -1946,93 +1952,94 @@
       <keyword name="ChatWidget.preferencesChanged" id="ChatWidget.preferencesChanged" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.preferencesChanged" />
       <keyword name="ChatWidget.shutdown" id="ChatWidget.shutdown" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.shutdown" />
       <keyword name="Checker" id="Checker" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#Checker" />
+      <keyword name="Checker" id="Checker" ref="eric5.Utilities.py2flakes.checker.html#Checker" />
       <keyword name="Checker" id="Checker" ref="eric5.Utilities.py3flakes.checker.html#Checker" />
-      <keyword name="Checker" id="Checker" ref="eric5.UtilitiesPython2.pep8.html#Checker" />
-      <keyword name="Checker" id="Checker" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker" />
       <keyword name="Checker (Constructor)" id="Checker (Constructor)" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#Checker.__init__" />
+      <keyword name="Checker (Constructor)" id="Checker (Constructor)" ref="eric5.Utilities.py2flakes.checker.html#Checker.__init__" />
       <keyword name="Checker (Constructor)" id="Checker (Constructor)" ref="eric5.Utilities.py3flakes.checker.html#Checker.__init__" />
-      <keyword name="Checker (Constructor)" id="Checker (Constructor)" ref="eric5.UtilitiesPython2.pep8.html#Checker.__init__" />
-      <keyword name="Checker (Constructor)" id="Checker (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.__init__" />
+      <keyword name="Checker.ASSIGN" id="Checker.ASSIGN" ref="eric5.Utilities.py2flakes.checker.html#Checker.ASSIGN" />
       <keyword name="Checker.ASSIGN" id="Checker.ASSIGN" ref="eric5.Utilities.py3flakes.checker.html#Checker.ASSIGN" />
-      <keyword name="Checker.ASSIGN" id="Checker.ASSIGN" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.ASSIGN" />
+      <keyword name="Checker.AUGASSIGN" id="Checker.AUGASSIGN" ref="eric5.Utilities.py2flakes.checker.html#Checker.AUGASSIGN" />
       <keyword name="Checker.AUGASSIGN" id="Checker.AUGASSIGN" ref="eric5.Utilities.py3flakes.checker.html#Checker.AUGASSIGN" />
-      <keyword name="Checker.AUGASSIGN" id="Checker.AUGASSIGN" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.AUGASSIGN" />
+      <keyword name="Checker.CLASSDEF" id="Checker.CLASSDEF" ref="eric5.Utilities.py2flakes.checker.html#Checker.CLASSDEF" />
       <keyword name="Checker.CLASSDEF" id="Checker.CLASSDEF" ref="eric5.Utilities.py3flakes.checker.html#Checker.CLASSDEF" />
-      <keyword name="Checker.CLASSDEF" id="Checker.CLASSDEF" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.CLASSDEF" />
+      <keyword name="Checker.DICTCOMP" id="Checker.DICTCOMP" ref="eric5.Utilities.py2flakes.checker.html#Checker.DICTCOMP" />
       <keyword name="Checker.DICTCOMP" id="Checker.DICTCOMP" ref="eric5.Utilities.py3flakes.checker.html#Checker.DICTCOMP" />
-      <keyword name="Checker.DICTCOMP" id="Checker.DICTCOMP" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.DICTCOMP" />
+      <keyword name="Checker.EXCEPTHANDLER" id="Checker.EXCEPTHANDLER" ref="eric5.Utilities.py2flakes.checker.html#Checker.EXCEPTHANDLER" />
       <keyword name="Checker.EXCEPTHANDLER" id="Checker.EXCEPTHANDLER" ref="eric5.Utilities.py3flakes.checker.html#Checker.EXCEPTHANDLER" />
+      <keyword name="Checker.FOR" id="Checker.FOR" ref="eric5.Utilities.py2flakes.checker.html#Checker.FOR" />
       <keyword name="Checker.FOR" id="Checker.FOR" ref="eric5.Utilities.py3flakes.checker.html#Checker.FOR" />
-      <keyword name="Checker.FOR" id="Checker.FOR" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.FOR" />
+      <keyword name="Checker.FUNCTIONDEF" id="Checker.FUNCTIONDEF" ref="eric5.Utilities.py2flakes.checker.html#Checker.FUNCTIONDEF" />
       <keyword name="Checker.FUNCTIONDEF" id="Checker.FUNCTIONDEF" ref="eric5.Utilities.py3flakes.checker.html#Checker.FUNCTIONDEF" />
-      <keyword name="Checker.FUNCTIONDEF" id="Checker.FUNCTIONDEF" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.FUNCTIONDEF" />
+      <keyword name="Checker.GLOBAL" id="Checker.GLOBAL" ref="eric5.Utilities.py2flakes.checker.html#Checker.GLOBAL" />
       <keyword name="Checker.GLOBAL" id="Checker.GLOBAL" ref="eric5.Utilities.py3flakes.checker.html#Checker.GLOBAL" />
-      <keyword name="Checker.GLOBAL" id="Checker.GLOBAL" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.GLOBAL" />
+      <keyword name="Checker.IMPORT" id="Checker.IMPORT" ref="eric5.Utilities.py2flakes.checker.html#Checker.IMPORT" />
       <keyword name="Checker.IMPORT" id="Checker.IMPORT" ref="eric5.Utilities.py3flakes.checker.html#Checker.IMPORT" />
-      <keyword name="Checker.IMPORT" id="Checker.IMPORT" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.IMPORT" />
+      <keyword name="Checker.IMPORTFROM" id="Checker.IMPORTFROM" ref="eric5.Utilities.py2flakes.checker.html#Checker.IMPORTFROM" />
       <keyword name="Checker.IMPORTFROM" id="Checker.IMPORTFROM" ref="eric5.Utilities.py3flakes.checker.html#Checker.IMPORTFROM" />
-      <keyword name="Checker.IMPORTFROM" id="Checker.IMPORTFROM" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.IMPORTFROM" />
+      <keyword name="Checker.LAMBDA" id="Checker.LAMBDA" ref="eric5.Utilities.py2flakes.checker.html#Checker.LAMBDA" />
       <keyword name="Checker.LAMBDA" id="Checker.LAMBDA" ref="eric5.Utilities.py3flakes.checker.html#Checker.LAMBDA" />
-      <keyword name="Checker.LAMBDA" id="Checker.LAMBDA" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.LAMBDA" />
+      <keyword name="Checker.LISTCOMP" id="Checker.LISTCOMP" ref="eric5.Utilities.py2flakes.checker.html#Checker.LISTCOMP" />
       <keyword name="Checker.LISTCOMP" id="Checker.LISTCOMP" ref="eric5.Utilities.py3flakes.checker.html#Checker.LISTCOMP" />
-      <keyword name="Checker.LISTCOMP" id="Checker.LISTCOMP" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.LISTCOMP" />
+      <keyword name="Checker.NAME" id="Checker.NAME" ref="eric5.Utilities.py2flakes.checker.html#Checker.NAME" />
       <keyword name="Checker.NAME" id="Checker.NAME" ref="eric5.Utilities.py3flakes.checker.html#Checker.NAME" />
-      <keyword name="Checker.NAME" id="Checker.NAME" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.NAME" />
       <keyword name="Checker.STARRED" id="Checker.STARRED" ref="eric5.Utilities.py3flakes.checker.html#Checker.STARRED" />
       <keyword name="Checker._runDeferred" id="Checker._runDeferred" ref="eric5.Utilities.py3flakes.checker.html#Checker._runDeferred" />
-      <keyword name="Checker._runDeferred" id="Checker._runDeferred" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker._runDeferred" />
+      <keyword name="Checker.addArgs" id="Checker.addArgs" ref="eric5.Utilities.py2flakes.checker.html#Checker.addArgs" />
       <keyword name="Checker.addArgs" id="Checker.addArgs" ref="eric5.Utilities.py3flakes.checker.html#Checker.addArgs" />
-      <keyword name="Checker.addArgs" id="Checker.addArgs" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.addArgs" />
+      <keyword name="Checker.addBinding" id="Checker.addBinding" ref="eric5.Utilities.py2flakes.checker.html#Checker.addBinding" />
       <keyword name="Checker.addBinding" id="Checker.addBinding" ref="eric5.Utilities.py3flakes.checker.html#Checker.addBinding" />
-      <keyword name="Checker.addBinding" id="Checker.addBinding" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.addBinding" />
       <keyword name="Checker.build_tokens_line" id="Checker.build_tokens_line" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#Checker.build_tokens_line" />
-      <keyword name="Checker.build_tokens_line" id="Checker.build_tokens_line" ref="eric5.UtilitiesPython2.pep8.html#Checker.build_tokens_line" />
+      <keyword name="Checker.checkDeadScopes" id="Checker.checkDeadScopes" ref="eric5.Utilities.py2flakes.checker.html#Checker.checkDeadScopes" />
+      <keyword name="Checker.checkUnusedAssignments" id="Checker.checkUnusedAssignments" ref="eric5.Utilities.py2flakes.checker.html#Checker.checkUnusedAssignments" />
       <keyword name="Checker.checkUnusedAssignments" id="Checker.checkUnusedAssignments" ref="eric5.Utilities.py3flakes.checker.html#Checker.checkUnusedAssignments" />
-      <keyword name="Checker.checkUnusedAssignments" id="Checker.checkUnusedAssignments" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.checkUnusedAssignments" />
       <keyword name="Checker.check_all" id="Checker.check_all" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#Checker.check_all" />
-      <keyword name="Checker.check_all" id="Checker.check_all" ref="eric5.UtilitiesPython2.pep8.html#Checker.check_all" />
+      <keyword name="Checker.check_ast" id="Checker.check_ast" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#Checker.check_ast" />
       <keyword name="Checker.check_dead_scopes" id="Checker.check_dead_scopes" ref="eric5.Utilities.py3flakes.checker.html#Checker.check_dead_scopes" />
-      <keyword name="Checker.check_dead_scopes" id="Checker.check_dead_scopes" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.check_dead_scopes" />
       <keyword name="Checker.check_logical" id="Checker.check_logical" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#Checker.check_logical" />
-      <keyword name="Checker.check_logical" id="Checker.check_logical" ref="eric5.UtilitiesPython2.pep8.html#Checker.check_logical" />
       <keyword name="Checker.check_physical" id="Checker.check_physical" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#Checker.check_physical" />
-      <keyword name="Checker.check_physical" id="Checker.check_physical" ref="eric5.UtilitiesPython2.pep8.html#Checker.check_physical" />
+      <keyword name="Checker.collectLoopVars" id="Checker.collectLoopVars" ref="eric5.Utilities.py2flakes.checker.html#Checker.collectLoopVars" />
       <keyword name="Checker.collectLoopVars" id="Checker.collectLoopVars" ref="eric5.Utilities.py3flakes.checker.html#Checker.collectLoopVars" />
-      <keyword name="Checker.collectLoopVars" id="Checker.collectLoopVars" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.collectLoopVars" />
+      <keyword name="Checker.deferAssignment" id="Checker.deferAssignment" ref="eric5.Utilities.py2flakes.checker.html#Checker.deferAssignment" />
       <keyword name="Checker.deferAssignment" id="Checker.deferAssignment" ref="eric5.Utilities.py3flakes.checker.html#Checker.deferAssignment" />
-      <keyword name="Checker.deferAssignment" id="Checker.deferAssignment" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.deferAssignment" />
+      <keyword name="Checker.deferFunction" id="Checker.deferFunction" ref="eric5.Utilities.py2flakes.checker.html#Checker.deferFunction" />
       <keyword name="Checker.deferFunction" id="Checker.deferFunction" ref="eric5.Utilities.py3flakes.checker.html#Checker.deferFunction" />
-      <keyword name="Checker.deferFunction" id="Checker.deferFunction" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.deferFunction" />
+      <keyword name="Checker.descendantOf" id="Checker.descendantOf" ref="eric5.Utilities.py2flakes.checker.html#Checker.descendantOf" />
+      <keyword name="Checker.differentForks" id="Checker.differentForks" ref="eric5.Utilities.py2flakes.checker.html#Checker.differentForks" />
+      <keyword name="Checker.generate_tokens" id="Checker.generate_tokens" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#Checker.generate_tokens" />
+      <keyword name="Checker.getCommonAncestor" id="Checker.getCommonAncestor" ref="eric5.Utilities.py2flakes.checker.html#Checker.getCommonAncestor" />
       <keyword name="Checker.handleAssignName" id="Checker.handleAssignName" ref="eric5.Utilities.py3flakes.checker.html#Checker.handleAssignName" />
       <keyword name="Checker.handleBody" id="Checker.handleBody" ref="eric5.Utilities.py3flakes.checker.html#Checker.handleBody" />
+      <keyword name="Checker.handleChildren" id="Checker.handleChildren" ref="eric5.Utilities.py2flakes.checker.html#Checker.handleChildren" />
       <keyword name="Checker.handleChildren" id="Checker.handleChildren" ref="eric5.Utilities.py3flakes.checker.html#Checker.handleChildren" />
-      <keyword name="Checker.handleChildren" id="Checker.handleChildren" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.handleChildren" />
+      <keyword name="Checker.handleNode" id="Checker.handleNode" ref="eric5.Utilities.py2flakes.checker.html#Checker.handleNode" />
       <keyword name="Checker.handleNode" id="Checker.handleNode" ref="eric5.Utilities.py3flakes.checker.html#Checker.handleNode" />
-      <keyword name="Checker.handleNode" id="Checker.handleNode" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.handleNode" />
+      <keyword name="Checker.handleNodeDelete" id="Checker.handleNodeDelete" ref="eric5.Utilities.py2flakes.checker.html#Checker.handleNodeDelete" />
+      <keyword name="Checker.handleNodeLoad" id="Checker.handleNodeLoad" ref="eric5.Utilities.py2flakes.checker.html#Checker.handleNodeLoad" />
+      <keyword name="Checker.handleNodeStore" id="Checker.handleNodeStore" ref="eric5.Utilities.py2flakes.checker.html#Checker.handleNodeStore" />
+      <keyword name="Checker.hasParent" id="Checker.hasParent" ref="eric5.Utilities.py2flakes.checker.html#Checker.hasParent" />
+      <keyword name="Checker.ignore" id="Checker.ignore" ref="eric5.Utilities.py2flakes.checker.html#Checker.ignore" />
       <keyword name="Checker.ignore" id="Checker.ignore" ref="eric5.Utilities.py3flakes.checker.html#Checker.ignore" />
-      <keyword name="Checker.ignore" id="Checker.ignore" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.ignore" />
+      <keyword name="Checker.isDocstring" id="Checker.isDocstring" ref="eric5.Utilities.py2flakes.checker.html#Checker.isDocstring" />
       <keyword name="Checker.isDocstring" id="Checker.isDocstring" ref="eric5.Utilities.py3flakes.checker.html#Checker.isDocstring" />
-      <keyword name="Checker.isDocstring" id="Checker.isDocstring" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.isDocstring" />
+      <keyword name="Checker.onFork" id="Checker.onFork" ref="eric5.Utilities.py2flakes.checker.html#Checker.onFork" />
+      <keyword name="Checker.popScope" id="Checker.popScope" ref="eric5.Utilities.py2flakes.checker.html#Checker.popScope" />
       <keyword name="Checker.popScope" id="Checker.popScope" ref="eric5.Utilities.py3flakes.checker.html#Checker.popScope" />
-      <keyword name="Checker.popScope" id="Checker.popScope" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.popScope" />
+      <keyword name="Checker.pushClassScope" id="Checker.pushClassScope" ref="eric5.Utilities.py2flakes.checker.html#Checker.pushClassScope" />
       <keyword name="Checker.pushClassScope" id="Checker.pushClassScope" ref="eric5.Utilities.py3flakes.checker.html#Checker.pushClassScope" />
-      <keyword name="Checker.pushClassScope" id="Checker.pushClassScope" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.pushClassScope" />
+      <keyword name="Checker.pushFunctionScope" id="Checker.pushFunctionScope" ref="eric5.Utilities.py2flakes.checker.html#Checker.pushFunctionScope" />
       <keyword name="Checker.pushFunctionScope" id="Checker.pushFunctionScope" ref="eric5.Utilities.py3flakes.checker.html#Checker.pushFunctionScope" />
-      <keyword name="Checker.pushFunctionScope" id="Checker.pushFunctionScope" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.pushFunctionScope" />
       <keyword name="Checker.readline" id="Checker.readline" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#Checker.readline" />
-      <keyword name="Checker.readline" id="Checker.readline" ref="eric5.UtilitiesPython2.pep8.html#Checker.readline" />
       <keyword name="Checker.readline_check_physical" id="Checker.readline_check_physical" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#Checker.readline_check_physical" />
-      <keyword name="Checker.readline_check_physical" id="Checker.readline_check_physical" ref="eric5.UtilitiesPython2.pep8.html#Checker.readline_check_physical" />
+      <keyword name="Checker.report" id="Checker.report" ref="eric5.Utilities.py2flakes.checker.html#Checker.report" />
       <keyword name="Checker.report" id="Checker.report" ref="eric5.Utilities.py3flakes.checker.html#Checker.report" />
-      <keyword name="Checker.report" id="Checker.report" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.report" />
-      <keyword name="Checker.report_error" id="Checker.report_error" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#Checker.report_error" />
-      <keyword name="Checker.report_error" id="Checker.report_error" ref="eric5.UtilitiesPython2.pep8.html#Checker.report_error" />
+      <keyword name="Checker.report_invalid_syntax" id="Checker.report_invalid_syntax" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#Checker.report_invalid_syntax" />
+      <keyword name="Checker.runDeferred" id="Checker.runDeferred" ref="eric5.Utilities.py2flakes.checker.html#Checker.runDeferred" />
+      <keyword name="Checker.runFunction" id="Checker.runFunction" ref="eric5.Utilities.py2flakes.checker.html#Checker.runFunction" />
       <keyword name="Checker.runFunction" id="Checker.runFunction" ref="eric5.Utilities.py3flakes.checker.html#Checker.runFunction" />
-      <keyword name="Checker.runFunction" id="Checker.runFunction" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.runFunction" />
       <keyword name="Checker.run_check" id="Checker.run_check" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#Checker.run_check" />
-      <keyword name="Checker.run_check" id="Checker.run_check" ref="eric5.UtilitiesPython2.pep8.html#Checker.run_check" />
+      <keyword name="Checker.scope" id="Checker.scope" ref="eric5.Utilities.py2flakes.checker.html#Checker.scope" />
       <keyword name="Checker.scope" id="Checker.scope" ref="eric5.Utilities.py3flakes.checker.html#Checker.scope" />
-      <keyword name="Checker.scope" id="Checker.scope" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.scope" />
       <keyword name="CheckerPlugins (Package)" id="CheckerPlugins (Package)" ref="index-eric5.Plugins.CheckerPlugins.html" />
       <keyword name="ChromeImporter" id="ChromeImporter" ref="eric5.Helpviewer.Bookmarks.BookmarksImporters.ChromeImporter.html#ChromeImporter" />
       <keyword name="ChromeImporter (Constructor)" id="ChromeImporter (Constructor)" ref="eric5.Helpviewer.Bookmarks.BookmarksImporters.ChromeImporter.html#ChromeImporter.__init__" />
@@ -2059,6 +2066,7 @@
       <keyword name="Class.getMethod" id="Class.getMethod" ref="eric5.Utilities.ModuleParser.html#Class.getMethod" />
       <keyword name="Class.setEndLine" id="Class.setEndLine" ref="eric5.Utilities.ModuleParser.html#Class.setEndLine" />
       <keyword name="ClassBrowsers (Package)" id="ClassBrowsers (Package)" ref="index-eric5.Utilities.ClassBrowsers.html" />
+      <keyword name="ClassDefinition" id="ClassDefinition" ref="eric5.Utilities.py2flakes.checker.html#ClassDefinition" />
       <keyword name="ClassItem" id="ClassItem" ref="eric5.Graphics.ClassItem.html#ClassItem" />
       <keyword name="ClassItem (Constructor)" id="ClassItem (Constructor)" ref="eric5.Graphics.ClassItem.html#ClassItem.__init__" />
       <keyword name="ClassItem (Module)" id="ClassItem (Module)" ref="eric5.Graphics.ClassItem.html" />
@@ -2075,8 +2083,8 @@
       <keyword name="ClassModel.addMethod" id="ClassModel.addMethod" ref="eric5.Graphics.ClassItem.html#ClassModel.addMethod" />
       <keyword name="ClassModel.getAttributes" id="ClassModel.getAttributes" ref="eric5.Graphics.ClassItem.html#ClassModel.getAttributes" />
       <keyword name="ClassModel.getMethods" id="ClassModel.getMethods" ref="eric5.Graphics.ClassItem.html#ClassModel.getMethods" />
+      <keyword name="ClassScope" id="ClassScope" ref="eric5.Utilities.py2flakes.checker.html#ClassScope" />
       <keyword name="ClassScope" id="ClassScope" ref="eric5.Utilities.py3flakes.checker.html#ClassScope" />
-      <keyword name="ClassScope" id="ClassScope" ref="eric5.UtilitiesPython2.py2flakes.checker.html#ClassScope" />
       <keyword name="ClbrBase" id="ClbrBase" ref="eric5.Utilities.ClassBrowsers.ClbrBaseClasses.html#ClbrBase" />
       <keyword name="ClbrBase (Constructor)" id="ClbrBase (Constructor)" ref="eric5.Utilities.ClassBrowsers.ClbrBaseClasses.html#ClbrBase.__init__" />
       <keyword name="ClbrBase._addattribute" id="ClbrBase._addattribute" ref="eric5.Utilities.ClassBrowsers.ClbrBaseClasses.html#ClbrBase._addattribute" />
@@ -3227,6 +3235,7 @@
       <keyword name="DebuggerRubyPage.on_rubyInterpreterButton_clicked" id="DebuggerRubyPage.on_rubyInterpreterButton_clicked" ref="eric5.Preferences.ConfigurationPages.DebuggerRubyPage.html#DebuggerRubyPage.on_rubyInterpreterButton_clicked" />
       <keyword name="DebuggerRubyPage.save" id="DebuggerRubyPage.save" ref="eric5.Preferences.ConfigurationPages.DebuggerRubyPage.html#DebuggerRubyPage.save" />
       <keyword name="DefaultBookmarks (Module)" id="DefaultBookmarks (Module)" ref="eric5.Helpviewer.Bookmarks.DefaultBookmarks.html" />
+      <keyword name="Definition" id="Definition" ref="eric5.Utilities.py2flakes.checker.html#Definition" />
       <keyword name="DeleteFilesConfirmationDialog" id="DeleteFilesConfirmationDialog" ref="eric5.UI.DeleteFilesConfirmationDialog.html#DeleteFilesConfirmationDialog" />
       <keyword name="DeleteFilesConfirmationDialog (Constructor)" id="DeleteFilesConfirmationDialog (Constructor)" ref="eric5.UI.DeleteFilesConfirmationDialog.html#DeleteFilesConfirmationDialog.__init__" />
       <keyword name="DeleteFilesConfirmationDialog (Module)" id="DeleteFilesConfirmationDialog (Module)" ref="eric5.UI.DeleteFilesConfirmationDialog.html" />
@@ -3245,6 +3254,9 @@
       <keyword name="DiffDialog.on_file2Button_clicked" id="DiffDialog.on_file2Button_clicked" ref="eric5.UI.DiffDialog.html#DiffDialog.on_file2Button_clicked" />
       <keyword name="DiffDialog.on_saveButton_clicked" id="DiffDialog.on_saveButton_clicked" ref="eric5.UI.DiffDialog.html#DiffDialog.on_saveButton_clicked" />
       <keyword name="DiffDialog.show" id="DiffDialog.show" ref="eric5.UI.DiffDialog.html#DiffDialog.show" />
+      <keyword name="DiffReport" id="DiffReport" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#DiffReport" />
+      <keyword name="DiffReport (Constructor)" id="DiffReport (Constructor)" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#DiffReport.__init__" />
+      <keyword name="DiffReport.error" id="DiffReport.error" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#DiffReport.error" />
       <keyword name="DiffWindow" id="DiffWindow" ref="eric5.UI.DiffDialog.html#DiffWindow" />
       <keyword name="DiffWindow (Constructor)" id="DiffWindow (Constructor)" ref="eric5.UI.DiffDialog.html#DiffWindow.__init__" />
       <keyword name="DiffWindow.eventFilter" id="DiffWindow.eventFilter" ref="eric5.UI.DiffDialog.html#DiffWindow.eventFilter" />
@@ -3349,10 +3361,10 @@
       <keyword name="DownloadModel.removeRows" id="DownloadModel.removeRows" ref="eric5.Helpviewer.Download.DownloadModel.html#DownloadModel.removeRows" />
       <keyword name="DownloadModel.rowCount" id="DownloadModel.rowCount" ref="eric5.Helpviewer.Download.DownloadModel.html#DownloadModel.rowCount" />
       <keyword name="DownloadUtilities (Module)" id="DownloadUtilities (Module)" ref="eric5.Helpviewer.Download.DownloadUtilities.html" />
+      <keyword name="DuplicateArgument" id="DuplicateArgument" ref="eric5.Utilities.py2flakes.messages.html#DuplicateArgument" />
       <keyword name="DuplicateArgument" id="DuplicateArgument" ref="eric5.Utilities.py3flakes.messages.html#DuplicateArgument" />
-      <keyword name="DuplicateArgument" id="DuplicateArgument" ref="eric5.UtilitiesPython2.py2flakes.messages.html#DuplicateArgument" />
+      <keyword name="DuplicateArgument (Constructor)" id="DuplicateArgument (Constructor)" ref="eric5.Utilities.py2flakes.messages.html#DuplicateArgument.__init__" />
       <keyword name="DuplicateArgument (Constructor)" id="DuplicateArgument (Constructor)" ref="eric5.Utilities.py3flakes.messages.html#DuplicateArgument.__init__" />
-      <keyword name="DuplicateArgument (Constructor)" id="DuplicateArgument (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.messages.html#DuplicateArgument.__init__" />
       <keyword name="E5Action" id="E5Action" ref="eric5.E5Gui.E5Action.html#E5Action" />
       <keyword name="E5Action (Constructor)" id="E5Action (Constructor)" ref="eric5.E5Gui.E5Action.html#E5Action.__init__" />
       <keyword name="E5Action (Module)" id="E5Action (Module)" ref="eric5.E5Gui.E5Action.html" />
@@ -4538,10 +4550,10 @@
       <keyword name="ExceptionsFilterDialog.on_deleteButton_clicked" id="ExceptionsFilterDialog.on_deleteButton_clicked" ref="eric5.Debugger.ExceptionsFilterDialog.html#ExceptionsFilterDialog.on_deleteButton_clicked" />
       <keyword name="ExceptionsFilterDialog.on_exceptionEdit_textChanged" id="ExceptionsFilterDialog.on_exceptionEdit_textChanged" ref="eric5.Debugger.ExceptionsFilterDialog.html#ExceptionsFilterDialog.on_exceptionEdit_textChanged" />
       <keyword name="ExceptionsFilterDialog.on_exceptionList_itemSelectionChanged" id="ExceptionsFilterDialog.on_exceptionList_itemSelectionChanged" ref="eric5.Debugger.ExceptionsFilterDialog.html#ExceptionsFilterDialog.on_exceptionList_itemSelectionChanged" />
+      <keyword name="ExportBinding" id="ExportBinding" ref="eric5.Utilities.py2flakes.checker.html#ExportBinding" />
       <keyword name="ExportBinding" id="ExportBinding" ref="eric5.Utilities.py3flakes.checker.html#ExportBinding" />
-      <keyword name="ExportBinding" id="ExportBinding" ref="eric5.UtilitiesPython2.py2flakes.checker.html#ExportBinding" />
+      <keyword name="ExportBinding.names" id="ExportBinding.names" ref="eric5.Utilities.py2flakes.checker.html#ExportBinding.names" />
       <keyword name="ExportBinding.names" id="ExportBinding.names" ref="eric5.Utilities.py3flakes.checker.html#ExportBinding.names" />
-      <keyword name="ExportBinding.names" id="ExportBinding.names" ref="eric5.UtilitiesPython2.py2flakes.checker.html#ExportBinding.names" />
       <keyword name="ExporterBase" id="ExporterBase" ref="eric5.QScintilla.Exporters.ExporterBase.html#ExporterBase" />
       <keyword name="ExporterBase (Constructor)" id="ExporterBase (Constructor)" ref="eric5.QScintilla.Exporters.ExporterBase.html#ExporterBase.__init__" />
       <keyword name="ExporterBase (Module)" id="ExporterBase (Module)" ref="eric5.QScintilla.Exporters.ExporterBase.html" />
@@ -4627,6 +4639,13 @@
       <keyword name="FetchProjectHelper.initActions" id="FetchProjectHelper.initActions" ref="eric5.Plugins.VcsPlugins.vcsMercurial.FetchExtension.ProjectHelper.html#FetchProjectHelper.initActions" />
       <keyword name="FetchProjectHelper.initMenu" id="FetchProjectHelper.initMenu" ref="eric5.Plugins.VcsPlugins.vcsMercurial.FetchExtension.ProjectHelper.html#FetchProjectHelper.initMenu" />
       <keyword name="FetchProjectHelper.menuTitle" id="FetchProjectHelper.menuTitle" ref="eric5.Plugins.VcsPlugins.vcsMercurial.FetchExtension.ProjectHelper.html#FetchProjectHelper.menuTitle" />
+      <keyword name="File" id="File" ref="eric5.Utilities.compatibility_fixes.html#File" />
+      <keyword name="File (Constructor)" id="File (Constructor)" ref="eric5.Utilities.compatibility_fixes.html#File.__init__" />
+      <keyword name="File.next" id="File.next" ref="eric5.Utilities.compatibility_fixes.html#File.next" />
+      <keyword name="File.read" id="File.read" ref="eric5.Utilities.compatibility_fixes.html#File.read" />
+      <keyword name="File.readline" id="File.readline" ref="eric5.Utilities.compatibility_fixes.html#File.readline" />
+      <keyword name="File.readlines" id="File.readlines" ref="eric5.Utilities.compatibility_fixes.html#File.readlines" />
+      <keyword name="File.write" id="File.write" ref="eric5.Utilities.compatibility_fixes.html#File.write" />
       <keyword name="FileAccessHandler" id="FileAccessHandler" ref="eric5.Helpviewer.Network.FileAccessHandler.html#FileAccessHandler" />
       <keyword name="FileAccessHandler (Constructor)" id="FileAccessHandler (Constructor)" ref="eric5.Helpviewer.Network.FileAccessHandler.html#FileAccessHandler.__init__" />
       <keyword name="FileAccessHandler (Module)" id="FileAccessHandler (Module)" ref="eric5.Helpviewer.Network.FileAccessHandler.html" />
@@ -4659,6 +4678,7 @@
       <keyword name="FileReply.bytesAvailable" id="FileReply.bytesAvailable" ref="eric5.Helpviewer.Network.FileReply.html#FileReply.bytesAvailable" />
       <keyword name="FileReply.isSequential" id="FileReply.isSequential" ref="eric5.Helpviewer.Network.FileReply.html#FileReply.isSequential" />
       <keyword name="FileReply.readData" id="FileReply.readData" ref="eric5.Helpviewer.Network.FileReply.html#FileReply.readData" />
+      <keyword name="FileReport" id="FileReport" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#FileReport" />
       <keyword name="FiletypeAssociationDialog" id="FiletypeAssociationDialog" ref="eric5.Project.FiletypeAssociationDialog.html#FiletypeAssociationDialog" />
       <keyword name="FiletypeAssociationDialog (Constructor)" id="FiletypeAssociationDialog (Constructor)" ref="eric5.Project.FiletypeAssociationDialog.html#FiletypeAssociationDialog.__init__" />
       <keyword name="FiletypeAssociationDialog (Module)" id="FiletypeAssociationDialog (Module)" ref="eric5.Project.FiletypeAssociationDialog.html" />
@@ -4818,12 +4838,12 @@
       <keyword name="Function (Constructor)" id="Function (Constructor)" ref="eric5.Utilities.ModuleParser.html#Function.__init__" />
       <keyword name="Function.addDescription" id="Function.addDescription" ref="eric5.Utilities.ModuleParser.html#Function.addDescription" />
       <keyword name="Function.setEndLine" id="Function.setEndLine" ref="eric5.Utilities.ModuleParser.html#Function.setEndLine" />
+      <keyword name="FunctionDefinition" id="FunctionDefinition" ref="eric5.Utilities.py2flakes.checker.html#FunctionDefinition" />
       <keyword name="FunctionDefinition" id="FunctionDefinition" ref="eric5.Utilities.py3flakes.checker.html#FunctionDefinition" />
-      <keyword name="FunctionDefinition" id="FunctionDefinition" ref="eric5.UtilitiesPython2.py2flakes.checker.html#FunctionDefinition" />
+      <keyword name="FunctionScope" id="FunctionScope" ref="eric5.Utilities.py2flakes.checker.html#FunctionScope" />
       <keyword name="FunctionScope" id="FunctionScope" ref="eric5.Utilities.py3flakes.checker.html#FunctionScope" />
-      <keyword name="FunctionScope" id="FunctionScope" ref="eric5.UtilitiesPython2.py2flakes.checker.html#FunctionScope" />
+      <keyword name="FunctionScope (Constructor)" id="FunctionScope (Constructor)" ref="eric5.Utilities.py2flakes.checker.html#FunctionScope.__init__" />
       <keyword name="FunctionScope (Constructor)" id="FunctionScope (Constructor)" ref="eric5.Utilities.py3flakes.checker.html#FunctionScope.__init__" />
-      <keyword name="FunctionScope (Constructor)" id="FunctionScope (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.checker.html#FunctionScope.__init__" />
       <keyword name="Globals (Package)" id="Globals (Package)" ref="index-eric5.Globals.html" />
       <keyword name="GotoDialog" id="GotoDialog" ref="eric5.QScintilla.GotoDialog.html#GotoDialog" />
       <keyword name="GotoDialog (Constructor)" id="GotoDialog (Constructor)" ref="eric5.QScintilla.GotoDialog.html#GotoDialog.__init__" />
@@ -6535,18 +6555,18 @@
       <keyword name="IconsPreviewDialog" id="IconsPreviewDialog" ref="eric5.Preferences.ConfigurationPages.IconsPreviewDialog.html#IconsPreviewDialog" />
       <keyword name="IconsPreviewDialog (Constructor)" id="IconsPreviewDialog (Constructor)" ref="eric5.Preferences.ConfigurationPages.IconsPreviewDialog.html#IconsPreviewDialog.__init__" />
       <keyword name="IconsPreviewDialog (Module)" id="IconsPreviewDialog (Module)" ref="eric5.Preferences.ConfigurationPages.IconsPreviewDialog.html" />
+      <keyword name="ImportShadowedByLoopVar" id="ImportShadowedByLoopVar" ref="eric5.Utilities.py2flakes.messages.html#ImportShadowedByLoopVar" />
       <keyword name="ImportShadowedByLoopVar" id="ImportShadowedByLoopVar" ref="eric5.Utilities.py3flakes.messages.html#ImportShadowedByLoopVar" />
-      <keyword name="ImportShadowedByLoopVar" id="ImportShadowedByLoopVar" ref="eric5.UtilitiesPython2.py2flakes.messages.html#ImportShadowedByLoopVar" />
+      <keyword name="ImportShadowedByLoopVar (Constructor)" id="ImportShadowedByLoopVar (Constructor)" ref="eric5.Utilities.py2flakes.messages.html#ImportShadowedByLoopVar.__init__" />
       <keyword name="ImportShadowedByLoopVar (Constructor)" id="ImportShadowedByLoopVar (Constructor)" ref="eric5.Utilities.py3flakes.messages.html#ImportShadowedByLoopVar.__init__" />
-      <keyword name="ImportShadowedByLoopVar (Constructor)" id="ImportShadowedByLoopVar (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.messages.html#ImportShadowedByLoopVar.__init__" />
+      <keyword name="ImportStarUsed" id="ImportStarUsed" ref="eric5.Utilities.py2flakes.messages.html#ImportStarUsed" />
       <keyword name="ImportStarUsed" id="ImportStarUsed" ref="eric5.Utilities.py3flakes.messages.html#ImportStarUsed" />
-      <keyword name="ImportStarUsed" id="ImportStarUsed" ref="eric5.UtilitiesPython2.py2flakes.messages.html#ImportStarUsed" />
+      <keyword name="ImportStarUsed (Constructor)" id="ImportStarUsed (Constructor)" ref="eric5.Utilities.py2flakes.messages.html#ImportStarUsed.__init__" />
       <keyword name="ImportStarUsed (Constructor)" id="ImportStarUsed (Constructor)" ref="eric5.Utilities.py3flakes.messages.html#ImportStarUsed.__init__" />
-      <keyword name="ImportStarUsed (Constructor)" id="ImportStarUsed (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.messages.html#ImportStarUsed.__init__" />
+      <keyword name="Importation" id="Importation" ref="eric5.Utilities.py2flakes.checker.html#Importation" />
       <keyword name="Importation" id="Importation" ref="eric5.Utilities.py3flakes.checker.html#Importation" />
-      <keyword name="Importation" id="Importation" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Importation" />
+      <keyword name="Importation (Constructor)" id="Importation (Constructor)" ref="eric5.Utilities.py2flakes.checker.html#Importation.__init__" />
       <keyword name="Importation (Constructor)" id="Importation (Constructor)" ref="eric5.Utilities.py3flakes.checker.html#Importation.__init__" />
-      <keyword name="Importation (Constructor)" id="Importation (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Importation.__init__" />
       <keyword name="ImportsDiagramBuilder" id="ImportsDiagramBuilder" ref="eric5.Graphics.ImportsDiagramBuilder.html#ImportsDiagramBuilder" />
       <keyword name="ImportsDiagramBuilder (Constructor)" id="ImportsDiagramBuilder (Constructor)" ref="eric5.Graphics.ImportsDiagramBuilder.html#ImportsDiagramBuilder.__init__" />
       <keyword name="ImportsDiagramBuilder (Module)" id="ImportsDiagramBuilder (Module)" ref="eric5.Graphics.ImportsDiagramBuilder.html" />
@@ -6926,10 +6946,10 @@
       <keyword name="JavaScriptExternalObject (Constructor)" id="JavaScriptExternalObject (Constructor)" ref="eric5.Helpviewer.HelpBrowserWV.html#JavaScriptExternalObject.__init__" />
       <keyword name="JavaScriptExternalObject.AddSearchProvider" id="JavaScriptExternalObject.AddSearchProvider" ref="eric5.Helpviewer.HelpBrowserWV.html#JavaScriptExternalObject.AddSearchProvider" />
       <keyword name="JavaScriptResources (Module)" id="JavaScriptResources (Module)" ref="eric5.Helpviewer.JavaScriptResources.html" />
+      <keyword name="LateFutureImport" id="LateFutureImport" ref="eric5.Utilities.py2flakes.messages.html#LateFutureImport" />
       <keyword name="LateFutureImport" id="LateFutureImport" ref="eric5.Utilities.py3flakes.messages.html#LateFutureImport" />
-      <keyword name="LateFutureImport" id="LateFutureImport" ref="eric5.UtilitiesPython2.py2flakes.messages.html#LateFutureImport" />
+      <keyword name="LateFutureImport (Constructor)" id="LateFutureImport (Constructor)" ref="eric5.Utilities.py2flakes.messages.html#LateFutureImport.__init__" />
       <keyword name="LateFutureImport (Constructor)" id="LateFutureImport (Constructor)" ref="eric5.Utilities.py3flakes.messages.html#LateFutureImport.__init__" />
-      <keyword name="LateFutureImport (Constructor)" id="LateFutureImport (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.messages.html#LateFutureImport.__init__" />
       <keyword name="Lexer" id="Lexer" ref="eric5.QScintilla.Lexers.Lexer.html#Lexer" />
       <keyword name="Lexer (Constructor)" id="Lexer (Constructor)" ref="eric5.QScintilla.Lexers.Lexer.html#Lexer.__init__" />
       <keyword name="Lexer (Module)" id="Lexer (Module)" ref="eric5.QScintilla.Lexers.Lexer.html" />
@@ -7290,14 +7310,14 @@
       <keyword name="MercurialUserDataDialog (Constructor)" id="MercurialUserDataDialog (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialUserDataDialog.html#MercurialUserDataDialog.__init__" />
       <keyword name="MercurialUserDataDialog (Module)" id="MercurialUserDataDialog (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialUserDataDialog.html" />
       <keyword name="MercurialUserDataDialog.getData" id="MercurialUserDataDialog.getData" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialUserDataDialog.html#MercurialUserDataDialog.getData" />
+      <keyword name="Message" id="Message" ref="eric5.Utilities.py2flakes.messages.html#Message" />
       <keyword name="Message" id="Message" ref="eric5.Utilities.py3flakes.messages.html#Message" />
-      <keyword name="Message" id="Message" ref="eric5.UtilitiesPython2.py2flakes.messages.html#Message" />
+      <keyword name="Message (Constructor)" id="Message (Constructor)" ref="eric5.Utilities.py2flakes.messages.html#Message.__init__" />
       <keyword name="Message (Constructor)" id="Message (Constructor)" ref="eric5.Utilities.py3flakes.messages.html#Message.__init__" />
-      <keyword name="Message (Constructor)" id="Message (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.messages.html#Message.__init__" />
+      <keyword name="Message.__str__" id="Message.__str__" ref="eric5.Utilities.py2flakes.messages.html#Message.__str__" />
       <keyword name="Message.__str__" id="Message.__str__" ref="eric5.Utilities.py3flakes.messages.html#Message.__str__" />
-      <keyword name="Message.__str__" id="Message.__str__" ref="eric5.UtilitiesPython2.py2flakes.messages.html#Message.__str__" />
+      <keyword name="Message.getMessageData" id="Message.getMessageData" ref="eric5.Utilities.py2flakes.messages.html#Message.getMessageData" />
       <keyword name="Message.getMessageData" id="Message.getMessageData" ref="eric5.Utilities.py3flakes.messages.html#Message.getMessageData" />
-      <keyword name="Message.getMessageData" id="Message.getMessageData" ref="eric5.UtilitiesPython2.py2flakes.messages.html#Message.getMessageData" />
       <keyword name="MessageBoxWizard" id="MessageBoxWizard" ref="eric5.Plugins.PluginWizardQMessageBox.html#MessageBoxWizard" />
       <keyword name="MessageBoxWizard (Constructor)" id="MessageBoxWizard (Constructor)" ref="eric5.Plugins.PluginWizardQMessageBox.html#MessageBoxWizard.__init__" />
       <keyword name="MessageBoxWizard (Package)" id="MessageBoxWizard (Package)" ref="index-eric5.Plugins.WizardPlugins.MessageBoxWizard.html" />
@@ -7462,8 +7482,8 @@
       <keyword name="ModuleModel.addClass" id="ModuleModel.addClass" ref="eric5.Graphics.ModuleItem.html#ModuleModel.addClass" />
       <keyword name="ModuleModel.getClasses" id="ModuleModel.getClasses" ref="eric5.Graphics.ModuleItem.html#ModuleModel.getClasses" />
       <keyword name="ModuleParser (Module)" id="ModuleParser (Module)" ref="eric5.Utilities.ModuleParser.html" />
+      <keyword name="ModuleScope" id="ModuleScope" ref="eric5.Utilities.py2flakes.checker.html#ModuleScope" />
       <keyword name="ModuleScope" id="ModuleScope" ref="eric5.Utilities.py3flakes.checker.html#ModuleScope" />
-      <keyword name="ModuleScope" id="ModuleScope" ref="eric5.UtilitiesPython2.py2flakes.checker.html#ModuleScope" />
       <keyword name="MultiProject" id="MultiProject" ref="eric5.MultiProject.MultiProject.html#MultiProject" />
       <keyword name="MultiProject (Constructor)" id="MultiProject (Constructor)" ref="eric5.MultiProject.MultiProject.html#MultiProject.__init__" />
       <keyword name="MultiProject (Module)" id="MultiProject (Module)" ref="eric5.MultiProject.MultiProject.html" />
@@ -7544,15 +7564,10 @@
       <keyword name="MultiProjectWriter (Module)" id="MultiProjectWriter (Module)" ref="eric5.E5XML.MultiProjectWriter.html" />
       <keyword name="MultiProjectWriter.writeXML" id="MultiProjectWriter.writeXML" ref="eric5.E5XML.MultiProjectWriter.html#MultiProjectWriter.writeXML" />
       <keyword name="NannyNag" id="NannyNag" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag" />
-      <keyword name="NannyNag" id="NannyNag" ref="eric5.UtilitiesPython2.Tabnanny.html#NannyNag" />
       <keyword name="NannyNag (Constructor)" id="NannyNag (Constructor)" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag.__init__" />
-      <keyword name="NannyNag (Constructor)" id="NannyNag (Constructor)" ref="eric5.UtilitiesPython2.Tabnanny.html#NannyNag.__init__" />
       <keyword name="NannyNag.get_line" id="NannyNag.get_line" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag.get_line" />
-      <keyword name="NannyNag.get_line" id="NannyNag.get_line" ref="eric5.UtilitiesPython2.Tabnanny.html#NannyNag.get_line" />
       <keyword name="NannyNag.get_lineno" id="NannyNag.get_lineno" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag.get_lineno" />
-      <keyword name="NannyNag.get_lineno" id="NannyNag.get_lineno" ref="eric5.UtilitiesPython2.Tabnanny.html#NannyNag.get_lineno" />
       <keyword name="NannyNag.get_msg" id="NannyNag.get_msg" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag.get_msg" />
-      <keyword name="NannyNag.get_msg" id="NannyNag.get_msg" ref="eric5.UtilitiesPython2.Tabnanny.html#NannyNag.get_msg" />
       <keyword name="Network (Package)" id="Network (Package)" ref="index-eric5.Helpviewer.Network.html" />
       <keyword name="Network (Package)" id="Network (Package)" ref="index-eric5.Network.html" />
       <keyword name="NetworkAccessManager" id="NetworkAccessManager" ref="eric5.Helpviewer.Network.NetworkAccessManager.html#NetworkAccessManager" />
@@ -7920,16 +7935,6 @@
       <keyword name="PasswordsDialog.__calculateHeaderSizes" id="PasswordsDialog.__calculateHeaderSizes" ref="eric5.Helpviewer.Passwords.PasswordsDialog.html#PasswordsDialog.__calculateHeaderSizes" />
       <keyword name="PasswordsDialog.on_passwordsButton_clicked" id="PasswordsDialog.on_passwordsButton_clicked" ref="eric5.Helpviewer.Passwords.PasswordsDialog.html#PasswordsDialog.on_passwordsButton_clicked" />
       <keyword name="Pep8 (Package)" id="Pep8 (Package)" ref="index-eric5.Plugins.CheckerPlugins.Pep8.html" />
-      <keyword name="Pep8Checker" id="Pep8Checker" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.html#Pep8Checker" />
-      <keyword name="Pep8Checker" id="Pep8Checker" ref="eric5.UtilitiesPython2.Pep8Checker.html#Pep8Checker" />
-      <keyword name="Pep8Checker (Constructor)" id="Pep8Checker (Constructor)" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.html#Pep8Checker.__init__" />
-      <keyword name="Pep8Checker (Constructor)" id="Pep8Checker (Constructor)" ref="eric5.UtilitiesPython2.Pep8Checker.html#Pep8Checker.__init__" />
-      <keyword name="Pep8Checker (Module)" id="Pep8Checker (Module)" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.html" />
-      <keyword name="Pep8Checker (Module)" id="Pep8Checker (Module)" ref="eric5.UtilitiesPython2.Pep8Checker.html" />
-      <keyword name="Pep8Checker.__ignore_code" id="Pep8Checker.__ignore_code" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.html#Pep8Checker.__ignore_code" />
-      <keyword name="Pep8Checker.__ignore_code" id="Pep8Checker.__ignore_code" ref="eric5.UtilitiesPython2.Pep8Checker.html#Pep8Checker.__ignore_code" />
-      <keyword name="Pep8Checker.report_error_args" id="Pep8Checker.report_error_args" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.html#Pep8Checker.report_error_args" />
-      <keyword name="Pep8Checker.report_error_args" id="Pep8Checker.report_error_args" ref="eric5.UtilitiesPython2.Pep8Checker.html#Pep8Checker.report_error_args" />
       <keyword name="Pep8CheckerPlugin" id="Pep8CheckerPlugin" ref="eric5.Plugins.PluginPep8Checker.html#Pep8CheckerPlugin" />
       <keyword name="Pep8CheckerPlugin (Constructor)" id="Pep8CheckerPlugin (Constructor)" ref="eric5.Plugins.PluginPep8Checker.html#Pep8CheckerPlugin.__init__" />
       <keyword name="Pep8CheckerPlugin.__editorClosed" id="Pep8CheckerPlugin.__editorClosed" ref="eric5.Plugins.PluginPep8Checker.html#Pep8CheckerPlugin.__editorClosed" />
@@ -7953,15 +7958,24 @@
       <keyword name="Pep8Dialog.__clearErrors" id="Pep8Dialog.__clearErrors" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.__clearErrors" />
       <keyword name="Pep8Dialog.__createResultItem" id="Pep8Dialog.__createResultItem" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.__createResultItem" />
       <keyword name="Pep8Dialog.__finish" id="Pep8Dialog.__finish" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.__finish" />
+      <keyword name="Pep8Dialog.__getSelectedFixableItems" id="Pep8Dialog.__getSelectedFixableItems" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.__getSelectedFixableItems" />
+      <keyword name="Pep8Dialog.__itemFixable" id="Pep8Dialog.__itemFixable" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.__itemFixable" />
+      <keyword name="Pep8Dialog.__modifyFixedResultItem" id="Pep8Dialog.__modifyFixedResultItem" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.__modifyFixedResultItem" />
       <keyword name="Pep8Dialog.__resetStatistics" id="Pep8Dialog.__resetStatistics" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.__resetStatistics" />
       <keyword name="Pep8Dialog.__resort" id="Pep8Dialog.__resort" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.__resort" />
+      <keyword name="Pep8Dialog.__selectCodes" id="Pep8Dialog.__selectCodes" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.__selectCodes" />
+      <keyword name="Pep8Dialog.__updateFixerStatistics" id="Pep8Dialog.__updateFixerStatistics" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.__updateFixerStatistics" />
       <keyword name="Pep8Dialog.__updateStatistics" id="Pep8Dialog.__updateStatistics" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.__updateStatistics" />
       <keyword name="Pep8Dialog.on_buttonBox_clicked" id="Pep8Dialog.on_buttonBox_clicked" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.on_buttonBox_clicked" />
       <keyword name="Pep8Dialog.on_excludeMessagesSelectButton_clicked" id="Pep8Dialog.on_excludeMessagesSelectButton_clicked" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.on_excludeMessagesSelectButton_clicked" />
+      <keyword name="Pep8Dialog.on_fixButton_clicked" id="Pep8Dialog.on_fixButton_clicked" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.on_fixButton_clicked" />
       <keyword name="Pep8Dialog.on_fixIssuesSelectButton_clicked" id="Pep8Dialog.on_fixIssuesSelectButton_clicked" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.on_fixIssuesSelectButton_clicked" />
       <keyword name="Pep8Dialog.on_includeMessagesSelectButton_clicked" id="Pep8Dialog.on_includeMessagesSelectButton_clicked" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.on_includeMessagesSelectButton_clicked" />
       <keyword name="Pep8Dialog.on_loadDefaultButton_clicked" id="Pep8Dialog.on_loadDefaultButton_clicked" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.on_loadDefaultButton_clicked" />
+      <keyword name="Pep8Dialog.on_noFixIssuesSelectButton_clicked" id="Pep8Dialog.on_noFixIssuesSelectButton_clicked" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.on_noFixIssuesSelectButton_clicked" />
+      <keyword name="Pep8Dialog.on_resetDefaultButton_clicked" id="Pep8Dialog.on_resetDefaultButton_clicked" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.on_resetDefaultButton_clicked" />
       <keyword name="Pep8Dialog.on_resultList_itemActivated" id="Pep8Dialog.on_resultList_itemActivated" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.on_resultList_itemActivated" />
+      <keyword name="Pep8Dialog.on_resultList_itemSelectionChanged" id="Pep8Dialog.on_resultList_itemSelectionChanged" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.on_resultList_itemSelectionChanged" />
       <keyword name="Pep8Dialog.on_showButton_clicked" id="Pep8Dialog.on_showButton_clicked" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.on_showButton_clicked" />
       <keyword name="Pep8Dialog.on_startButton_clicked" id="Pep8Dialog.on_startButton_clicked" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.on_startButton_clicked" />
       <keyword name="Pep8Dialog.on_statisticsButton_clicked" id="Pep8Dialog.on_statisticsButton_clicked" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Dialog.on_statisticsButton_clicked" />
@@ -7971,29 +7985,71 @@
       <keyword name="Pep8Fixer" id="Pep8Fixer" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer" />
       <keyword name="Pep8Fixer (Constructor)" id="Pep8Fixer (Constructor)" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__init__" />
       <keyword name="Pep8Fixer (Module)" id="Pep8Fixer (Module)" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html" />
+      <keyword name="Pep8Fixer.__codeMatch" id="Pep8Fixer.__codeMatch" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__codeMatch" />
       <keyword name="Pep8Fixer.__finalize" id="Pep8Fixer.__finalize" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__finalize" />
-      <keyword name="Pep8Fixer.__fixBlankLinesAfterDecorator" id="Pep8Fixer.__fixBlankLinesAfterDecorator" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixBlankLinesAfterDecorator" />
-      <keyword name="Pep8Fixer.__fixMissingWhitespaceAfter" id="Pep8Fixer.__fixMissingWhitespaceAfter" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixMissingWhitespaceAfter" />
-      <keyword name="Pep8Fixer.__fixMissingWhitespaceAroundOperator" id="Pep8Fixer.__fixMissingWhitespaceAroundOperator" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixMissingWhitespaceAroundOperator" />
-      <keyword name="Pep8Fixer.__fixNewline" id="Pep8Fixer.__fixNewline" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixNewline" />
-      <keyword name="Pep8Fixer.__fixNotEqual" id="Pep8Fixer.__fixNotEqual" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixNotEqual" />
-      <keyword name="Pep8Fixer.__fixOneBlankLine" id="Pep8Fixer.__fixOneBlankLine" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixOneBlankLine" />
-      <keyword name="Pep8Fixer.__fixTabs" id="Pep8Fixer.__fixTabs" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixTabs" />
-      <keyword name="Pep8Fixer.__fixTooManyBlankLines" id="Pep8Fixer.__fixTooManyBlankLines" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixTooManyBlankLines" />
-      <keyword name="Pep8Fixer.__fixTrailingBlankLines" id="Pep8Fixer.__fixTrailingBlankLines" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixTrailingBlankLines" />
-      <keyword name="Pep8Fixer.__fixTwoBlankLines" id="Pep8Fixer.__fixTwoBlankLines" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixTwoBlankLines" />
+      <keyword name="Pep8Fixer.__findLogical" id="Pep8Fixer.__findLogical" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__findLogical" />
+      <keyword name="Pep8Fixer.__fixE101" id="Pep8Fixer.__fixE101" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE101" />
+      <keyword name="Pep8Fixer.__fixE121" id="Pep8Fixer.__fixE121" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE121" />
+      <keyword name="Pep8Fixer.__fixE122" id="Pep8Fixer.__fixE122" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE122" />
+      <keyword name="Pep8Fixer.__fixE123" id="Pep8Fixer.__fixE123" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE123" />
+      <keyword name="Pep8Fixer.__fixE125" id="Pep8Fixer.__fixE125" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE125" />
+      <keyword name="Pep8Fixer.__fixE126" id="Pep8Fixer.__fixE126" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE126" />
+      <keyword name="Pep8Fixer.__fixE127" id="Pep8Fixer.__fixE127" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE127" />
+      <keyword name="Pep8Fixer.__fixE201" id="Pep8Fixer.__fixE201" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE201" />
+      <keyword name="Pep8Fixer.__fixE221" id="Pep8Fixer.__fixE221" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE221" />
+      <keyword name="Pep8Fixer.__fixE231" id="Pep8Fixer.__fixE231" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE231" />
+      <keyword name="Pep8Fixer.__fixE251" id="Pep8Fixer.__fixE251" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE251" />
+      <keyword name="Pep8Fixer.__fixE261" id="Pep8Fixer.__fixE261" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE261" />
+      <keyword name="Pep8Fixer.__fixE301" id="Pep8Fixer.__fixE301" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE301" />
+      <keyword name="Pep8Fixer.__fixE302" id="Pep8Fixer.__fixE302" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE302" />
+      <keyword name="Pep8Fixer.__fixE303" id="Pep8Fixer.__fixE303" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE303" />
+      <keyword name="Pep8Fixer.__fixE304" id="Pep8Fixer.__fixE304" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE304" />
+      <keyword name="Pep8Fixer.__fixE401" id="Pep8Fixer.__fixE401" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE401" />
+      <keyword name="Pep8Fixer.__fixE501" id="Pep8Fixer.__fixE501" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE501" />
+      <keyword name="Pep8Fixer.__fixE502" id="Pep8Fixer.__fixE502" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE502" />
+      <keyword name="Pep8Fixer.__fixE701" id="Pep8Fixer.__fixE701" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE701" />
+      <keyword name="Pep8Fixer.__fixE702" id="Pep8Fixer.__fixE702" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE702" />
+      <keyword name="Pep8Fixer.__fixE711" id="Pep8Fixer.__fixE711" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixE711" />
+      <keyword name="Pep8Fixer.__fixReindent" id="Pep8Fixer.__fixReindent" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixReindent" />
+      <keyword name="Pep8Fixer.__fixW291" id="Pep8Fixer.__fixW291" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixW291" />
+      <keyword name="Pep8Fixer.__fixW292" id="Pep8Fixer.__fixW292" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixW292" />
+      <keyword name="Pep8Fixer.__fixW391" id="Pep8Fixer.__fixW391" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixW391" />
+      <keyword name="Pep8Fixer.__fixW603" id="Pep8Fixer.__fixW603" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixW603" />
       <keyword name="Pep8Fixer.__fixWhitespace" id="Pep8Fixer.__fixWhitespace" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixWhitespace" />
-      <keyword name="Pep8Fixer.__fixWhitespaceAfter" id="Pep8Fixer.__fixWhitespaceAfter" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixWhitespaceAfter" />
-      <keyword name="Pep8Fixer.__fixWhitespaceAfterInline" id="Pep8Fixer.__fixWhitespaceAfterInline" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixWhitespaceAfterInline" />
-      <keyword name="Pep8Fixer.__fixWhitespaceAroundEquals" id="Pep8Fixer.__fixWhitespaceAroundEquals" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixWhitespaceAroundEquals" />
-      <keyword name="Pep8Fixer.__fixWhitespaceAroundOperator" id="Pep8Fixer.__fixWhitespaceAroundOperator" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixWhitespaceAroundOperator" />
-      <keyword name="Pep8Fixer.__fixWhitespaceBefore" id="Pep8Fixer.__fixWhitespaceBefore" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixWhitespaceBefore" />
-      <keyword name="Pep8Fixer.__fixWhitespaceBeforeInline" id="Pep8Fixer.__fixWhitespaceBeforeInline" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__fixWhitespaceBeforeInline" />
       <keyword name="Pep8Fixer.__getEol" id="Pep8Fixer.__getEol" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__getEol" />
+      <keyword name="Pep8Fixer.__getIndent" id="Pep8Fixer.__getIndent" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__getIndent" />
+      <keyword name="Pep8Fixer.__getIndentWord" id="Pep8Fixer.__getIndentWord" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__getIndentWord" />
+      <keyword name="Pep8Fixer.__getLogical" id="Pep8Fixer.__getLogical" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__getLogical" />
+      <keyword name="Pep8Fixer.__multilineStringLines" id="Pep8Fixer.__multilineStringLines" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__multilineStringLines" />
       <keyword name="Pep8Fixer.fixIssue" id="Pep8Fixer.fixIssue" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.fixIssue" />
+      <keyword name="Pep8Fixer.mutualStartswith" id="Pep8Fixer.mutualStartswith" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.mutualStartswith" />
       <keyword name="Pep8Fixer.saveFile" id="Pep8Fixer.saveFile" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.saveFile" />
-      <keyword name="Pep8Py2Checker" id="Pep8Py2Checker" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.html#Pep8Py2Checker" />
-      <keyword name="Pep8Py2Checker (Constructor)" id="Pep8Py2Checker (Constructor)" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.html#Pep8Py2Checker.__init__" />
+      <keyword name="Pep8IndentationWrapper" id="Pep8IndentationWrapper" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8IndentationWrapper" />
+      <keyword name="Pep8IndentationWrapper (Constructor)" id="Pep8IndentationWrapper (Constructor)" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8IndentationWrapper.__init__" />
+      <keyword name="Pep8IndentationWrapper.__buildTokensLogical" id="Pep8IndentationWrapper.__buildTokensLogical" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8IndentationWrapper.__buildTokensLogical" />
+      <keyword name="Pep8IndentationWrapper.pep8Expected" id="Pep8IndentationWrapper.pep8Expected" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8IndentationWrapper.pep8Expected" />
+      <keyword name="Pep8LineShortener" id="Pep8LineShortener" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8LineShortener" />
+      <keyword name="Pep8LineShortener (Constructor)" id="Pep8LineShortener (Constructor)" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8LineShortener.__init__" />
+      <keyword name="Pep8LineShortener.__breakMultiline" id="Pep8LineShortener.__breakMultiline" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8LineShortener.__breakMultiline" />
+      <keyword name="Pep8LineShortener.__checkSyntax" id="Pep8LineShortener.__checkSyntax" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8LineShortener.__checkSyntax" />
+      <keyword name="Pep8LineShortener.__countUnbalancedBrackets" id="Pep8LineShortener.__countUnbalancedBrackets" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8LineShortener.__countUnbalancedBrackets" />
+      <keyword name="Pep8LineShortener.__getIndent" id="Pep8LineShortener.__getIndent" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8LineShortener.__getIndent" />
+      <keyword name="Pep8LineShortener.__isProbablyInsideStringOrComment" id="Pep8LineShortener.__isProbablyInsideStringOrComment" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8LineShortener.__isProbablyInsideStringOrComment" />
+      <keyword name="Pep8LineShortener.__lineShorteningRank" id="Pep8LineShortener.__lineShorteningRank" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8LineShortener.__lineShorteningRank" />
+      <keyword name="Pep8LineShortener.__normalizeMultiline" id="Pep8LineShortener.__normalizeMultiline" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8LineShortener.__normalizeMultiline" />
+      <keyword name="Pep8LineShortener.__shortenComment" id="Pep8LineShortener.__shortenComment" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8LineShortener.__shortenComment" />
+      <keyword name="Pep8LineShortener.__shortenLine" id="Pep8LineShortener.__shortenLine" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8LineShortener.__shortenLine" />
+      <keyword name="Pep8LineShortener.shorten" id="Pep8LineShortener.shorten" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8LineShortener.shorten" />
+      <keyword name="Pep8Reindenter" id="Pep8Reindenter" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Reindenter" />
+      <keyword name="Pep8Reindenter (Constructor)" id="Pep8Reindenter (Constructor)" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Reindenter.__init__" />
+      <keyword name="Pep8Reindenter.__genStats" id="Pep8Reindenter.__genStats" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Reindenter.__genStats" />
+      <keyword name="Pep8Reindenter.__getlspace" id="Pep8Reindenter.__getlspace" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Reindenter.__getlspace" />
+      <keyword name="Pep8Reindenter.fixedLine" id="Pep8Reindenter.fixedLine" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Reindenter.fixedLine" />
+      <keyword name="Pep8Reindenter.getline" id="Pep8Reindenter.getline" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Reindenter.getline" />
+      <keyword name="Pep8Reindenter.run" id="Pep8Reindenter.run" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Reindenter.run" />
+      <keyword name="Pep8Report" id="Pep8Report" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Report" />
+      <keyword name="Pep8Report (Constructor)" id="Pep8Report (Constructor)" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Report.__init__" />
+      <keyword name="Pep8Report.error_args" id="Pep8Report.error_args" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html#Pep8Report.error_args" />
       <keyword name="Pep8StatisticsDialog" id="Pep8StatisticsDialog" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8StatisticsDialog.html#Pep8StatisticsDialog" />
       <keyword name="Pep8StatisticsDialog (Constructor)" id="Pep8StatisticsDialog (Constructor)" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8StatisticsDialog.html#Pep8StatisticsDialog.__init__" />
       <keyword name="Pep8StatisticsDialog (Module)" id="Pep8StatisticsDialog (Module)" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8StatisticsDialog.html" />
@@ -8371,6 +8427,7 @@
       <keyword name="Project.__showUserProperties" id="Project.__showUserProperties" ref="eric5.Project.Project.html#Project.__showUserProperties" />
       <keyword name="Project.__statusMonitorStatus" id="Project.__statusMonitorStatus" ref="eric5.Project.Project.html#Project.__statusMonitorStatus" />
       <keyword name="Project.__syncRecent" id="Project.__syncRecent" ref="eric5.Project.Project.html#Project.__syncRecent" />
+      <keyword name="Project.__vcsStatusChanged" id="Project.__vcsStatusChanged" ref="eric5.Project.Project.html#Project.__vcsStatusChanged" />
       <keyword name="Project.__writeDebugProperties" id="Project.__writeDebugProperties" ref="eric5.Project.Project.html#Project.__writeDebugProperties" />
       <keyword name="Project.__writeProject" id="Project.__writeProject" ref="eric5.Project.Project.html#Project.__writeProject" />
       <keyword name="Project.__writeSession" id="Project.__writeSession" ref="eric5.Project.Project.html#Project.__writeSession" />
@@ -8825,7 +8882,6 @@
       <keyword name="PurgeProjectHelper.initActions" id="PurgeProjectHelper.initActions" ref="eric5.Plugins.VcsPlugins.vcsMercurial.PurgeExtension.ProjectHelper.html#PurgeProjectHelper.initActions" />
       <keyword name="PurgeProjectHelper.initMenu" id="PurgeProjectHelper.initMenu" ref="eric5.Plugins.VcsPlugins.vcsMercurial.PurgeExtension.ProjectHelper.html#PurgeProjectHelper.initMenu" />
       <keyword name="PurgeProjectHelper.menuTitle" id="PurgeProjectHelper.menuTitle" ref="eric5.Plugins.VcsPlugins.vcsMercurial.PurgeExtension.ProjectHelper.html#PurgeProjectHelper.menuTitle" />
-      <keyword name="Py2SyntaxChecker (Module)" id="Py2SyntaxChecker (Module)" ref="eric5.UtilitiesPython2.Py2SyntaxChecker.html" />
       <keyword name="Py3FlakesPage" id="Py3FlakesPage" ref="eric5.Preferences.ConfigurationPages.Py3FlakesPage.html#Py3FlakesPage" />
       <keyword name="Py3FlakesPage (Constructor)" id="Py3FlakesPage (Constructor)" ref="eric5.Preferences.ConfigurationPages.Py3FlakesPage.html#Py3FlakesPage.__init__" />
       <keyword name="Py3FlakesPage (Module)" id="Py3FlakesPage (Module)" ref="eric5.Preferences.ConfigurationPages.Py3FlakesPage.html" />
@@ -8944,7 +9000,7 @@
       <keyword name="PyRegExpWizardWidget.on_wordboundButton_clicked" id="PyRegExpWizardWidget.on_wordboundButton_clicked" ref="eric5.Plugins.WizardPlugins.PyRegExpWizard.PyRegExpWizardDialog.html#PyRegExpWizardWidget.on_wordboundButton_clicked" />
       <keyword name="PyRegExpWizardWindow" id="PyRegExpWizardWindow" ref="eric5.Plugins.WizardPlugins.PyRegExpWizard.PyRegExpWizardDialog.html#PyRegExpWizardWindow" />
       <keyword name="PyRegExpWizardWindow (Constructor)" id="PyRegExpWizardWindow (Constructor)" ref="eric5.Plugins.WizardPlugins.PyRegExpWizard.PyRegExpWizardDialog.html#PyRegExpWizardWindow.__init__" />
-      <keyword name="PySideImporter (Module)" id="PySideImporter (Module)" ref="eric5.UtilitiesPython2.PySideImporter.html" />
+      <keyword name="PySideImporter (Module)" id="PySideImporter (Module)" ref="eric5.Utilities.PySideImporter.html" />
       <keyword name="PyUnit (Package)" id="PyUnit (Package)" ref="index-eric5.PyUnit.html" />
       <keyword name="Python (Package)" id="Python (Package)" ref="index-eric5.DebugClients.Python.html" />
       <keyword name="Python3 (Package)" id="Python3 (Package)" ref="index-eric5.DebugClients.Python3.html" />
@@ -9095,6 +9151,8 @@
       <keyword name="QRegularExpressionWizardWindow.closeEvent" id="QRegularExpressionWizardWindow.closeEvent" ref="eric5.Plugins.WizardPlugins.QRegularExpressionWizard.QRegularExpressionWizardDialog.html#QRegularExpressionWizardWindow.closeEvent" />
       <keyword name="QSCINTILLA_VERSION" id="QSCINTILLA_VERSION" ref="eric5.QScintilla.QsciScintillaCompat.html#QSCINTILLA_VERSION" />
       <keyword name="QScintilla (Package)" id="QScintilla (Package)" ref="index-eric5.QScintilla.html" />
+      <keyword name="QT_TRANSLATE_NOOP" id="QT_TRANSLATE_NOOP" ref="eric5.Utilities.py2flakes.messages.html#QT_TRANSLATE_NOOP" />
+      <keyword name="QT_TRANSLATE_NOOP" id="QT_TRANSLATE_NOOP" ref="eric5.Utilities.py3flakes.messages.html#QT_TRANSLATE_NOOP" />
       <keyword name="QsciScintillaCompat" id="QsciScintillaCompat" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat" />
       <keyword name="QsciScintillaCompat (Constructor)" id="QsciScintillaCompat (Constructor)" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.__init__" />
       <keyword name="QsciScintillaCompat (Module)" id="QsciScintillaCompat (Module)" ref="eric5.QScintilla.QsciScintillaCompat.html" />
@@ -9336,14 +9394,16 @@
       <keyword name="RebaseProjectHelper.initMenu" id="RebaseProjectHelper.initMenu" ref="eric5.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.ProjectHelper.html#RebaseProjectHelper.initMenu" />
       <keyword name="RebaseProjectHelper.menuTitle" id="RebaseProjectHelper.menuTitle" ref="eric5.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.ProjectHelper.html#RebaseProjectHelper.menuTitle" />
       <keyword name="RecursionError" id="RecursionError" ref="eric5.Graphics.GraphicsUtilities.html#RecursionError" />
+      <keyword name="Redefined" id="Redefined" ref="eric5.Utilities.py2flakes.messages.html#Redefined" />
+      <keyword name="Redefined (Constructor)" id="Redefined (Constructor)" ref="eric5.Utilities.py2flakes.messages.html#Redefined.__init__" />
       <keyword name="RedefinedFunction" id="RedefinedFunction" ref="eric5.Utilities.py3flakes.messages.html#RedefinedFunction" />
-      <keyword name="RedefinedFunction" id="RedefinedFunction" ref="eric5.UtilitiesPython2.py2flakes.messages.html#RedefinedFunction" />
       <keyword name="RedefinedFunction (Constructor)" id="RedefinedFunction (Constructor)" ref="eric5.Utilities.py3flakes.messages.html#RedefinedFunction.__init__" />
-      <keyword name="RedefinedFunction (Constructor)" id="RedefinedFunction (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.messages.html#RedefinedFunction.__init__" />
+      <keyword name="RedefinedInListComp" id="RedefinedInListComp" ref="eric5.Utilities.py2flakes.messages.html#RedefinedInListComp" />
+      <keyword name="RedefinedInListComp (Constructor)" id="RedefinedInListComp (Constructor)" ref="eric5.Utilities.py2flakes.messages.html#RedefinedInListComp.__init__" />
+      <keyword name="RedefinedWhileUnused" id="RedefinedWhileUnused" ref="eric5.Utilities.py2flakes.messages.html#RedefinedWhileUnused" />
       <keyword name="RedefinedWhileUnused" id="RedefinedWhileUnused" ref="eric5.Utilities.py3flakes.messages.html#RedefinedWhileUnused" />
-      <keyword name="RedefinedWhileUnused" id="RedefinedWhileUnused" ref="eric5.UtilitiesPython2.py2flakes.messages.html#RedefinedWhileUnused" />
+      <keyword name="RedefinedWhileUnused (Constructor)" id="RedefinedWhileUnused (Constructor)" ref="eric5.Utilities.py2flakes.messages.html#RedefinedWhileUnused.__init__" />
       <keyword name="RedefinedWhileUnused (Constructor)" id="RedefinedWhileUnused (Constructor)" ref="eric5.Utilities.py3flakes.messages.html#RedefinedWhileUnused.__init__" />
-      <keyword name="RedefinedWhileUnused (Constructor)" id="RedefinedWhileUnused (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.messages.html#RedefinedWhileUnused.__init__" />
       <keyword name="Redirector" id="Redirector" ref="eric5.UI.UserInterface.html#Redirector" />
       <keyword name="Redirector (Constructor)" id="Redirector (Constructor)" ref="eric5.UI.UserInterface.html#Redirector.__init__" />
       <keyword name="Redirector.__bufferedWrite" id="Redirector.__bufferedWrite" ref="eric5.UI.UserInterface.html#Redirector.__bufferedWrite" />
@@ -9370,12 +9430,11 @@
       <keyword name="SchemeAccessHandler (Constructor)" id="SchemeAccessHandler (Constructor)" ref="eric5.Helpviewer.Network.SchemeAccessHandler.html#SchemeAccessHandler.__init__" />
       <keyword name="SchemeAccessHandler (Module)" id="SchemeAccessHandler (Module)" ref="eric5.Helpviewer.Network.SchemeAccessHandler.html" />
       <keyword name="SchemeAccessHandler.createRequest" id="SchemeAccessHandler.createRequest" ref="eric5.Helpviewer.Network.SchemeAccessHandler.html#SchemeAccessHandler.createRequest" />
+      <keyword name="Scope" id="Scope" ref="eric5.Utilities.py2flakes.checker.html#Scope" />
       <keyword name="Scope" id="Scope" ref="eric5.Utilities.py3flakes.checker.html#Scope" />
-      <keyword name="Scope" id="Scope" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Scope" />
       <keyword name="Scope (Constructor)" id="Scope (Constructor)" ref="eric5.Utilities.py3flakes.checker.html#Scope.__init__" />
-      <keyword name="Scope (Constructor)" id="Scope (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Scope.__init__" />
+      <keyword name="Scope.__repr__" id="Scope.__repr__" ref="eric5.Utilities.py2flakes.checker.html#Scope.__repr__" />
       <keyword name="Scope.__repr__" id="Scope.__repr__" ref="eric5.Utilities.py3flakes.checker.html#Scope.__repr__" />
-      <keyword name="Scope.__repr__" id="Scope.__repr__" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Scope.__repr__" />
       <keyword name="SearchReplaceSlidingWidget" id="SearchReplaceSlidingWidget" ref="eric5.QScintilla.SearchReplaceWidget.html#SearchReplaceSlidingWidget" />
       <keyword name="SearchReplaceSlidingWidget (Constructor)" id="SearchReplaceSlidingWidget (Constructor)" ref="eric5.QScintilla.SearchReplaceWidget.html#SearchReplaceSlidingWidget.__init__" />
       <keyword name="SearchReplaceSlidingWidget.__enableScrollerButtons" id="SearchReplaceSlidingWidget.__enableScrollerButtons" ref="eric5.QScintilla.SearchReplaceWidget.html#SearchReplaceSlidingWidget.__enableScrollerButtons" />
@@ -9909,6 +9968,12 @@
       <keyword name="StackedWidget.removeWidget" id="StackedWidget.removeWidget" ref="eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.html#StackedWidget.removeWidget" />
       <keyword name="StackedWidget.setCurrentIndex" id="StackedWidget.setCurrentIndex" ref="eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.html#StackedWidget.setCurrentIndex" />
       <keyword name="StackedWidget.setCurrentWidget" id="StackedWidget.setCurrentWidget" ref="eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.html#StackedWidget.setCurrentWidget" />
+      <keyword name="StandardReport" id="StandardReport" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#StandardReport" />
+      <keyword name="StandardReport (Constructor)" id="StandardReport (Constructor)" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#StandardReport.__init__" />
+      <keyword name="StandardReport.error" id="StandardReport.error" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#StandardReport.error" />
+      <keyword name="StandardReport.error_args" id="StandardReport.error_args" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#StandardReport.error_args" />
+      <keyword name="StandardReport.get_file_results" id="StandardReport.get_file_results" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#StandardReport.get_file_results" />
+      <keyword name="StandardReport.init_file" id="StandardReport.init_file" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#StandardReport.init_file" />
       <keyword name="StartDialog" id="StartDialog" ref="eric5.Debugger.StartDialog.html#StartDialog" />
       <keyword name="StartDialog (Constructor)" id="StartDialog (Constructor)" ref="eric5.Debugger.StartDialog.html#StartDialog.__init__" />
       <keyword name="StartDialog (Module)" id="StartDialog (Module)" ref="eric5.Debugger.StartDialog.html" />
@@ -9933,6 +9998,15 @@
       <keyword name="StatusMonitorLed.__switchOn" id="StatusMonitorLed.__switchOn" ref="eric5.VCS.StatusMonitorLed.html#StatusMonitorLed.__switchOn" />
       <keyword name="StatusMonitorLed._showContextMenu" id="StatusMonitorLed._showContextMenu" ref="eric5.VCS.StatusMonitorLed.html#StatusMonitorLed._showContextMenu" />
       <keyword name="StatusMonitorThread (Module)" id="StatusMonitorThread (Module)" ref="eric5.VCS.StatusMonitorThread.html" />
+      <keyword name="StyleGuide" id="StyleGuide" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#StyleGuide" />
+      <keyword name="StyleGuide (Constructor)" id="StyleGuide (Constructor)" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#StyleGuide.__init__" />
+      <keyword name="StyleGuide.check_files" id="StyleGuide.check_files" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#StyleGuide.check_files" />
+      <keyword name="StyleGuide.excluded" id="StyleGuide.excluded" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#StyleGuide.excluded" />
+      <keyword name="StyleGuide.get_checks" id="StyleGuide.get_checks" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#StyleGuide.get_checks" />
+      <keyword name="StyleGuide.ignore_code" id="StyleGuide.ignore_code" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#StyleGuide.ignore_code" />
+      <keyword name="StyleGuide.init_report" id="StyleGuide.init_report" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#StyleGuide.init_report" />
+      <keyword name="StyleGuide.input_dir" id="StyleGuide.input_dir" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#StyleGuide.input_dir" />
+      <keyword name="StyleGuide.input_file" id="StyleGuide.input_file" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#StyleGuide.input_file" />
       <keyword name="Subversion" id="Subversion" ref="eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html#Subversion" />
       <keyword name="Subversion" id="Subversion" ref="eric5.Plugins.VcsPlugins.vcsSubversion.subversion.html#Subversion" />
       <keyword name="Subversion (Constructor)" id="Subversion (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html#Subversion.__init__" />
@@ -10853,6 +10927,7 @@
       <keyword name="SyncManager.loadSettings" id="SyncManager.loadSettings" ref="eric5.Helpviewer.Sync.SyncManager.html#SyncManager.loadSettings" />
       <keyword name="SyncManager.showSyncDialog" id="SyncManager.showSyncDialog" ref="eric5.Helpviewer.Sync.SyncManager.html#SyncManager.showSyncDialog" />
       <keyword name="SyncManager.syncEnabled" id="SyncManager.syncEnabled" ref="eric5.Helpviewer.Sync.SyncManager.html#SyncManager.syncEnabled" />
+      <keyword name="SyntaxCheck (Module)" id="SyntaxCheck (Module)" ref="eric5.Utilities.SyntaxCheck.html" />
       <keyword name="SyntaxChecker (Package)" id="SyntaxChecker (Package)" ref="index-eric5.Plugins.CheckerPlugins.SyntaxChecker.html" />
       <keyword name="SyntaxCheckerDialog" id="SyntaxCheckerDialog" ref="eric5.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckerDialog.html#SyntaxCheckerDialog" />
       <keyword name="SyntaxCheckerDialog (Constructor)" id="SyntaxCheckerDialog (Constructor)" ref="eric5.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckerDialog.html#SyntaxCheckerDialog.__init__" />
@@ -10949,15 +11024,12 @@
       <keyword name="TabWidget.setCurrentWidget" id="TabWidget.setCurrentWidget" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#TabWidget.setCurrentWidget" />
       <keyword name="TabWidget.showIndicator" id="TabWidget.showIndicator" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#TabWidget.showIndicator" />
       <keyword name="Tabnanny (Module)" id="Tabnanny (Module)" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html" />
-      <keyword name="Tabnanny (Module)" id="Tabnanny (Module)" ref="eric5.UtilitiesPython2.Tabnanny.html" />
       <keyword name="Tabnanny (Package)" id="Tabnanny (Package)" ref="index-eric5.Plugins.CheckerPlugins.Tabnanny.html" />
-      <keyword name="TabnannyChecker (Module)" id="TabnannyChecker (Module)" ref="eric5.UtilitiesPython2.TabnannyChecker.html" />
       <keyword name="TabnannyDialog" id="TabnannyDialog" ref="eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog" />
       <keyword name="TabnannyDialog (Constructor)" id="TabnannyDialog (Constructor)" ref="eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.__init__" />
       <keyword name="TabnannyDialog (Module)" id="TabnannyDialog (Module)" ref="eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html" />
       <keyword name="TabnannyDialog.__createResultItem" id="TabnannyDialog.__createResultItem" ref="eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.__createResultItem" />
       <keyword name="TabnannyDialog.__finish" id="TabnannyDialog.__finish" ref="eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.__finish" />
-      <keyword name="TabnannyDialog.__py2check" id="TabnannyDialog.__py2check" ref="eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.__py2check" />
       <keyword name="TabnannyDialog.__resort" id="TabnannyDialog.__resort" ref="eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.__resort" />
       <keyword name="TabnannyDialog.on_buttonBox_clicked" id="TabnannyDialog.on_buttonBox_clicked" ref="eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.on_buttonBox_clicked" />
       <keyword name="TabnannyDialog.on_resultList_itemActivated" id="TabnannyDialog.on_resultList_itemActivated" ref="eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.on_resultList_itemActivated" />
@@ -11215,7 +11287,6 @@
       <keyword name="ToolGroupConfigurationDialog.on_newButton_clicked" id="ToolGroupConfigurationDialog.on_newButton_clicked" ref="eric5.Preferences.ToolGroupConfigurationDialog.html#ToolGroupConfigurationDialog.on_newButton_clicked" />
       <keyword name="ToolGroupConfigurationDialog.on_upButton_clicked" id="ToolGroupConfigurationDialog.on_upButton_clicked" ref="eric5.Preferences.ToolGroupConfigurationDialog.html#ToolGroupConfigurationDialog.on_upButton_clicked" />
       <keyword name="Toolbox (Package)" id="Toolbox (Package)" ref="index-eric5.Toolbox.html" />
-      <keyword name="Tools (Module)" id="Tools (Module)" ref="eric5.UtilitiesPython2.Tools.html" />
       <keyword name="Tools (Package)" id="Tools (Package)" ref="index-eric5.Tools.html" />
       <keyword name="Translation" id="Translation" ref="eric5.Tools.TRPreviewer.html#Translation" />
       <keyword name="Translation (Constructor)" id="Translation (Constructor)" ref="eric5.Tools.TRPreviewer.html#Translation.__init__" />
@@ -11423,20 +11494,20 @@
       <keyword name="UMLSceneSizeDialog.getData" id="UMLSceneSizeDialog.getData" ref="eric5.Graphics.UMLSceneSizeDialog.html#UMLSceneSizeDialog.getData" />
       <keyword name="Uid" id="Uid" ref="eric5.Utilities.binplistlib.html#Uid" />
       <keyword name="Uid.__repr__" id="Uid.__repr__" ref="eric5.Utilities.binplistlib.html#Uid.__repr__" />
+      <keyword name="UnBinding" id="UnBinding" ref="eric5.Utilities.py2flakes.checker.html#UnBinding" />
       <keyword name="UnBinding" id="UnBinding" ref="eric5.Utilities.py3flakes.checker.html#UnBinding" />
-      <keyword name="UnBinding" id="UnBinding" ref="eric5.UtilitiesPython2.py2flakes.checker.html#UnBinding" />
+      <keyword name="UndefinedExport" id="UndefinedExport" ref="eric5.Utilities.py2flakes.messages.html#UndefinedExport" />
       <keyword name="UndefinedExport" id="UndefinedExport" ref="eric5.Utilities.py3flakes.messages.html#UndefinedExport" />
-      <keyword name="UndefinedExport" id="UndefinedExport" ref="eric5.UtilitiesPython2.py2flakes.messages.html#UndefinedExport" />
+      <keyword name="UndefinedExport (Constructor)" id="UndefinedExport (Constructor)" ref="eric5.Utilities.py2flakes.messages.html#UndefinedExport.__init__" />
       <keyword name="UndefinedExport (Constructor)" id="UndefinedExport (Constructor)" ref="eric5.Utilities.py3flakes.messages.html#UndefinedExport.__init__" />
-      <keyword name="UndefinedExport (Constructor)" id="UndefinedExport (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.messages.html#UndefinedExport.__init__" />
+      <keyword name="UndefinedLocal" id="UndefinedLocal" ref="eric5.Utilities.py2flakes.messages.html#UndefinedLocal" />
       <keyword name="UndefinedLocal" id="UndefinedLocal" ref="eric5.Utilities.py3flakes.messages.html#UndefinedLocal" />
-      <keyword name="UndefinedLocal" id="UndefinedLocal" ref="eric5.UtilitiesPython2.py2flakes.messages.html#UndefinedLocal" />
+      <keyword name="UndefinedLocal (Constructor)" id="UndefinedLocal (Constructor)" ref="eric5.Utilities.py2flakes.messages.html#UndefinedLocal.__init__" />
       <keyword name="UndefinedLocal (Constructor)" id="UndefinedLocal (Constructor)" ref="eric5.Utilities.py3flakes.messages.html#UndefinedLocal.__init__" />
-      <keyword name="UndefinedLocal (Constructor)" id="UndefinedLocal (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.messages.html#UndefinedLocal.__init__" />
+      <keyword name="UndefinedName" id="UndefinedName" ref="eric5.Utilities.py2flakes.messages.html#UndefinedName" />
       <keyword name="UndefinedName" id="UndefinedName" ref="eric5.Utilities.py3flakes.messages.html#UndefinedName" />
-      <keyword name="UndefinedName" id="UndefinedName" ref="eric5.UtilitiesPython2.py2flakes.messages.html#UndefinedName" />
+      <keyword name="UndefinedName (Constructor)" id="UndefinedName (Constructor)" ref="eric5.Utilities.py2flakes.messages.html#UndefinedName.__init__" />
       <keyword name="UndefinedName (Constructor)" id="UndefinedName (Constructor)" ref="eric5.Utilities.py3flakes.messages.html#UndefinedName.__init__" />
-      <keyword name="UndefinedName (Constructor)" id="UndefinedName (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.messages.html#UndefinedName.__init__" />
       <keyword name="UnittestDialog" id="UnittestDialog" ref="eric5.PyUnit.UnittestDialog.html#UnittestDialog" />
       <keyword name="UnittestDialog (Constructor)" id="UnittestDialog (Constructor)" ref="eric5.PyUnit.UnittestDialog.html#UnittestDialog.__init__" />
       <keyword name="UnittestDialog (Module)" id="UnittestDialog (Module)" ref="eric5.PyUnit.UnittestDialog.html" />
@@ -11466,14 +11537,14 @@
       <keyword name="UnittestWindow" id="UnittestWindow" ref="eric5.PyUnit.UnittestDialog.html#UnittestWindow" />
       <keyword name="UnittestWindow (Constructor)" id="UnittestWindow (Constructor)" ref="eric5.PyUnit.UnittestDialog.html#UnittestWindow.__init__" />
       <keyword name="UnittestWindow.eventFilter" id="UnittestWindow.eventFilter" ref="eric5.PyUnit.UnittestDialog.html#UnittestWindow.eventFilter" />
+      <keyword name="UnusedImport" id="UnusedImport" ref="eric5.Utilities.py2flakes.messages.html#UnusedImport" />
       <keyword name="UnusedImport" id="UnusedImport" ref="eric5.Utilities.py3flakes.messages.html#UnusedImport" />
-      <keyword name="UnusedImport" id="UnusedImport" ref="eric5.UtilitiesPython2.py2flakes.messages.html#UnusedImport" />
+      <keyword name="UnusedImport (Constructor)" id="UnusedImport (Constructor)" ref="eric5.Utilities.py2flakes.messages.html#UnusedImport.__init__" />
       <keyword name="UnusedImport (Constructor)" id="UnusedImport (Constructor)" ref="eric5.Utilities.py3flakes.messages.html#UnusedImport.__init__" />
-      <keyword name="UnusedImport (Constructor)" id="UnusedImport (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.messages.html#UnusedImport.__init__" />
+      <keyword name="UnusedVariable" id="UnusedVariable" ref="eric5.Utilities.py2flakes.messages.html#UnusedVariable" />
       <keyword name="UnusedVariable" id="UnusedVariable" ref="eric5.Utilities.py3flakes.messages.html#UnusedVariable" />
-      <keyword name="UnusedVariable" id="UnusedVariable" ref="eric5.UtilitiesPython2.py2flakes.messages.html#UnusedVariable" />
+      <keyword name="UnusedVariable (Constructor)" id="UnusedVariable (Constructor)" ref="eric5.Utilities.py2flakes.messages.html#UnusedVariable.__init__" />
       <keyword name="UnusedVariable (Constructor)" id="UnusedVariable (Constructor)" ref="eric5.Utilities.py3flakes.messages.html#UnusedVariable.__init__" />
-      <keyword name="UnusedVariable (Constructor)" id="UnusedVariable (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.messages.html#UnusedVariable.__init__" />
       <keyword name="UrlBar" id="UrlBar" ref="eric5.Helpviewer.UrlBar.UrlBar.html#UrlBar" />
       <keyword name="UrlBar (Constructor)" id="UrlBar (Constructor)" ref="eric5.Helpviewer.UrlBar.UrlBar.html#UrlBar.__init__" />
       <keyword name="UrlBar (Module)" id="UrlBar (Module)" ref="eric5.Helpviewer.UrlBar.UrlBar.html" />
@@ -11755,7 +11826,6 @@
       <keyword name="UserPropertiesDialog (Module)" id="UserPropertiesDialog (Module)" ref="eric5.Project.UserPropertiesDialog.html" />
       <keyword name="UserPropertiesDialog.storeData" id="UserPropertiesDialog.storeData" ref="eric5.Project.UserPropertiesDialog.html#UserPropertiesDialog.storeData" />
       <keyword name="Utilities (Package)" id="Utilities (Package)" ref="index-eric5.Utilities.html" />
-      <keyword name="UtilitiesPython2 (Package)" id="UtilitiesPython2 (Package)" ref="index-eric5.UtilitiesPython2.html" />
       <keyword name="VCS (Package)" id="VCS (Package)" ref="index-eric5.VCS.html" />
       <keyword name="VariableDetailDialog" id="VariableDetailDialog" ref="eric5.Debugger.VariableDetailDialog.html#VariableDetailDialog" />
       <keyword name="VariableDetailDialog (Constructor)" id="VariableDetailDialog (Constructor)" ref="eric5.Debugger.VariableDetailDialog.html#VariableDetailDialog.__init__" />
@@ -12322,21 +12392,13 @@
       <keyword name="WebPluginInterface.metaPlugin" id="WebPluginInterface.metaPlugin" ref="eric5.Helpviewer.WebPlugins.WebPluginInterface.html#WebPluginInterface.metaPlugin" />
       <keyword name="WebPlugins (Package)" id="WebPlugins (Package)" ref="index-eric5.Helpviewer.WebPlugins.html" />
       <keyword name="Whitespace" id="Whitespace" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#Whitespace" />
-      <keyword name="Whitespace" id="Whitespace" ref="eric5.UtilitiesPython2.Tabnanny.html#Whitespace" />
       <keyword name="Whitespace (Constructor)" id="Whitespace (Constructor)" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#Whitespace.__init__" />
-      <keyword name="Whitespace (Constructor)" id="Whitespace (Constructor)" ref="eric5.UtilitiesPython2.Tabnanny.html#Whitespace.__init__" />
       <keyword name="Whitespace.equal" id="Whitespace.equal" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#Whitespace.equal" />
-      <keyword name="Whitespace.equal" id="Whitespace.equal" ref="eric5.UtilitiesPython2.Tabnanny.html#Whitespace.equal" />
       <keyword name="Whitespace.indent_level" id="Whitespace.indent_level" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#Whitespace.indent_level" />
-      <keyword name="Whitespace.indent_level" id="Whitespace.indent_level" ref="eric5.UtilitiesPython2.Tabnanny.html#Whitespace.indent_level" />
       <keyword name="Whitespace.less" id="Whitespace.less" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#Whitespace.less" />
-      <keyword name="Whitespace.less" id="Whitespace.less" ref="eric5.UtilitiesPython2.Tabnanny.html#Whitespace.less" />
       <keyword name="Whitespace.longest_run_of_spaces" id="Whitespace.longest_run_of_spaces" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#Whitespace.longest_run_of_spaces" />
-      <keyword name="Whitespace.longest_run_of_spaces" id="Whitespace.longest_run_of_spaces" ref="eric5.UtilitiesPython2.Tabnanny.html#Whitespace.longest_run_of_spaces" />
       <keyword name="Whitespace.not_equal_witness" id="Whitespace.not_equal_witness" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#Whitespace.not_equal_witness" />
-      <keyword name="Whitespace.not_equal_witness" id="Whitespace.not_equal_witness" ref="eric5.UtilitiesPython2.Tabnanny.html#Whitespace.not_equal_witness" />
       <keyword name="Whitespace.not_less_witness" id="Whitespace.not_less_witness" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#Whitespace.not_less_witness" />
-      <keyword name="Whitespace.not_less_witness" id="Whitespace.not_less_witness" ref="eric5.UtilitiesPython2.Tabnanny.html#Whitespace.not_less_witness" />
       <keyword name="WidgetArea" id="WidgetArea" ref="eric5.Tools.TRPreviewer.html#WidgetArea" />
       <keyword name="WidgetArea (Constructor)" id="WidgetArea (Constructor)" ref="eric5.Tools.TRPreviewer.html#WidgetArea.__init__" />
       <keyword name="WidgetArea.__findWidget" id="WidgetArea.__findWidget" ref="eric5.Tools.TRPreviewer.html#WidgetArea.__findWidget" />
@@ -12437,6 +12499,7 @@
       <keyword name="__saveShortcut" id="__saveShortcut" ref="eric5.Preferences.Shortcuts.html#__saveShortcut" />
       <keyword name="__setAction" id="__setAction" ref="eric5.Preferences.Shortcuts.html#__setAction" />
       <keyword name="__showwarning" id="__showwarning" ref="eric5.Utilities.__init__.html#__showwarning" />
+      <keyword name="_add_check" id="_add_check" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#_add_check" />
       <keyword name="_buildChildrenLists" id="_buildChildrenLists" ref="eric5.Graphics.GraphicsUtilities.html#_buildChildrenLists" />
       <keyword name="_debugclient_start_new_thread" id="_debugclient_start_new_thread" ref="eric5.DebugClients.Python.DebugClientThreads.html#_debugclient_start_new_thread" />
       <keyword name="_debugclient_start_new_thread" id="_debugclient_start_new_thread" ref="eric5.DebugClients.Python3.DebugClientThreads.html#_debugclient_start_new_thread" />
@@ -12444,7 +12507,6 @@
       <keyword name="_indent" id="_indent" ref="eric5.Utilities.ClassBrowsers.pyclbr.html#_indent" />
       <keyword name="_indent" id="_indent" ref="eric5.Utilities.ModuleParser.html#_indent" />
       <keyword name="_main" id="_main" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#_main" />
-      <keyword name="_main" id="_main" ref="eric5.UtilitiesPython2.pep8.html#_main" />
       <keyword name="_percentReplacementFunc" id="_percentReplacementFunc" ref="eric5.Utilities.__init__.html#_percentReplacementFunc" />
       <keyword name="addActions" id="addActions" ref="eric5.E5Gui.E5Action.html#addActions" />
       <keyword name="addSearchPath" id="addSearchPath" ref="eric5.UI.PixmapCache.html#addSearchPath" />
@@ -12454,20 +12516,20 @@
       <keyword name="append_PKCS7_padding" id="append_PKCS7_padding" ref="eric5.Utilities.crypto.py3AES.html#append_PKCS7_padding" />
       <keyword name="binplistlib (Module)" id="binplistlib (Module)" ref="eric5.Utilities.binplistlib.html" />
       <keyword name="blank_lines" id="blank_lines" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#blank_lines" />
-      <keyword name="blank_lines" id="blank_lines" ref="eric5.UtilitiesPython2.pep8.html#blank_lines" />
       <keyword name="bookmarks (Module)" id="bookmarks (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.BookmarksExtension.bookmarks.html" />
       <keyword name="changeRememberedMaster" id="changeRememberedMaster" ref="eric5.Utilities.crypto.__init__.html#changeRememberedMaster" />
       <keyword name="check" id="check" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#check" />
-      <keyword name="check" id="check" ref="eric5.UtilitiesPython2.Tabnanny.html#check" />
       <keyword name="checkBlacklistedVersions" id="checkBlacklistedVersions" ref="eric5.Globals.__init__.html#checkBlacklistedVersions" />
       <keyword name="checkPyside" id="checkPyside" ref="eric5.Utilities.__init__.html#checkPyside" />
+      <keyword name="checker (Module)" id="checker (Module)" ref="eric5.Utilities.py2flakes.checker.html" />
       <keyword name="checker (Module)" id="checker (Module)" ref="eric5.Utilities.py3flakes.checker.html" />
-      <keyword name="checker (Module)" id="checker (Module)" ref="eric5.UtilitiesPython2.py2flakes.checker.html" />
       <keyword name="cleanUp" id="cleanUp" ref="eric5.install.html#cleanUp" />
       <keyword name="close" id="close" ref="eric5.DebugClients.Ruby.AsyncFile.html#close" />
       <keyword name="compactPath" id="compactPath" ref="eric5.Utilities.__init__.html#compactPath" />
+      <keyword name="comparison_to_singleton" id="comparison_to_singleton" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#comparison_to_singleton" />
+      <keyword name="comparison_type" id="comparison_type" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#comparison_type" />
+      <keyword name="compatibility_fixes (Module)" id="compatibility_fixes (Module)" ref="eric5.Utilities.compatibility_fixes.html" />
       <keyword name="compile" id="compile" ref="eric5.Utilities.__init__.html#compile" />
-      <keyword name="compile" id="compile" ref="eric5.UtilitiesPython2.Py2SyntaxChecker.html#compile" />
       <keyword name="compileUiDir" id="compileUiDir" ref="eric5.Utilities.uic.html#compileUiDir" />
       <keyword name="compileUiDir" id="compileUiDir" ref="eric5.compileUiFiles.html#compileUiDir" />
       <keyword name="compileUiDir" id="compileUiDir" ref="eric5.install.html#compileUiDir" />
@@ -12475,14 +12537,16 @@
       <keyword name="compileUiFiles" id="compileUiFiles" ref="eric5.compileUiFiles.html#compileUiFiles" />
       <keyword name="compileUiFiles" id="compileUiFiles" ref="eric5.install.html#compileUiFiles" />
       <keyword name="compileUiFiles (Module)" id="compileUiFiles (Module)" ref="eric5.compileUiFiles.html" />
+      <keyword name="compile_and_check" id="compile_and_check" ref="eric5.Utilities.SyntaxCheck.html#compile_and_check" />
+      <keyword name="compile_extern" id="compile_extern" ref="eric5.Utilities.__init__.html#compile_extern" />
       <keyword name="compile_ui" id="compile_ui" ref="eric5.Utilities.uic.html#compile_ui" />
       <keyword name="compile_ui" id="compile_ui" ref="eric5.compileUiFiles.html#compile_ui" />
       <keyword name="compile_ui" id="compile_ui" ref="eric5.install.html#compile_ui" />
       <keyword name="compound_statements" id="compound_statements" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#compound_statements" />
-      <keyword name="compound_statements" id="compound_statements" ref="eric5.UtilitiesPython2.pep8.html#compound_statements" />
       <keyword name="contentSniff" id="contentSniff" ref="eric5.Helpviewer.HelpBrowserWV.html#contentSniff" />
       <keyword name="context" id="context" ref="eric5.DebugClients.Ruby.Debuggee.html#context" />
       <keyword name="context_diff" id="context_diff" ref="eric5.UI.DiffDialog.html#context_diff" />
+      <keyword name="continued_indentation" id="continued_indentation" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#continued_indentation" />
       <keyword name="convertLineEnds" id="convertLineEnds" ref="eric5.Utilities.__init__.html#convertLineEnds" />
       <keyword name="convertPasswords" id="convertPasswords" ref="eric5.Preferences.__init__.html#convertPasswords" />
       <keyword name="copyToFile" id="copyToFile" ref="eric5.install.html#copyToFile" />
@@ -12577,8 +12641,7 @@
       <keyword name="dataString" id="dataString" ref="eric5.Helpviewer.Download.DownloadUtilities.html#dataString" />
       <keyword name="dateFromTime_t" id="dateFromTime_t" ref="eric5.Plugins.VcsPlugins.vcsPySvn.SvnUtilities.html#dateFromTime_t" />
       <keyword name="debug_thread_info" id="debug_thread_info" ref="eric5.DebugClients.Ruby.Debuggee.html#debug_thread_info" />
-      <keyword name="decode" id="decode" ref="eric5.Utilities.__init__.html#decode" />
-      <keyword name="decode" id="decode" ref="eric5.UtilitiesPython2.Tools.html#decode" />
+      <keyword name="decode" id="decode" ref="eric5.Utilities.SyntaxCheck.html#decode" />
       <keyword name="decodeBytes" id="decodeBytes" ref="eric5.Utilities.__init__.html#decodeBytes" />
       <keyword name="decodeString" id="decodeString" ref="eric5.Utilities.__init__.html#decodeString" />
       <keyword name="decryptData" id="decryptData" ref="eric5.Utilities.crypto.py3AES.html#decryptData" />
@@ -12623,8 +12686,6 @@
       <keyword name="eventLoop" id="eventLoop" ref="eric5.DebugClients.Ruby.Debuggee.html#eventLoop" />
       <keyword name="eventPoll" id="eventPoll" ref="eric5.DebugClients.Ruby.Debuggee.html#eventPoll" />
       <keyword name="excepthook" id="excepthook" ref="eric5.eric5.html#excepthook" />
-      <keyword name="excluded" id="excluded" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#excluded" />
-      <keyword name="excluded" id="excluded" ref="eric5.UtilitiesPython2.pep8.html#excluded" />
       <keyword name="exeDisplayData" id="exeDisplayData" ref="eric5.Plugins.PluginEricapi.html#exeDisplayData" />
       <keyword name="exeDisplayData" id="exeDisplayData" ref="eric5.Plugins.PluginVcsMercurial.html#exeDisplayData" />
       <keyword name="exeDisplayData" id="exeDisplayData" ref="eric5.Plugins.PluginVcsPySvn.html#exeDisplayData" />
@@ -12633,32 +12694,25 @@
       <keyword name="exit" id="exit" ref="eric5.install.html#exit" />
       <keyword name="exit" id="exit" ref="eric5.uninstall.html#exit" />
       <keyword name="expand_indent" id="expand_indent" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#expand_indent" />
-      <keyword name="expand_indent" id="expand_indent" ref="eric5.UtilitiesPython2.pep8.html#expand_indent" />
+      <keyword name="explicit_line_join" id="explicit_line_join" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#explicit_line_join" />
       <keyword name="exportPreferences" id="exportPreferences" ref="eric5.Preferences.__init__.html#exportPreferences" />
       <keyword name="exportShortcuts" id="exportShortcuts" ref="eric5.Preferences.Shortcuts.html#exportShortcuts" />
       <keyword name="extractFlags" id="extractFlags" ref="eric5.Utilities.__init__.html#extractFlags" />
       <keyword name="extractFlagsFromFile" id="extractFlagsFromFile" ref="eric5.Utilities.__init__.html#extractFlagsFromFile" />
-      <keyword name="extractLineFlags" id="extractLineFlags" ref="eric5.Utilities.__init__.html#extractLineFlags" />
-      <keyword name="extractLineFlags" id="extractLineFlags" ref="eric5.UtilitiesPython2.Tools.html#extractLineFlags" />
+      <keyword name="extractLineFlags" id="extractLineFlags" ref="eric5.Utilities.SyntaxCheck.html#extractLineFlags" />
       <keyword name="extraneous_whitespace" id="extraneous_whitespace" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#extraneous_whitespace" />
-      <keyword name="extraneous_whitespace" id="extraneous_whitespace" ref="eric5.UtilitiesPython2.pep8.html#extraneous_whitespace" />
       <keyword name="factory" id="factory" ref="eric5.VCS.__init__.html#factory" />
       <keyword name="factory" id="factory" ref="eric5.ViewManager.__init__.html#factory" />
       <keyword name="fetch (Module)" id="fetch (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.FetchExtension.fetch.html" />
       <keyword name="filename_match" id="filename_match" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#filename_match" />
-      <keyword name="filename_match" id="filename_match" ref="eric5.UtilitiesPython2.pep8.html#filename_match" />
       <keyword name="fileno" id="fileno" ref="eric5.DebugClients.Ruby.AsyncFile.html#fileno" />
       <keyword name="filterCharsFromFilename" id="filterCharsFromFilename" ref="eric5.Helpviewer.HelpUtilities.html#filterCharsFromFilename" />
-      <keyword name="findPython2Interpreters" id="findPython2Interpreters" ref="eric5.Globals.__init__.html#findPython2Interpreters" />
-      <keyword name="find_checks" id="find_checks" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#find_checks" />
-      <keyword name="find_checks" id="find_checks" ref="eric5.UtilitiesPython2.pep8.html#find_checks" />
+      <keyword name="findPythonInterpreters" id="findPythonInterpreters" ref="eric5.Globals.__init__.html#findPythonInterpreters" />
       <keyword name="find_module" id="find_module" ref="eric5.Utilities.ClassBrowsers.__init__.html#find_module" />
       <keyword name="find_module" id="find_module" ref="eric5.Utilities.ModuleParser.html#find_module" />
-      <keyword name="flakesCheck" id="flakesCheck" ref="eric5.UtilitiesPython2.Py2SyntaxChecker.html#flakesCheck" />
       <keyword name="flush" id="flush" ref="eric5.DebugClients.Ruby.AsyncFile.html#flush" />
       <keyword name="formatTime" id="formatTime" ref="eric5.Plugins.VcsPlugins.vcsPySvn.SvnUtilities.html#formatTime" />
       <keyword name="format_witnesses" id="format_witnesses" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#format_witnesses" />
-      <keyword name="format_witnesses" id="format_witnesses" ref="eric5.UtilitiesPython2.Tabnanny.html#format_witnesses" />
       <keyword name="fromNativeSeparators" id="fromNativeSeparators" ref="eric5.Utilities.__init__.html#fromNativeSeparators" />
       <keyword name="generateDistroInfo" id="generateDistroInfo" ref="eric5.Utilities.__init__.html#generateDistroInfo" />
       <keyword name="generatePluginsVersionInfo" id="generatePluginsVersionInfo" ref="eric5.Utilities.__init__.html#generatePluginsVersionInfo" />
@@ -12719,6 +12773,7 @@
       <keyword name="getLexer" id="getLexer" ref="eric5.QScintilla.Lexers.__init__.html#getLexer" />
       <keyword name="getMessage" id="getMessage" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#getMessage" />
       <keyword name="getMultiProject" id="getMultiProject" ref="eric5.Preferences.__init__.html#getMultiProject" />
+      <keyword name="getNodeName" id="getNodeName" ref="eric5.Utilities.py2flakes.checker.html#getNodeName" />
       <keyword name="getOpenFileFiltersList" id="getOpenFileFiltersList" ref="eric5.QScintilla.Lexers.__init__.html#getOpenFileFiltersList" />
       <keyword name="getOpenFileName" id="getOpenFileName" ref="eric5.E5Gui.E5FileDialog.html#getOpenFileName" />
       <keyword name="getOpenFileNameAndFilter" id="getOpenFileNameAndFilter" ref="eric5.E5Gui.E5FileDialog.html#getOpenFileNameAndFilter" />
@@ -12778,17 +12833,9 @@
       <keyword name="get_class_members" id="get_class_members" ref="eric5.DebugClients.Python.FlexCompleter.html#get_class_members" />
       <keyword name="get_class_members" id="get_class_members" ref="eric5.DebugClients.Python3.FlexCompleter.html#get_class_members" />
       <keyword name="get_coding" id="get_coding" ref="eric5.Utilities.__init__.html#get_coding" />
-      <keyword name="get_coding" id="get_coding" ref="eric5.UtilitiesPython2.Tools.html#get_coding" />
-      <keyword name="get_codingBytes" id="get_codingBytes" ref="eric5.Utilities.__init__.html#get_codingBytes" />
-      <keyword name="get_count" id="get_count" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#get_count" />
-      <keyword name="get_count" id="get_count" ref="eric5.UtilitiesPython2.pep8.html#get_count" />
-      <keyword name="get_error_statistics" id="get_error_statistics" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#get_error_statistics" />
-      <keyword name="get_error_statistics" id="get_error_statistics" ref="eric5.UtilitiesPython2.pep8.html#get_error_statistics" />
-      <keyword name="get_statistics" id="get_statistics" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#get_statistics" />
-      <keyword name="get_statistics" id="get_statistics" ref="eric5.UtilitiesPython2.pep8.html#get_statistics" />
+      <keyword name="get_codingBytes" id="get_codingBytes" ref="eric5.Utilities.SyntaxCheck.html#get_codingBytes" />
+      <keyword name="get_parser" id="get_parser" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#get_parser" />
       <keyword name="get_thread" id="get_thread" ref="eric5.DebugClients.Ruby.Debuggee.html#get_thread" />
-      <keyword name="get_warning_statistics" id="get_warning_statistics" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#get_warning_statistics" />
-      <keyword name="get_warning_statistics" id="get_warning_statistics" ref="eric5.UtilitiesPython2.pep8.html#get_warning_statistics" />
       <keyword name="getpass" id="getpass" ref="eric5.DebugClients.Python.getpass.html#getpass" />
       <keyword name="getpass" id="getpass" ref="eric5.DebugClients.Python3.getpass.html#getpass" />
       <keyword name="getpass (Module)" id="getpass (Module)" ref="eric5.DebugClients.Python.getpass.html" />
@@ -12807,14 +12854,10 @@
       <keyword name="html_udecode" id="html_udecode" ref="eric5.Utilities.__init__.html#html_udecode" />
       <keyword name="html_uencode" id="html_uencode" ref="eric5.Utilities.__init__.html#html_uencode" />
       <keyword name="idlclbr (Module)" id="idlclbr (Module)" ref="eric5.Utilities.ClassBrowsers.idlclbr.html" />
-      <keyword name="ignore_code" id="ignore_code" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#ignore_code" />
-      <keyword name="ignore_code" id="ignore_code" ref="eric5.UtilitiesPython2.pep8.html#ignore_code" />
       <keyword name="importPreferences" id="importPreferences" ref="eric5.Preferences.__init__.html#importPreferences" />
       <keyword name="importShortcuts" id="importShortcuts" ref="eric5.Preferences.Shortcuts.html#importShortcuts" />
       <keyword name="imports_on_separate_lines" id="imports_on_separate_lines" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#imports_on_separate_lines" />
-      <keyword name="imports_on_separate_lines" id="imports_on_separate_lines" ref="eric5.UtilitiesPython2.pep8.html#imports_on_separate_lines" />
       <keyword name="indentation" id="indentation" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#indentation" />
-      <keyword name="indentation" id="indentation" ref="eric5.UtilitiesPython2.pep8.html#indentation" />
       <keyword name="information" id="information" ref="eric5.E5Gui.E5MessageBox.html#information" />
       <keyword name="initDebugger" id="initDebugger" ref="eric5.DebugClients.Python.eric5dbgstub.html#initDebugger" />
       <keyword name="initDebugger" id="initDebugger" ref="eric5.DebugClients.Python3.eric5dbgstub.html#initDebugger" />
@@ -12823,11 +12866,8 @@
       <keyword name="initGlobals" id="initGlobals" ref="eric5.uninstall.html#initGlobals" />
       <keyword name="initPreferences" id="initPreferences" ref="eric5.Preferences.__init__.html#initPreferences" />
       <keyword name="initRecentSettings" id="initRecentSettings" ref="eric5.Preferences.__init__.html#initRecentSettings" />
+      <keyword name="init_checks_registry" id="init_checks_registry" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#init_checks_registry" />
       <keyword name="initializeResourceSearchPath" id="initializeResourceSearchPath" ref="eric5.Toolbox.Startup.html#initializeResourceSearchPath" />
-      <keyword name="input_dir" id="input_dir" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#input_dir" />
-      <keyword name="input_dir" id="input_dir" ref="eric5.UtilitiesPython2.pep8.html#input_dir" />
-      <keyword name="input_file" id="input_file" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#input_file" />
-      <keyword name="input_file" id="input_file" ref="eric5.UtilitiesPython2.pep8.html#input_file" />
       <keyword name="install (Module)" id="install (Module)" ref="eric5.install.html" />
       <keyword name="install-i18n (Module)" id="install-i18n (Module)" ref="eric5.install-i18n.html" />
       <keyword name="installEric" id="installEric" ref="eric5.install.html#installEric" />
@@ -12843,7 +12883,7 @@
       <keyword name="is_stream_binary_plist" id="is_stream_binary_plist" ref="eric5.Utilities.binplistlib.html#is_stream_binary_plist" />
       <keyword name="isatty" id="isatty" ref="eric5.DebugClients.Ruby.AsyncFile.html#isatty" />
       <keyword name="isinpath" id="isinpath" ref="eric5.Utilities.__init__.html#isinpath" />
-      <keyword name="iter_child_nodes" id="iter_child_nodes" ref="eric5.UtilitiesPython2.py2flakes.checker.html#iter_child_nodes" />
+      <keyword name="iter_child_nodes" id="iter_child_nodes" ref="eric5.Utilities.py2flakes.checker.html#iter_child_nodes" />
       <keyword name="joinext" id="joinext" ref="eric5.Utilities.__init__.html#joinext" />
       <keyword name="jsclbr (Module)" id="jsclbr (Module)" ref="eric5.Utilities.ClassBrowsers.jsclbr.html" />
       <keyword name="linesep" id="linesep" ref="eric5.Utilities.__init__.html#linesep" />
@@ -12880,36 +12920,30 @@
       <keyword name="makeAppInfo" id="makeAppInfo" ref="eric5.Globals.AppInfo.html#makeAppInfo" />
       <keyword name="make_thread_list" id="make_thread_list" ref="eric5.DebugClients.Ruby.Debuggee.html#make_thread_list" />
       <keyword name="maximum_line_length" id="maximum_line_length" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#maximum_line_length" />
-      <keyword name="maximum_line_length" id="maximum_line_length" ref="eric5.UtilitiesPython2.pep8.html#maximum_line_length" />
-      <keyword name="message" id="message" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#message" />
-      <keyword name="message" id="message" ref="eric5.UtilitiesPython2.pep8.html#message" />
       <keyword name="messageHandler" id="messageHandler" ref="eric5.E5Gui.E5ErrorMessage.html#messageHandler" />
       <keyword name="messageHandlerInstalled" id="messageHandlerInstalled" ref="eric5.E5Gui.E5ErrorMessage.html#messageHandlerInstalled" />
+      <keyword name="messages (Module)" id="messages (Module)" ref="eric5.Utilities.py2flakes.messages.html" />
       <keyword name="messages (Module)" id="messages (Module)" ref="eric5.Utilities.py3flakes.messages.html" />
-      <keyword name="messages (Module)" id="messages (Module)" ref="eric5.UtilitiesPython2.py2flakes.messages.html" />
       <keyword name="missing_newline" id="missing_newline" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#missing_newline" />
-      <keyword name="missing_newline" id="missing_newline" ref="eric5.UtilitiesPython2.pep8.html#missing_newline" />
       <keyword name="missing_whitespace" id="missing_whitespace" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#missing_whitespace" />
-      <keyword name="missing_whitespace" id="missing_whitespace" ref="eric5.UtilitiesPython2.pep8.html#missing_whitespace" />
       <keyword name="missing_whitespace_around_operator" id="missing_whitespace_around_operator" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#missing_whitespace_around_operator" />
-      <keyword name="missing_whitespace_around_operator" id="missing_whitespace_around_operator" ref="eric5.UtilitiesPython2.pep8.html#missing_whitespace_around_operator" />
       <keyword name="mute_string" id="mute_string" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#mute_string" />
-      <keyword name="mute_string" id="mute_string" ref="eric5.UtilitiesPython2.pep8.html#mute_string" />
       <keyword name="normabsjoinpath" id="normabsjoinpath" ref="eric5.Utilities.__init__.html#normabsjoinpath" />
       <keyword name="normabspath" id="normabspath" ref="eric5.Utilities.__init__.html#normabspath" />
-      <keyword name="normalizeCode" id="normalizeCode" ref="eric5.UtilitiesPython2.Tools.html#normalizeCode" />
+      <keyword name="normalizeCode" id="normalizeCode" ref="eric5.Utilities.SyntaxCheck.html#normalizeCode" />
       <keyword name="normcaseabspath" id="normcaseabspath" ref="eric5.Utilities.__init__.html#normcaseabspath" />
       <keyword name="normcasepath" id="normcasepath" ref="eric5.Utilities.__init__.html#normcasepath" />
       <keyword name="normjoinpath" id="normjoinpath" ref="eric5.Utilities.__init__.html#normjoinpath" />
       <keyword name="okToClearData" id="okToClearData" ref="eric5.E5Gui.E5MessageBox.html#okToClearData" />
+      <keyword name="open" id="open" ref="eric5.Utilities.compatibility_fixes.html#open" />
       <keyword name="parseEnvironmentString" id="parseEnvironmentString" ref="eric5.Utilities.__init__.html#parseEnvironmentString" />
       <keyword name="parseOptionString" id="parseOptionString" ref="eric5.Utilities.__init__.html#parseOptionString" />
       <keyword name="parseString" id="parseString" ref="eric5.Utilities.__init__.html#parseString" />
+      <keyword name="parse_udiff" id="parse_udiff" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#parse_udiff" />
       <keyword name="patch_modpython (Module)" id="patch_modpython (Module)" ref="eric5.patch_modpython.html" />
       <keyword name="pbkdf2" id="pbkdf2" ref="eric5.Utilities.crypto.py3PBKDF2.html#pbkdf2" />
       <keyword name="pendingWrite" id="pendingWrite" ref="eric5.DebugClients.Ruby.AsyncFile.html#pendingWrite" />
       <keyword name="pep8 (Module)" id="pep8 (Module)" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html" />
-      <keyword name="pep8 (Module)" id="pep8 (Module)" ref="eric5.UtilitiesPython2.pep8.html" />
       <keyword name="prepareProcess" id="prepareProcess" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgUtilities.html#prepareProcess" />
       <keyword name="prepareQtMacBundle" id="prepareQtMacBundle" ref="eric5.Utilities.__init__.html#prepareQtMacBundle" />
       <keyword name="prepareUninstall" id="prepareUninstall" ref="eric5.Plugins.PluginVcsMercurial.html#prepareUninstall" />
@@ -12917,16 +12951,10 @@
       <keyword name="prepareUninstall" id="prepareUninstall" ref="eric5.Plugins.PluginVcsSubversion.html#prepareUninstall" />
       <keyword name="previewPix" id="previewPix" ref="eric5.Plugins.PluginVmListspace.html#previewPix" />
       <keyword name="previewPix" id="previewPix" ref="eric5.Plugins.PluginVmTabview.html#previewPix" />
-      <keyword name="print_benchmark" id="print_benchmark" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#print_benchmark" />
-      <keyword name="print_benchmark" id="print_benchmark" ref="eric5.UtilitiesPython2.pep8.html#print_benchmark" />
-      <keyword name="print_statistics" id="print_statistics" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#print_statistics" />
-      <keyword name="print_statistics" id="print_statistics" ref="eric5.UtilitiesPython2.pep8.html#print_statistics" />
       <keyword name="printerr" id="printerr" ref="eric5.DebugClients.Python.DebugBase.html#printerr" />
       <keyword name="printerr" id="printerr" ref="eric5.DebugClients.Python3.DebugBase.html#printerr" />
       <keyword name="process_options" id="process_options" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#process_options" />
-      <keyword name="process_options" id="process_options" ref="eric5.UtilitiesPython2.pep8.html#process_options" />
       <keyword name="process_tokens" id="process_tokens" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#process_tokens" />
-      <keyword name="process_tokens" id="process_tokens" ref="eric5.UtilitiesPython2.Tabnanny.html#process_tokens" />
       <keyword name="proxyAuthenticationRequired" id="proxyAuthenticationRequired" ref="eric5.E5Network.E5NetworkProxyFactory.html#proxyAuthenticationRequired" />
       <keyword name="purge (Module)" id="purge (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.PurgeExtension.purge.html" />
       <keyword name="pwConvert" id="pwConvert" ref="eric5.Utilities.crypto.__init__.html#pwConvert" />
@@ -12936,8 +12964,7 @@
       <keyword name="pwEncrypt" id="pwEncrypt" ref="eric5.Utilities.crypto.__init__.html#pwEncrypt" />
       <keyword name="pwRecode" id="pwRecode" ref="eric5.Utilities.crypto.__init__.html#pwRecode" />
       <keyword name="pwReencrypt" id="pwReencrypt" ref="eric5.Utilities.crypto.__init__.html#pwReencrypt" />
-      <keyword name="py2compile" id="py2compile" ref="eric5.Utilities.__init__.html#py2compile" />
-      <keyword name="py2flakes (Package)" id="py2flakes (Package)" ref="index-eric5.UtilitiesPython2.py2flakes.html" />
+      <keyword name="py2flakes (Package)" id="py2flakes (Package)" ref="index-eric5.Utilities.py2flakes.html" />
       <keyword name="py3AES (Module)" id="py3AES (Module)" ref="eric5.Utilities.crypto.py3AES.html" />
       <keyword name="py3PBKDF2 (Module)" id="py3PBKDF2 (Module)" ref="eric5.Utilities.crypto.py3PBKDF2.html" />
       <keyword name="py3flakes (Package)" id="py3flakes (Package)" ref="index-eric5.Utilities.py3flakes.html" />
@@ -12946,20 +12973,15 @@
       <keyword name="pyName" id="pyName" ref="eric5.install.html#pyName" />
       <keyword name="pyclbr (Module)" id="pyclbr (Module)" ref="eric5.Utilities.ClassBrowsers.pyclbr.html" />
       <keyword name="python_3000_backticks" id="python_3000_backticks" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#python_3000_backticks" />
-      <keyword name="python_3000_backticks" id="python_3000_backticks" ref="eric5.UtilitiesPython2.pep8.html#python_3000_backticks" />
       <keyword name="python_3000_has_key" id="python_3000_has_key" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#python_3000_has_key" />
-      <keyword name="python_3000_has_key" id="python_3000_has_key" ref="eric5.UtilitiesPython2.pep8.html#python_3000_has_key" />
       <keyword name="python_3000_not_equal" id="python_3000_not_equal" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#python_3000_not_equal" />
-      <keyword name="python_3000_not_equal" id="python_3000_not_equal" ref="eric5.UtilitiesPython2.pep8.html#python_3000_not_equal" />
       <keyword name="python_3000_raise_comma" id="python_3000_raise_comma" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#python_3000_raise_comma" />
-      <keyword name="python_3000_raise_comma" id="python_3000_raise_comma" ref="eric5.UtilitiesPython2.pep8.html#python_3000_raise_comma" />
       <keyword name="qtHandler" id="qtHandler" ref="eric5.E5Gui.E5ErrorMessage.html#qtHandler" />
       <keyword name="question" id="question" ref="eric5.E5Gui.E5MessageBox.html#question" />
       <keyword name="queues (Module)" id="queues (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.html" />
       <keyword name="rbclbr (Module)" id="rbclbr (Module)" ref="eric5.Utilities.ClassBrowsers.rbclbr.html" />
       <keyword name="read" id="read" ref="eric5.DebugClients.Ruby.AsyncFile.html#read" />
-      <keyword name="readEncodedFile" id="readEncodedFile" ref="eric5.Utilities.__init__.html#readEncodedFile" />
-      <keyword name="readEncodedFile" id="readEncodedFile" ref="eric5.UtilitiesPython2.Tools.html#readEncodedFile" />
+      <keyword name="readEncodedFile" id="readEncodedFile" ref="eric5.Utilities.SyntaxCheck.html#readEncodedFile" />
       <keyword name="readEncodedFileWithHash" id="readEncodedFileWithHash" ref="eric5.Utilities.__init__.html#readEncodedFileWithHash" />
       <keyword name="readModule" id="readModule" ref="eric5.Utilities.ModuleParser.html#readModule" />
       <keyword name="readPlist" id="readPlist" ref="eric5.Utilities.binplistlib.html#readPlist" />
@@ -12967,12 +12989,11 @@
       <keyword name="readShortcuts" id="readShortcuts" ref="eric5.Preferences.Shortcuts.html#readShortcuts" />
       <keyword name="readStringFromStream" id="readStringFromStream" ref="eric5.Utilities.__init__.html#readStringFromStream" />
       <keyword name="readToolGroups" id="readToolGroups" ref="eric5.Preferences.__init__.html#readToolGroups" />
+      <keyword name="read_config" id="read_config" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#read_config" />
       <keyword name="readline" id="readline" ref="eric5.DebugClients.Ruby.AsyncFile.html#readline" />
       <keyword name="readlines" id="readlines" ref="eric5.DebugClients.Ruby.AsyncFile.html#readlines" />
       <keyword name="readlines" id="readlines" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#readlines" />
-      <keyword name="readlines" id="readlines" ref="eric5.UtilitiesPython2.pep8.html#readlines" />
       <keyword name="readlines_1" id="readlines_1" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#readlines_1" />
-      <keyword name="readlines_1" id="readlines_1" ref="eric5.UtilitiesPython2.pep8.html#readlines_1" />
       <keyword name="readmodule" id="readmodule" ref="eric5.Utilities.ClassBrowsers.__init__.html#readmodule" />
       <keyword name="readmodule_ex" id="readmodule_ex" ref="eric5.Utilities.ClassBrowsers.idlclbr.html#readmodule_ex" />
       <keyword name="readmodule_ex" id="readmodule_ex" ref="eric5.Utilities.ClassBrowsers.jsclbr.html#readmodule_ex" />
@@ -12980,6 +13001,7 @@
       <keyword name="readmodule_ex" id="readmodule_ex" ref="eric5.Utilities.ClassBrowsers.rbclbr.html#readmodule_ex" />
       <keyword name="rebase (Module)" id="rebase (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.rebase.html" />
       <keyword name="registerLexer" id="registerLexer" ref="eric5.QScintilla.Lexers.__init__.html#registerLexer" />
+      <keyword name="register_check" id="register_check" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#register_check" />
       <keyword name="rehashPassword" id="rehashPassword" ref="eric5.Utilities.crypto.py3PBKDF2.html#rehashPassword" />
       <keyword name="relpath" id="relpath" ref="eric5.Utilities.__init__.html#relpath" />
       <keyword name="removeMarkers" id="removeMarkers" ref="eric5.UI.CompareDialog.html#removeMarkers" />
@@ -12988,15 +13010,12 @@
       <keyword name="resetLayout" id="resetLayout" ref="eric5.Preferences.__init__.html#resetLayout" />
       <keyword name="resetParsedModule" id="resetParsedModule" ref="eric5.Utilities.ModuleParser.html#resetParsedModule" />
       <keyword name="resetParsedModules" id="resetParsedModules" ref="eric5.Utilities.ModuleParser.html#resetParsedModules" />
-      <keyword name="reset_counters" id="reset_counters" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#reset_counters" />
-      <keyword name="reset_counters" id="reset_counters" ref="eric5.UtilitiesPython2.pep8.html#reset_counters" />
       <keyword name="retryAbort" id="retryAbort" ref="eric5.E5Gui.E5MessageBox.html#retryAbort" />
-      <keyword name="run_tests" id="run_tests" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#run_tests" />
-      <keyword name="run_tests" id="run_tests" ref="eric5.UtilitiesPython2.pep8.html#run_tests" />
       <keyword name="runcall" id="runcall" ref="eric5.DebugClients.Python.eric5dbgstub.html#runcall" />
       <keyword name="runcall" id="runcall" ref="eric5.DebugClients.Python3.eric5dbgstub.html#runcall" />
       <keyword name="rxExecute" id="rxExecute" ref="eric5.Plugins.WizardPlugins.QRegularExpressionWizard.QRegularExpressionWizardServer.html#rxExecute" />
       <keyword name="rxValidate" id="rxValidate" ref="eric5.Plugins.WizardPlugins.QRegularExpressionWizard.QRegularExpressionWizardServer.html#rxValidate" />
+      <keyword name="samefilepath" id="samefilepath" ref="eric5.Utilities.__init__.html#samefilepath" />
       <keyword name="samepath" id="samepath" ref="eric5.Utilities.__init__.html#samepath" />
       <keyword name="saveResetLayout" id="saveResetLayout" ref="eric5.Preferences.__init__.html#saveResetLayout" />
       <keyword name="saveShortcuts" id="saveShortcuts" ref="eric5.Preferences.Shortcuts.html#saveShortcuts" />
@@ -13004,8 +13023,6 @@
       <keyword name="sbsdiff" id="sbsdiff" ref="eric5.UI.CompareDialog.html#sbsdiff" />
       <keyword name="schemeFromProxyType" id="schemeFromProxyType" ref="eric5.E5Network.E5NetworkProxyFactory.html#schemeFromProxyType" />
       <keyword name="seek" id="seek" ref="eric5.DebugClients.Ruby.AsyncFile.html#seek" />
-      <keyword name="selftest" id="selftest" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#selftest" />
-      <keyword name="selftest" id="selftest" ref="eric5.UtilitiesPython2.pep8.html#selftest" />
       <keyword name="setActions" id="setActions" ref="eric5.Preferences.Shortcuts.html#setActions" />
       <keyword name="setConfigDir" id="setConfigDir" ref="eric5.Globals.__init__.html#setConfigDir" />
       <keyword name="setCooperation" id="setCooperation" ref="eric5.Preferences.__init__.html#setCooperation" />
@@ -13059,15 +13076,14 @@
       <keyword name="splitPath" id="splitPath" ref="eric5.Utilities.__init__.html#splitPath" />
       <keyword name="startDebugger" id="startDebugger" ref="eric5.DebugClients.Python.eric5dbgstub.html#startDebugger" />
       <keyword name="startDebugger" id="startDebugger" ref="eric5.DebugClients.Python3.eric5dbgstub.html#startDebugger" />
+      <keyword name="stdin_get_value" id="stdin_get_value" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#stdin_get_value" />
       <keyword name="strip_PKCS7_padding" id="strip_PKCS7_padding" ref="eric5.Utilities.crypto.py3AES.html#strip_PKCS7_padding" />
       <keyword name="subversion (Module)" id="subversion (Module)" ref="eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html" />
       <keyword name="subversion (Module)" id="subversion (Module)" ref="eric5.Plugins.VcsPlugins.vcsSubversion.subversion.html" />
       <keyword name="summarize" id="summarize" ref="eric5.DataViews.CodeMetrics.html#summarize" />
       <keyword name="syncPreferences" id="syncPreferences" ref="eric5.Preferences.__init__.html#syncPreferences" />
       <keyword name="tabs_obsolete" id="tabs_obsolete" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#tabs_obsolete" />
-      <keyword name="tabs_obsolete" id="tabs_obsolete" ref="eric5.UtilitiesPython2.pep8.html#tabs_obsolete" />
       <keyword name="tabs_or_spaces" id="tabs_or_spaces" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#tabs_or_spaces" />
-      <keyword name="tabs_or_spaces" id="tabs_or_spaces" ref="eric5.UtilitiesPython2.pep8.html#tabs_or_spaces" />
       <keyword name="tell" id="tell" ref="eric5.DebugClients.Ruby.AsyncFile.html#tell" />
       <keyword name="thread_list" id="thread_list" ref="eric5.DebugClients.Ruby.Debuggee.html#thread_list" />
       <keyword name="thread_list_all" id="thread_list_all" ref="eric5.DebugClients.Ruby.Debuggee.html#thread_list_all" />
@@ -13081,9 +13097,7 @@
       <keyword name="toSecondLevelDomain" id="toSecondLevelDomain" ref="eric5.Helpviewer.AdBlock.AdBlockRule.html#toSecondLevelDomain" />
       <keyword name="traceRuby?" id="traceRuby?" ref="eric5.DebugClients.Ruby.Debuggee.html#traceRuby?" />
       <keyword name="trailing_blank_lines" id="trailing_blank_lines" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#trailing_blank_lines" />
-      <keyword name="trailing_blank_lines" id="trailing_blank_lines" ref="eric5.UtilitiesPython2.pep8.html#trailing_blank_lines" />
       <keyword name="trailing_whitespace" id="trailing_whitespace" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#trailing_whitespace" />
-      <keyword name="trailing_whitespace" id="trailing_whitespace" ref="eric5.UtilitiesPython2.pep8.html#trailing_whitespace" />
       <keyword name="transplant (Module)" id="transplant (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.transplant.html" />
       <keyword name="uiStartUp" id="uiStartUp" ref="eric5.eric5.html#uiStartUp" />
       <keyword name="uic (Module)" id="uic (Module)" ref="eric5.Utilities.uic.html" />
@@ -13111,15 +13125,11 @@
       <keyword name="version" id="version" ref="eric5.eric5_doc.html#version" />
       <keyword name="warning" id="warning" ref="eric5.E5Gui.E5MessageBox.html#warning" />
       <keyword name="whitespace_around_comma" id="whitespace_around_comma" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#whitespace_around_comma" />
-      <keyword name="whitespace_around_comma" id="whitespace_around_comma" ref="eric5.UtilitiesPython2.pep8.html#whitespace_around_comma" />
+      <keyword name="whitespace_around_keywords" id="whitespace_around_keywords" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#whitespace_around_keywords" />
       <keyword name="whitespace_around_named_parameter_equals" id="whitespace_around_named_parameter_equals" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#whitespace_around_named_parameter_equals" />
-      <keyword name="whitespace_around_named_parameter_equals" id="whitespace_around_named_parameter_equals" ref="eric5.UtilitiesPython2.pep8.html#whitespace_around_named_parameter_equals" />
       <keyword name="whitespace_around_operator" id="whitespace_around_operator" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#whitespace_around_operator" />
-      <keyword name="whitespace_around_operator" id="whitespace_around_operator" ref="eric5.UtilitiesPython2.pep8.html#whitespace_around_operator" />
       <keyword name="whitespace_before_inline_comment" id="whitespace_before_inline_comment" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#whitespace_before_inline_comment" />
-      <keyword name="whitespace_before_inline_comment" id="whitespace_before_inline_comment" ref="eric5.UtilitiesPython2.pep8.html#whitespace_before_inline_comment" />
       <keyword name="whitespace_before_parameters" id="whitespace_before_parameters" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#whitespace_before_parameters" />
-      <keyword name="whitespace_before_parameters" id="whitespace_before_parameters" ref="eric5.UtilitiesPython2.pep8.html#whitespace_before_parameters" />
       <keyword name="wildcardMatch" id="wildcardMatch" ref="eric5.Helpviewer.GreaseMonkey.GreaseMonkeyUrlMatcher.html#wildcardMatch" />
       <keyword name="win32_GetUserName" id="win32_GetUserName" ref="eric5.Utilities.__init__.html#win32_GetUserName" />
       <keyword name="win32_Kill" id="win32_Kill" ref="eric5.Utilities.__init__.html#win32_Kill" />
@@ -13461,7 +13471,6 @@
       <file>eric5.IconEditor.IconEditorPalette.html</file>
       <file>eric5.IconEditor.IconEditorWindow.html</file>
       <file>eric5.IconEditor.IconSizeDialog.html</file>
-      <file>eric5.IconEditor.cursors.cursors_rc.html</file>
       <file>eric5.MultiProject.AddProjectDialog.html</file>
       <file>eric5.MultiProject.MultiProject.html</file>
       <file>eric5.MultiProject.MultiProjectBrowser.html</file>
@@ -13882,23 +13891,19 @@
       <file>eric5.Utilities.FtpUtilities.html</file>
       <file>eric5.Utilities.ModuleParser.html</file>
       <file>eric5.Utilities.PasswordChecker.html</file>
+      <file>eric5.Utilities.PySideImporter.html</file>
+      <file>eric5.Utilities.SyntaxCheck.html</file>
       <file>eric5.Utilities.__init__.html</file>
       <file>eric5.Utilities.binplistlib.html</file>
+      <file>eric5.Utilities.compatibility_fixes.html</file>
       <file>eric5.Utilities.crypto.__init__.html</file>
       <file>eric5.Utilities.crypto.py3AES.html</file>
       <file>eric5.Utilities.crypto.py3PBKDF2.html</file>
+      <file>eric5.Utilities.py2flakes.checker.html</file>
+      <file>eric5.Utilities.py2flakes.messages.html</file>
       <file>eric5.Utilities.py3flakes.checker.html</file>
       <file>eric5.Utilities.py3flakes.messages.html</file>
       <file>eric5.Utilities.uic.html</file>
-      <file>eric5.UtilitiesPython2.Pep8Checker.html</file>
-      <file>eric5.UtilitiesPython2.Py2SyntaxChecker.html</file>
-      <file>eric5.UtilitiesPython2.PySideImporter.html</file>
-      <file>eric5.UtilitiesPython2.Tabnanny.html</file>
-      <file>eric5.UtilitiesPython2.TabnannyChecker.html</file>
-      <file>eric5.UtilitiesPython2.Tools.html</file>
-      <file>eric5.UtilitiesPython2.pep8.html</file>
-      <file>eric5.UtilitiesPython2.py2flakes.checker.html</file>
-      <file>eric5.UtilitiesPython2.py2flakes.messages.html</file>
       <file>eric5.VCS.CommandOptionsDialog.html</file>
       <file>eric5.VCS.ProjectBrowserHelper.html</file>
       <file>eric5.VCS.ProjectHelper.html</file>
@@ -14034,9 +14039,8 @@
       <file>index-eric5.Utilities.ClassBrowsers.html</file>
       <file>index-eric5.Utilities.crypto.html</file>
       <file>index-eric5.Utilities.html</file>
+      <file>index-eric5.Utilities.py2flakes.html</file>
       <file>index-eric5.Utilities.py3flakes.html</file>
-      <file>index-eric5.UtilitiesPython2.html</file>
-      <file>index-eric5.UtilitiesPython2.py2flakes.html</file>
       <file>index-eric5.VCS.html</file>
       <file>index-eric5.ViewManager.html</file>
       <file>index-eric5.html</file>
--- a/Documentation/Source/eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.html	Mon Aug 12 22:21:53 2013 +0200
+++ b/Documentation/Source/eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.html	Sun Sep 08 19:04:07 2013 +0200
@@ -30,8 +30,8 @@
 <h3>Classes</h3>
 <table>
 <tr>
-<td><a href="#Pep8Checker">Pep8Checker</a></td>
-<td>Class implementing the PEP 8 checker.</td>
+<td><a href="#Pep8Py2Checker">Pep8Py2Checker</a></td>
+<td>Class implementing the PEP 8 checker interface for Python 2.</td>
 </tr>
 </table>
 <h3>Functions</h3>
@@ -39,13 +39,13 @@
 <tr><td>None</td></tr>
 </table>
 <hr /><hr />
-<a NAME="Pep8Checker" ID="Pep8Checker"></a>
-<h2>Pep8Checker</h2>
+<a NAME="Pep8Py2Checker" ID="Pep8Py2Checker"></a>
+<h2>Pep8Py2Checker</h2>
 <p>
-    Class implementing the PEP 8 checker.
+    Class implementing the PEP 8 checker interface for Python 2.
 </p>
 <h3>Derived from</h3>
-pep8.Checker
+object
 <h3>Class Attributes</h3>
 <table>
 <tr><td>None</td></tr>
@@ -57,23 +57,17 @@
 <h3>Methods</h3>
 <table>
 <tr>
-<td><a href="#Pep8Checker.__init__">Pep8Checker</a></td>
+<td><a href="#Pep8Py2Checker.__init__">Pep8Py2Checker</a></td>
 <td>Constructor</td>
-</tr><tr>
-<td><a href="#Pep8Checker.__ignore_code">__ignore_code</a></td>
-<td>Private method to check, if the message for the given code should be ignored.</td>
-</tr><tr>
-<td><a href="#Pep8Checker.report_error_args">report_error_args</a></td>
-<td>Public method to collect the error messages.</td>
 </tr>
 </table>
 <h3>Static Methods</h3>
 <table>
 <tr><td>None</td></tr>
 </table>
-<a NAME="Pep8Checker.__init__" ID="Pep8Checker.__init__"></a>
-<h4>Pep8Checker (Constructor)</h4>
-<b>Pep8Checker</b>(<i>filename, lines, repeat=False, select="", ignore=""</i>)
+<a NAME="Pep8Py2Checker.__init__" ID="Pep8Py2Checker.__init__"></a>
+<h4>Pep8Py2Checker (Constructor)</h4>
+<b>Pep8Py2Checker</b>(<i>filename, lines, repeat=False, select="", ignore="", max_line_length=79, hang_closing=False</i>)
 <p>
         Constructor
 </p><dl>
@@ -82,7 +76,7 @@
 name of the file to check (string)
 </dd><dt><i>lines</i></dt>
 <dd>
-source of the file (list of strings)
+source of the file (list of strings) (ignored)
 </dd><dt><i>repeat=</i></dt>
 <dd>
 flag indicating to repeat message categories (boolean)
@@ -94,50 +88,12 @@
 <dd>
 list of message IDs to ignore
             (comma separated string)
-</dd>
-</dl><a NAME="Pep8Checker.__ignore_code" ID="Pep8Checker.__ignore_code"></a>
-<h4>Pep8Checker.__ignore_code</h4>
-<b>__ignore_code</b>(<i>code</i>)
-<p>
-        Private method to check, if the message for the given code should
-        be ignored.
-</p><p>
-        If codes are selected and the code has a selected prefix and does not
-        have an ignored prefix, it is not ignored. If codes are selected and
-        the code does not have a selected prefix, it is ignored. If no codes
-        are selected, the code is ignored, if it has a prefix, that is
-        contained in the ignored codes.
-</p><dl>
-<dt><i>code</i></dt>
-<dd>
-code to be checked (string)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
+</dd><dt><i>max_line_length=</i></dt>
 <dd>
-flag indicating, that the code should be ignored (boolean)
-</dd>
-</dl><a NAME="Pep8Checker.report_error_args" ID="Pep8Checker.report_error_args"></a>
-<h4>Pep8Checker.report_error_args</h4>
-<b>report_error_args</b>(<i>line_number, offset, code, check, *args</i>)
-<p>
-        Public method to collect the error messages.
-</p><dl>
-<dt><i>line_number</i></dt>
+maximum allowed line length (integer)
+</dd><dt><i>hang_closing=</i></dt>
 <dd>
-line number of the issue (integer)
-</dd><dt><i>offset</i></dt>
-<dd>
-position within line of the issue (integer)
-</dd><dt><i>code</i></dt>
-<dd>
-message code (string)
-</dd><dt><i>check</i></dt>
-<dd>
-reference to the checker function (function)
-</dd><dt><i>args</i></dt>
-<dd>
-arguments for the message (list)
+flag indicating to allow hanging closing brackets (boolean)
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html	Mon Aug 12 22:21:53 2013 +0200
+++ b/Documentation/Source/eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.html	Sun Sep 08 19:04:07 2013 +0200
@@ -32,6 +32,9 @@
 <tr>
 <td><a href="#Pep8Dialog">Pep8Dialog</a></td>
 <td>Class implementing a dialog to show the results of the PEP 8 check.</td>
+</tr><tr>
+<td><a href="#Pep8Report">Pep8Report</a></td>
+<td>Class implementing a special report to be used with our dialog.</td>
 </tr>
 </table>
 <h3>Functions</h3>
@@ -48,7 +51,7 @@
 QDialog, Ui_Pep8Dialog
 <h3>Class Attributes</h3>
 <table>
-<tr><td>filenameRole</td></tr><tr><td>lineRole</td></tr><tr><td>messageRole</td></tr><tr><td>positionRole</td></tr><tr><td>settingsKey</td></tr>
+<tr><td>codeRole</td></tr><tr><td>filenameRole</td></tr><tr><td>fixableRole</td></tr><tr><td>lineRole</td></tr><tr><td>messageRole</td></tr><tr><td>positionRole</td></tr>
 </table>
 <h3>Class Methods</h3>
 <table>
@@ -63,21 +66,33 @@
 <td><a href="#Pep8Dialog.__clearErrors">__clearErrors</a></td>
 <td>Private method to clear all warning markers of open editors.</td>
 </tr><tr>
-<td><a href="#Pep8Dialog.__createErrorItem">__createErrorItem</a></td>
-<td>Private method to create an entry in the result list.</td>
-</tr><tr>
 <td><a href="#Pep8Dialog.__createResultItem">__createResultItem</a></td>
 <td>Private method to create an entry in the result list.</td>
 </tr><tr>
 <td><a href="#Pep8Dialog.__finish">__finish</a></td>
 <td>Private slot called when the PEP 8 check finished or the user pressed the cancel button.</td>
 </tr><tr>
+<td><a href="#Pep8Dialog.__getSelectedFixableItems">__getSelectedFixableItems</a></td>
+<td>Private method to extract all selected items for fixable issues.</td>
+</tr><tr>
+<td><a href="#Pep8Dialog.__itemFixable">__itemFixable</a></td>
+<td>Private method to check, if an item has a fixable issue.</td>
+</tr><tr>
+<td><a href="#Pep8Dialog.__modifyFixedResultItem">__modifyFixedResultItem</a></td>
+<td>Private method to modify a result list entry to show its positive fixed state.</td>
+</tr><tr>
 <td><a href="#Pep8Dialog.__resetStatistics">__resetStatistics</a></td>
 <td>Private slot to reset the statistics data.</td>
 </tr><tr>
 <td><a href="#Pep8Dialog.__resort">__resort</a></td>
 <td>Private method to resort the tree.</td>
 </tr><tr>
+<td><a href="#Pep8Dialog.__selectCodes">__selectCodes</a></td>
+<td>Private method to select message codes via a selection dialog.</td>
+</tr><tr>
+<td><a href="#Pep8Dialog.__updateFixerStatistics">__updateFixerStatistics</a></td>
+<td>Private method to update the collected fixer related statistics.</td>
+</tr><tr>
 <td><a href="#Pep8Dialog.__updateStatistics">__updateStatistics</a></td>
 <td>Private method to update the collected statistics.</td>
 </tr><tr>
@@ -87,6 +102,9 @@
 <td><a href="#Pep8Dialog.on_excludeMessagesSelectButton_clicked">on_excludeMessagesSelectButton_clicked</a></td>
 <td>Private slot to select the message codes to be excluded via a selection dialog.</td>
 </tr><tr>
+<td><a href="#Pep8Dialog.on_fixButton_clicked">on_fixButton_clicked</a></td>
+<td>Private slot to fix selected issues.</td>
+</tr><tr>
 <td><a href="#Pep8Dialog.on_fixIssuesSelectButton_clicked">on_fixIssuesSelectButton_clicked</a></td>
 <td>Private slot to select the issue codes to be fixed via a selection dialog.</td>
 </tr><tr>
@@ -96,9 +114,18 @@
 <td><a href="#Pep8Dialog.on_loadDefaultButton_clicked">on_loadDefaultButton_clicked</a></td>
 <td>Private slot to load the default configuration values.</td>
 </tr><tr>
+<td><a href="#Pep8Dialog.on_noFixIssuesSelectButton_clicked">on_noFixIssuesSelectButton_clicked</a></td>
+<td>Private slot to select the issue codes not to be fixed via a selection dialog.</td>
+</tr><tr>
+<td><a href="#Pep8Dialog.on_resetDefaultButton_clicked">on_resetDefaultButton_clicked</a></td>
+<td>Slot documentation goes here.</td>
+</tr><tr>
 <td><a href="#Pep8Dialog.on_resultList_itemActivated">on_resultList_itemActivated</a></td>
 <td>Private slot to handle the activation of an item.</td>
 </tr><tr>
+<td><a href="#Pep8Dialog.on_resultList_itemSelectionChanged">on_resultList_itemSelectionChanged</a></td>
+<td>Private slot to change the dialog state depending on the selection.</td>
+</tr><tr>
 <td><a href="#Pep8Dialog.on_showButton_clicked">on_showButton_clicked</a></td>
 <td>Private slot to handle the "Show" button press.</td>
 </tr><tr>
@@ -137,29 +164,7 @@
 <b>__clearErrors</b>(<i></i>)
 <p>
         Private method to clear all warning markers of open editors.
-</p><a NAME="Pep8Dialog.__createErrorItem" ID="Pep8Dialog.__createErrorItem"></a>
-<h4>Pep8Dialog.__createErrorItem</h4>
-<b>__createErrorItem</b>(<i>file, line, pos, message</i>)
-<p>
-        Private method to create an entry in the result list.
-</p><dl>
-<dt><i>file</i></dt>
-<dd>
-file name of the file (string)
-</dd><dt><i>line</i></dt>
-<dd>
-line number of issue (integer or string)
-</dd><dt><i>pos</i></dt>
-<dd>
-character position of issue (integer or string)
-</dd><dt><i>message</i></dt>
-<dd>
-message text (string)
-</dd><dt><i>fixed</i></dt>
-<dd>
-flag indicating a fixed issue (boolean)
-</dd>
-</dl><a NAME="Pep8Dialog.__createResultItem" ID="Pep8Dialog.__createResultItem"></a>
+</p><a NAME="Pep8Dialog.__createResultItem" ID="Pep8Dialog.__createResultItem"></a>
 <h4>Pep8Dialog.__createResultItem</h4>
 <b>__createResultItem</b>(<i>file, line, pos, message, fixed</i>)
 <p>
@@ -187,7 +192,46 @@
 <p>
         Private slot called when the PEP 8 check finished or the user
         pressed the cancel button.
-</p><a NAME="Pep8Dialog.__resetStatistics" ID="Pep8Dialog.__resetStatistics"></a>
+</p><a NAME="Pep8Dialog.__getSelectedFixableItems" ID="Pep8Dialog.__getSelectedFixableItems"></a>
+<h4>Pep8Dialog.__getSelectedFixableItems</h4>
+<b>__getSelectedFixableItems</b>(<i></i>)
+<p>
+        Private method to extract all selected items for fixable issues.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+selected items for fixable issues (list of QTreeWidgetItem)
+</dd>
+</dl><a NAME="Pep8Dialog.__itemFixable" ID="Pep8Dialog.__itemFixable"></a>
+<h4>Pep8Dialog.__itemFixable</h4>
+<b>__itemFixable</b>(<i>itm</i>)
+<p>
+        Private method to check, if an item has a fixable issue.
+</p><dl>
+<dt><i>itm</i></dt>
+<dd>
+item to be checked (QTreeWidgetItem)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating a fixable issue (boolean)
+</dd>
+</dl><a NAME="Pep8Dialog.__modifyFixedResultItem" ID="Pep8Dialog.__modifyFixedResultItem"></a>
+<h4>Pep8Dialog.__modifyFixedResultItem</h4>
+<b>__modifyFixedResultItem</b>(<i>itm, text</i>)
+<p>
+        Private method to modify a result list entry to show its
+        positive fixed state.
+</p><dl>
+<dt><i>itm</i></dt>
+<dd>
+reference to the item to modify (QTreeWidgetItem)
+</dd><dt><i>text</i></dt>
+<dd>
+text to be appended (string)
+</dd>
+</dl><a NAME="Pep8Dialog.__resetStatistics" ID="Pep8Dialog.__resetStatistics"></a>
 <h4>Pep8Dialog.__resetStatistics</h4>
 <b>__resetStatistics</b>(<i></i>)
 <p>
@@ -197,7 +241,31 @@
 <b>__resort</b>(<i></i>)
 <p>
         Private method to resort the tree.
-</p><a NAME="Pep8Dialog.__updateStatistics" ID="Pep8Dialog.__updateStatistics"></a>
+</p><a NAME="Pep8Dialog.__selectCodes" ID="Pep8Dialog.__selectCodes"></a>
+<h4>Pep8Dialog.__selectCodes</h4>
+<b>__selectCodes</b>(<i>edit, showFixCodes</i>)
+<p>
+        Private method to select message codes via a selection dialog.
+</p><dl>
+<dt><i>edit</i></dt>
+<dd>
+reference of the line edit to be populated (QLineEdit)
+</dd><dt><i>showFixCodes</i></dt>
+<dd>
+flag indicating to show a list of fixable
+            issues (boolean)
+</dd>
+</dl><a NAME="Pep8Dialog.__updateFixerStatistics" ID="Pep8Dialog.__updateFixerStatistics"></a>
+<h4>Pep8Dialog.__updateFixerStatistics</h4>
+<b>__updateFixerStatistics</b>(<i>fixer</i>)
+<p>
+        Private method to update the collected fixer related statistics.
+</p><dl>
+<dt><i>fixer</i></dt>
+<dd>
+reference to the PEP 8 fixer (Pep8Fixer)
+</dd>
+</dl><a NAME="Pep8Dialog.__updateStatistics" ID="Pep8Dialog.__updateStatistics"></a>
 <h4>Pep8Dialog.__updateStatistics</h4>
 <b>__updateStatistics</b>(<i>statistics, fixer</i>)
 <p>
@@ -227,6 +295,11 @@
 <p>
         Private slot to select the message codes to be excluded via a
         selection dialog.
+</p><a NAME="Pep8Dialog.on_fixButton_clicked" ID="Pep8Dialog.on_fixButton_clicked"></a>
+<h4>Pep8Dialog.on_fixButton_clicked</h4>
+<b>on_fixButton_clicked</b>(<i></i>)
+<p>
+        Private slot to fix selected issues.
 </p><a NAME="Pep8Dialog.on_fixIssuesSelectButton_clicked" ID="Pep8Dialog.on_fixIssuesSelectButton_clicked"></a>
 <h4>Pep8Dialog.on_fixIssuesSelectButton_clicked</h4>
 <b>on_fixIssuesSelectButton_clicked</b>(<i></i>)
@@ -244,6 +317,17 @@
 <b>on_loadDefaultButton_clicked</b>(<i></i>)
 <p>
         Private slot to load the default configuration values.
+</p><a NAME="Pep8Dialog.on_noFixIssuesSelectButton_clicked" ID="Pep8Dialog.on_noFixIssuesSelectButton_clicked"></a>
+<h4>Pep8Dialog.on_noFixIssuesSelectButton_clicked</h4>
+<b>on_noFixIssuesSelectButton_clicked</b>(<i></i>)
+<p>
+        Private slot to select the issue codes not to be fixed via a
+        selection dialog.
+</p><a NAME="Pep8Dialog.on_resetDefaultButton_clicked" ID="Pep8Dialog.on_resetDefaultButton_clicked"></a>
+<h4>Pep8Dialog.on_resetDefaultButton_clicked</h4>
+<b>on_resetDefaultButton_clicked</b>(<i></i>)
+<p>
+        Slot documentation goes here.
 </p><a NAME="Pep8Dialog.on_resultList_itemActivated" ID="Pep8Dialog.on_resultList_itemActivated"></a>
 <h4>Pep8Dialog.on_resultList_itemActivated</h4>
 <b>on_resultList_itemActivated</b>(<i>item, column</i>)
@@ -257,7 +341,12 @@
 <dd>
 column the item was activated in (integer)
 </dd>
-</dl><a NAME="Pep8Dialog.on_showButton_clicked" ID="Pep8Dialog.on_showButton_clicked"></a>
+</dl><a NAME="Pep8Dialog.on_resultList_itemSelectionChanged" ID="Pep8Dialog.on_resultList_itemSelectionChanged"></a>
+<h4>Pep8Dialog.on_resultList_itemSelectionChanged</h4>
+<b>on_resultList_itemSelectionChanged</b>(<i></i>)
+<p>
+        Private slot to change the dialog state depending on the selection.
+</p><a NAME="Pep8Dialog.on_showButton_clicked" ID="Pep8Dialog.on_showButton_clicked"></a>
 <h4>Pep8Dialog.on_showButton_clicked</h4>
 <b>on_showButton_clicked</b>(<i></i>)
 <p>
@@ -312,5 +401,69 @@
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="Pep8Report" ID="Pep8Report"></a>
+<h2>Pep8Report</h2>
+<p>
+    Class implementing a special report to be used with our dialog.
+</p>
+<h3>Derived from</h3>
+pep8.BaseReport
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#Pep8Report.__init__">Pep8Report</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#Pep8Report.error_args">error_args</a></td>
+<td>Public method to collect the error messages.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="Pep8Report.__init__" ID="Pep8Report.__init__"></a>
+<h4>Pep8Report (Constructor)</h4>
+<b>Pep8Report</b>(<i>options</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>options</i></dt>
+<dd>
+options for the report (optparse.Values)
+</dd>
+</dl><a NAME="Pep8Report.error_args" ID="Pep8Report.error_args"></a>
+<h4>Pep8Report.error_args</h4>
+<b>error_args</b>(<i>line_number, offset, code, check, *args</i>)
+<p>
+        Public method to collect the error messages.
+</p><dl>
+<dt><i>line_number</i></dt>
+<dd>
+line number of the issue (integer)
+</dd><dt><i>offset</i></dt>
+<dd>
+position within line of the issue (integer)
+</dd><dt><i>code</i></dt>
+<dd>
+message code (string)
+</dd><dt><i>check</i></dt>
+<dd>
+reference to the checker function (function)
+</dd><dt><i>args</i></dt>
+<dd>
+arguments for the message (list)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
\ No newline at end of file
--- a/Documentation/Source/eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html	Mon Aug 12 22:21:53 2013 +0200
+++ b/Documentation/Source/eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html	Sun Sep 08 19:04:07 2013 +0200
@@ -32,6 +32,15 @@
 <tr>
 <td><a href="#Pep8Fixer">Pep8Fixer</a></td>
 <td>Class implementing a fixer for certain PEP 8 issues.</td>
+</tr><tr>
+<td><a href="#Pep8IndentationWrapper">Pep8IndentationWrapper</a></td>
+<td>Class used by fixers dealing with indentation.</td>
+</tr><tr>
+<td><a href="#Pep8LineShortener">Pep8LineShortener</a></td>
+<td>Class used to shorten lines to a given maximum of characters.</td>
+</tr><tr>
+<td><a href="#Pep8Reindenter">Pep8Reindenter</a></td>
+<td>Class to reindent badly-indented code to uniformly use four-space indentation.</td>
 </tr>
 </table>
 <h3>Functions</h3>
@@ -60,66 +69,120 @@
 <td><a href="#Pep8Fixer.__init__">Pep8Fixer</a></td>
 <td>Constructor</td>
 </tr><tr>
+<td><a href="#Pep8Fixer.__codeMatch">__codeMatch</a></td>
+<td>Private method to check, if the code should be fixed.</td>
+</tr><tr>
 <td><a href="#Pep8Fixer.__finalize">__finalize</a></td>
 <td>Private method to apply all deferred fixes.</td>
 </tr><tr>
-<td><a href="#Pep8Fixer.__fixBlankLinesAfterDecorator">__fixBlankLinesAfterDecorator</a></td>
-<td>Private method to fix superfluous blank lines after a function decorator.</td>
+<td><a href="#Pep8Fixer.__findLogical">__findLogical</a></td>
+<td>Private method to extract the index of all the starts and ends of lines.</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__fixE101">__fixE101</a></td>
+<td>Private method to fix obsolete tab usage and indentation errors (E101, E111, W191).</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__fixE121">__fixE121</a></td>
+<td>Private method to fix the indentation of continuation lines and closing brackets (E121,E124).</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__fixE122">__fixE122</a></td>
+<td>Private method to fix a missing indentation of continuation lines (E122).</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__fixE123">__fixE123</a></td>
+<td>Private method to fix the indentation of a closing bracket lines (E123).</td>
 </tr><tr>
-<td><a href="#Pep8Fixer.__fixMissingWhitespaceAfter">__fixMissingWhitespaceAfter</a></td>
-<td>Private method to fix missing whitespace after ',;:'.</td>
+<td><a href="#Pep8Fixer.__fixE125">__fixE125</a></td>
+<td>Private method to fix the indentation of continuation lines not distinguishable from next logical line (E125).</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__fixE126">__fixE126</a></td>
+<td>Private method to fix over-indented/under-indented hanging indentation (E126, E133).</td>
 </tr><tr>
-<td><a href="#Pep8Fixer.__fixMissingWhitespaceAroundOperator">__fixMissingWhitespaceAroundOperator</a></td>
+<td><a href="#Pep8Fixer.__fixE127">__fixE127</a></td>
+<td>Private method to fix over/under indented lines (E127, E128).</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__fixE201">__fixE201</a></td>
+<td>Private method to fix extraneous whitespace (E201, E202, E203, E211).</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__fixE221">__fixE221</a></td>
+<td>Private method to fix extraneous whitespace around operator or keyword (E221, E222, E223, E224, E225, E226, E227, E228, E241, E242, E271, E272, E273, E274).</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__fixE231">__fixE231</a></td>
 <td>Private method to fix missing whitespace after ',;:'.</td>
 </tr><tr>
-<td><a href="#Pep8Fixer.__fixNewline">__fixNewline</a></td>
-<td>Private method to fix a missing newline at the end of file.</td>
+<td><a href="#Pep8Fixer.__fixE251">__fixE251</a></td>
+<td>Private method to fix extraneous whitespace around keyword and default parameter equals (E251).</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__fixE261">__fixE261</a></td>
+<td>Private method to fix whitespace before or after inline comment (E261, E262).</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__fixE301">__fixE301</a></td>
+<td>Private method to fix the need for one blank line (E301).</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__fixE302">__fixE302</a></td>
+<td>Private method to fix the need for two blank lines (E302).</td>
 </tr><tr>
-<td><a href="#Pep8Fixer.__fixNotEqual">__fixNotEqual</a></td>
-<td>Private method to fix the not equal notation.</td>
+<td><a href="#Pep8Fixer.__fixE303">__fixE303</a></td>
+<td>Private method to fix superfluous blank lines (E303).</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__fixE304">__fixE304</a></td>
+<td>Private method to fix superfluous blank lines after a function decorator (E304).</td>
 </tr><tr>
-<td><a href="#Pep8Fixer.__fixOneBlankLine">__fixOneBlankLine</a></td>
-<td>Private method to fix the need for one blank line.</td>
+<td><a href="#Pep8Fixer.__fixE401">__fixE401</a></td>
+<td>Private method to fix multiple imports on one line (E401).</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__fixE501">__fixE501</a></td>
+<td>Private method to fix the long lines by breaking them (E501).</td>
 </tr><tr>
-<td><a href="#Pep8Fixer.__fixTabs">__fixTabs</a></td>
-<td>Private method to fix obsolete tab usage.</td>
+<td><a href="#Pep8Fixer.__fixE502">__fixE502</a></td>
+<td>Private method to fix redundant backslash within brackets (E502).</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__fixE701">__fixE701</a></td>
+<td>Private method to fix colon-separated compund statements (E701).</td>
 </tr><tr>
-<td><a href="#Pep8Fixer.__fixTooManyBlankLines">__fixTooManyBlankLines</a></td>
-<td>Private method to fix superfluous blank lines.</td>
+<td><a href="#Pep8Fixer.__fixE702">__fixE702</a></td>
+<td>Private method to fix semicolon-separated compound statements (E702, E703).</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__fixE711">__fixE711</a></td>
+<td>Private method to fix comparison with None (E711, E712).</td>
 </tr><tr>
-<td><a href="#Pep8Fixer.__fixTrailingBlankLines">__fixTrailingBlankLines</a></td>
-<td>Private method to fix trailing blank lines.</td>
+<td><a href="#Pep8Fixer.__fixReindent">__fixReindent</a></td>
+<td>Private method to fix a badly indented line.</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__fixW291">__fixW291</a></td>
+<td>Private method to fix trailing whitespace (W291, W293).</td>
 </tr><tr>
-<td><a href="#Pep8Fixer.__fixTwoBlankLines">__fixTwoBlankLines</a></td>
-<td>Private method to fix the need for two blank lines.</td>
+<td><a href="#Pep8Fixer.__fixW292">__fixW292</a></td>
+<td>Private method to fix a missing newline at the end of file (W292).</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__fixW391">__fixW391</a></td>
+<td>Private method to fix trailing blank lines (W391).</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__fixW603">__fixW603</a></td>
+<td>Private method to fix the not equal notation (W603).</td>
 </tr><tr>
 <td><a href="#Pep8Fixer.__fixWhitespace">__fixWhitespace</a></td>
-<td>Private method to fix trailing whitespace.</td>
-</tr><tr>
-<td><a href="#Pep8Fixer.__fixWhitespaceAfter">__fixWhitespaceAfter</a></td>
-<td>Private method to fix superfluous whitespace after '([{'.</td>
-</tr><tr>
-<td><a href="#Pep8Fixer.__fixWhitespaceAfterInline">__fixWhitespaceAfterInline</a></td>
-<td>Private method to fix whitespace after inline comment.</td>
-</tr><tr>
-<td><a href="#Pep8Fixer.__fixWhitespaceAroundEquals">__fixWhitespaceAroundEquals</a></td>
-<td>Private method to fix extraneous whitespace around keyword and default parameter equals.</td>
-</tr><tr>
-<td><a href="#Pep8Fixer.__fixWhitespaceAroundOperator">__fixWhitespaceAroundOperator</a></td>
-<td>Private method to fix extraneous whitespace around operator.</td>
-</tr><tr>
-<td><a href="#Pep8Fixer.__fixWhitespaceBefore">__fixWhitespaceBefore</a></td>
-<td>Private method to fix superfluous whitespace before '}])', ',;:' and '(['.</td>
-</tr><tr>
-<td><a href="#Pep8Fixer.__fixWhitespaceBeforeInline">__fixWhitespaceBeforeInline</a></td>
-<td>Private method to fix missing whitespace before inline comment.</td>
+<td>Private method to correct whitespace at the given offset.</td>
 </tr><tr>
 <td><a href="#Pep8Fixer.__getEol">__getEol</a></td>
 <td>Private method to get the applicable eol string.</td>
 </tr><tr>
+<td><a href="#Pep8Fixer.__getIndent">__getIndent</a></td>
+<td>Private method to get the indentation string.</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__getIndentWord">__getIndentWord</a></td>
+<td>Private method to determine the indentation type.</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__getLogical">__getLogical</a></td>
+<td>Private method to get the logical line corresponding to the given position.</td>
+</tr><tr>
+<td><a href="#Pep8Fixer.__multilineStringLines">__multilineStringLines</a></td>
+<td>Private method to determine the line numbers that are within multi line strings and these which are part of a documentation string.</td>
+</tr><tr>
 <td><a href="#Pep8Fixer.fixIssue">fixIssue</a></td>
 <td>Public method to fix the fixable issues.</td>
 </tr><tr>
+<td><a href="#Pep8Fixer.mutualStartswith">mutualStartswith</a></td>
+<td>Local helper method to compare the beginnings of two strings against each other.</td>
+</tr><tr>
 <td><a href="#Pep8Fixer.saveFile">saveFile</a></td>
 <td>Public method to save the modified file.</td>
 </tr>
@@ -130,7 +193,7 @@
 </table>
 <a NAME="Pep8Fixer.__init__" ID="Pep8Fixer.__init__"></a>
 <h4>Pep8Fixer (Constructor)</h4>
-<b>Pep8Fixer</b>(<i>project, filename, sourceLines, fixCodes, inPlace</i>)
+<b>Pep8Fixer</b>(<i>project, filename, sourceLines, fixCodes, noFixCodes, maxLineLength, inPlace</i>)
 <p>
         Constructor
 </p><dl>
@@ -148,21 +211,78 @@
 <dd>
 list of codes to be fixed as a comma separated
             string (string)
+</dd><dt><i>noFixCodes</i></dt>
+<dd>
+list of codes not to be fixed as a comma
+            separated string (string)
+</dd><dt><i>maxLineLength</i></dt>
+<dd>
+maximum allowed line length (integer)
 </dd><dt><i>inPlace</i></dt>
 <dd>
 flag indicating to modify the file in place (boolean)
 </dd>
+</dl><a NAME="Pep8Fixer.__codeMatch" ID="Pep8Fixer.__codeMatch"></a>
+<h4>Pep8Fixer.__codeMatch</h4>
+<b>__codeMatch</b>(<i>code</i>)
+<p>
+        Private method to check, if the code should be fixed.
+</p><dl>
+<dt><i>code</i></dt>
+<dd>
+to check (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating it should be fixed (boolean)
+</dd>
 </dl><a NAME="Pep8Fixer.__finalize" ID="Pep8Fixer.__finalize"></a>
 <h4>Pep8Fixer.__finalize</h4>
 <b>__finalize</b>(<i></i>)
 <p>
         Private method to apply all deferred fixes.
-</p><a NAME="Pep8Fixer.__fixBlankLinesAfterDecorator" ID="Pep8Fixer.__fixBlankLinesAfterDecorator"></a>
-<h4>Pep8Fixer.__fixBlankLinesAfterDecorator</h4>
-<b>__fixBlankLinesAfterDecorator</b>(<i>code, line, pos, apply=False</i>)
+</p><a NAME="Pep8Fixer.__findLogical" ID="Pep8Fixer.__findLogical"></a>
+<h4>Pep8Fixer.__findLogical</h4>
+<b>__findLogical</b>(<i></i>)
+<p>
+        Private method to extract the index of all the starts and ends of
+        lines.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+tuple containing two lists of integer with start and end tuples
+            of lines
+</dd>
+</dl><a NAME="Pep8Fixer.__fixE101" ID="Pep8Fixer.__fixE101"></a>
+<h4>Pep8Fixer.__fixE101</h4>
+<b>__fixE101</b>(<i>code, line, pos</i>)
 <p>
-        Private method to fix superfluous blank lines after a function
-        decorator.
+        Private method to fix obsolete tab usage and indentation errors
+        (E101, E111, W191).
+</p><dl>
+<dt><i>code</i></dt>
+<dd>
+code of the issue (string)
+</dd><dt><i>line</i></dt>
+<dd>
+line number of the issue (integer)
+</dd><dt><i>pos</i></dt>
+<dd>
+position inside line (integer)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+</dd>
+</dl><a NAME="Pep8Fixer.__fixE121" ID="Pep8Fixer.__fixE121"></a>
+<h4>Pep8Fixer.__fixE121</h4>
+<b>__fixE121</b>(<i>code, line, pos, apply=False</i>)
+<p>
+        Private method to fix the indentation of continuation lines and
+        closing brackets (E121,E124).
 </p><dl>
 <dt><i>code</i></dt>
 <dd>
@@ -184,11 +304,39 @@
 flag indicating an applied fix (boolean) and a message for
             the fix (string)
 </dd>
-</dl><a NAME="Pep8Fixer.__fixMissingWhitespaceAfter" ID="Pep8Fixer.__fixMissingWhitespaceAfter"></a>
-<h4>Pep8Fixer.__fixMissingWhitespaceAfter</h4>
-<b>__fixMissingWhitespaceAfter</b>(<i>code, line, pos, apply=False</i>)
+</dl><a NAME="Pep8Fixer.__fixE122" ID="Pep8Fixer.__fixE122"></a>
+<h4>Pep8Fixer.__fixE122</h4>
+<b>__fixE122</b>(<i>code, line, pos, apply=False</i>)
 <p>
-        Private method to fix missing whitespace after ',;:'.
+        Private method to fix a missing indentation of continuation lines
+        (E122).
+</p><dl>
+<dt><i>code</i></dt>
+<dd>
+code of the issue (string)
+</dd><dt><i>line</i></dt>
+<dd>
+line number of the issue (integer)
+</dd><dt><i>pos</i></dt>
+<dd>
+position inside line (integer)
+</dd><dt><i>apply=</i></dt>
+<dd>
+flag indicating, that the fix should be applied
+            (boolean)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+</dd>
+</dl><a NAME="Pep8Fixer.__fixE123" ID="Pep8Fixer.__fixE123"></a>
+<h4>Pep8Fixer.__fixE123</h4>
+<b>__fixE123</b>(<i>code, line, pos, apply=False</i>)
+<p>
+        Private method to fix the indentation of a closing bracket lines
+        (E123).
 </p><dl>
 <dt><i>code</i></dt>
 <dd>
@@ -210,11 +358,12 @@
 flag indicating an applied fix (boolean) and a message for
             the fix (string)
 </dd>
-</dl><a NAME="Pep8Fixer.__fixMissingWhitespaceAroundOperator" ID="Pep8Fixer.__fixMissingWhitespaceAroundOperator"></a>
-<h4>Pep8Fixer.__fixMissingWhitespaceAroundOperator</h4>
-<b>__fixMissingWhitespaceAroundOperator</b>(<i>code, line, pos, apply=False</i>)
+</dl><a NAME="Pep8Fixer.__fixE125" ID="Pep8Fixer.__fixE125"></a>
+<h4>Pep8Fixer.__fixE125</h4>
+<b>__fixE125</b>(<i>code, line, pos, apply=False</i>)
 <p>
-        Private method to fix missing whitespace after ',;:'.
+        Private method to fix the indentation of continuation lines not
+        distinguishable from next logical line (E125).
 </p><dl>
 <dt><i>code</i></dt>
 <dd>
@@ -236,11 +385,12 @@
 flag indicating an applied fix (boolean) and a message for
             the fix (string)
 </dd>
-</dl><a NAME="Pep8Fixer.__fixNewline" ID="Pep8Fixer.__fixNewline"></a>
-<h4>Pep8Fixer.__fixNewline</h4>
-<b>__fixNewline</b>(<i>code, line, pos</i>)
+</dl><a NAME="Pep8Fixer.__fixE126" ID="Pep8Fixer.__fixE126"></a>
+<h4>Pep8Fixer.__fixE126</h4>
+<b>__fixE126</b>(<i>code, line, pos, apply=False</i>)
 <p>
-        Private method to fix a missing newline at the end of file.
+        Private method to fix over-indented/under-indented hanging
+        indentation (E126, E133).
 </p><dl>
 <dt><i>code</i></dt>
 <dd>
@@ -251,6 +401,10 @@
 </dd><dt><i>pos</i></dt>
 <dd>
 position inside line (integer)
+</dd><dt><i>apply=</i></dt>
+<dd>
+flag indicating, that the fix should be applied
+            (boolean)
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
@@ -258,33 +412,11 @@
 flag indicating an applied fix (boolean) and a message for
             the fix (string)
 </dd>
-</dl><a NAME="Pep8Fixer.__fixNotEqual" ID="Pep8Fixer.__fixNotEqual"></a>
-<h4>Pep8Fixer.__fixNotEqual</h4>
-<b>__fixNotEqual</b>(<i>code, line, pos</i>)
+</dl><a NAME="Pep8Fixer.__fixE127" ID="Pep8Fixer.__fixE127"></a>
+<h4>Pep8Fixer.__fixE127</h4>
+<b>__fixE127</b>(<i>code, line, pos, apply=False</i>)
 <p>
-        Private method to fix the not equal notation.
-</p><dl>
-<dt><i>code</i></dt>
-<dd>
-code of the issue (string)
-</dd><dt><i>line</i></dt>
-<dd>
-line number of the issue (integer)
-</dd><dt><i>pos</i></dt>
-<dd>
-position inside line (integer)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-flag indicating an applied fix (boolean) and a message for
-            the fix (string)
-</dd>
-</dl><a NAME="Pep8Fixer.__fixOneBlankLine" ID="Pep8Fixer.__fixOneBlankLine"></a>
-<h4>Pep8Fixer.__fixOneBlankLine</h4>
-<b>__fixOneBlankLine</b>(<i>code, line, pos, apply=False</i>)
-<p>
-        Private method to fix the need for one blank line.
+        Private method to fix over/under indented lines (E127, E128).
 </p><dl>
 <dt><i>code</i></dt>
 <dd>
@@ -306,11 +438,36 @@
 flag indicating an applied fix (boolean) and a message for
             the fix (string)
 </dd>
-</dl><a NAME="Pep8Fixer.__fixTabs" ID="Pep8Fixer.__fixTabs"></a>
-<h4>Pep8Fixer.__fixTabs</h4>
-<b>__fixTabs</b>(<i>code, line, pos</i>)
+</dl><a NAME="Pep8Fixer.__fixE201" ID="Pep8Fixer.__fixE201"></a>
+<h4>Pep8Fixer.__fixE201</h4>
+<b>__fixE201</b>(<i>code, line, pos</i>)
 <p>
-        Private method to fix obsolete tab usage.
+        Private method to fix extraneous whitespace (E201, E202,
+        E203, E211).
+</p><dl>
+<dt><i>code</i></dt>
+<dd>
+code of the issue (string)
+</dd><dt><i>line</i></dt>
+<dd>
+line number of the issue (integer)
+</dd><dt><i>pos</i></dt>
+<dd>
+position inside line (integer)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+</dd>
+</dl><a NAME="Pep8Fixer.__fixE221" ID="Pep8Fixer.__fixE221"></a>
+<h4>Pep8Fixer.__fixE221</h4>
+<b>__fixE221</b>(<i>code, line, pos</i>)
+<p>
+        Private method to fix extraneous whitespace around operator or
+        keyword (E221, E222, E223, E224, E225, E226, E227, E228, E241,
+        E242, E271, E272, E273, E274).
 </p><dl>
 <dt><i>code</i></dt>
 <dd>
@@ -328,11 +485,79 @@
 flag indicating an applied fix (boolean) and a message for
             the fix (string)
 </dd>
-</dl><a NAME="Pep8Fixer.__fixTooManyBlankLines" ID="Pep8Fixer.__fixTooManyBlankLines"></a>
-<h4>Pep8Fixer.__fixTooManyBlankLines</h4>
-<b>__fixTooManyBlankLines</b>(<i>code, line, pos, apply=False</i>)
+</dl><a NAME="Pep8Fixer.__fixE231" ID="Pep8Fixer.__fixE231"></a>
+<h4>Pep8Fixer.__fixE231</h4>
+<b>__fixE231</b>(<i>code, line, pos</i>)
+<p>
+        Private method to fix missing whitespace after ',;:'.
+</p><dl>
+<dt><i>code</i></dt>
+<dd>
+code of the issue (string)
+</dd><dt><i>line</i></dt>
+<dd>
+line number of the issue (integer)
+</dd><dt><i>pos</i></dt>
+<dd>
+position inside line (integer)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+</dd>
+</dl><a NAME="Pep8Fixer.__fixE251" ID="Pep8Fixer.__fixE251"></a>
+<h4>Pep8Fixer.__fixE251</h4>
+<b>__fixE251</b>(<i>code, line, pos</i>)
 <p>
-        Private method to fix superfluous blank lines.
+        Private method to fix extraneous whitespace around keyword and
+        default parameter equals (E251).
+</p><dl>
+<dt><i>code</i></dt>
+<dd>
+code of the issue (string)
+</dd><dt><i>line</i></dt>
+<dd>
+line number of the issue (integer)
+</dd><dt><i>pos</i></dt>
+<dd>
+position inside line (integer)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+</dd>
+</dl><a NAME="Pep8Fixer.__fixE261" ID="Pep8Fixer.__fixE261"></a>
+<h4>Pep8Fixer.__fixE261</h4>
+<b>__fixE261</b>(<i>code, line, pos</i>)
+<p>
+        Private method to fix whitespace before or after inline comment
+        (E261, E262).
+</p><dl>
+<dt><i>code</i></dt>
+<dd>
+code of the issue (string)
+</dd><dt><i>line</i></dt>
+<dd>
+line number of the issue (integer)
+</dd><dt><i>pos</i></dt>
+<dd>
+position inside line (integer)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+</dd>
+</dl><a NAME="Pep8Fixer.__fixE301" ID="Pep8Fixer.__fixE301"></a>
+<h4>Pep8Fixer.__fixE301</h4>
+<b>__fixE301</b>(<i>code, line, pos, apply=False</i>)
+<p>
+        Private method to fix the need for one blank line (E301).
 </p><dl>
 <dt><i>code</i></dt>
 <dd>
@@ -354,11 +579,37 @@
 flag indicating an applied fix (boolean) and a message for
             the fix (string)
 </dd>
-</dl><a NAME="Pep8Fixer.__fixTrailingBlankLines" ID="Pep8Fixer.__fixTrailingBlankLines"></a>
-<h4>Pep8Fixer.__fixTrailingBlankLines</h4>
-<b>__fixTrailingBlankLines</b>(<i>code, line, pos</i>)
+</dl><a NAME="Pep8Fixer.__fixE302" ID="Pep8Fixer.__fixE302"></a>
+<h4>Pep8Fixer.__fixE302</h4>
+<b>__fixE302</b>(<i>code, line, pos, apply=False</i>)
 <p>
-        Private method to fix trailing blank lines.
+        Private method to fix the need for two blank lines (E302).
+</p><dl>
+<dt><i>code</i></dt>
+<dd>
+code of the issue (string)
+</dd><dt><i>line</i></dt>
+<dd>
+line number of the issue (integer)
+</dd><dt><i>pos</i></dt>
+<dd>
+position inside line (integer)
+</dd><dt><i>apply=</i></dt>
+<dd>
+flag indicating, that the fix should be applied
+            (boolean)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+</dd>
+</dl><a NAME="Pep8Fixer.__fixE303" ID="Pep8Fixer.__fixE303"></a>
+<h4>Pep8Fixer.__fixE303</h4>
+<b>__fixE303</b>(<i>code, line, pos, apply=False</i>)
+<p>
+        Private method to fix superfluous blank lines (E303).
 </p><dl>
 <dt><i>code</i></dt>
 <dd>
@@ -369,6 +620,10 @@
 </dd><dt><i>pos</i></dt>
 <dd>
 position inside line (integer)
+</dd><dt><i>apply=</i></dt>
+<dd>
+flag indicating, that the fix should be applied
+            (boolean)
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
@@ -376,16 +631,12 @@
 flag indicating an applied fix (boolean) and a message for
             the fix (string)
 </dd>
-</dl><a NAME="Pep8Fixer.__fixTwoBlankLines" ID="Pep8Fixer.__fixTwoBlankLines"></a>
-<h4>Pep8Fixer.__fixTwoBlankLines</h4>
-<b>__fixTwoBlankLines</b>(<i>code, line, pos, apply=False</i>)
+</dl><a NAME="Pep8Fixer.__fixE304" ID="Pep8Fixer.__fixE304"></a>
+<h4>Pep8Fixer.__fixE304</h4>
+<b>__fixE304</b>(<i>code, line, pos, apply=False</i>)
 <p>
-        Private method to fix the need for two blank lines.
-</p><a NAME="Pep8Fixer.__fixWhitespace" ID="Pep8Fixer.__fixWhitespace"></a>
-<h4>Pep8Fixer.__fixWhitespace</h4>
-<b>__fixWhitespace</b>(<i>code, line, pos</i>)
-<p>
-        Private method to fix trailing whitespace.
+        Private method to fix superfluous blank lines after a function
+        decorator (E304).
 </p><dl>
 <dt><i>code</i></dt>
 <dd>
@@ -396,6 +647,10 @@
 </dd><dt><i>pos</i></dt>
 <dd>
 position inside line (integer)
+</dd><dt><i>apply=</i></dt>
+<dd>
+flag indicating, that the fix should be applied
+            (boolean)
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
@@ -403,11 +658,37 @@
 flag indicating an applied fix (boolean) and a message for
             the fix (string)
 </dd>
-</dl><a NAME="Pep8Fixer.__fixWhitespaceAfter" ID="Pep8Fixer.__fixWhitespaceAfter"></a>
-<h4>Pep8Fixer.__fixWhitespaceAfter</h4>
-<b>__fixWhitespaceAfter</b>(<i>code, line, pos, apply=False</i>)
+</dl><a NAME="Pep8Fixer.__fixE401" ID="Pep8Fixer.__fixE401"></a>
+<h4>Pep8Fixer.__fixE401</h4>
+<b>__fixE401</b>(<i>code, line, pos, apply=False</i>)
 <p>
-        Private method to fix superfluous whitespace after '([{'.
+        Private method to fix multiple imports on one line (E401).
+</p><dl>
+<dt><i>code</i></dt>
+<dd>
+code of the issue (string)
+</dd><dt><i>line</i></dt>
+<dd>
+line number of the issue (integer)
+</dd><dt><i>pos</i></dt>
+<dd>
+position inside line (integer)
+</dd><dt><i>apply=</i></dt>
+<dd>
+flag indicating, that the fix should be applied
+            (boolean)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+</dd>
+</dl><a NAME="Pep8Fixer.__fixE501" ID="Pep8Fixer.__fixE501"></a>
+<h4>Pep8Fixer.__fixE501</h4>
+<b>__fixE501</b>(<i>code, line, pos, apply=False</i>)
+<p>
+        Private method to fix the long lines by breaking them (E501).
 </p><dl>
 <dt><i>code</i></dt>
 <dd>
@@ -429,11 +710,33 @@
 flag indicating an applied fix (boolean) and a message for
             the fix (string)
 </dd>
-</dl><a NAME="Pep8Fixer.__fixWhitespaceAfterInline" ID="Pep8Fixer.__fixWhitespaceAfterInline"></a>
-<h4>Pep8Fixer.__fixWhitespaceAfterInline</h4>
-<b>__fixWhitespaceAfterInline</b>(<i>code, line, pos, apply=False</i>)
+</dl><a NAME="Pep8Fixer.__fixE502" ID="Pep8Fixer.__fixE502"></a>
+<h4>Pep8Fixer.__fixE502</h4>
+<b>__fixE502</b>(<i>code, line, pos</i>)
 <p>
-        Private method to fix whitespace after inline comment.
+        Private method to fix redundant backslash within brackets (E502).
+</p><dl>
+<dt><i>code</i></dt>
+<dd>
+code of the issue (string)
+</dd><dt><i>line</i></dt>
+<dd>
+line number of the issue (integer)
+</dd><dt><i>pos</i></dt>
+<dd>
+position inside line (integer)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+</dd>
+</dl><a NAME="Pep8Fixer.__fixE701" ID="Pep8Fixer.__fixE701"></a>
+<h4>Pep8Fixer.__fixE701</h4>
+<b>__fixE701</b>(<i>code, line, pos, apply=False</i>)
+<p>
+        Private method to fix colon-separated compund statements (E701).
 </p><dl>
 <dt><i>code</i></dt>
 <dd>
@@ -455,12 +758,12 @@
 flag indicating an applied fix (boolean) and a message for
             the fix (string)
 </dd>
-</dl><a NAME="Pep8Fixer.__fixWhitespaceAroundEquals" ID="Pep8Fixer.__fixWhitespaceAroundEquals"></a>
-<h4>Pep8Fixer.__fixWhitespaceAroundEquals</h4>
-<b>__fixWhitespaceAroundEquals</b>(<i>code, line, pos, apply=False</i>)
+</dl><a NAME="Pep8Fixer.__fixE702" ID="Pep8Fixer.__fixE702"></a>
+<h4>Pep8Fixer.__fixE702</h4>
+<b>__fixE702</b>(<i>code, line, pos, apply=False</i>)
 <p>
-        Private method to fix extraneous whitespace around keyword and
-        default parameter equals.
+        Private method to fix semicolon-separated compound statements
+        (E702, E703).
 </p><dl>
 <dt><i>code</i></dt>
 <dd>
@@ -482,11 +785,11 @@
 flag indicating an applied fix (boolean) and a message for
             the fix (string)
 </dd>
-</dl><a NAME="Pep8Fixer.__fixWhitespaceAroundOperator" ID="Pep8Fixer.__fixWhitespaceAroundOperator"></a>
-<h4>Pep8Fixer.__fixWhitespaceAroundOperator</h4>
-<b>__fixWhitespaceAroundOperator</b>(<i>code, line, pos, apply=False</i>)
+</dl><a NAME="Pep8Fixer.__fixE711" ID="Pep8Fixer.__fixE711"></a>
+<h4>Pep8Fixer.__fixE711</h4>
+<b>__fixE711</b>(<i>code, line, pos</i>)
 <p>
-        Private method to fix extraneous whitespace around operator.
+        Private method to fix comparison with None (E711, E712).
 </p><dl>
 <dt><i>code</i></dt>
 <dd>
@@ -497,10 +800,6 @@
 </dd><dt><i>pos</i></dt>
 <dd>
 position inside line (integer)
-</dd><dt><i>apply=</i></dt>
-<dd>
-flag indicating, that the fix should be applied
-            (boolean)
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
@@ -508,12 +807,75 @@
 flag indicating an applied fix (boolean) and a message for
             the fix (string)
 </dd>
-</dl><a NAME="Pep8Fixer.__fixWhitespaceBefore" ID="Pep8Fixer.__fixWhitespaceBefore"></a>
-<h4>Pep8Fixer.__fixWhitespaceBefore</h4>
-<b>__fixWhitespaceBefore</b>(<i>code, line, pos, apply=False</i>)
+</dl><a NAME="Pep8Fixer.__fixReindent" ID="Pep8Fixer.__fixReindent"></a>
+<h4>Pep8Fixer.__fixReindent</h4>
+<b>__fixReindent</b>(<i>line, pos, logical</i>)
+<p>
+        Private method to fix a badly indented line.
+</p><p>
+        This is done by adding or removing from its initial indent only.
+</p><dl>
+<dt><i>line</i></dt>
+<dd>
+line number of the issue (integer)
+</dd><dt><i>pos</i></dt>
+<dd>
+position inside line (integer)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating a change was done (boolean)
+</dd>
+</dl><a NAME="Pep8Fixer.__fixW291" ID="Pep8Fixer.__fixW291"></a>
+<h4>Pep8Fixer.__fixW291</h4>
+<b>__fixW291</b>(<i>code, line, pos</i>)
 <p>
-        Private method to fix superfluous whitespace before '}])',
-        ',;:' and '(['.
+        Private method to fix trailing whitespace (W291, W293).
+</p><dl>
+<dt><i>code</i></dt>
+<dd>
+code of the issue (string)
+</dd><dt><i>line</i></dt>
+<dd>
+line number of the issue (integer)
+</dd><dt><i>pos</i></dt>
+<dd>
+position inside line (integer)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+</dd>
+</dl><a NAME="Pep8Fixer.__fixW292" ID="Pep8Fixer.__fixW292"></a>
+<h4>Pep8Fixer.__fixW292</h4>
+<b>__fixW292</b>(<i>code, line, pos</i>)
+<p>
+        Private method to fix a missing newline at the end of file (W292).
+</p><dl>
+<dt><i>code</i></dt>
+<dd>
+code of the issue (string)
+</dd><dt><i>line</i></dt>
+<dd>
+line number of the issue (integer)
+</dd><dt><i>pos</i></dt>
+<dd>
+position inside line (integer)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+</dd>
+</dl><a NAME="Pep8Fixer.__fixW391" ID="Pep8Fixer.__fixW391"></a>
+<h4>Pep8Fixer.__fixW391</h4>
+<b>__fixW391</b>(<i>code, line, pos</i>)
+<p>
+        Private method to fix trailing blank lines (W391).
 </p><dl>
 <dt><i>code</i></dt>
 <dd>
@@ -524,10 +886,6 @@
 </dd><dt><i>pos</i></dt>
 <dd>
 position inside line (integer)
-</dd><dt><i>apply=</i></dt>
-<dd>
-flag indicating, that the fix should be applied
-            (boolean)
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
@@ -535,11 +893,11 @@
 flag indicating an applied fix (boolean) and a message for
             the fix (string)
 </dd>
-</dl><a NAME="Pep8Fixer.__fixWhitespaceBeforeInline" ID="Pep8Fixer.__fixWhitespaceBeforeInline"></a>
-<h4>Pep8Fixer.__fixWhitespaceBeforeInline</h4>
-<b>__fixWhitespaceBeforeInline</b>(<i>code, line, pos, apply=False</i>)
+</dl><a NAME="Pep8Fixer.__fixW603" ID="Pep8Fixer.__fixW603"></a>
+<h4>Pep8Fixer.__fixW603</h4>
+<b>__fixW603</b>(<i>code, line, pos</i>)
 <p>
-        Private method to fix missing whitespace before inline comment.
+        Private method to fix the not equal notation (W603).
 </p><dl>
 <dt><i>code</i></dt>
 <dd>
@@ -550,10 +908,6 @@
 </dd><dt><i>pos</i></dt>
 <dd>
 position inside line (integer)
-</dd><dt><i>apply=</i></dt>
-<dd>
-flag indicating, that the fix should be applied
-            (boolean)
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
@@ -561,6 +915,27 @@
 flag indicating an applied fix (boolean) and a message for
             the fix (string)
 </dd>
+</dl><a NAME="Pep8Fixer.__fixWhitespace" ID="Pep8Fixer.__fixWhitespace"></a>
+<h4>Pep8Fixer.__fixWhitespace</h4>
+<b>__fixWhitespace</b>(<i>line, offset, replacement</i>)
+<p>
+        Private method to correct whitespace at the given offset.
+</p><dl>
+<dt><i>line</i></dt>
+<dd>
+line to be corrected (string)
+</dd><dt><i>offset</i></dt>
+<dd>
+offset within line (integer)
+</dd><dt><i>replacement</i></dt>
+<dd>
+replacement string (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+corrected line
+</dd>
 </dl><a NAME="Pep8Fixer.__getEol" ID="Pep8Fixer.__getEol"></a>
 <h4>Pep8Fixer.__getEol</h4>
 <b>__getEol</b>(<i></i>)
@@ -571,6 +946,66 @@
 <dd>
 eol string (string)
 </dd>
+</dl><a NAME="Pep8Fixer.__getIndent" ID="Pep8Fixer.__getIndent"></a>
+<h4>Pep8Fixer.__getIndent</h4>
+<b>__getIndent</b>(<i>line</i>)
+<p>
+        Private method to get the indentation string.
+</p><dl>
+<dt><i>line</i></dt>
+<dd>
+line to determine the indentation string from (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+indentation string (string)
+</dd>
+</dl><a NAME="Pep8Fixer.__getIndentWord" ID="Pep8Fixer.__getIndentWord"></a>
+<h4>Pep8Fixer.__getIndentWord</h4>
+<b>__getIndentWord</b>(<i></i>)
+<p>
+        Private method to determine the indentation type.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+string to be used for an indentation (string)
+</dd>
+</dl><a NAME="Pep8Fixer.__getLogical" ID="Pep8Fixer.__getLogical"></a>
+<h4>Pep8Fixer.__getLogical</h4>
+<b>__getLogical</b>(<i>line, pos</i>)
+<p>
+        Private method to get the logical line corresponding to the given
+        position.
+</p><dl>
+<dt><i>line</i></dt>
+<dd>
+line number of the issue (integer)
+</dd><dt><i>pos</i></dt>
+<dd>
+position inside line (integer)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+tuple of a tuple of two integers giving the start of the
+            logical line, another tuple of two integers giving the end
+            of the logical line and a list of strings with the original
+            source lines
+</dd>
+</dl><a NAME="Pep8Fixer.__multilineStringLines" ID="Pep8Fixer.__multilineStringLines"></a>
+<h4>Pep8Fixer.__multilineStringLines</h4>
+<b>__multilineStringLines</b>(<i></i>)
+<p>
+        Private method to determine the line numbers that are within multi line
+        strings and these which are part of a documentation string.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+tuple of a set of line numbers belonging to a multi line
+            string and a set of line numbers belonging to a multi line
+            documentation string (tuple of two set of integer)
+</dd>
 </dl><a NAME="Pep8Fixer.fixIssue" ID="Pep8Fixer.fixIssue"></a>
 <h4>Pep8Fixer.fixIssue</h4>
 <b>fixIssue</b>(<i>line, pos, message</i>)
@@ -593,6 +1028,18 @@
 flag indicating an applied fix (boolean) and a message for
             the fix (string)
 </dd>
+</dl><a NAME="Pep8Fixer.mutualStartswith" ID="Pep8Fixer.mutualStartswith"></a>
+<h4>Pep8Fixer.mutualStartswith</h4>
+<b>mutualStartswith</b>(<i>b</i>)
+<p>
+            Local helper method to compare the beginnings of two strings
+            against each other.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating that one string starts with the other
+                (boolean)
+</dd>
 </dl><a NAME="Pep8Fixer.saveFile" ID="Pep8Fixer.saveFile"></a>
 <h4>Pep8Fixer.saveFile</h4>
 <b>saveFile</b>(<i>encoding</i>)
@@ -610,5 +1057,439 @@
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="Pep8IndentationWrapper" ID="Pep8IndentationWrapper"></a>
+<h2>Pep8IndentationWrapper</h2>
+<p>
+    Class used by fixers dealing with indentation.
+</p><p>
+    Each instance operates on a single logical line.
+</p>
+<h3>Derived from</h3>
+object
+<h3>Class Attributes</h3>
+<table>
+<tr><td>SKIP_TOKENS</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#Pep8IndentationWrapper.__init__">Pep8IndentationWrapper</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#Pep8IndentationWrapper.__buildTokensLogical">__buildTokensLogical</a></td>
+<td>Private method to build a logical line from a list of tokens.</td>
+</tr><tr>
+<td><a href="#Pep8IndentationWrapper.pep8Expected">pep8Expected</a></td>
+<td>Public method to replicate logic in pep8.py, to know what level to indent things to.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="Pep8IndentationWrapper.__init__" ID="Pep8IndentationWrapper.__init__"></a>
+<h4>Pep8IndentationWrapper (Constructor)</h4>
+<b>Pep8IndentationWrapper</b>(<i>physical_lines</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>physical_lines</i></dt>
+<dd>
+list of physical lines to operate on
+            (list of strings)
+</dd>
+</dl><a NAME="Pep8IndentationWrapper.__buildTokensLogical" ID="Pep8IndentationWrapper.__buildTokensLogical"></a>
+<h4>Pep8IndentationWrapper.__buildTokensLogical</h4>
+<b>__buildTokensLogical</b>(<i>tokens</i>)
+<p>
+        Private method to build a logical line from a list of tokens.
+</p><dl>
+<dt><i>tokens</i></dt>
+<dd>
+list of tokens as generated by tokenize.generate_tokens
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+logical line (string)
+</dd>
+</dl><a NAME="Pep8IndentationWrapper.pep8Expected" ID="Pep8IndentationWrapper.pep8Expected"></a>
+<h4>Pep8IndentationWrapper.pep8Expected</h4>
+<b>pep8Expected</b>(<i></i>)
+<p>
+        Public method to replicate logic in pep8.py, to know what level to
+        indent things to.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+list of lists, where each list represents valid indent levels
+        for the line in question, relative from the initial indent. However,
+        the first entry is the indent level which was expected.
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="Pep8LineShortener" ID="Pep8LineShortener"></a>
+<h2>Pep8LineShortener</h2>
+<p>
+    Class used to shorten lines to a given maximum of characters.
+</p>
+<h3>Derived from</h3>
+object
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#Pep8LineShortener.__init__">Pep8LineShortener</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#Pep8LineShortener.__breakMultiline">__breakMultiline</a></td>
+<td>Private method to break multi line strings.</td>
+</tr><tr>
+<td><a href="#Pep8LineShortener.__checkSyntax">__checkSyntax</a></td>
+<td>Private method to check the syntax of the given code fragment.</td>
+</tr><tr>
+<td><a href="#Pep8LineShortener.__countUnbalancedBrackets">__countUnbalancedBrackets</a></td>
+<td>Private method to determine the number of unmatched open/close brackets.</td>
+</tr><tr>
+<td><a href="#Pep8LineShortener.__getIndent">__getIndent</a></td>
+<td>Private method to get the indentation string.</td>
+</tr><tr>
+<td><a href="#Pep8LineShortener.__isProbablyInsideStringOrComment">__isProbablyInsideStringOrComment</a></td>
+<td>Private method to check, if the given string might be inside a string or comment.</td>
+</tr><tr>
+<td><a href="#Pep8LineShortener.__lineShorteningRank">__lineShorteningRank</a></td>
+<td>Private method to rank a candidate.</td>
+</tr><tr>
+<td><a href="#Pep8LineShortener.__normalizeMultiline">__normalizeMultiline</a></td>
+<td>Private method to remove multiline-related code that will cause syntax error.</td>
+</tr><tr>
+<td><a href="#Pep8LineShortener.__shortenComment">__shortenComment</a></td>
+<td>Private method to shorten a comment line.</td>
+</tr><tr>
+<td><a href="#Pep8LineShortener.__shortenLine">__shortenLine</a></td>
+<td>Private method to shorten a line of code at an operator.</td>
+</tr><tr>
+<td><a href="#Pep8LineShortener.shorten">shorten</a></td>
+<td>Public method to shorten the line wrapped by the class instance.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="Pep8LineShortener.__init__" ID="Pep8LineShortener.__init__"></a>
+<h4>Pep8LineShortener (Constructor)</h4>
+<b>Pep8LineShortener</b>(<i>curLine, prevLine, nextLine, maxLength=79, eol="\n", indentWord="    ", isDocString=False</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>curLine</i></dt>
+<dd>
+text to work on (string)
+</dd><dt><i>prevLine</i></dt>
+<dd>
+line before the text to work on (string)
+</dd><dt><i>nextLine</i></dt>
+<dd>
+line after the text to work on (string)
+</dd><dt><i>maxLength=</i></dt>
+<dd>
+maximum allowed line length (integer)
+</dd><dt><i>eol=</i></dt>
+<dd>
+eond-of-line marker (string)
+</dd><dt><i>indentWord=</i></dt>
+<dd>
+string used for indentation (string)
+</dd><dt><i>isDocString=</i></dt>
+<dd>
+flag indicating that the line belongs to
+            a documentation string (boolean)
+</dd>
+</dl><a NAME="Pep8LineShortener.__breakMultiline" ID="Pep8LineShortener.__breakMultiline"></a>
+<h4>Pep8LineShortener.__breakMultiline</h4>
+<b>__breakMultiline</b>(<i></i>)
+<p>
+        Private method to break multi line strings.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+tuple of the shortened line and the changed next line
+            (string, string)
+</dd>
+</dl><a NAME="Pep8LineShortener.__checkSyntax" ID="Pep8LineShortener.__checkSyntax"></a>
+<h4>Pep8LineShortener.__checkSyntax</h4>
+<b>__checkSyntax</b>(<i>code</i>)
+<p>
+        Private method to check the syntax of the given code fragment.
+</p><dl>
+<dt><i>code</i></dt>
+<dd>
+code fragment to check (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating syntax is ok (boolean)
+</dd>
+</dl><a NAME="Pep8LineShortener.__countUnbalancedBrackets" ID="Pep8LineShortener.__countUnbalancedBrackets"></a>
+<h4>Pep8LineShortener.__countUnbalancedBrackets</h4>
+<b>__countUnbalancedBrackets</b>(<i>line</i>)
+<p>
+        Private method to determine the number of unmatched open/close
+        brackets.
+</p><dl>
+<dt><i>line</i></dt>
+<dd>
+line to work at (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+number of unmatched open/close brackets (integer)
+</dd>
+</dl><a NAME="Pep8LineShortener.__getIndent" ID="Pep8LineShortener.__getIndent"></a>
+<h4>Pep8LineShortener.__getIndent</h4>
+<b>__getIndent</b>(<i>line</i>)
+<p>
+        Private method to get the indentation string.
+</p><dl>
+<dt><i>line</i></dt>
+<dd>
+line to determine the indentation string from (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+indentation string (string)
+</dd>
+</dl><a NAME="Pep8LineShortener.__isProbablyInsideStringOrComment" ID="Pep8LineShortener.__isProbablyInsideStringOrComment"></a>
+<h4>Pep8LineShortener.__isProbablyInsideStringOrComment</h4>
+<b>__isProbablyInsideStringOrComment</b>(<i>line, index</i>)
+<p>
+        Private method to check, if the given string might be inside a string
+        or comment.
+</p><dl>
+<dt><i>line</i></dt>
+<dd>
+line to check (string)
+</dd><dt><i>index</i></dt>
+<dd>
+position inside line to check (integer)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating the possibility of being inside a string
+            or comment
+</dd>
+</dl><a NAME="Pep8LineShortener.__lineShorteningRank" ID="Pep8LineShortener.__lineShorteningRank"></a>
+<h4>Pep8LineShortener.__lineShorteningRank</h4>
+<b>__lineShorteningRank</b>(<i>candidate</i>)
+<p>
+        Private method to rank a candidate.
+</p><dl>
+<dt><i>candidate</i></dt>
+<dd>
+candidate line to rank (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+rank of the candidate (integer)
+</dd>
+</dl><a NAME="Pep8LineShortener.__normalizeMultiline" ID="Pep8LineShortener.__normalizeMultiline"></a>
+<h4>Pep8LineShortener.__normalizeMultiline</h4>
+<b>__normalizeMultiline</b>(<i>text</i>)
+<p>
+        Private method to remove multiline-related code that will cause syntax
+        error.
+</p><dl>
+<dt><i>line</i></dt>
+<dd>
+code line to work on (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+normalized code line (string)
+</dd>
+</dl><a NAME="Pep8LineShortener.__shortenComment" ID="Pep8LineShortener.__shortenComment"></a>
+<h4>Pep8LineShortener.__shortenComment</h4>
+<b>__shortenComment</b>(<i>isLast</i>)
+<p>
+        Private method to shorten a comment line.
+</p><dl>
+<dt><i>isLast</i></dt>
+<dd>
+flag indicating, that the line is the last comment line
+            (boolean)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+shortened comment line (string)
+</dd>
+</dl><a NAME="Pep8LineShortener.__shortenLine" ID="Pep8LineShortener.__shortenLine"></a>
+<h4>Pep8LineShortener.__shortenLine</h4>
+<b>__shortenLine</b>(<i>tokens, source, indent</i>)
+<p>
+        Private method to shorten a line of code at an operator.
+</p><dl>
+<dt><i>tokens</i></dt>
+<dd>
+tokens of the line as generated by tokenize
+            (list of token)
+</dd><dt><i>source</i></dt>
+<dd>
+code string to work at (string)
+</dd><dt><i>indent</i></dt>
+<dd>
+indentation string of the code line (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+list of candidates (list of string)
+</dd>
+</dl><a NAME="Pep8LineShortener.shorten" ID="Pep8LineShortener.shorten"></a>
+<h4>Pep8LineShortener.shorten</h4>
+<b>shorten</b>(<i></i>)
+<p>
+        Public method to shorten the line wrapped by the class instance.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+tuple of a flag indicating successful shortening, the
+            shortened line and the changed next line (boolean, string, string)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="Pep8Reindenter" ID="Pep8Reindenter"></a>
+<h2>Pep8Reindenter</h2>
+<p>
+    Class to reindent badly-indented code to uniformly use four-space
+    indentation.
+</p><p>
+    Released to the public domain, by Tim Peters, 03 October 2000.
+</p>
+<h3>Derived from</h3>
+object
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#Pep8Reindenter.__init__">Pep8Reindenter</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#Pep8Reindenter.__genStats">__genStats</a></td>
+<td>Private method to generate the re-indent statistics.</td>
+</tr><tr>
+<td><a href="#Pep8Reindenter.__getlspace">__getlspace</a></td>
+<td>Private method to count number of leading blanks.</td>
+</tr><tr>
+<td><a href="#Pep8Reindenter.fixedLine">fixedLine</a></td>
+<td>Public method to get a fixed line.</td>
+</tr><tr>
+<td><a href="#Pep8Reindenter.getline">getline</a></td>
+<td>Public method to get a line of text for tokenize.</td>
+</tr><tr>
+<td><a href="#Pep8Reindenter.run">run</a></td>
+<td>Public method to run the re-indenter.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="Pep8Reindenter.__init__" ID="Pep8Reindenter.__init__"></a>
+<h4>Pep8Reindenter (Constructor)</h4>
+<b>Pep8Reindenter</b>(<i>sourceLines</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>sourceLines</i></dt>
+<dd>
+list of source lines including eol marker
+            (list of string)
+</dd>
+</dl><a NAME="Pep8Reindenter.__genStats" ID="Pep8Reindenter.__genStats"></a>
+<h4>Pep8Reindenter.__genStats</h4>
+<b>__genStats</b>(<i>tokens</i>)
+<p>
+        Private method to generate the re-indent statistics.
+</p><dl>
+<dt><i>tokens</i></dt>
+<dd>
+tokens generator (tokenize._tokenize)
+</dd>
+</dl><a NAME="Pep8Reindenter.__getlspace" ID="Pep8Reindenter.__getlspace"></a>
+<h4>Pep8Reindenter.__getlspace</h4>
+<b>__getlspace</b>(<i>line</i>)
+<p>
+        Private method to count number of leading blanks.
+</p><dl>
+<dt><i>line</i></dt>
+<dd>
+line to check (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+number of leading blanks (integer)
+</dd>
+</dl><a NAME="Pep8Reindenter.fixedLine" ID="Pep8Reindenter.fixedLine"></a>
+<h4>Pep8Reindenter.fixedLine</h4>
+<b>fixedLine</b>(<i>line</i>)
+<p>
+        Public method to get a fixed line.
+</p><dl>
+<dt><i>line</i></dt>
+<dd>
+number of the line to retrieve (integer)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+fixed line (string)
+</dd>
+</dl><a NAME="Pep8Reindenter.getline" ID="Pep8Reindenter.getline"></a>
+<h4>Pep8Reindenter.getline</h4>
+<b>getline</b>(<i></i>)
+<p>
+        Public method to get a line of text for tokenize.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+line of text (string)
+</dd>
+</dl><a NAME="Pep8Reindenter.run" ID="Pep8Reindenter.run"></a>
+<h4>Pep8Reindenter.run</h4>
+<b>run</b>(<i></i>)
+<p>
+        Public method to run the re-indenter.
+</p>
+<div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
\ No newline at end of file
--- a/Documentation/Source/eric5.Plugins.CheckerPlugins.Pep8.pep8.html	Mon Aug 12 22:21:53 2013 +0200
+++ b/Documentation/Source/eric5.Plugins.CheckerPlugins.Pep8.pep8.html	Sun Sep 08 19:04:07 2013 +0200
@@ -23,59 +23,71 @@
 
 <h3>Global Attributes</h3>
 <table>
-<tr><td>BENCHMARK_KEYS</td></tr><tr><td>BINARY_OPERATORS</td></tr><tr><td>DEFAULT_EXCLUDE</td></tr><tr><td>DEFAULT_IGNORE</td></tr><tr><td>DOCSTRING_REGEX</td></tr><tr><td>E225NOT_KEYWORDS</td></tr><tr><td>ERRORCODE_REGEX</td></tr><tr><td>EXTRANEOUS_WHITESPACE_REGEX</td></tr><tr><td>INDENT_REGEX</td></tr><tr><td>MAX_LINE_LENGTH</td></tr><tr><td>OPERATORS</td></tr><tr><td>RAISE_COMMA_REGEX</td></tr><tr><td>SELFTEST_REGEX</td></tr><tr><td>SKIP_TOKENS</td></tr><tr><td>UNARY_OPERATORS</td></tr><tr><td>WHITESPACE</td></tr><tr><td>WHITESPACE_AROUND_NAMED_PARAMETER_REGEX</td></tr><tr><td>WHITESPACE_AROUND_OPERATOR_REGEX</td></tr><tr><td>__version__</td></tr><tr><td>args</td></tr><tr><td>options</td></tr><tr><td>pep8_messages</td></tr><tr><td>pep8_messages_sample_args</td></tr>
+<tr><td>ARITHMETIC_OP</td></tr><tr><td>BENCHMARK_KEYS</td></tr><tr><td>COMMENT_WITH_NL</td></tr><tr><td>COMPARE_SINGLETON_REGEX</td></tr><tr><td>COMPARE_TYPE_REGEX</td></tr><tr><td>DEFAULT_EXCLUDE</td></tr><tr><td>DEFAULT_IGNORE</td></tr><tr><td>DOCSTRING_REGEX</td></tr><tr><td>ERRORCODE_REGEX</td></tr><tr><td>EXTRANEOUS_WHITESPACE_REGEX</td></tr><tr><td>HUNK_REGEX</td></tr><tr><td>INDENT_REGEX</td></tr><tr><td>KEYWORDS</td></tr><tr><td>KEYWORD_REGEX</td></tr><tr><td>LAMBDA_REGEX</td></tr><tr><td>MAX_LINE_LENGTH</td></tr><tr><td>OPERATOR_REGEX</td></tr><tr><td>PROJECT_CONFIG</td></tr><tr><td>PyCF_ONLY_AST</td></tr><tr><td>RAISE_COMMA_REGEX</td></tr><tr><td>REPORT_FORMAT</td></tr><tr><td>RERAISE_COMMA_REGEX</td></tr><tr><td>SINGLETONS</td></tr><tr><td>SKIP_TOKENS</td></tr><tr><td>TESTSUITE_PATH</td></tr><tr><td>UNARY_OPERATORS</td></tr><tr><td>WHITESPACE</td></tr><tr><td>WHITESPACE_AFTER_COMMA_REGEX</td></tr><tr><td>WS_NEEDED_OPERATORS</td></tr><tr><td>WS_OPTIONAL_OPERATORS</td></tr><tr><td>__version__</td></tr><tr><td>_checks</td></tr><tr><td>noqa</td></tr><tr><td>pep8_messages</td></tr><tr><td>pep8_messages_sample_args</td></tr>
 </table>
 <h3>Classes</h3>
 <table>
 <tr>
+<td><a href="#BaseReport">BaseReport</a></td>
+<td>Collect the results of the checks.</td>
+</tr><tr>
 <td><a href="#Checker">Checker</a></td>
 <td>Load a Python source file, tokenize it, check coding style.</td>
+</tr><tr>
+<td><a href="#DiffReport">DiffReport</a></td>
+<td>Collect and print the results for the changed lines only.</td>
+</tr><tr>
+<td><a href="#FileReport">FileReport</a></td>
+<td>Collect the results of the checks and print only the filenames.</td>
+</tr><tr>
+<td><a href="#StandardReport">StandardReport</a></td>
+<td>Collect and print the results of the checks.</td>
+</tr><tr>
+<td><a href="#StyleGuide">StyleGuide</a></td>
+<td>Initialize a PEP-8 instance with few options.</td>
 </tr>
 </table>
 <h3>Functions</h3>
 <table>
 <tr>
+<td><a href="#_add_check">_add_check</a></td>
+<td></td>
+</tr><tr>
 <td><a href="#_main">_main</a></td>
 <td>Parse options and run checks on Python source.</td>
 </tr><tr>
 <td><a href="#blank_lines">blank_lines</a></td>
 <td></td>
 </tr><tr>
+<td><a href="#comparison_to_singleton">comparison_to_singleton</a></td>
+<td>Comparisons to singletons like None should always be done with "is" or "is not", never the equality operators.</td>
+</tr><tr>
+<td><a href="#comparison_type">comparison_type</a></td>
+<td>Object type comparisons should always use isinstance() instead of comparing types directly.</td>
+</tr><tr>
 <td><a href="#compound_statements">compound_statements</a></td>
 <td></td>
 </tr><tr>
-<td><a href="#excluded">excluded</a></td>
-<td>Check if options.exclude contains a pattern that matches filename.</td>
+<td><a href="#continued_indentation">continued_indentation</a></td>
+<td></td>
 </tr><tr>
 <td><a href="#expand_indent">expand_indent</a></td>
-<td>Return the amount of indentation.</td>
+<td></td>
+</tr><tr>
+<td><a href="#explicit_line_join">explicit_line_join</a></td>
+<td></td>
 </tr><tr>
 <td><a href="#extraneous_whitespace">extraneous_whitespace</a></td>
 <td>Avoid extraneous whitespace in the following situations:</td>
 </tr><tr>
 <td><a href="#filename_match">filename_match</a></td>
-<td>Check if options.filename contains a pattern that matches filename.</td>
-</tr><tr>
-<td><a href="#find_checks">find_checks</a></td>
-<td>Find all globally visible functions where the first argument name starts with argument_name.</td>
+<td>Check if patterns contains a pattern that matches filename.</td>
 </tr><tr>
 <td><a href="#getMessage">getMessage</a></td>
 <td>Function to get a translated and formatted message for a given code.</td>
 </tr><tr>
-<td><a href="#get_count">get_count</a></td>
-<td>Return the total count of errors and warnings.</td>
-</tr><tr>
-<td><a href="#get_error_statistics">get_error_statistics</a></td>
-<td>Get error statistics.</td>
-</tr><tr>
-<td><a href="#get_statistics">get_statistics</a></td>
-<td>Get statistics for message codes that start with the prefix.</td>
-</tr><tr>
-<td><a href="#get_warning_statistics">get_warning_statistics</a></td>
-<td>Get warning statistics.</td>
-</tr><tr>
-<td><a href="#ignore_code">ignore_code</a></td>
-<td>Check if options.ignore contains a prefix of the error code.</td>
+<td><a href="#get_parser">get_parser</a></td>
+<td></td>
 </tr><tr>
 <td><a href="#imports_on_separate_lines">imports_on_separate_lines</a></td>
 <td></td>
@@ -83,18 +95,12 @@
 <td><a href="#indentation">indentation</a></td>
 <td></td>
 </tr><tr>
-<td><a href="#input_dir">input_dir</a></td>
-<td>Check all Python source files in this directory and all subdirectories.</td>
-</tr><tr>
-<td><a href="#input_file">input_file</a></td>
-<td>Run all checks on a Python source file.</td>
+<td><a href="#init_checks_registry">init_checks_registry</a></td>
+<td>Register all globally visible functions where the first argument name is 'physical_line' or 'logical_line'.</td>
 </tr><tr>
 <td><a href="#maximum_line_length">maximum_line_length</a></td>
 <td>Limit all lines to a maximum of 79 characters.</td>
 </tr><tr>
-<td><a href="#message">message</a></td>
-<td>Print a message.</td>
-</tr><tr>
 <td><a href="#missing_newline">missing_newline</a></td>
 <td>JCR: The last line should have a newline.</td>
 </tr><tr>
@@ -107,20 +113,17 @@
 <td><a href="#mute_string">mute_string</a></td>
 <td>Replace contents with 'xxx' to prevent syntax matching.</td>
 </tr><tr>
-<td><a href="#print_benchmark">print_benchmark</a></td>
-<td>Print benchmark numbers.</td>
-</tr><tr>
-<td><a href="#print_statistics">print_statistics</a></td>
-<td>Print overall statistics (number of errors and warnings).</td>
+<td><a href="#parse_udiff">parse_udiff</a></td>
+<td>Return a dictionary of matching lines.</td>
 </tr><tr>
 <td><a href="#process_options">process_options</a></td>
 <td>Process options passed either via arglist or via command line args.</td>
 </tr><tr>
 <td><a href="#python_3000_backticks">python_3000_backticks</a></td>
-<td>Backticks are removed in Python 3000.</td>
+<td>Backticks are removed in Python 3.</td>
 </tr><tr>
 <td><a href="#python_3000_has_key">python_3000_has_key</a></td>
-<td>The {}.has_key() method will be removed in the future version of Python.</td>
+<td></td>
 </tr><tr>
 <td><a href="#python_3000_not_equal">python_3000_not_equal</a></td>
 <td>!= can also be written <>, but this is an obsolete usage kept for backwards compatibility only.</td>
@@ -128,20 +131,20 @@
 <td><a href="#python_3000_raise_comma">python_3000_raise_comma</a></td>
 <td>When raising an exception, use "raise ValueError('message')" instead of the older form "raise ValueError, 'message'".</td>
 </tr><tr>
+<td><a href="#read_config">read_config</a></td>
+<td>Read both user configuration and local configuration.</td>
+</tr><tr>
 <td><a href="#readlines">readlines</a></td>
 <td></td>
 </tr><tr>
 <td><a href="#readlines_1">readlines</a></td>
 <td></td>
 </tr><tr>
-<td><a href="#reset_counters">reset_counters</a></td>
-<td></td>
+<td><a href="#register_check">register_check</a></td>
+<td>Register a new check object.</td>
 </tr><tr>
-<td><a href="#run_tests">run_tests</a></td>
-<td>Run all the tests from a file.</td>
-</tr><tr>
-<td><a href="#selftest">selftest</a></td>
-<td>Test all check functions with test cases in docstrings.</td>
+<td><a href="#stdin_get_value">stdin_get_value</a></td>
+<td></td>
 </tr><tr>
 <td><a href="#tabs_obsolete">tabs_obsolete</a></td>
 <td></td>
@@ -158,6 +161,9 @@
 <td><a href="#whitespace_around_comma">whitespace_around_comma</a></td>
 <td>Avoid extraneous whitespace in the following situations:</td>
 </tr><tr>
+<td><a href="#whitespace_around_keywords">whitespace_around_keywords</a></td>
+<td></td>
+</tr><tr>
 <td><a href="#whitespace_around_named_parameter_equals">whitespace_around_named_parameter_equals</a></td>
 <td>Don't use spaces around the '=' sign when used to indicate a keyword argument or a default parameter value.</td>
 </tr><tr>
@@ -172,6 +178,131 @@
 </tr>
 </table>
 <hr /><hr />
+<a NAME="BaseReport" ID="BaseReport"></a>
+<h2>BaseReport</h2>
+<p>
+Collect the results of the checks.
+</p>
+<h3>Derived from</h3>
+object
+<h3>Class Attributes</h3>
+<table>
+<tr><td>print_filename</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#BaseReport.__init__">BaseReport</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#BaseReport.error">error</a></td>
+<td>Report an error, according to options.</td>
+</tr><tr>
+<td><a href="#BaseReport.error_args">error_args</a></td>
+<td>Report an error, according to options.</td>
+</tr><tr>
+<td><a href="#BaseReport.get_count">get_count</a></td>
+<td>Return the total count of errors and warnings.</td>
+</tr><tr>
+<td><a href="#BaseReport.get_file_results">get_file_results</a></td>
+<td>Return the count of errors and warnings for this file.</td>
+</tr><tr>
+<td><a href="#BaseReport.get_statistics">get_statistics</a></td>
+<td>Get statistics for message codes that start with the prefix.</td>
+</tr><tr>
+<td><a href="#BaseReport.increment_logical_line">increment_logical_line</a></td>
+<td>Signal a new logical line.</td>
+</tr><tr>
+<td><a href="#BaseReport.init_file">init_file</a></td>
+<td>Signal a new file.</td>
+</tr><tr>
+<td><a href="#BaseReport.print_benchmark">print_benchmark</a></td>
+<td>Print benchmark numbers.</td>
+</tr><tr>
+<td><a href="#BaseReport.print_statistics">print_statistics</a></td>
+<td>Print overall statistics (number of errors and warnings).</td>
+</tr><tr>
+<td><a href="#BaseReport.start">start</a></td>
+<td>Start the timer.</td>
+</tr><tr>
+<td><a href="#BaseReport.stop">stop</a></td>
+<td>Stop the timer.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="BaseReport.__init__" ID="BaseReport.__init__"></a>
+<h4>BaseReport (Constructor)</h4>
+<b>BaseReport</b>(<i>options</i>)
+<a NAME="BaseReport.error" ID="BaseReport.error"></a>
+<h4>BaseReport.error</h4>
+<b>error</b>(<i>line_number, offset, text, check</i>)
+<p>
+Report an error, according to options.
+</p><a NAME="BaseReport.error_args" ID="BaseReport.error_args"></a>
+<h4>BaseReport.error_args</h4>
+<b>error_args</b>(<i>line_number, offset, code, check, *args</i>)
+<p>
+Report an error, according to options.
+</p><a NAME="BaseReport.get_count" ID="BaseReport.get_count"></a>
+<h4>BaseReport.get_count</h4>
+<b>get_count</b>(<i>prefix=''</i>)
+<p>
+Return the total count of errors and warnings.
+</p><a NAME="BaseReport.get_file_results" ID="BaseReport.get_file_results"></a>
+<h4>BaseReport.get_file_results</h4>
+<b>get_file_results</b>(<i></i>)
+<p>
+Return the count of errors and warnings for this file.
+</p><a NAME="BaseReport.get_statistics" ID="BaseReport.get_statistics"></a>
+<h4>BaseReport.get_statistics</h4>
+<b>get_statistics</b>(<i>prefix=''</i>)
+<p>
+        Get statistics for message codes that start with the prefix.
+</p><p>
+        prefix='' matches all errors and warnings
+        prefix='E' matches all errors
+        prefix='W' matches all warnings
+        prefix='E4' matches all errors that have to do with imports
+</p><a NAME="BaseReport.increment_logical_line" ID="BaseReport.increment_logical_line"></a>
+<h4>BaseReport.increment_logical_line</h4>
+<b>increment_logical_line</b>(<i></i>)
+<p>
+Signal a new logical line.
+</p><a NAME="BaseReport.init_file" ID="BaseReport.init_file"></a>
+<h4>BaseReport.init_file</h4>
+<b>init_file</b>(<i>filename, lines, expected, line_offset</i>)
+<p>
+Signal a new file.
+</p><a NAME="BaseReport.print_benchmark" ID="BaseReport.print_benchmark"></a>
+<h4>BaseReport.print_benchmark</h4>
+<b>print_benchmark</b>(<i></i>)
+<p>
+Print benchmark numbers.
+</p><a NAME="BaseReport.print_statistics" ID="BaseReport.print_statistics"></a>
+<h4>BaseReport.print_statistics</h4>
+<b>print_statistics</b>(<i>prefix=''</i>)
+<p>
+Print overall statistics (number of errors and warnings).
+</p><a NAME="BaseReport.start" ID="BaseReport.start"></a>
+<h4>BaseReport.start</h4>
+<b>start</b>(<i></i>)
+<p>
+Start the timer.
+</p><a NAME="BaseReport.stop" ID="BaseReport.stop"></a>
+<h4>BaseReport.stop</h4>
+<b>stop</b>(<i></i>)
+<p>
+Stop the timer.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="Checker" ID="Checker"></a>
 <h2>Checker</h2>
 <p>
@@ -199,20 +330,26 @@
 <td><a href="#Checker.check_all">check_all</a></td>
 <td>Run all checks on the input file.</td>
 </tr><tr>
+<td><a href="#Checker.check_ast">check_ast</a></td>
+<td></td>
+</tr><tr>
 <td><a href="#Checker.check_logical">check_logical</a></td>
 <td>Build a line from tokens and run all logical checks on it.</td>
 </tr><tr>
 <td><a href="#Checker.check_physical">check_physical</a></td>
 <td>Run all physical checks on a raw input line.</td>
 </tr><tr>
+<td><a href="#Checker.generate_tokens">generate_tokens</a></td>
+<td></td>
+</tr><tr>
 <td><a href="#Checker.readline">readline</a></td>
 <td>Get the next line from the input buffer.</td>
 </tr><tr>
 <td><a href="#Checker.readline_check_physical">readline_check_physical</a></td>
 <td>Check and return the next physical line.</td>
 </tr><tr>
-<td><a href="#Checker.report_error">report_error</a></td>
-<td>Report an error, according to options.</td>
+<td><a href="#Checker.report_invalid_syntax">report_invalid_syntax</a></td>
+<td></td>
 </tr><tr>
 <td><a href="#Checker.run_check">run_check</a></td>
 <td>Run a check plugin.</td>
@@ -224,7 +361,7 @@
 </table>
 <a NAME="Checker.__init__" ID="Checker.__init__"></a>
 <h4>Checker (Constructor)</h4>
-<b>Checker</b>(<i>filename, lines=None</i>)
+<b>Checker</b>(<i>filename=None, lines=None, options=None, report=None, **kwargs</i>)
 <a NAME="Checker.build_tokens_line" ID="Checker.build_tokens_line"></a>
 <h4>Checker.build_tokens_line</h4>
 <b>build_tokens_line</b>(<i></i>)
@@ -235,7 +372,10 @@
 <b>check_all</b>(<i>expected=None, line_offset=0</i>)
 <p>
         Run all checks on the input file.
-</p><a NAME="Checker.check_logical" ID="Checker.check_logical"></a>
+</p><a NAME="Checker.check_ast" ID="Checker.check_ast"></a>
+<h4>Checker.check_ast</h4>
+<b>check_ast</b>(<i></i>)
+<a NAME="Checker.check_logical" ID="Checker.check_logical"></a>
 <h4>Checker.check_logical</h4>
 <b>check_logical</b>(<i></i>)
 <p>
@@ -245,7 +385,10 @@
 <b>check_physical</b>(<i>line</i>)
 <p>
         Run all physical checks on a raw input line.
-</p><a NAME="Checker.readline" ID="Checker.readline"></a>
+</p><a NAME="Checker.generate_tokens" ID="Checker.generate_tokens"></a>
+<h4>Checker.generate_tokens</h4>
+<b>generate_tokens</b>(<i></i>)
+<a NAME="Checker.readline" ID="Checker.readline"></a>
 <h4>Checker.readline</h4>
 <b>readline</b>(<i></i>)
 <p>
@@ -256,12 +399,10 @@
 <p>
         Check and return the next physical line. This method can be
         used to feed tokenize.generate_tokens.
-</p><a NAME="Checker.report_error" ID="Checker.report_error"></a>
-<h4>Checker.report_error</h4>
-<b>report_error</b>(<i>line_number, offset, text, check</i>)
-<p>
-        Report an error, according to options.
-</p><a NAME="Checker.run_check" ID="Checker.run_check"></a>
+</p><a NAME="Checker.report_invalid_syntax" ID="Checker.report_invalid_syntax"></a>
+<h4>Checker.report_invalid_syntax</h4>
+<b>report_invalid_syntax</b>(<i></i>)
+<a NAME="Checker.run_check" ID="Checker.run_check"></a>
 <h4>Checker.run_check</h4>
 <b>run_check</b>(<i>check, argument_names</i>)
 <p>
@@ -269,52 +410,306 @@
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="DiffReport" ID="DiffReport"></a>
+<h2>DiffReport</h2>
+<p>
+Collect and print the results for the changed lines only.
+</p>
+<h3>Derived from</h3>
+StandardReport
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#DiffReport.__init__">DiffReport</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#DiffReport.error">error</a></td>
+<td></td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="DiffReport.__init__" ID="DiffReport.__init__"></a>
+<h4>DiffReport (Constructor)</h4>
+<b>DiffReport</b>(<i>options</i>)
+<a NAME="DiffReport.error" ID="DiffReport.error"></a>
+<h4>DiffReport.error</h4>
+<b>error</b>(<i>line_number, offset, text, check</i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="FileReport" ID="FileReport"></a>
+<h2>FileReport</h2>
+<p>
+Collect the results of the checks and print only the filenames.
+</p>
+<h3>Derived from</h3>
+BaseReport
+<h3>Class Attributes</h3>
+<table>
+<tr><td>print_filename</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="StandardReport" ID="StandardReport"></a>
+<h2>StandardReport</h2>
+<p>
+Collect and print the results of the checks.
+</p>
+<h3>Derived from</h3>
+BaseReport
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#StandardReport.__init__">StandardReport</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#StandardReport.error">error</a></td>
+<td>Report an error, according to options.</td>
+</tr><tr>
+<td><a href="#StandardReport.error_args">error_args</a></td>
+<td>Report an error, according to options.</td>
+</tr><tr>
+<td><a href="#StandardReport.get_file_results">get_file_results</a></td>
+<td>Print the result and return the overall count for this file.</td>
+</tr><tr>
+<td><a href="#StandardReport.init_file">init_file</a></td>
+<td>Signal a new file.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="StandardReport.__init__" ID="StandardReport.__init__"></a>
+<h4>StandardReport (Constructor)</h4>
+<b>StandardReport</b>(<i>options</i>)
+<a NAME="StandardReport.error" ID="StandardReport.error"></a>
+<h4>StandardReport.error</h4>
+<b>error</b>(<i>line_number, offset, text, check</i>)
+<p>
+Report an error, according to options.
+</p><a NAME="StandardReport.error_args" ID="StandardReport.error_args"></a>
+<h4>StandardReport.error_args</h4>
+<b>error_args</b>(<i>line_number, offset, code, check, *args</i>)
+<p>
+Report an error, according to options.
+</p><a NAME="StandardReport.get_file_results" ID="StandardReport.get_file_results"></a>
+<h4>StandardReport.get_file_results</h4>
+<b>get_file_results</b>(<i></i>)
+<p>
+Print the result and return the overall count for this file.
+</p><a NAME="StandardReport.init_file" ID="StandardReport.init_file"></a>
+<h4>StandardReport.init_file</h4>
+<b>init_file</b>(<i>filename, lines, expected, line_offset</i>)
+<p>
+Signal a new file.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="StyleGuide" ID="StyleGuide"></a>
+<h2>StyleGuide</h2>
+<p>
+Initialize a PEP-8 instance with few options.
+</p>
+<h3>Derived from</h3>
+object
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#StyleGuide.__init__">StyleGuide</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#StyleGuide.check_files">check_files</a></td>
+<td>Run all checks on the paths.</td>
+</tr><tr>
+<td><a href="#StyleGuide.excluded">excluded</a></td>
+<td>Check if options.exclude contains a pattern that matches filename.</td>
+</tr><tr>
+<td><a href="#StyleGuide.get_checks">get_checks</a></td>
+<td>Find all globally visible functions where the first argument name starts with argument_name and which contain selected tests.</td>
+</tr><tr>
+<td><a href="#StyleGuide.ignore_code">ignore_code</a></td>
+<td>Check if the error code should be ignored.</td>
+</tr><tr>
+<td><a href="#StyleGuide.init_report">init_report</a></td>
+<td>Initialize the report instance.</td>
+</tr><tr>
+<td><a href="#StyleGuide.input_dir">input_dir</a></td>
+<td>Check all files in this directory and all subdirectories.</td>
+</tr><tr>
+<td><a href="#StyleGuide.input_file">input_file</a></td>
+<td>Run all checks on a Python source file.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="StyleGuide.__init__" ID="StyleGuide.__init__"></a>
+<h4>StyleGuide (Constructor)</h4>
+<b>StyleGuide</b>(<i>*args, **kwargs</i>)
+<a NAME="StyleGuide.check_files" ID="StyleGuide.check_files"></a>
+<h4>StyleGuide.check_files</h4>
+<b>check_files</b>(<i>paths=None</i>)
+<p>
+Run all checks on the paths.
+</p><a NAME="StyleGuide.excluded" ID="StyleGuide.excluded"></a>
+<h4>StyleGuide.excluded</h4>
+<b>excluded</b>(<i>filename, parent=None</i>)
+<p>
+        Check if options.exclude contains a pattern that matches filename.
+</p><a NAME="StyleGuide.get_checks" ID="StyleGuide.get_checks"></a>
+<h4>StyleGuide.get_checks</h4>
+<b>get_checks</b>(<i>argument_name</i>)
+<p>
+        Find all globally visible functions where the first argument name
+        starts with argument_name and which contain selected tests.
+</p><a NAME="StyleGuide.ignore_code" ID="StyleGuide.ignore_code"></a>
+<h4>StyleGuide.ignore_code</h4>
+<b>ignore_code</b>(<i>code</i>)
+<p>
+        Check if the error code should be ignored.
+</p><p>
+        If 'options.select' contains a prefix of the error code,
+        return False.  Else, if 'options.ignore' contains a prefix of
+        the error code, return True.
+</p><a NAME="StyleGuide.init_report" ID="StyleGuide.init_report"></a>
+<h4>StyleGuide.init_report</h4>
+<b>init_report</b>(<i>reporter=None</i>)
+<p>
+Initialize the report instance.
+</p><a NAME="StyleGuide.input_dir" ID="StyleGuide.input_dir"></a>
+<h4>StyleGuide.input_dir</h4>
+<b>input_dir</b>(<i>dirname</i>)
+<p>
+Check all files in this directory and all subdirectories.
+</p><a NAME="StyleGuide.input_file" ID="StyleGuide.input_file"></a>
+<h4>StyleGuide.input_file</h4>
+<b>input_file</b>(<i>filename, lines=None, expected=None, line_offset=0</i>)
+<p>
+Run all checks on a Python source file.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="_add_check" ID="_add_check"></a>
+<h2>_add_check</h2>
+<b>_add_check</b>(<i>check, kind, codes, args</i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="_main" ID="_main"></a>
 <h2>_main</h2>
 <b>_main</b>(<i></i>)
 <p>
-    Parse options and run checks on Python source.
+Parse options and run checks on Python source.
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
 <a NAME="blank_lines" ID="blank_lines"></a>
 <h2>blank_lines</h2>
-<b>blank_lines</b>(<i>logical_line, blank_lines, indent_level, line_number, previous_logical, previous_indent_level, blank_lines_before_comment</i>)
+<b>blank_lines</b>(<i>logical_line, blank_lines, indent_level, line_number, previous_logical, previous_indent_level</i>)
 
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="comparison_to_singleton" ID="comparison_to_singleton"></a>
+<h2>comparison_to_singleton</h2>
+<b>comparison_to_singleton</b>(<i>logical_line, noqa</i>)
+<p>
+    Comparisons to singletons like None should always be done
+    with "is" or "is not", never the equality operators.
+</p><p>
+    Okay: if arg is not None:
+    E711: if arg != None:
+    E712: if arg == True:
+</p><p>
+    Also, beware of writing if x when you really mean if x is not None --
+    e.g. when testing whether a variable or argument that defaults to None was
+    set to some other value.  The other value might have a type (such as a
+    container) that could be false in a boolean context!
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="comparison_type" ID="comparison_type"></a>
+<h2>comparison_type</h2>
+<b>comparison_type</b>(<i>logical_line</i>)
+<p>
+    Object type comparisons should always use isinstance() instead of
+    comparing types directly.
+</p><p>
+    Okay: if isinstance(obj, int):
+    E721: if type(obj) is type(1):
+</p><p>
+    When checking if an object is a string, keep in mind that it might be a
+    unicode string too! In Python 2.3, str and unicode have a common base
+    class, basestring, so you can do:
+</p><p>
+    Okay: if isinstance(obj, basestring):
+    Okay: if type(a1) is type(b1):
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="compound_statements" ID="compound_statements"></a>
 <h2>compound_statements</h2>
 <b>compound_statements</b>(<i>logical_line</i>)
 
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
-<a NAME="excluded" ID="excluded"></a>
-<h2>excluded</h2>
-<b>excluded</b>(<i>filename</i>)
-<p>
-    Check if options.exclude contains a pattern that matches filename.
-</p>
+<a NAME="continued_indentation" ID="continued_indentation"></a>
+<h2>continued_indentation</h2>
+<b>continued_indentation</b>(<i>logical_line, tokens, indent_level, hang_closing, noqa, verbose</i>)
+
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
 <a NAME="expand_indent" ID="expand_indent"></a>
 <h2>expand_indent</h2>
 <b>expand_indent</b>(<i>line</i>)
-<p>
-    Return the amount of indentation.
-    Tabs are expanded to the next multiple of 8.
-</p><p>
-    >>> expand_indent('    ')
-    4
-    >>> expand_indent('\\t')
-    8
-    >>> expand_indent('    \\t')
-    8
-    >>> expand_indent('       \\t')
-    8
-    >>> expand_indent('        \\t')
-    16
-</p>
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="explicit_line_join" ID="explicit_line_join"></a>
+<h2>explicit_line_join</h2>
+<b>explicit_line_join</b>(<i>logical_line, tokens</i>)
+
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
 <a NAME="extraneous_whitespace" ID="extraneous_whitespace"></a>
@@ -343,19 +738,10 @@
 <hr /><hr />
 <a NAME="filename_match" ID="filename_match"></a>
 <h2>filename_match</h2>
-<b>filename_match</b>(<i>filename</i>)
+<b>filename_match</b>(<i>filename, patterns, default=True</i>)
 <p>
-    Check if options.filename contains a pattern that matches filename.
-    If options.filename is unspecified, this always returns True.
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="find_checks" ID="find_checks"></a>
-<h2>find_checks</h2>
-<b>find_checks</b>(<i>argument_name</i>)
-<p>
-    Find all globally visible functions where the first argument name
-    starts with argument_name.
+    Check if patterns contains a pattern that matches filename.
+    If patterns is unspecified, this always returns True.
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
@@ -380,50 +766,10 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
-<a NAME="get_count" ID="get_count"></a>
-<h2>get_count</h2>
-<b>get_count</b>(<i>prefix=''</i>)
-<p>
-Return the total count of errors and warnings.
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="get_error_statistics" ID="get_error_statistics"></a>
-<h2>get_error_statistics</h2>
-<b>get_error_statistics</b>(<i></i>)
-<p>
-Get error statistics.
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="get_statistics" ID="get_statistics"></a>
-<h2>get_statistics</h2>
-<b>get_statistics</b>(<i>prefix=''</i>)
-<p>
-    Get statistics for message codes that start with the prefix.
-</p><p>
-    prefix='' matches all errors and warnings
-    prefix='E' matches all errors
-    prefix='W' matches all warnings
-    prefix='E4' matches all errors that have to do with imports
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="get_warning_statistics" ID="get_warning_statistics"></a>
-<h2>get_warning_statistics</h2>
-<b>get_warning_statistics</b>(<i></i>)
-<p>
-Get warning statistics.
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="ignore_code" ID="ignore_code"></a>
-<h2>ignore_code</h2>
-<b>ignore_code</b>(<i>code</i>)
-<p>
-    Check if options.ignore contains a prefix of the error code.
-    If options.select contains a prefix of the error code, do not ignore it.
-</p>
+<a NAME="get_parser" ID="get_parser"></a>
+<h2>get_parser</h2>
+<b>get_parser</b>(<i>prog='pep8', version=__version__</i>)
+
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
 <a NAME="imports_on_separate_lines" ID="imports_on_separate_lines"></a>
@@ -438,25 +784,18 @@
 
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
-<a NAME="input_dir" ID="input_dir"></a>
-<h2>input_dir</h2>
-<b>input_dir</b>(<i>dirname, runner=None</i>)
+<a NAME="init_checks_registry" ID="init_checks_registry"></a>
+<h2>init_checks_registry</h2>
+<b>init_checks_registry</b>(<i></i>)
 <p>
-    Check all Python source files in this directory and all subdirectories.
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="input_file" ID="input_file"></a>
-<h2>input_file</h2>
-<b>input_file</b>(<i>filename</i>)
-<p>
-    Run all checks on a Python source file.
+    Register all globally visible functions where the first argument name
+    is 'physical_line' or 'logical_line'.
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
 <a NAME="maximum_line_length" ID="maximum_line_length"></a>
 <h2>maximum_line_length</h2>
-<b>maximum_line_length</b>(<i>physical_line</i>)
+<b>maximum_line_length</b>(<i>physical_line, max_line_length</i>)
 <p>
     Limit all lines to a maximum of 79 characters.
 </p><p>
@@ -466,14 +805,8 @@
     ugly.  Therefore, please limit all lines to a maximum of 79 characters.
     For flowing long blocks of text (docstrings or comments), limiting the
     length to 72 characters is recommended.
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="message" ID="message"></a>
-<h2>message</h2>
-<b>message</b>(<i>text</i>)
-<p>
-Print a message.
+</p><p>
+    Reports error E501.
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
@@ -482,6 +815,8 @@
 <b>missing_newline</b>(<i>physical_line</i>)
 <p>
     JCR: The last line should have a newline.
+</p><p>
+    Reports warning W292.
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
@@ -499,6 +834,7 @@
     Okay: a[1:4:2]
     E231: ['a','b']
     E231: foo(bar,baz)
+    E231: [{'a':'b'}]
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
@@ -523,27 +859,19 @@
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
-<a NAME="print_benchmark" ID="print_benchmark"></a>
-<h2>print_benchmark</h2>
-<b>print_benchmark</b>(<i>elapsed</i>)
+<a NAME="parse_udiff" ID="parse_udiff"></a>
+<h2>parse_udiff</h2>
+<b>parse_udiff</b>(<i>diff, patterns=None, parent='.'</i>)
 <p>
-    Print benchmark numbers.
-</p>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="print_statistics" ID="print_statistics"></a>
-<h2>print_statistics</h2>
-<b>print_statistics</b>(<i>prefix=''</i>)
-<p>
-Print overall statistics (number of errors and warnings).
+Return a dictionary of matching lines.
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
 <a NAME="process_options" ID="process_options"></a>
 <h2>process_options</h2>
-<b>process_options</b>(<i>arglist=None</i>)
+<b>process_options</b>(<i>arglist=None, parse_argv=False, config_file=None, parser=None</i>)
 <p>
-    Process options passed either via arglist or via command line args.
+Process options passed either via arglist or via command line args.
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
@@ -551,21 +879,18 @@
 <h2>python_3000_backticks</h2>
 <b>python_3000_backticks</b>(<i>logical_line</i>)
 <p>
-    Backticks are removed in Python 3000.
+    Backticks are removed in Python 3.
     Use repr() instead.
+</p><p>
+    Okay: val = repr(1 + 2)
+    W604: val = `1 + 2`
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
 <a NAME="python_3000_has_key" ID="python_3000_has_key"></a>
 <h2>python_3000_has_key</h2>
 <b>python_3000_has_key</b>(<i>logical_line</i>)
-<p>
-    The {}.has_key() method will be removed in the future version of
-    Python. Use the 'in' operation instead, like:
-    d = {"a": 1, "b": 2}
-    if "b" in d:
-        print d["b"]
-</p>
+
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
 <a NAME="python_3000_not_equal" ID="python_3000_not_equal"></a>
@@ -574,7 +899,10 @@
 <p>
     != can also be written <>, but this is an obsolete usage kept for
     backwards compatibility only. New code should always use !=.
-    The older syntax is removed in Python 3000.
+    The older syntax is removed in Python 3.
+</p><p>
+    Okay: if a != 'no':
+    W603: if a <> 'no':
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
@@ -588,7 +916,18 @@
     The paren-using form is preferred because when the exception arguments
     are long or include string formatting, you don't need to use line
     continuation characters thanks to the containing parentheses.  The older
-    form will be removed in Python 3000.
+    form is removed in Python 3.
+</p><p>
+    Okay: raise DummyError("Message")
+    W602: raise DummyError, "Message"
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="read_config" ID="read_config"></a>
+<h2>read_config</h2>
+<b>read_config</b>(<i>options, args, arglist, parser</i>)
+<p>
+Read both user configuration and local configuration.
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
@@ -604,40 +943,18 @@
 
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
-<a NAME="reset_counters" ID="reset_counters"></a>
-<h2>reset_counters</h2>
-<b>reset_counters</b>(<i></i>)
-
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="run_tests" ID="run_tests"></a>
-<h2>run_tests</h2>
-<b>run_tests</b>(<i>filename</i>)
+<a NAME="register_check" ID="register_check"></a>
+<h2>register_check</h2>
+<b>register_check</b>(<i>check, codes=None</i>)
 <p>
-    Run all the tests from a file.
-</p><p>
-    A test file can provide many tests.  Each test starts with a declaration.
-    This declaration is a single line starting with '#:'.
-    It declares codes of expected failures, separated by spaces or 'Okay'
-    if no failure is expected.
-    If the file does not contain such declaration, it should pass all tests.
-    If the declaration is empty, following lines are not checked, until next
-    declaration.
-</p><p>
-    Examples:
-</p><p>
-     * Only E224 and W701 are expected:         #: E224 W701
-     * Following example is conform:            #: Okay
-     * Don't check these lines:                 #:
+    Register a new check object.
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
-<a NAME="selftest" ID="selftest"></a>
-<h2>selftest</h2>
-<b>selftest</b>(<i></i>)
-<p>
-    Test all check functions with test cases in docstrings.
-</p>
+<a NAME="stdin_get_value" ID="stdin_get_value"></a>
+<h2>stdin_get_value</h2>
+<b>stdin_get_value</b>(<i></i>)
+
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
 <a NAME="tabs_obsolete" ID="tabs_obsolete"></a>
@@ -682,9 +999,15 @@
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="whitespace_around_keywords" ID="whitespace_around_keywords"></a>
+<h2>whitespace_around_keywords</h2>
+<b>whitespace_around_keywords</b>(<i>logical_line</i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="whitespace_around_named_parameter_equals" ID="whitespace_around_named_parameter_equals"></a>
 <h2>whitespace_around_named_parameter_equals</h2>
-<b>whitespace_around_named_parameter_equals</b>(<i>logical_line</i>)
+<b>whitespace_around_named_parameter_equals</b>(<i>logical_line, tokens</i>)
 <p>
     Don't use spaces around the '=' sign when used to indicate a
     keyword argument or a default parameter value.
--- a/Documentation/Source/eric5.Project.Project.html	Mon Aug 12 22:21:53 2013 +0200
+++ b/Documentation/Source/eric5.Project.Project.html	Sun Sep 08 19:04:07 2013 +0200
@@ -74,6 +74,9 @@
 </dd><dt>projectAboutToBeCreated()</dt>
 <dd>
 emitted just before the project will be created
+</dd><dt>projectChanged()</dt>
+<dd>
+emitted to signal a change of the project
 </dd><dt>projectClosed()</dt>
 <dd>
 emitted after a project was closed
@@ -320,6 +323,9 @@
 <td><a href="#Project.__syncRecent">__syncRecent</a></td>
 <td>Private method to synchronize the list of recently opened projects with the central store.</td>
 </tr><tr>
+<td><a href="#Project.__vcsStatusChanged">__vcsStatusChanged</a></td>
+<td>Private slot to handle a change of the overall VCS status.</td>
+</tr><tr>
 <td><a href="#Project.__writeDebugProperties">__writeDebugProperties</a></td>
 <td>Private method to write the project debugger properties file (.e4d)</td>
 </tr><tr>
@@ -1073,6 +1079,11 @@
 <p>
         Private method to synchronize the list of recently opened projects
         with the central store.
+</p><a NAME="Project.__vcsStatusChanged" ID="Project.__vcsStatusChanged"></a>
+<h4>Project.__vcsStatusChanged</h4>
+<b>__vcsStatusChanged</b>(<i></i>)
+<p>
+        Private slot to handle a change of the overall VCS status.
 </p><a NAME="Project.__writeDebugProperties" ID="Project.__writeDebugProperties"></a>
 <h4>Project.__writeDebugProperties</h4>
 <b>__writeDebugProperties</b>(<i>quiet=False</i>)
--- a/Documentation/Source/eric5.Utilities.__init__.html	Mon Aug 12 22:21:53 2013 +0200
+++ b/Documentation/Source/eric5.Utilities.__init__.html	Sun Sep 08 19:04:07 2013 +0200
@@ -194,7 +194,7 @@
 <td>Module function for starting Qt tools that are Mac OS X bundles.</td>
 </tr><tr>
 <td><a href="#readEncodedFileWithHash">readEncodedFileWithHash</a></td>
-<td>Function to read a file, calculate a hash value and decode it's contents into proper text.</td>
+<td>Function to read a file, calculate a hash value and decode its contents into proper text.</td>
 </tr><tr>
 <td><a href="#readStringFromStream">readStringFromStream</a></td>
 <td>Module function to read a string from the given stream.</td>
@@ -1312,7 +1312,7 @@
 <h2>readEncodedFileWithHash</h2>
 <b>readEncodedFileWithHash</b>(<i>filename</i>)
 <p>
-    Function to read a file, calculate a hash value and decode it's contents
+    Function to read a file, calculate a hash value and decode its contents
     into proper text.
 </p><dl>
 <dt><i>filename</i></dt>
--- a/Documentation/Source/eric5.VCS.VersionControl.html	Mon Aug 12 22:21:53 2013 +0200
+++ b/Documentation/Source/eric5.VCS.VersionControl.html	Sun Sep 08 19:04:07 2013 +0200
@@ -50,7 +50,10 @@
     and the common methods.
 </p><h3>Signals</h3>
 <dl>
-<dt>vcsStatusMonitorData(list of str)</dt>
+<dt>vcsStatusChanged()</dt>
+<dd>
+emitted to indicate a change of the overall VCS status
+</dd><dt>vcsStatusMonitorData(list of str)</dt>
 <dd>
 emitted to update the VCS status
 </dd><dt>vcsStatusMonitorStatus(str, str)</dt>
--- a/Documentation/Source/index-eric5.Plugins.CheckerPlugins.Pep8.html	Mon Aug 12 22:21:53 2013 +0200
+++ b/Documentation/Source/index-eric5.Plugins.CheckerPlugins.Pep8.html	Sun Sep 08 19:04:07 2013 +0200
@@ -28,9 +28,6 @@
 <h3>Modules</h3>
 <table>
 <tr>
-<td><a href="eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.html">Pep8Checker</a></td>
-<td>Module implementing the PEP 8 checker.</td>
-</tr><tr>
 <td><a href="eric5.Plugins.CheckerPlugins.Pep8.Pep8CodeSelectionDialog.html">Pep8CodeSelectionDialog</a></td>
 <td>Module implementing a dialog to select PEP 8 message codes.</td>
 </tr><tr>
--- a/E5Network/E5Ftp.py	Mon Aug 12 22:21:53 2013 +0200
+++ b/E5Network/E5Ftp.py	Sun Sep 08 19:04:07 2013 +0200
@@ -75,6 +75,8 @@
         @param proxyAccount accounting info for the proxy (string)
         @param timeout timeout in seconds for blocking operations (integer)
         """
+        super(E5Ftp, self).__init__()
+        
         self.__timeout = timeout
         
         self.__proxyType = proxyType
--- a/PluginManager/PluginInstallDialog.py	Mon Aug 12 22:21:53 2013 +0200
+++ b/PluginManager/PluginInstallDialog.py	Sun Sep 08 19:04:07 2013 +0200
@@ -14,6 +14,7 @@
 import shutil
 import zipfile
 import compileall
+import glob
 try:  # Py3
     import urllib.parse as parse
 except (ImportError):
@@ -299,6 +300,7 @@
         internalPackages = []
         needsRestart = False
         pyqtApi = 0
+        doCompile = True
         for line in pluginSource.splitlines():
             if line.startswith("packageName"):
                 tokens = line.split("=")
@@ -322,6 +324,10 @@
                     pyqtApi = int(tokens[1].strip())
                 except ValueError:
                     pass
+            elif line.startswith("doNotCompile"):
+                tokens = line.split("=")
+                if tokens[1].strip() == "True":
+                    doCompile = False
             elif line.startswith("# End-Of-Header"):
                 break
         
@@ -439,7 +445,9 @@
                 False
         
         # now compile the plugins
-        compileall.compile_dir(destination, quiet=True)
+        if doCompile:
+            compileall.compile_dir(os.path.join(destination, packageName), quiet=True)
+            compileall.compile_file(os.path.join(destination, pluginFileName), quiet=True)
         
         if not self.__external:
             # now load and activate the plugin
@@ -507,6 +515,16 @@
             if os.path.exists(fnamec):
                 os.remove(fnamec)
             
+            pluginDirCache = os.path.join(os.path.dirname(pluginFile), "__pycache__")
+            if os.path.exists(pluginDirCache):
+                pluginFileName = os.path.splitext(os.path.basename(pluginFile))[0]
+                for fnameo in glob.glob(
+                    os.path.join(pluginDirCache, "{0}*.pyo".format(pluginFileName))):
+                    os.remove(fnameo)
+                for fnamec in glob.glob(
+                    os.path.join(pluginDirCache, "{0}*.pyc".format(pluginFileName))):
+                    os.remove(fnamec)
+            
             os.remove(pluginFile)
         except (IOError, OSError, os.error):
             # ignore some exceptions
--- a/PluginManager/PluginUninstallDialog.py	Mon Aug 12 22:21:53 2013 +0200
+++ b/PluginManager/PluginUninstallDialog.py	Sun Sep 08 19:04:07 2013 +0200
@@ -13,6 +13,7 @@
 import os
 import imp
 import shutil
+import glob
 
 from PyQt4.QtCore import pyqtSlot, pyqtSignal
 from PyQt4.QtGui import QWidget, QDialog, QDialogButtonBox, QVBoxLayout
@@ -145,6 +146,16 @@
             if os.path.exists(fnamec):
                 os.remove(fnamec)
             
+            pluginDirCache = os.path.join(os.path.dirname(pluginFile), "__pycache__")
+            if os.path.exists(pluginDirCache):
+                pluginFileName = os.path.splitext(os.path.basename(pluginFile))[0]
+                for fnameo in glob.glob(
+                    os.path.join(pluginDirCache, "{0}*.pyo".format(pluginFileName))):
+                    os.remove(fnameo)
+                for fnamec in glob.glob(
+                    os.path.join(pluginDirCache, "{0}*.pyc".format(pluginFileName))):
+                    os.remove(fnamec)
+            
             os.remove(pluginFile)
         except OSError as err:
             E5MessageBox.critical(self,
--- a/Plugins/CheckerPlugins/Pep8/Pep8Checker.py	Mon Aug 12 22:21:53 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2011 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing the PEP 8 checker.
-"""
-
-try:
-    str = unicode
-except (NameError):
-    pass
-
-import optparse
-
-from . import pep8
-
-
-class Pep8Checker(pep8.Checker):
-    """
-    Class implementing the PEP 8 checker.
-    """
-    def __init__(self, filename, lines, repeat=False,
-                 select="", ignore=""):
-        """
-        Constructor
-        
-        @param filename name of the file to check (string)
-        @param lines source of the file (list of strings)
-        @keyparam repeat flag indicating to repeat message categories (boolean)
-        @keyparam select list of message IDs to check for
-            (comma separated string)
-        @keyparam ignore list of message IDs to ignore
-            (comma separated string)
-        """
-        pep8.options = optparse.Values()
-        
-        pep8.options.verbose = 0
-        
-        pep8.options.repeat = repeat
-        if select:
-            pep8.options.select = [s.strip() for s in select.split(',')
-                                   if s.strip()]
-        else:
-            pep8.options.select = []
-        if ignore:
-            pep8.options.ignore = [i.strip() for i in ignore.split(',')
-                                   if i.strip()]
-        else:
-            pep8.options.ignore = []
-        pep8.options.physical_checks = pep8.find_checks('physical_line')
-        pep8.options.logical_checks = pep8.find_checks('logical_line')
-        pep8.options.counters = dict.fromkeys(pep8.BENCHMARK_KEYS, 0)
-        pep8.options.messages = {}
-        
-        pep8.Checker.__init__(self, filename, lines)
-        
-        self.messages = []
-        self.statistics = {}
-    
-    def __ignore_code(self, code):
-        """
-        Private method to check, if the message for the given code should
-        be ignored.
-        
-        If codes are selected and the code has a selected prefix and does not
-        have an ignored prefix, it is not ignored. If codes are selected and
-        the code does not have a selected prefix, it is ignored. If no codes
-        are selected, the code is ignored, if it has a prefix, that is
-        contained in the ignored codes.
-        
-        @param code code to be checked (string)
-        @return flag indicating, that the code should be ignored (boolean)
-        """
-        if pep8.options.select:
-            if code.startswith(tuple(pep8.options.select)):
-                if code.startswith(tuple(pep8.options.ignore)):
-                    return True
-                else:
-                    return False
-            else:
-                return True
-        else:
-            if code.startswith(tuple(pep8.options.ignore)):
-                return True
-            else:
-                return False
-    
-    def report_error_args(self, line_number, offset, code, check, *args):
-        """
-        Public method to collect the error messages.
-        
-        @param line_number line number of the issue (integer)
-        @param offset position within line of the issue (integer)
-        @param code message code (string)
-        @param check reference to the checker function (function)
-        @param args arguments for the message (list)
-        """
-        if self.__ignore_code(code):
-            return
-        
-        text = pep8.getMessage(code, *args)
-        if code in self.statistics:
-            self.statistics[code] += 1
-        else:
-            self.statistics[code] = 1
-        self.file_errors += 1
-        if self.statistics[code] == 1 or pep8.options.repeat:
-            self.messages.append(
-                (self.filename, self.line_offset + line_number,
-                 offset + 1, text)
-            )
--- a/Plugins/CheckerPlugins/Pep8/Pep8Dialog.py	Mon Aug 12 22:21:53 2013 +0200
+++ b/Plugins/CheckerPlugins/Pep8/Pep8Dialog.py	Sun Sep 08 19:04:07 2013 +0200
@@ -11,7 +11,6 @@
 
 import os
 import fnmatch
-import tokenize
 
 from PyQt4.QtCore import pyqtSlot, Qt
 from PyQt4.QtGui import QDialog, QTreeWidgetItem, QAbstractButton, \
@@ -28,6 +27,40 @@
 import Utilities
 
 
+class Pep8Report(pep8.BaseReport):
+    """
+    Class implementing a special report to be used with our dialog.
+    """
+    def __init__(self, options):
+        """
+        Constructor
+        
+        @param options options for the report (optparse.Values)
+        """
+        super(Pep8Report, self).__init__(options)
+        
+        self.__repeat = options.repeat
+        self.errors = []
+    
+    def error_args(self, line_number, offset, code, check, *args):
+        """
+        Public method to collect the error messages.
+        
+        @param line_number line number of the issue (integer)
+        @param offset position within line of the issue (integer)
+        @param code message code (string)
+        @param check reference to the checker function (function)
+        @param args arguments for the message (list)
+        """
+        code = super(Pep8Report, self).error_args(line_number, offset, code, check, *args)
+        if code and (self.counters[code] == 1 or self.__repeat):
+            text = pep8.getMessage(code, *args)
+            self.errors.append(
+                (self.filename, line_number, offset, text)
+            )
+        return code
+
+
 class Pep8Dialog(QDialog, Ui_Pep8Dialog):
     """
     Class implementing a dialog to show the results of the PEP 8 check.
@@ -36,8 +69,8 @@
     lineRole = Qt.UserRole + 2
     positionRole = Qt.UserRole + 3
     messageRole = Qt.UserRole + 4
-    
-    settingsKey = "PEP8/"
+    fixableRole = Qt.UserRole + 5
+    codeRole = Qt.UserRole + 6
     
     def __init__(self, parent=None):
         """
@@ -103,6 +136,7 @@
             self.__lastFileItem.setExpanded(True)
             self.__lastFileItem.setData(0, self.filenameRole, file)
         
+        fixable = False
         code, message = message.split(None, 1)
         itm = QTreeWidgetItem(self.__lastFileItem,
             ["{0:6}".format(line), code, message])
@@ -114,6 +148,7 @@
             itm.setIcon(0, UI.PixmapCache.getIcon("issueFixed.png"))
         elif code in Pep8FixableIssues:
             itm.setIcon(0, UI.PixmapCache.getIcon("issueFixable.png"))
+            fixable = True
         
         itm.setTextAlignment(0, Qt.AlignRight)
         itm.setTextAlignment(1, Qt.AlignHCenter)
@@ -126,40 +161,24 @@
         itm.setData(0, self.lineRole, int(line))
         itm.setData(0, self.positionRole, int(pos))
         itm.setData(0, self.messageRole, message)
-
-    def __createErrorItem(self, file, line, pos, message):
-        """
-        Private method to create an entry in the result list.
-        
-        @param file file name of the file (string)
-        @param line line number of issue (integer or string)
-        @param pos character position of issue (integer or string)
-        @param message message text (string)
-        @param fixed flag indicating a fixed issue (boolean)
+        itm.setData(0, self.fixableRole, fixable)
+        itm.setData(0, self.codeRole, code)
+    
+    def __modifyFixedResultItem(self, itm, text):
         """
-        if self.__lastFileItem is None:
-            # It's a new file
-            self.__lastFileItem = QTreeWidgetItem(self.resultList, [file])
-            self.__lastFileItem.setFirstColumnSpanned(True)
-            self.__lastFileItem.setExpanded(True)
-            self.__lastFileItem.setData(0, self.filenameRole, file)
-        
-        itm = QTreeWidgetItem(self.__lastFileItem,
-            ["{0:6}".format(line), '', message])
-        itm.setIcon(0, UI.PixmapCache.getIcon("syntaxError.png"))
+        Private method to modify a result list entry to show its
+        positive fixed state.
         
-        itm.setTextAlignment(0, Qt.AlignRight)
-        itm.setTextAlignment(1, Qt.AlignHCenter)
+        @param itm reference to the item to modify (QTreeWidgetItem)
+        @param text text to be appended (string)
+        """
+        message = itm.data(0, self.messageRole) + text
+        itm.setText(2, message)
+        itm.setIcon(0, UI.PixmapCache.getIcon("issueFixed.png"))
         
-        itm.setTextAlignment(0, Qt.AlignVCenter)
-        itm.setTextAlignment(1, Qt.AlignVCenter)
-        itm.setTextAlignment(2, Qt.AlignVCenter)
-        
-        itm.setData(0, self.filenameRole, file)
-        itm.setData(0, self.lineRole, int(line))
-        itm.setData(0, self.positionRole, int(pos))
         itm.setData(0, self.messageRole, message)
-
+        itm.setData(0, self.fixableRole, False)
+    
     def __updateStatistics(self, statistics, fixer):
         """
         Private method to update the collected statistics.
@@ -179,6 +198,14 @@
         if fixer:
             self.__statistics["_IssuesFixed"] += fixer.fixed
     
+    def __updateFixerStatistics(self, fixer):
+        """
+        Private method to update the collected fixer related statistics.
+        
+        @param fixer reference to the PEP 8 fixer (Pep8Fixer)
+        """
+        self.__statistics["_IssuesFixed"] += fixer.fixed
+    
     def __resetStatistics(self):
         """
         Private slot to reset the statistics data.
@@ -205,8 +232,7 @@
         
         self.__data = self.__project.getData("CHECKERSPARMS", "Pep8Checker")
         if self.__data is None or \
-           "ExcludeFiles" not in self.__data or \
-           len(self.__data) != 6:
+           len(self.__data) < 6:
             # initialize the data structure
             self.__data = {
                 "ExcludeFiles": "",
@@ -216,12 +242,22 @@
                 "FixCodes": "",
                 "FixIssues": False,
             }
+        if "MaxLineLength" not in self.__data:
+            self.__data["MaxLineLength"] = pep8.MAX_LINE_LENGTH
+        if "HangClosing" not in self.__data:
+            self.__data["HangClosing"] = False
+        if "NoFixCodes" not in self.__data:
+            self.__data["NoFixCodes"] = "E501"
+        
         self.excludeFilesEdit.setText(self.__data["ExcludeFiles"])
         self.excludeMessagesEdit.setText(self.__data["ExcludeMessages"])
         self.includeMessagesEdit.setText(self.__data["IncludeMessages"])
         self.repeatCheckBox.setChecked(self.__data["RepeatMessages"])
         self.fixIssuesEdit.setText(self.__data["FixCodes"])
+        self.noFixIssuesEdit.setText(self.__data["NoFixCodes"])
         self.fixIssuesCheckBox.setChecked(self.__data["FixIssues"])
+        self.lineLengthSpinBox.setValue(self.__data["MaxLineLength"])
+        self.hangClosingCheckBox.setChecked(self.__data["HangClosing"])
     
     def start(self, fn, save=False, repeat=None):
         """
@@ -243,6 +279,7 @@
         self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True)
         self.statisticsButton.setEnabled(False)
         self.showButton.setEnabled(False)
+        self.fixButton.setEnabled(False)
         if repeat is not None:
             self.repeatCheckBox.setChecked(repeat)
         QApplication.processEvents()
@@ -282,7 +319,10 @@
             includeMessages = self.includeMessagesEdit.text()
             repeatMessages = self.repeatCheckBox.isChecked()
             fixCodes = self.fixIssuesEdit.text()
+            noFixCodes = self.noFixIssuesEdit.text()
             fixIssues = self.fixIssuesCheckBox.isChecked() and repeatMessages
+            maxLineLength = self.lineLengthSpinBox.value()
+            hangClosing = self.hangClosingCheckBox.isChecked()
             
             try:
                 # disable updates of the list for speed
@@ -315,50 +355,49 @@
                     if fixIssues:
                         from .Pep8Fixer import Pep8Fixer
                         fixer = Pep8Fixer(self.__project, file, source,
-                                          fixCodes, True)  # always fix in place
+                                          fixCodes, noFixCodes, maxLineLength,
+                                          True)  # always fix in place
                     else:
                         fixer = None
-                    from .Pep8Checker import Pep8Checker
-                    checker = Pep8Checker(file, source,
-                        repeat=repeatMessages,
-                        select=includeMessages,
-                        ignore=excludeMessages)
-                    try:
-                        checker.check_all()
-                    except tokenize.TokenError as msg:
-                        self.noResults = False
-                        self.__createErrorItem(file, 1, -1,
-                            self.trUtf8("Token Error: {0}".format(str(msg))))
-                    except IndentationError as err:
-                        self.noResults = False
-                        self.__createErrorItem(file, err.lineno, -1,
-                            self.trUtf8("Indentation Error: {0}".format(str(err.msg))))
-                    except Exception as err:
-                        self.noResults = False
-                        self.__createErrorItem(file, 1, -1,
-                            self.trUtf8("Unspecific Error: {0}".format(str(err))))
+                    if includeMessages:
+                        select = [s.strip() for s in includeMessages.split(',')
+                                  if s.strip()]
+                    else:
+                        select = []
+                    if excludeMessages:
+                        ignore = [i.strip() for i in excludeMessages.split(',')
+                                  if i.strip()]
                     else:
-                        checker.messages.sort(key=lambda a: a[1])
-                        for message in checker.messages:
-                            fname, lineno, position, text = message
-                            if lineno > len(source):
-                                lineno = len(source)
-                            if "__IGNORE_WARNING__" not in Utilities.extractLineFlags(
-                                    source[lineno - 1].strip()):
-                                self.noResults = False
-                                fixed = False
-                                if fixer:
-                                    fixed, msg = fixer.fixIssue(lineno, position, text)
-                                    if fixed:
-                                        text += "\n" + \
-                                                self.trUtf8("Fix: {0}").format(msg)
-                                self.__createResultItem(
-                                    fname, lineno, position, text, fixed)
-                        if fixer:
-                            fixer.saveFile(encoding)
-                        self.__updateStatistics(checker.statistics, fixer)
-                    finally:
-                        progress += 1
+                        ignore = []
+                    styleGuide = pep8.StyleGuide(
+                        reporter=Pep8Report,
+                        repeat=repeatMessages,
+                        select=select,
+                        ignore=ignore,
+                        max_line_length=maxLineLength,
+                        hang_closing=hangClosing,
+                    )
+                    report = styleGuide.check_files([file])
+                    report.errors.sort(key=lambda a: a[1])
+
+                    for fname, lineno, position, text in report.errors:
+                        if lineno > len(source):
+                            lineno = len(source)
+                        if "__IGNORE_WARNING__" not in Utilities.extractLineFlags(
+                                source[lineno - 1].strip()):
+                            self.noResults = False
+                            fixed = False
+                            if fixer:
+                                fixed, msg = fixer.fixIssue(lineno, position, text)
+                                if fixed:
+                                    text += "\n" + \
+                                            self.trUtf8("Fix: {0}").format(msg)
+                            self.__createResultItem(
+                                fname, lineno, position, text, fixed)
+                    if fixer:
+                        fixer.saveFile(encoding)
+                    self.__updateStatistics(report.counters, fixer)
+                    progress += 1
             finally:
                 # reenable updates of the list
                 self.resultList.setSortingEnabled(True)
@@ -407,7 +446,10 @@
                 "IncludeMessages": self.includeMessagesEdit.text(),
                 "RepeatMessages": self.repeatCheckBox.isChecked(),
                 "FixCodes": self.fixIssuesEdit.text(),
+                "NoFixCodes": self.noFixIssuesEdit.text(),
                 "FixIssues": self.fixIssuesCheckBox.isChecked(),
+                "MaxLineLength": self.lineLengthSpinBox.value(),
+                "HangClosing": self.hangClosingCheckBox.isChecked(),
             }
             if data != self.__data:
                 self.__data = data
@@ -419,17 +461,26 @@
         self.cancelled = False
         self.start(self.__fileOrFileList)
     
+    def __selectCodes(self, edit, showFixCodes):
+        """
+        Private method to select message codes via a selection dialog.
+        
+        @param edit reference of the line edit to be populated (QLineEdit)
+        @param showFixCodes flag indicating to show a list of fixable
+            issues (boolean)
+        """
+        from .Pep8CodeSelectionDialog import Pep8CodeSelectionDialog
+        dlg = Pep8CodeSelectionDialog(edit.text(), showFixCodes, self)
+        if dlg.exec_() == QDialog.Accepted:
+            edit.setText(dlg.getSelectedCodes())
+    
     @pyqtSlot()
     def on_excludeMessagesSelectButton_clicked(self):
         """
         Private slot to select the message codes to be excluded via a
         selection dialog.
         """
-        from .Pep8CodeSelectionDialog import Pep8CodeSelectionDialog
-        dlg = Pep8CodeSelectionDialog(
-            self.excludeMessagesEdit.text(), False, self)
-        if dlg.exec_() == QDialog.Accepted:
-            self.excludeMessagesEdit.setText(dlg.getSelectedCodes())
+        self.__selectCodes(self.excludeMessagesEdit, False)
     
     @pyqtSlot()
     def on_includeMessagesSelectButton_clicked(self):
@@ -437,11 +488,7 @@
         Private slot to select the message codes to be included via a
         selection dialog.
         """
-        from .Pep8CodeSelectionDialog import Pep8CodeSelectionDialog
-        dlg = Pep8CodeSelectionDialog(
-            self.includeMessagesEdit.text(), False, self)
-        if dlg.exec_() == QDialog.Accepted:
-            self.includeMessagesEdit.setText(dlg.getSelectedCodes())
+        self.__selectCodes(self.includeMessagesEdit, False)
     
     @pyqtSlot()
     def on_fixIssuesSelectButton_clicked(self):
@@ -449,11 +496,15 @@
         Private slot to select the issue codes to be fixed via a
         selection dialog.
         """
-        from .Pep8CodeSelectionDialog import Pep8CodeSelectionDialog
-        dlg = Pep8CodeSelectionDialog(
-            self.fixIssuesEdit.text(), True, self)
-        if dlg.exec_() == QDialog.Accepted:
-            self.fixIssuesEdit.setText(dlg.getSelectedCodes())
+        self.__selectCodes(self.fixIssuesEdit, True)
+    
+    @pyqtSlot()
+    def on_noFixIssuesSelectButton_clicked(self):
+        """
+        Private slot to select the issue codes not to be fixed via a
+        selection dialog.
+        """
+        self.__selectCodes(self.noFixIssuesEdit, True)
     
     @pyqtSlot(QTreeWidgetItem, int)
     def on_resultList_itemActivated(self, item, column):
@@ -473,14 +524,17 @@
             message = item.data(0, self.messageRole)
             
             vm = e5App().getObject("ViewManager")
-            vm.openSourceFile(fn, lineno=lineno, pos=position)
+            vm.openSourceFile(fn, lineno=lineno, pos=position + 1)
             editor = vm.getOpenEditor(fn)
             
-            if position > 0:
-                editor.toggleFlakesWarning(lineno, True, message)
-            else:
-                error = message.split(':', 1)[-1]
-                editor.toggleSyntaxError(lineno, 1, True, error.strip(), show=True)
+            editor.toggleFlakesWarning(lineno, True, message)
+    
+    @pyqtSlot()
+    def on_resultList_itemSelectionChanged(self):
+        """
+        Private slot to change the dialog state depending on the selection.
+        """
+        self.fixButton.setEnabled(len(self.__getSelectedFixableItems()) > 0)
     
     @pyqtSlot()
     def on_showButton_clicked(self):
@@ -540,10 +594,18 @@
             "PEP8/ExcludeMessages", pep8.DEFAULT_IGNORE))
         self.includeMessagesEdit.setText(Preferences.Prefs.settings.value(
             "PEP8/IncludeMessages"))
+        self.repeatCheckBox.setChecked(Preferences.toBool(
+            Preferences.Prefs.settings.value("PEP8/RepeatMessages")))
         self.fixIssuesEdit.setText(Preferences.Prefs.settings.value(
             "PEP8/FixCodes"))
+        self.noFixIssuesEdit.setText(Preferences.Prefs.settings.value(
+            "PEP8/NoFixCodes", "E501"))
         self.fixIssuesCheckBox.setChecked(Preferences.toBool(
             Preferences.Prefs.settings.value("PEP8/FixIssues")))
+        self.lineLengthSpinBox.setValue(int(Preferences.Prefs.settings.value(
+            "PEP8/MaxLineLength", pep8.MAX_LINE_LENGTH)))
+        self.hangClosingCheckBox.setChecked(Preferences.toBool(
+            Preferences.Prefs.settings.value("PEP8/HangClosing")))
     
     @pyqtSlot()
     def on_storeDefaultButton_clicked(self):
@@ -557,10 +619,36 @@
             self.excludeMessagesEdit.text())
         Preferences.Prefs.settings.setValue("PEP8/IncludeMessages",
             self.includeMessagesEdit.text())
+        Preferences.Prefs.settings.setValue("PEP8/RepeatMessages",
+            self.repeatCheckBox.isChecked())
         Preferences.Prefs.settings.setValue("PEP8/FixCodes",
             self.fixIssuesEdit.text())
+        Preferences.Prefs.settings.setValue("PEP8/NoFixCodes",
+            self.noFixIssuesEdit.text())
         Preferences.Prefs.settings.setValue("PEP8/FixIssues",
             self.fixIssuesCheckBox.isChecked())
+        Preferences.Prefs.settings.setValue("PEP8/MaxLineLength",
+            self.lineLengthSpinBox.value())
+        Preferences.Prefs.settings.setValue("PEP8/HangClosing",
+            self.hangClosingCheckBox.isChecked())
+    
+    @pyqtSlot()
+    def on_resetDefaultButton_clicked(self):
+        """
+        Slot documentation goes here.
+        """
+        raise NotImplementedError
+        Preferences.Prefs.settings.setValue("PEP8/ExcludeFilePatterns", "")
+        Preferences.Prefs.settings.setValue("PEP8/ExcludeMessages",
+            pep8.DEFAULT_IGNORE)
+        Preferences.Prefs.settings.setValue("PEP8/IncludeMessages", "")
+        Preferences.Prefs.settings.setValue("PEP8/RepeatMessages", False)
+        Preferences.Prefs.settings.setValue("PEP8/FixCodes", "")
+        Preferences.Prefs.settings.setValue("PEP8/NoFixCodes", "E501")
+        Preferences.Prefs.settings.setValue("PEP8/FixIssues", False)
+        Preferences.Prefs.settings.setValue("PEP8/MaxLineLength",
+            pep8.MAX_LINE_LENGTH)
+        Preferences.Prefs.settings.setValue("PEP8/HangClosing", False)
     
     @pyqtSlot(QAbstractButton)
     def on_buttonBox_clicked(self, button):
@@ -587,3 +675,96 @@
         for file in openFiles:
             editor = vm.getOpenEditor(file)
             editor.clearFlakesWarnings()
+    
+    @pyqtSlot()
+    def on_fixButton_clicked(self):
+        """
+        Private slot to fix selected issues.
+        """
+        # TODO: test this
+        from .Pep8Fixer import Pep8Fixer
+        
+        # build a dictionary of issues to fix
+        fixableItems = self.__getSelectedFixableItems()
+        fixesDict = {}      # dictionary of lists of tuples containing
+                            # the issue and the item
+        for itm in fixableItems:
+            filename = itm.data(0, self.filenameRole)
+            if filename not in fixesDict:
+                fixesDict[filename] = []
+            fixesDict[filename].append((
+                (itm.data(0, self.lineRole),
+                 itm.data(0, self.positionRole),
+                 "{0} {1}".format(itm.data(0, self.codeRole), 
+                                  itm.data(0, self.messageRole))),
+                itm
+            ))
+        
+        # extract the configuration values
+        fixCodes = self.fixIssuesEdit.text()
+        noFixCodes = self.noFixIssuesEdit.text()
+        maxLineLength = self.lineLengthSpinBox.value()
+        
+        # now go through all the files
+        if fixesDict:
+            self.checkProgress.setMaximum(len(fixesDict))
+            progress = 0
+            for file in fixesDict:
+                self.checkProgress.setValue(progress)
+                QApplication.processEvents()
+                
+                try:
+                    source, encoding = Utilities.readEncodedFile(file)
+                    source = source.splitlines(True)
+                except (UnicodeError, IOError) as msg:
+                    # skip silently because that should not happen
+                    progress += 1
+                    continue
+                
+                fixer = Pep8Fixer(self.__project, file, source,
+                                  fixCodes, noFixCodes, maxLineLength,
+                                  True)  # always fix in place
+                errors = fixesDict[file]
+                errors.sort(key=lambda a: a[0][0])
+                for error in errors:
+                    (lineno, position, text), itm = error
+                    if lineno > len(source):
+                        lineno = len(source)
+                    fixed, msg = fixer.fixIssue(lineno, position, text)
+                    if fixed:
+                        text = "\n" + self.trUtf8("Fix: {0}").format(msg)
+                        self.__modifyFixedResultItem(itm, text)
+                fixer.saveFile(encoding)
+                
+                self.__updateFixerStatistics(fixer)
+                progress += 1
+            
+            self.checkProgress.setValue(progress)
+            QApplication.processEvents()
+
+    def __getSelectedFixableItems(self):
+        """
+        Private method to extract all selected items for fixable issues.
+        
+        @return selected items for fixable issues (list of QTreeWidgetItem)
+        """
+        fixableItems = []
+        for itm in self.resultList.selectedItems():
+            if itm.childCount() > 0:
+                for index in range(itm.childCount()):
+                    citm = itm.child(index)
+                    if self.__itemFixable(citm) and not citm in fixableItems:
+                        fixableItems.append(citm)
+            elif self.__itemFixable(itm) and not itm in fixableItems:
+                fixableItems.append(itm)
+        
+        return fixableItems
+    
+    def __itemFixable(self, itm):
+        """
+        Private method to check, if an item has a fixable issue.
+        
+        @param itm item to be checked (QTreeWidgetItem)
+        @return flag indicating a fixable issue (boolean)
+        """
+        return itm.data(0, self.fixableRole)
--- a/Plugins/CheckerPlugins/Pep8/Pep8Dialog.ui	Mon Aug 12 22:21:53 2013 +0200
+++ b/Plugins/CheckerPlugins/Pep8/Pep8Dialog.ui	Sun Sep 08 19:04:07 2013 +0200
@@ -21,13 +21,121 @@
   <property name="sizeGripEnabled">
    <bool>true</bool>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
+  <layout class="QVBoxLayout" name="verticalLayout_2">
    <item>
     <widget class="QFrame" name="filterFrame">
      <property name="frameShape">
       <enum>QFrame::NoFrame</enum>
      </property>
      <layout class="QGridLayout" name="gridLayout">
+      <property name="margin">
+       <number>0</number>
+      </property>
+      <item row="0" column="0">
+       <widget class="QLabel" name="label_2">
+        <property name="text">
+         <string>Exclude Files:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1">
+       <widget class="E5ClearableLineEdit" name="excludeFilesEdit">
+        <property name="toolTip">
+         <string>Enter filename patterns of files to be excluded separated by a comma</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="3" rowspan="8">
+       <widget class="Line" name="line">
+        <property name="lineWidth">
+         <number>2</number>
+        </property>
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="4" rowspan="8">
+       <layout class="QVBoxLayout" name="verticalLayout">
+        <item>
+         <widget class="QPushButton" name="startButton">
+          <property name="toolTip">
+           <string>Press to start the PEP 8 check run</string>
+          </property>
+          <property name="text">
+           <string>Start</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="fixButton">
+          <property name="toolTip">
+           <string>Press to fix the selected issues</string>
+          </property>
+          <property name="text">
+           <string>Fix Selected</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer name="verticalSpacer">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>18</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item>
+         <widget class="QPushButton" name="loadDefaultButton">
+          <property name="toolTip">
+           <string>Press to load the default values</string>
+          </property>
+          <property name="text">
+           <string>Load Defaults</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="storeDefaultButton">
+          <property name="toolTip">
+           <string>Press to store the current values as defaults</string>
+          </property>
+          <property name="text">
+           <string>Store Defaults</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="resetDefaultButton">
+          <property name="toolTip">
+           <string>Press to reset the default values</string>
+          </property>
+          <property name="text">
+           <string>Reset Defaults</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item row="1" column="0">
+       <widget class="QLabel" name="label">
+        <property name="text">
+         <string>Exclude Messages:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <widget class="E5ClearableLineEdit" name="excludeMessagesEdit">
+        <property name="toolTip">
+         <string>Enter message codes or categories to be excluded separated by a comma</string>
+        </property>
+       </widget>
+      </item>
       <item row="1" column="2">
        <widget class="QToolButton" name="excludeMessagesSelectButton">
         <property name="toolTip">
@@ -38,7 +146,149 @@
         </property>
        </widget>
       </item>
-      <item row="4" column="0" colspan="3">
+      <item row="2" column="0">
+       <widget class="QLabel" name="label_3">
+        <property name="text">
+         <string>Included Messages:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1">
+       <widget class="E5ClearableLineEdit" name="includeMessagesEdit">
+        <property name="toolTip">
+         <string>Enter message codes or categories to be included separated by a comma</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="2">
+       <widget class="QToolButton" name="includeMessagesSelectButton">
+        <property name="toolTip">
+         <string>Press to select the message codes from a list</string>
+        </property>
+        <property name="text">
+         <string>...</string>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="0">
+       <widget class="QLabel" name="label_4">
+        <property name="text">
+         <string>Fix Issues:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="1">
+       <widget class="E5ClearableLineEdit" name="fixIssuesEdit">
+        <property name="toolTip">
+         <string>Enter message codes of issues to be fixed automatically (leave empty to fix all)</string>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="2">
+       <widget class="QToolButton" name="fixIssuesSelectButton">
+        <property name="toolTip">
+         <string>Press to select the message codes from a list</string>
+        </property>
+        <property name="text">
+         <string>...</string>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="0">
+       <widget class="QLabel" name="label_6">
+        <property name="text">
+         <string>Don't Fix Issues:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="1">
+       <widget class="E5ClearableLineEdit" name="noFixIssuesEdit">
+        <property name="toolTip">
+         <string>Enter message codes of issues not to be fixed automatically</string>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="2">
+       <widget class="QToolButton" name="noFixIssuesSelectButton">
+        <property name="toolTip">
+         <string>Press to select the message codes from a list</string>
+        </property>
+        <property name="text">
+         <string>...</string>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="0">
+       <widget class="QLabel" name="label_5">
+        <property name="text">
+         <string>Max. Line Length:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="1">
+       <layout class="QHBoxLayout" name="horizontalLayout_3">
+        <item>
+         <widget class="QSpinBox" name="lineLengthSpinBox">
+          <property name="statusTip">
+           <string>Enter the maximum allowed line length (PEP-8: 79 characters)</string>
+          </property>
+          <property name="alignment">
+           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+          </property>
+          <property name="minimum">
+           <number>60</number>
+          </property>
+          <property name="maximum">
+           <number>119</number>
+          </property>
+          <property name="value">
+           <number>79</number>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer name="horizontalSpacer_3">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>40</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+      <item row="6" column="0" colspan="2">
+       <layout class="QHBoxLayout" name="horizontalLayout_2">
+        <item>
+         <widget class="QCheckBox" name="hangClosingCheckBox">
+          <property name="toolTip">
+           <string>Select to allow hanging closing brackets</string>
+          </property>
+          <property name="text">
+           <string>Allow hanging closing brackets</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer name="horizontalSpacer_2">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>40</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+      <item row="7" column="0" colspan="3">
        <layout class="QHBoxLayout" name="horizontalLayout">
         <item>
          <widget class="QCheckBox" name="repeatCheckBox">
@@ -78,139 +328,6 @@
         </item>
        </layout>
       </item>
-      <item row="1" column="0">
-       <widget class="QLabel" name="label">
-        <property name="text">
-         <string>Exclude Messages:</string>
-        </property>
-       </widget>
-      </item>
-      <item row="3" column="0">
-       <widget class="QLabel" name="label_4">
-        <property name="text">
-         <string>Fix Issues:</string>
-        </property>
-       </widget>
-      </item>
-      <item row="3" column="1">
-       <widget class="E5ClearableLineEdit" name="fixIssuesEdit">
-        <property name="toolTip">
-         <string>Enter message codes of issues to be fixed automatically (leave empty to fix all)</string>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="4" rowspan="5">
-       <layout class="QVBoxLayout" name="verticalLayout_2">
-        <item>
-         <widget class="QPushButton" name="startButton">
-          <property name="toolTip">
-           <string>Press to start the PEP 8 check run</string>
-          </property>
-          <property name="text">
-           <string>Start</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <spacer name="verticalSpacer">
-          <property name="orientation">
-           <enum>Qt::Vertical</enum>
-          </property>
-          <property name="sizeHint" stdset="0">
-           <size>
-            <width>20</width>
-            <height>18</height>
-           </size>
-          </property>
-         </spacer>
-        </item>
-        <item>
-         <widget class="QPushButton" name="loadDefaultButton">
-          <property name="toolTip">
-           <string>Press to load the default values</string>
-          </property>
-          <property name="text">
-           <string>Load Defaults</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QPushButton" name="storeDefaultButton">
-          <property name="toolTip">
-           <string>Press to store the current values as defaults</string>
-          </property>
-          <property name="text">
-           <string>Store Defaults</string>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-      <item row="2" column="1">
-       <widget class="E5ClearableLineEdit" name="includeMessagesEdit">
-        <property name="toolTip">
-         <string>Enter message codes or categories to be included separated by a comma</string>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="1">
-       <widget class="E5ClearableLineEdit" name="excludeMessagesEdit">
-        <property name="toolTip">
-         <string>Enter message codes or categories to be excluded separated by a comma</string>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="0">
-       <widget class="QLabel" name="label_2">
-        <property name="text">
-         <string>Exclude Files:</string>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="1">
-       <widget class="E5ClearableLineEdit" name="excludeFilesEdit">
-        <property name="toolTip">
-         <string>Enter filename patterns of files to be excluded separated by a comma</string>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="3" rowspan="5">
-       <widget class="Line" name="line">
-        <property name="lineWidth">
-         <number>2</number>
-        </property>
-        <property name="orientation">
-         <enum>Qt::Vertical</enum>
-        </property>
-       </widget>
-      </item>
-      <item row="2" column="2">
-       <widget class="QToolButton" name="includeMessagesSelectButton">
-        <property name="toolTip">
-         <string>Press to select the message codes from a list</string>
-        </property>
-        <property name="text">
-         <string>...</string>
-        </property>
-       </widget>
-      </item>
-      <item row="2" column="0">
-       <widget class="QLabel" name="label_3">
-        <property name="text">
-         <string>Included Messages:</string>
-        </property>
-       </widget>
-      </item>
-      <item row="3" column="2">
-       <widget class="QToolButton" name="fixIssuesSelectButton">
-        <property name="toolTip">
-         <string>Press to select the message codes from a list</string>
-        </property>
-        <property name="text">
-         <string>...</string>
-        </property>
-       </widget>
-      </item>
      </layout>
     </widget>
    </item>
@@ -292,10 +409,16 @@
   <tabstop>includeMessagesSelectButton</tabstop>
   <tabstop>fixIssuesEdit</tabstop>
   <tabstop>fixIssuesSelectButton</tabstop>
+  <tabstop>noFixIssuesEdit</tabstop>
+  <tabstop>noFixIssuesSelectButton</tabstop>
+  <tabstop>lineLengthSpinBox</tabstop>
+  <tabstop>hangClosingCheckBox</tabstop>
   <tabstop>repeatCheckBox</tabstop>
   <tabstop>fixIssuesCheckBox</tabstop>
   <tabstop>storeDefaultButton</tabstop>
   <tabstop>resultList</tabstop>
+  <tabstop>fixButton</tabstop>
+  <tabstop>resetDefaultButton</tabstop>
   <tabstop>buttonBox</tabstop>
  </tabstops>
  <resources/>
--- a/Plugins/CheckerPlugins/Pep8/Pep8Fixer.py	Mon Aug 12 22:21:53 2013 +0200
+++ b/Plugins/CheckerPlugins/Pep8/Pep8Fixer.py	Sun Sep 08 19:04:07 2013 +0200
@@ -11,24 +11,35 @@
 
 import os
 import re
+import tokenize
+import io
 
 from PyQt4.QtCore import QObject
 
 from E5Gui import E5MessageBox
 
+from . import pep8
+
 import Utilities
 
-Pep8FixableIssues = ["E101", "W191", "E201", "E202", "E203", "E211", "E221",
-                     "E222", "E225", "E231", "E241", "E251", "E261", "E262",
-                     "W291", "W292", "W293", "E301", "E302", "E303", "E304",
-                     "W391", "W603"]
+Pep8FixableIssues = ["E101", "E111", "E121", "E122", "E123", "E124",
+                     "E125", "E126", "E127", "E128", "E133", "W191",
+                     "E201", "E202", "E203", "E211", "E221", "E222",
+                     "E223", "E224", "E225", "E226", "E227", "E228",
+                     "E231", "E241", "E242", "E251", "E261", "E262",
+                     "E271", "E272", "E273", "E274", "W291", "W292",
+                     "W293", "E301", "E302", "E303", "E304", "W391",
+                     "E401", "E501", "E502", "W603", "E701", "E702",
+                     "E703", "E711", "E712"
+                    ]
 
 
 class Pep8Fixer(QObject):
     """
     Class implementing a fixer for certain PEP 8 issues.
     """
-    def __init__(self, project, filename, sourceLines, fixCodes, inPlace):
+    def __init__(self, project, filename, sourceLines, fixCodes, noFixCodes,
+                 maxLineLength, inPlace):
         """
         Constructor
         
@@ -38,6 +49,9 @@
             (list of string)
         @param fixCodes list of codes to be fixed as a comma separated
             string (string)
+        @param noFixCodes list of codes not to be fixed as a comma
+            separated string (string)
+        @param maxLineLength maximum allowed line length (integer)
         @param inPlace flag indicating to modify the file in place (boolean)
         """
         super(Pep8Fixer, self).__init__()
@@ -47,41 +61,82 @@
         self.__origName = ""
         self.__source = sourceLines[:]  # save a copy
         self.__fixCodes = [c.strip() for c in fixCodes.split(",") if c.strip()]
+        self.__noFixCodes = [
+            c.strip() for c in noFixCodes.split(",") if c.strip()]
+        self.__maxLineLength = maxLineLength
         self.fixed = 0
         
+        self.__reindenter = None
+        self.__eol = ""
+        self.__indentWord = self.__getIndentWord()
+        
         if not inPlace:
             self.__origName = self.__filename
             self.__filename = os.path.join(os.path.dirname(self.__filename),
                 "fixed_" + os.path.basename(self.__filename))
         
         self.__fixes = {
-            "E101": self.__fixTabs,
-            "W191": self.__fixTabs,
-            "E201": self.__fixWhitespaceAfter,
-            "E202": self.__fixWhitespaceBefore,
-            "E203": self.__fixWhitespaceBefore,
-            "E211": self.__fixWhitespaceBefore,
-            "E221": self.__fixWhitespaceAroundOperator,
-            "E222": self.__fixWhitespaceAroundOperator,
-            "E225": self.__fixMissingWhitespaceAroundOperator,
-            "E231": self.__fixMissingWhitespaceAfter,
-            "E241": self.__fixWhitespaceAroundOperator,
-            "E251": self.__fixWhitespaceAroundEquals,
-            "E261": self.__fixWhitespaceBeforeInline,
-            "E262": self.__fixWhitespaceAfterInline,
-            "W291": self.__fixWhitespace,
-            "W292": self.__fixNewline,
-            "W293": self.__fixWhitespace,
-            "E301": self.__fixOneBlankLine,
-            "E302": self.__fixTwoBlankLines,
-            "E303": self.__fixTooManyBlankLines,
-            "E304": self.__fixBlankLinesAfterDecorator,
-            "W391": self.__fixTrailingBlankLines,
-            "W603": self.__fixNotEqual,
+            "E101": self.__fixE101,
+            "E111": self.__fixE101,
+            "E121": self.__fixE121,
+            "E122": self.__fixE122,
+            "E123": self.__fixE123,
+            "E124": self.__fixE121,
+            "E125": self.__fixE125,
+            "E126": self.__fixE126,
+            "E127": self.__fixE127,
+            "E128": self.__fixE127,
+            "E133": self.__fixE126,
+            "W191": self.__fixE101,
+            "E201": self.__fixE201,
+            "E202": self.__fixE201,
+            "E203": self.__fixE201,
+            "E211": self.__fixE201,
+            "E221": self.__fixE221,
+            "E222": self.__fixE221,
+            "E223": self.__fixE221,
+            "E224": self.__fixE221,
+            "E225": self.__fixE221,
+            "E226": self.__fixE221,
+            "E227": self.__fixE221,
+            "E228": self.__fixE221,
+            "E231": self.__fixE231,
+            "E241": self.__fixE221,
+            "E242": self.__fixE221,
+            "E251": self.__fixE251,
+            "E261": self.__fixE261,
+            "E262": self.__fixE261,
+            "E271": self.__fixE221,
+            "E272": self.__fixE221,
+            "E273": self.__fixE221,
+            "E274": self.__fixE221,
+            "W291": self.__fixW291,
+            "W292": self.__fixW292,
+            "W293": self.__fixW291,
+            "E301": self.__fixE301,
+            "E302": self.__fixE302,
+            "E303": self.__fixE303,
+            "E304": self.__fixE304,
+            "W391": self.__fixW391,
+            "E401": self.__fixE401,
+            "E501": self.__fixE501,
+            "E502": self.__fixE502,
+            "W603": self.__fixW603,
+            "E701": self.__fixE701,
+            "E702": self.__fixE702,
+            "E703": self.__fixE702,
+            "E711": self.__fixE711,
+            "E712": self.__fixE711,
         }
         self.__modified = False
-        self.__stack = []   # these need to be fixed before the file is saved
-                            # but after all inline fixes
+        self.__stackLogical = []    # these need to be fixed before the file
+                                    # is saved but after all other inline
+                                    # fixes. These work with logical lines.
+        self.__stack = []           # these need to be fixed before the file
+                                    # is saved but after all inline fixes
+        
+        self.__multiLineNumbers = None
+        self.__docLineNumbers = None
     
     def saveFile(self, encoding):
         """
@@ -105,13 +160,43 @@
                 self.trUtf8("Fix PEP 8 issues"),
                 self.trUtf8(
                     """<p>Could not save the file <b>{0}</b>."""
-                    """ Skipping it.</p><p>Reason: {1}</p>""")\
+                    """ Skipping it.</p><p>Reason: {1}</p>""")
                     .format(self.__filename, str(err))
             )
             return False
         
         return True
     
+    def __codeMatch(self, code):
+        """
+        Private method to check, if the code should be fixed.
+        
+        @param code to check (string)
+        @return flag indicating it should be fixed (boolean)
+        """
+        def mutualStartswith(a, b):
+            """
+            Local helper method to compare the beginnings of two strings
+            against each other.
+            
+            @return flag indicating that one string starts with the other
+                (boolean)
+            """
+            return b.startswith(a) or a.startswith(b)
+        
+        if self.__noFixCodes:
+            for noFixCode in [c.strip() for c in self.__noFixCodes]:
+                if mutualStartswith(code.lower(), noFixCode.lower()):
+                    return False
+
+        if self.__fixCodes:
+            for fixCode in [c.strip() for c in self.__fixCodes]:
+                if mutualStartswith(code.lower(), fixCode.lower()):
+                    return True
+            return False
+
+        return True
+    
     def fixIssue(self, line, pos, message):
         """
         Public method to fix the fixable issues.
@@ -125,7 +210,7 @@
         code = message.split(None, 1)[0].strip()
         
         if line <= len(self.__source) and \
-           (code in self.__fixCodes or len(self.__fixCodes) == 0) and \
+           self.__codeMatch(code) and \
            code in self.__fixes:
             res = self.__fixes[code](code, line, pos)
             if res[0]:
@@ -140,6 +225,11 @@
         """
         Private method to apply all deferred fixes.
         """
+        # step 1: do fixes operating on logical lines first
+        for code, line, pos in self.__stackLogical:
+            self.__fixes[code](code, line, pos, apply=True)
+        
+        # step 2: do fixes that change the number of lines
         for code, line, pos in reversed(self.__stack):
             self.__fixes[code](code, line, pos, apply=True)
     
@@ -149,33 +239,205 @@
         
         @return eol string (string)
         """
-        if self.__origName:
-            fn = self.__origName
-        else:
-            fn = self.__filename
+        if not self.__eol:
+            if self.__origName:
+                fn = self.__origName
+            else:
+                fn = self.__filename
+            
+            if self.__project.isOpen() and self.__project.isProjectFile(fn):
+                self.__eol = self.__project.getEolString()
+            else:
+                self.__eol = Utilities.linesep()
+        return self.__eol
+    
+    def __findLogical(self):
+        """
+        Private method to extract the index of all the starts and ends of
+        lines.
         
-        if self.__project.isOpen() and self.__project.isProjectFile(fn):
-            eol = self.__project.getEolString()
-        else:
-            eol = Utilities.linesep()
-        return eol
+        @return tuple containing two lists of integer with start and end tuples
+            of lines
+        """
+        logical_start = []
+        logical_end = []
+        last_newline = True
+        sio = io.StringIO("".join(self.__source))
+        parens = 0
+        for t in tokenize.generate_tokens(sio.readline):
+            if t[0] in [tokenize.COMMENT, tokenize.DEDENT,
+                        tokenize.INDENT, tokenize.NL,
+                        tokenize.ENDMARKER]:
+                continue
+            if not parens and t[0] in [tokenize.NEWLINE, tokenize.SEMI]:
+                last_newline = True
+                logical_end.append((t[3][0] - 1, t[2][1]))
+                continue
+            if last_newline and not parens:
+                logical_start.append((t[2][0] - 1, t[2][1]))
+                last_newline = False
+            if t[0] == tokenize.OP:
+                if t[1] in '([{':
+                    parens += 1
+                elif t[1] in '}])':
+                    parens -= 1
+        return logical_start, logical_end
     
-    def __fixTabs(self, code, line, pos):
+    def __getLogical(self, line, pos):
         """
-        Private method to fix obsolete tab usage.
+        Private method to get the logical line corresponding to the given
+        position.
         
-        @param code code of the issue (string)
         @param line line number of the issue (integer)
         @param pos position inside line (integer)
-        @return flag indicating an applied fix (boolean) and a message for
-            the fix (string)
+        @return tuple of a tuple of two integers giving the start of the
+            logical line, another tuple of two integers giving the end
+            of the logical line and a list of strings with the original
+            source lines
+        """
+        try:
+            (logical_start, logical_end) = self.__findLogical()
+        except (SyntaxError, tokenize.TokenError):
+            return None
+
+        line = line - 1
+        ls = None
+        le = None
+        for i in range(0, len(logical_start)):
+            x = logical_end[i]
+            if x[0] > line or (x[0] == line and x[1] > pos):
+                le = x
+                ls = logical_start[i]
+                break
+        if ls is None:
+            return None
+        
+        original = self.__source[ls[0]:le[0] + 1]
+        return ls, le, original
+    
+    def __getIndentWord(self):
+        """
+        Private method to determine the indentation type.
+        
+        @return string to be used for an indentation (string)
+        """
+        sio = io.StringIO("".join(self.__source))
+        indentWord = "    "     # default in case of failure
+        try:
+            for token in tokenize.generate_tokens(sio.readline):
+                if token[0] == tokenize.INDENT:
+                    indentWord = token[1]
+                    break
+        except (SyntaxError, tokenize.TokenError):
+            pass
+        return indentWord
+    
+    def __getIndent(self, line):
+        """
+        Private method to get the indentation string.
+        
+        @param line line to determine the indentation string from (string)
+        @return indentation string (string)
+        """
+        return line.replace(line.lstrip(), "")
+    
+    def __multilineStringLines(self):
+        """
+        Private method to determine the line numbers that are within multi line
+        strings and these which are part of a documentation string.
+        
+        @return tuple of a set of line numbers belonging to a multi line
+            string and a set of line numbers belonging to a multi line
+            documentation string (tuple of two set of integer)
         """
-        self.__source[line - 1] = self.__source[line - 1].replace("\t", "    ")
-        return (True, self.trUtf8("Tab converted to 4 spaces."))
+        if self.__multiLineNumbers is None:
+            source = "".join(self.__source)
+            sio = io.StringIO(source)
+            self.__multiLineNumbers = set()
+            self.__docLineNumbers = set()
+            previousTokenType = ''
+            try:
+                for t in tokenize.generate_tokens(sio.readline):
+                    tokenType = t[0]
+                    startRow = t[2][0]
+                    endRow = t[3][0]
+
+                    if (tokenType == tokenize.STRING and startRow != endRow):
+                        if previousTokenType != tokenize.INDENT:
+                            self.__multiLineNumbers |= set(
+                                range(startRow, 1 + endRow))
+                        else:
+                            self.__docLineNumbers |= set(
+                                range(startRow, 1 + endRow))
+
+                    previousTokenType = tokenType
+            except (SyntaxError, tokenize.TokenError):
+                pass
+        
+        return self.__multiLineNumbers, self.__docLineNumbers
     
-    def __fixWhitespace(self, code, line, pos):
+    def __fixReindent(self, line, pos, logical):
+        """
+        Private method to fix a badly indented line.
+
+        This is done by adding or removing from its initial indent only.
+        
+        @param line line number of the issue (integer)
+        @param pos position inside line (integer)
+        @return flag indicating a change was done (boolean)
         """
-        Private method to fix trailing whitespace.
+        assert logical
+        ls, _, original = logical
+
+        rewrapper = Pep8IndentationWrapper(original)
+        valid_indents = rewrapper.pep8Expected()
+        if not rewrapper.rel_indent:
+            return False
+        
+        if line > ls[0]:
+            # got a valid continuation line number
+            row = line - ls[0] - 1
+            # always pick the first option for this
+            valid = valid_indents[row]
+            got = rewrapper.rel_indent[row]
+        else:
+            return False
+        
+        line1 = ls[0] + row
+        # always pick the expected indent, for now.
+        indent_to = valid[0]
+
+        if got != indent_to:
+            orig_line = self.__source[line1]
+            new_line = ' ' * (indent_to) + orig_line.lstrip()
+            if new_line == orig_line:
+                return False
+            else:
+                self.__source[line1] = new_line
+                return True
+        else:
+            return False
+    
+    def __fixWhitespace(self, line, offset, replacement):
+        """
+        Private method to correct whitespace at the given offset.
+        
+        @param line line to be corrected (string)
+        @param offset offset within line (integer)
+        @param replacement replacement string (string)
+        @return corrected line
+        """
+        left = line[:offset].rstrip(" \t")
+        right = line[offset:].lstrip(" \t")
+        if right.startswith("#"):
+            return line
+        else:
+            return left + replacement + right
+    
+    def __fixE101(self, code, line, pos):
+        """
+        Private method to fix obsolete tab usage and indentation errors
+        (E101, E111, W191).
         
         @param code code of the issue (string)
         @param line line number of the issue (integer)
@@ -183,60 +445,51 @@
         @return flag indicating an applied fix (boolean) and a message for
             the fix (string)
         """
-        self.__source[line - 1] = re.sub(r'[\t ]+(\r?)$', r"\1",
-                                         self.__source[line - 1])
-        return (True, self.trUtf8("Whitespace stripped from end of line."))
+        if self.__reindenter is None:
+            self.__reindenter = Pep8Reindenter(self.__source)
+            self.__reindenter.run()
+        fixedLine = self.__reindenter.fixedLine(line - 1)
+        if fixedLine is not None:
+            self.__source[line - 1] = fixedLine
+            if code in ["E101", "W191"]:
+                msg = self.trUtf8("Tab converted to 4 spaces.")
+            else:
+                msg = self.trUtf8(
+                    "Indentation adjusted to be a multiple of four.")
+            return (True, msg)
+        else:
+            return (False, self.trUtf8("Fix for {0} failed.").format(code))
     
-    def __fixNewline(self, code, line, pos):
+    def __fixE121(self, code, line, pos, apply=False):
         """
-        Private method to fix a missing newline at the end of file.
-        
-        @param code code of the issue (string)
-        @param line line number of the issue (integer)
-        @param pos position inside line (integer)
-        @return flag indicating an applied fix (boolean) and a message for
-            the fix (string)
-        """
-        self.__source[line - 1] += self.__getEol()
-        return (True, self.trUtf8("newline added to end of file."))
-    
-    def __fixTrailingBlankLines(self, code, line, pos):
-        """
-        Private method to fix trailing blank lines.
+        Private method to fix the indentation of continuation lines and
+        closing brackets (E121,E124).
         
         @param code code of the issue (string)
         @param line line number of the issue (integer)
         @param pos position inside line (integer)
+        @keyparam apply flag indicating, that the fix should be applied
+            (boolean)
         @return flag indicating an applied fix (boolean) and a message for
             the fix (string)
         """
-        index = line - 1
-        while index:
-            if self.__source[index].strip() == "":
-                del self.__source[index]
-                index -= 1
-            else:
-                break
-        return (True, self.trUtf8(
-            "Superfluous trailing blank lines removed from end of file."))
+        if apply:
+            logical = self.__getLogical(line, pos)
+            if logical:
+                # Fix by adjusting initial indent level.
+                self.__fixReindent(line, pos, logical)
+        else:
+            self.__stackLogical.append((code, line, pos))
+        if code == "E121":
+            msg = self.trUtf8("Indentation of continuation line corrected.")
+        elif code == "E124":
+            msg = self.trUtf8("Indentation of closing bracket corrected.")
+        return (True, msg)
     
-    def __fixNotEqual(self, code, line, pos):
+    def __fixE122(self, code, line, pos, apply=False):
         """
-        Private method to fix the not equal notation.
-        
-        @param code code of the issue (string)
-        @param line line number of the issue (integer)
-        @param pos position inside line (integer)
-        @return flag indicating an applied fix (boolean) and a message for
-            the fix (string)
-        """
-        self.__source[line - 1] = self.__source[line - 1].replace("<>", "!=")
-        return (True, self.trUtf8("'<>' replaced by '!='."))
-    
-    def __fixBlankLinesAfterDecorator(self, code, line, pos, apply=False):
-        """
-        Private method to fix superfluous blank lines after a function
-        decorator.
+        Private method to fix a missing indentation of continuation lines
+        (E122).
         
         @param code code of the issue (string)
         @param line line number of the issue (integer)
@@ -247,21 +500,117 @@
             the fix (string)
         """
         if apply:
-            index = line - 2
-            while index:
-                if self.__source[index].strip() == "":
-                    del self.__source[index]
-                    index -= 1
+            logical = self.__getLogical(line, pos)
+            if logical:
+                # Fix by adding an initial indent.
+                modified = self.__fixReindent(line, pos, logical)
+                if not modified:
+                    # fall back to simple method
+                    line = line - 1
+                    text = self.__source[line]
+                    indentation = self.__getIndent(text)
+                    self.__source[line] = indentation + \
+                        self.__indentWord + text.lstrip()
+        else:
+            self.__stackLogical.append((code, line, pos))
+        return (
+            True,
+            self.trUtf8("Missing indentation of continuation line corrected."))
+    
+    def __fixE123(self, code, line, pos, apply=False):
+        """
+        Private method to fix the indentation of a closing bracket lines
+        (E123).
+        
+        @param code code of the issue (string)
+        @param line line number of the issue (integer)
+        @param pos position inside line (integer)
+        @keyparam apply flag indicating, that the fix should be applied
+            (boolean)
+        @return flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+        """
+        if apply:
+            logical = self.__getLogical(line, pos)
+            if logical:
+                # Fix by deleting whitespace to the correct level.
+                logicalLines = logical[2]
+                row = line - 1
+                text = self.__source[row]
+                newText = self.__getIndent(logicalLines[0]) + text.lstrip()
+                if newText == text:
+                    # fall back to slower method
+                    self.__fixReindent(line, pos, logical)
                 else:
-                    break
+                    self.__source[row] = newText
         else:
-            self.__stack.append((code, line, pos))
-        return (True, self.trUtf8(
-            "Superfluous blank lines after function decorator removed."))
+            self.__stackLogical.append((code, line, pos))
+        return (
+            True, self.trUtf8("Closing bracket aligned to opening bracket."))
+    
+    def __fixE125(self, code, line, pos, apply=False):
+        """
+        Private method to fix the indentation of continuation lines not
+        distinguishable from next logical line (E125).
+        
+        @param code code of the issue (string)
+        @param line line number of the issue (integer)
+        @param pos position inside line (integer)
+        @keyparam apply flag indicating, that the fix should be applied
+            (boolean)
+        @return flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+        """
+        if apply:
+            logical = self.__getLogical(line, pos)
+            if logical:
+                # Fix by adjusting initial indent level.
+                modified = self.__fixReindent(line, pos, logical)
+                if not modified:
+                    row = line - 1
+                    text = self.__source[row]
+                    self.__source[row] = self.__getIndent(text) + \
+                        self.__indentWord + text.lstrip()
+        else:
+            self.__stackLogical.append((code, line, pos))
+        return (True, self.trUtf8("Indentation level changed."))
     
-    def __fixTooManyBlankLines(self, code, line, pos, apply=False):
+    def __fixE126(self, code, line, pos, apply=False):
+        """
+        Private method to fix over-indented/under-indented hanging
+        indentation (E126, E133).
+        
+        @param code code of the issue (string)
+        @param line line number of the issue (integer)
+        @param pos position inside line (integer)
+        @keyparam apply flag indicating, that the fix should be applied
+            (boolean)
+        @return flag indicating an applied fix (boolean) and a message for
+            the fix (string)
         """
-        Private method to fix superfluous blank lines.
+        if apply:
+            logical = self.__getLogical(line, pos)
+            if logical:
+                # Fix by deleting whitespace to the left.
+                logicalLines = logical[2]
+                row = line - 1
+                text = self.__source[row]
+                newText = self.__getIndent(logicalLines[0]) + \
+                    self.__indentWord + text.lstrip()
+                if newText == text:
+                    # fall back to slower method
+                    self.__fixReindent(line, pos, logical)
+                else:
+                    self.__source[row] = newText
+        else:
+            self.__stackLogical.append((code, line, pos))
+        return (
+            True,
+            self.trUtf8("Indentation level of hanging indentation changed."))
+    
+    def __fixE127(self, code, line, pos, apply=False):
+        """
+        Private method to fix over/under indented lines (E127, E128).
         
         @param code code of the issue (string)
         @param line line number of the issue (integer)
@@ -272,20 +621,166 @@
             the fix (string)
         """
         if apply:
-            index = line - 3
-            while index:
-                if self.__source[index].strip() == "":
-                    del self.__source[index]
-                    index -= 1
+            logical = self.__getLogical(line, pos)
+            if logical:
+                # Fix by inserting/deleting whitespace to the correct level.
+                logicalLines = logical[2]
+                row = line - 1
+                text = self.__source[row]
+                newText = text
+                
+                if logicalLines[0].rstrip().endswith('\\'):
+                    newText = self.__getIndent(logicalLines[0]) + \
+                        self.__indentWord + text.lstrip()
+                else:
+                    startIndex = None
+                    for symbol in '([{':
+                        if symbol in logicalLines[0]:
+                            foundIndex = logicalLines[0].find(symbol) + 1
+                            if startIndex is None:
+                                startIndex = foundIndex
+                            else:
+                                startIndex = min(startIndex, foundIndex)
+
+                    if startIndex is not None:
+                        newText = startIndex * ' ' + text.lstrip()
+                    
+                if newText == text:
+                    # fall back to slower method
+                    self.__fixReindent(line, pos, logical)
                 else:
-                    break
+                    self.__source[row] = newText
+        else:
+            self.__stackLogical.append((code, line, pos))
+        return (True, self.trUtf8("Visual indentation corrected."))
+    
+    def __fixE201(self, code, line, pos):
+        """
+        Private method to fix extraneous whitespace (E201, E202,
+        E203, E211).
+        
+        @param code code of the issue (string)
+        @param line line number of the issue (integer)
+        @param pos position inside line (integer)
+        @return flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+        """
+        line = line - 1
+        text = self.__source[line]
+        
+        if '"""' in text or "'''" in text or text.rstrip().endswith('\\'):
+            return (
+                False, self.trUtf8("Extraneous whitespace cannot be removed."))
+        
+        newText = self.__fixWhitespace(text, pos, '')
+        if newText == text:
+            return (False, "")
+        
+        self.__source[line] = newText
+        return (True, self.trUtf8("Extraneous whitespace removed."))
+    
+    def __fixE221(self, code, line, pos):
+        """
+        Private method to fix extraneous whitespace around operator or
+        keyword (E221, E222, E223, E224, E225, E226, E227, E228, E241,
+        E242, E271, E272, E273, E274).
+        
+        @param code code of the issue (string)
+        @param line line number of the issue (integer)
+        @param pos position inside line (integer)
+        @return flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+        """
+        line = line - 1
+        text = self.__source[line]
+        
+        if '"""' in text or "'''" in text or text.rstrip().endswith('\\'):
+            return (
+                False, self.trUtf8("Extraneous whitespace cannot be removed."))
+        
+        newText = self.__fixWhitespace(text, pos, ' ')
+        if newText == text:
+            return (False, "")
+        
+        self.__source[line] = newText
+        if code in ["E225", "E226", "E227", "E228"]:
+            return (True, self.trUtf8("Missing whitespace added."))
         else:
-            self.__stack.append((code, line, pos))
-        return (True, self.trUtf8("Superfluous blank lines removed."))
+            return (True, self.trUtf8("Extraneous whitespace removed."))
+    
+    def __fixE231(self, code, line, pos):
+        """
+        Private method to fix missing whitespace after ',;:'.
+        
+        @param code code of the issue (string)
+        @param line line number of the issue (integer)
+        @param pos position inside line (integer)
+        @return flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+        """
+        line = line - 1
+        pos = pos + 1
+        self.__source[line] = self.__source[line][:pos] + \
+                               " " + \
+                               self.__source[line][pos:]
+        return (True, self.trUtf8("Missing whitespace added."))
     
-    def __fixOneBlankLine(self, code, line, pos, apply=False):
+    def __fixE251(self, code, line, pos):
+        """
+        Private method to fix extraneous whitespace around keyword and
+        default parameter equals (E251).
+        
+        @param code code of the issue (string)
+        @param line line number of the issue (integer)
+        @param pos position inside line (integer)
+        @return flag indicating an applied fix (boolean) and a message for
+            the fix (string)
         """
-        Private method to fix the need for one blank line.
+        line = line - 1
+        text = self.__source[line]
+        
+        # This is necessary since pep8 sometimes reports columns that goes
+        # past the end of the physical line. This happens in cases like,
+        # foo(bar\n=None)
+        col = min(pos, len(text) - 1)
+        if text[col].strip():
+            newText = text
+        else:
+            newText = text[:col].rstrip() + text[col:].lstrip()
+        
+        # There could be an escaped newline
+        #
+        #     def foo(a=\
+        #             1)
+        if newText.endswith(('=\\\n', '=\\\r\n', '=\\\r')):
+            self.__source[line] = newText.rstrip("\n\r \t\\")
+            self.__source[line + 1] = self.__source[line + 1].lstrip()
+        else:
+            self.__source[line] = newText
+        return (True, self.trUtf8("Extraneous whitespace removed."))
+    
+    def __fixE261(self, code, line, pos):
+        """
+        Private method to fix whitespace before or after inline comment
+        (E261, E262).
+        
+        @param code code of the issue (string)
+        @param line line number of the issue (integer)
+        @param pos position inside line (integer)
+        @return flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+        """
+        line = line - 1
+        text = self.__source[line]
+        left = text[:pos].rstrip(' \t#')
+        right = text[pos:].lstrip(' \t#')
+        newText = left + ("  # " + right if right.strip() else right)
+        self.__source[line] = newText
+        return (True, self.trUtf8("Whitespace around comment sign corrected."))
+    
+    def __fixE301(self, code, line, pos, apply=False):
+        """
+        Private method to fix the need for one blank line (E301).
         
         @param code code of the issue (string)
         @param line line number of the issue (integer)
@@ -301,9 +796,17 @@
             self.__stack.append((code, line, pos))
         return (True, self.trUtf8("One blank line inserted."))
     
-    def __fixTwoBlankLines(self, code, line, pos, apply=False):
+    def __fixE302(self, code, line, pos, apply=False):
         """
-        Private method to fix the need for two blank lines.
+        Private method to fix the need for two blank lines (E302).
+        
+        @param code code of the issue (string)
+        @param line line number of the issue (integer)
+        @param pos position inside line (integer)
+        @keyparam apply flag indicating, that the fix should be applied
+            (boolean)
+        @return flag indicating an applied fix (boolean) and a message for
+            the fix (string)
         """
         # count blank lines
         index = line - 1
@@ -340,9 +843,59 @@
             msg = ""
         return (True, msg)
     
-    def __fixWhitespaceAfter(self, code, line, pos, apply=False):
+    def __fixE303(self, code, line, pos, apply=False):
+        """
+        Private method to fix superfluous blank lines (E303).
+        
+        @param code code of the issue (string)
+        @param line line number of the issue (integer)
+        @param pos position inside line (integer)
+        @keyparam apply flag indicating, that the fix should be applied
+            (boolean)
+        @return flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+        """
+        if apply:
+            index = line - 3
+            while index:
+                if self.__source[index].strip() == "":
+                    del self.__source[index]
+                    index -= 1
+                else:
+                    break
+        else:
+            self.__stack.append((code, line, pos))
+        return (True, self.trUtf8("Superfluous blank lines removed."))
+    
+    def __fixE304(self, code, line, pos, apply=False):
         """
-        Private method to fix superfluous whitespace after '([{'.
+        Private method to fix superfluous blank lines after a function
+        decorator (E304).
+        
+        @param code code of the issue (string)
+        @param line line number of the issue (integer)
+        @param pos position inside line (integer)
+        @keyparam apply flag indicating, that the fix should be applied
+            (boolean)
+        @return flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+        """
+        if apply:
+            index = line - 2
+            while index:
+                if self.__source[index].strip() == "":
+                    del self.__source[index]
+                    index -= 1
+                else:
+                    break
+        else:
+            self.__stack.append((code, line, pos))
+        return (True, self.trUtf8(
+            "Superfluous blank lines after function decorator removed."))
+    
+    def __fixE401(self, code, line, pos, apply=False):
+        """
+        Private method to fix multiple imports on one line (E401).
         
         @param code code of the issue (string)
         @param line line number of the issue (integer)
@@ -352,17 +905,28 @@
         @return flag indicating an applied fix (boolean) and a message for
             the fix (string)
         """
-        line = line - 1
-        pos = pos - 1
-        while self.__source[line][pos] in [" ", "\t"]:
-            self.__source[line] = self.__source[line][:pos] + \
-                                  self.__source[line][pos + 1:]
-        return (True, self.trUtf8("Superfluous whitespace removed."))
+        if apply:
+            line = line - 1
+            text = self.__source[line]
+            if not text.lstrip().startswith("import"):
+                return (False, "")
+            
+            # pep8 (1.3.1) reports false positive if there is an import
+            # statement followed by a semicolon and some unrelated
+            # statement with commas in it.
+            if ';' in text:
+                return (False, "")
+            
+            newText = text[:pos].rstrip("\t ,") + self.__getEol() + \
+                self.__getIndent(text) + "import " + text[pos:].lstrip("\t ,")
+            self.__source[line] = newText
+        else:
+            self.__stack.append((code, line, pos))
+        return (True, self.trUtf8("Imports were put on separate lines."))
     
-    def __fixWhitespaceBefore(self, code, line, pos, apply=False):
+    def __fixE501(self, code, line, pos, apply=False):
         """
-        Private method to fix superfluous whitespace before '}])',
-        ',;:' and '(['.
+        Private method to fix the long lines by breaking them (E501).
         
         @param code code of the issue (string)
         @param line line number of the issue (integer)
@@ -372,17 +936,49 @@
         @return flag indicating an applied fix (boolean) and a message for
             the fix (string)
         """
-        line = line - 1
-        pos = pos - 1
-        while self.__source[line][pos] in [" ", "\t"]:
-            self.__source[line] = self.__source[line][:pos] + \
-                                  self.__source[line][pos + 1:]
-            pos -= 1
-        return (True, self.trUtf8("Superfluous whitespace removed."))
+        multilineStringLines, docStringLines = self.__multilineStringLines()
+        if apply:
+            isDocString = line in docStringLines
+            line = line - 1
+            text = self.__source[line]
+            if line > 0:
+                prevText = self.__source[line - 1]
+            else:
+                prevText = ""
+            if line < len(self.__source) - 1:
+                nextText = self.__source[line + 1]
+            else:
+                nextText = ""
+            shortener = Pep8LineShortener(text, prevText, nextText,
+                 maxLength=self.__maxLineLength, eol=self.__getEol(),
+                 indentWord=self.__indentWord, isDocString=isDocString)
+            changed, newText, newNextText = shortener.shorten()
+            if changed:
+                if newText != text:
+                    self.__source[line] = newText
+                if newNextText and newNextText != nextText:
+                    self.__source[line + 1] = newNextText
+        else:
+            self.__stack.append((code, line, pos))
+        return (True, self.trUtf8("Long lines have been shortened."))
     
-    def __fixMissingWhitespaceAfter(self, code, line, pos, apply=False):
+    def __fixE502(self, code, line, pos):
         """
-        Private method to fix missing whitespace after ',;:'.
+        Private method to fix redundant backslash within brackets (E502).
+        
+        @param code code of the issue (string)
+        @param line line number of the issue (integer)
+        @param pos position inside line (integer)
+        @return flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+        """
+        self.__source[line - 1] = \
+            self.__source[line - 1].rstrip("\n\r \t\\") + self.__getEol()
+        return (True, self.trUtf8("Redundant backslash in brackets removed."))
+    
+    def __fixE701(self, code, line, pos, apply=False):
+        """
+        Private method to fix colon-separated compund statements (E701).
         
         @param code code of the issue (string)
         @param line line number of the issue (integer)
@@ -392,15 +988,23 @@
         @return flag indicating an applied fix (boolean) and a message for
             the fix (string)
         """
-        line = line - 1
-        self.__source[line] = self.__source[line][:pos] + \
-                               " " + \
-                               self.__source[line][pos:]
-        return (True, self.trUtf8("Missing whitespace added."))
+        if apply:
+            line = line - 1
+            text = self.__source[line]
+            pos = pos + 1
+            
+            newText = text[:pos] + self.__getEol() + self.__getIndent(text) + \
+                self.__indentWord + text[pos:].lstrip("\n\r \t\\") + \
+                self.__getEol()
+            self.__source[line] = newText
+        else:
+            self.__stack.append((code, line, pos))
+        return (True, self.trUtf8("Compound statement corrected."))
     
-    def __fixWhitespaceAroundOperator(self, code, line, pos, apply=False):
+    def __fixE702(self, code, line, pos, apply=False):
         """
-        Private method to fix extraneous whitespace around operator.
+        Private method to fix semicolon-separated compound statements
+        (E702, E703).
         
         @param code code of the issue (string)
         @param line line number of the issue (integer)
@@ -410,99 +1014,988 @@
         @return flag indicating an applied fix (boolean) and a message for
             the fix (string)
         """
-        line = line - 1
-        while self.__source[line][pos - 1] in [" ", "\t"]:
-            self.__source[line] = self.__source[line][:pos - 1] + \
-                                  self.__source[line][pos:]
-            pos -= 1
-        return (True, self.trUtf8("Extraneous whitespace removed."))
+        if apply:
+            line = line - 1
+            text = self.__source[line]
+            
+            if text.rstrip().endswith("\\"):
+                # normalize '1; \\\n2' into '1; 2'
+                self.__source[line] = text.rstrip("\n\r \t\\")
+                self.__source[line + 1] = self.__source[line + 1].lstrip()
+            elif text.rstrip().endswith(";"):
+                self.__source[line] = text.rstrip("\n\r \t;") + self.__getEol()
+            else:
+                first = text[:pos].rstrip("\n\r \t;") + self.__getEol()
+                second = text[pos:].lstrip("\n\r \t;")
+                self.__source[line] = first + self.__getIndent(text) + second
+        else:
+            self.__stack.append((code, line, pos))
+        return (True, self.trUtf8("Compound statement corrected."))
     
-    def __fixMissingWhitespaceAroundOperator(self, code, line, pos,
-                                                   apply=False):
+    def __fixE711(self, code, line, pos):
         """
-        Private method to fix missing whitespace after ',;:'.
+        Private method to fix comparison with None (E711, E712).
         
         @param code code of the issue (string)
         @param line line number of the issue (integer)
         @param pos position inside line (integer)
-        @keyparam apply flag indicating, that the fix should be applied
-            (boolean)
-        @return flag indicating an applied fix (boolean) and a message for
-            the fix (string)
-        """
-        line = line - 1
-        pos = pos - 1
-        self.__source[line] = self.__source[line][:pos] + \
-                               " " + \
-                               self.__source[line][pos:]
-        return (True, self.trUtf8("Missing whitespace added."))
-    
-    def __fixWhitespaceAroundEquals(self, code, line, pos, apply=False):
-        """
-        Private method to fix extraneous whitespace around keyword and
-        default parameter equals.
-        
-        @param code code of the issue (string)
-        @param line line number of the issue (integer)
-        @param pos position inside line (integer)
-        @keyparam apply flag indicating, that the fix should be applied
-            (boolean)
         @return flag indicating an applied fix (boolean) and a message for
             the fix (string)
         """
         line = line - 1
-        if self.__source[line][pos + 1] == " ":
-            self.__source[line] = self.__source[line][:pos + 1] + \
-                                   self.__source[line][pos + 2:]
-        if self.__source[line][pos - 1] == " ":
-            self.__source[line] = self.__source[line][:pos - 1] + \
-                                   self.__source[line][pos:]
-        return (True, self.trUtf8("Extraneous whitespace removed."))
+        text = self.__source[line]
+        
+        rightPos = pos + 2
+        if rightPos >= len(text):
+            return (False, "")
+        
+        left = text[:pos].rstrip()
+        center = text[pos:rightPos]
+        right = text[rightPos:].lstrip()
+        
+        if not right.startswith(("None", "True", "False")):
+            return (False, "")
+        
+        if center.strip() == "==":
+            center = "is"
+        elif center.strip() == "!=":
+            center = "is not"
+        else:
+            return (False, "")
+        
+        self.__source[line] = " ".join([left, center, right])
+        return (True, self.trUtf8("Comparison to None/True/False corrected."))
+    
+    def __fixW291(self, code, line, pos):
+        """
+        Private method to fix trailing whitespace (W291, W293).
+        
+        @param code code of the issue (string)
+        @param line line number of the issue (integer)
+        @param pos position inside line (integer)
+        @return flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+        """
+        self.__source[line - 1] = re.sub(r'[\t ]+(\r?)$', r"\1",
+                                         self.__source[line - 1])
+        return (True, self.trUtf8("Whitespace stripped from end of line."))
     
-    def __fixWhitespaceBeforeInline(self, code, line, pos, apply=False):
+    def __fixW292(self, code, line, pos):
+        """
+        Private method to fix a missing newline at the end of file (W292).
+        
+        @param code code of the issue (string)
+        @param line line number of the issue (integer)
+        @param pos position inside line (integer)
+        @return flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+        """
+        self.__source[line - 1] += self.__getEol()
+        return (True, self.trUtf8("newline added to end of file."))
+    
+    def __fixW391(self, code, line, pos):
         """
-        Private method to fix missing whitespace before inline comment.
+        Private method to fix trailing blank lines (W391).
+        
+        @param code code of the issue (string)
+        @param line line number of the issue (integer)
+        @param pos position inside line (integer)
+        @return flag indicating an applied fix (boolean) and a message for
+            the fix (string)
+        """
+        index = line - 1
+        while index:
+            if self.__source[index].strip() == "":
+                del self.__source[index]
+                index -= 1
+            else:
+                break
+        return (True, self.trUtf8(
+            "Superfluous trailing blank lines removed from end of file."))
+    
+    def __fixW603(self, code, line, pos):
+        """
+        Private method to fix the not equal notation (W603).
         
         @param code code of the issue (string)
         @param line line number of the issue (integer)
         @param pos position inside line (integer)
-        @keyparam apply flag indicating, that the fix should be applied
-            (boolean)
         @return flag indicating an applied fix (boolean) and a message for
             the fix (string)
         """
-        line = line - 1
-        pos = pos - 1
-        if self.__source[line][pos] == " ":
-            count = 1
+        self.__source[line - 1] = self.__source[line - 1].replace("<>", "!=")
+        return (True, self.trUtf8("'<>' replaced by '!='."))
+
+
+class Pep8Reindenter(object):
+    """
+    Class to reindent badly-indented code to uniformly use four-space
+    indentation.
+
+    Released to the public domain, by Tim Peters, 03 October 2000.
+    """
+    def __init__(self, sourceLines):
+        """
+        Constructor
+        
+        @param sourceLines list of source lines including eol marker
+            (list of string)
+        """
+        # Raw file lines.
+        self.raw = sourceLines
+        self.after = []
+
+        # File lines, rstripped & tab-expanded.  Dummy at start is so
+        # that we can use tokenize's 1-based line numbering easily.
+        # Note that a line is all-blank iff it's "\n".
+        self.lines = [line.rstrip().expandtabs() + "\n"
+                      for line in self.raw]
+        self.lines.insert(0, None)
+        self.index = 1  # index into self.lines of next line
+
+        # List of (lineno, indentlevel) pairs, one for each stmt and
+        # comment line.  indentlevel is -1 for comment lines, as a
+        # signal that tokenize doesn't know what to do about them;
+        # indeed, they're our headache!
+        self.stats = []
+    
+    def run(self):
+        """
+        Public method to run the re-indenter.
+        """
+        try:
+            stats = self.__genStats(tokenize.generate_tokens(self.getline))
+        except (SyntaxError, tokenize.TokenError):
+            return False
+        
+        # Remove trailing empty lines.
+        lines = self.lines
+        while lines and lines[-1] == "\n":
+            lines.pop()
+        # Sentinel.
+        stats.append((len(lines), 0))
+        # Map count of leading spaces to # we want.
+        have2want = {}
+        # Program after transformation.
+        after = self.after = []
+        # Copy over initial empty lines -- there's nothing to do until
+        # we see a line with *something* on it.
+        i = stats[0][0]
+        after.extend(lines[1:i])
+        for i in range(len(stats) - 1):
+            thisstmt, thislevel = stats[i]
+            nextstmt = stats[i + 1][0]
+            have = self.__getlspace(lines[thisstmt])
+            want = thislevel * 4
+            if want < 0:
+                # A comment line.
+                if have:
+                    # An indented comment line.  If we saw the same
+                    # indentation before, reuse what it most recently
+                    # mapped to.
+                    want = have2want.get(have, -1)
+                    if want < 0:
+                        # Then it probably belongs to the next real stmt.
+                        for j in range(i + 1, len(stats) - 1):
+                            jline, jlevel = stats[j]
+                            if jlevel >= 0:
+                                if have == self.__getlspace(lines[jline]):
+                                    want = jlevel * 4
+                                break
+                    if want < 0:           # Maybe it's a hanging
+                                           # comment like this one,
+                        # in which case we should shift it like its base
+                        # line got shifted.
+                        for j in range(i - 1, -1, -1):
+                            jline, jlevel = stats[j]
+                            if jlevel >= 0:
+                                want = \
+                                    have + \
+                                    self.__getlspace(after[jline - 1]) - \
+                                    self.__getlspace(lines[jline])
+                                break
+                    if want < 0:
+                        # Still no luck -- leave it alone.
+                        want = have
+                else:
+                    want = 0
+            assert want >= 0
+            have2want[have] = want
+            diff = want - have
+            if diff == 0 or have == 0:
+                after.extend(lines[thisstmt:nextstmt])
+            else:
+                for line in lines[thisstmt:nextstmt]:
+                    if diff > 0:
+                        if line == "\n":
+                            after.append(line)
+                        else:
+                            after.append(" " * diff + line)
+                    else:
+                        remove = min(self.__getlspace(line), -diff)
+                        after.append(line[remove:])
+        return self.raw != self.after
+    
+    def fixedLine(self, line):
+        """
+        Public method to get a fixed line.
+        
+        @param line number of the line to retrieve (integer)
+        @return fixed line (string)
+        """
+        if line < len(self.after):
+            return self.after[line]
+    
+    def getline(self):
+        """
+        Public method to get a line of text for tokenize.
+        
+        @return line of text (string)
+        """
+        if self.index >= len(self.lines):
+            line = ""
         else:
-            count = 2
-        self.__source[line] = self.__source[line][:pos] + \
-                               count * " " + \
-                               self.__source[line][pos:]
-        return (True, self.trUtf8("Missing whitespace added."))
+            line = self.lines[self.index]
+            self.index += 1
+        return line
+
+    def __genStats(self, tokens):
+        """
+        Private method to generate the re-indent statistics.
+        
+        @param tokens tokens generator (tokenize._tokenize)
+        """
+        find_stmt = True  # next token begins a fresh stmt?
+        level = 0  # current indent level
+        stats = []
+
+        for t in tokens:
+            token_type = t[0]
+            sline = t[2][0]
+            line = t[4]
+
+            if token_type == tokenize.NEWLINE:
+                # A program statement, or ENDMARKER, will eventually follow,
+                # after some (possibly empty) run of tokens of the form
+                #     (NL | COMMENT)* (INDENT | DEDENT+)?
+                self.find_stmt = True
+
+            elif token_type == tokenize.INDENT:
+                find_stmt = True
+                level += 1
+
+            elif token_type == tokenize.DEDENT:
+                find_stmt = True
+                level -= 1
+
+            elif token_type == tokenize.COMMENT:
+                if find_stmt:
+                    stats.append((sline, -1))
+                    # but we're still looking for a new stmt, so leave
+                    # find_stmt alone
+
+            elif token_type == tokenize.NL:
+                pass
+
+            elif find_stmt:
+                # This is the first "real token" following a NEWLINE, so it
+                # must be the first token of the next program statement, or an
+                # ENDMARKER.
+                find_stmt = False
+                if line:   # not endmarker
+                    stats.append((sline, level))
+        
+        return stats
+    
+    def __getlspace(self, line):
+        """
+        Private method to count number of leading blanks.
+        
+        @param line line to check (string)
+        @return number of leading blanks (integer)
+        """
+        i = 0
+        n = len(line)
+        while i < n and line[i] == " ":
+            i += 1
+        return i
+
+
+class Pep8IndentationWrapper(object):
+    """
+    Class used by fixers dealing with indentation.
+
+    Each instance operates on a single logical line.
+    """
     
-    def __fixWhitespaceAfterInline(self, code, line, pos, apply=False):
+    SKIP_TOKENS = frozenset([
+        tokenize.COMMENT, tokenize.NL, tokenize.INDENT,
+        tokenize.DEDENT, tokenize.NEWLINE, tokenize.ENDMARKER
+    ])
+
+    def __init__(self, physical_lines):
+        """
+        Constructor
+        
+        @param physical_lines list of physical lines to operate on
+            (list of strings)
+        """
+        self.lines = physical_lines
+        self.tokens = []
+        self.rel_indent = None
+        sio = io.StringIO(''.join(physical_lines))
+        for t in tokenize.generate_tokens(sio.readline):
+            if not len(self.tokens) and t[0] in self.SKIP_TOKENS:
+                continue
+            if t[0] != tokenize.ENDMARKER:
+                self.tokens.append(t)
+
+        self.logical_line = self.__buildTokensLogical(self.tokens)
+
+    def __buildTokensLogical(self, tokens):
+        """
+        Private method to build a logical line from a list of tokens.
+        
+        @param tokens list of tokens as generated by tokenize.generate_tokens
+        @return logical line (string)
+        """
+        # from pep8.py with minor modifications
+        logical = []
+        previous = None
+        for t in tokens:
+            token_type, text = t[0:2]
+            if token_type in self.SKIP_TOKENS:
+                continue
+            if previous:
+                end_line, end = previous[3]
+                start_line, start = t[2]
+                if end_line != start_line:  # different row
+                    prev_text = self.lines[end_line - 1][end - 1]
+                    if prev_text == ',' or (prev_text not in '{[('
+                                            and text not in '}])'):
+                        logical.append(' ')
+                elif end != start:  # different column
+                    fill = self.lines[end_line - 1][end:start]
+                    logical.append(fill)
+            logical.append(text)
+            previous = t
+        logical_line = ''.join(logical)
+        assert logical_line.lstrip() == logical_line
+        assert logical_line.rstrip() == logical_line
+        return logical_line
+
+    def pep8Expected(self):
+        """
+        Public method to replicate logic in pep8.py, to know what level to
+        indent things to.
+
+        @return list of lists, where each list represents valid indent levels
+        for the line in question, relative from the initial indent. However,
+        the first entry is the indent level which was expected.
         """
-        Private method to fix whitespace after inline comment.
+        # What follows is an adjusted version of
+        # pep8.py:continuation_line_indentation. All of the comments have been
+        # stripped and the 'yield' statements replaced with 'pass'.
+        if not self.tokens:
+            return
+
+        first_row = self.tokens[0][2][0]
+        nrows = 1 + self.tokens[-1][2][0] - first_row
+
+        # here are the return values
+        valid_indents = [list()] * nrows
+        indent_level = self.tokens[0][2][1]
+        valid_indents[0].append(indent_level)
+
+        if nrows == 1:
+            # bug, really.
+            return valid_indents
+
+        indent_next = self.logical_line.endswith(':')
+
+        row = depth = 0
+        parens = [0] * nrows
+        self.rel_indent = rel_indent = [0] * nrows
+        indent = [indent_level]
+        indent_chances = {}
+        last_indent = (0, 0)
+        last_token_multiline = None
+
+        for token_type, text, start, end, line in self.tokens:
+            newline = row < start[0] - first_row
+            if newline:
+                row = start[0] - first_row
+                newline = (not last_token_multiline and
+                           token_type not in (tokenize.NL, tokenize.NEWLINE))
+
+            if newline:
+                # This is where the differences start. Instead of looking at
+                # the line and determining whether the observed indent matches
+                # our expectations, we decide which type of indentation is in
+                # use at the given indent level, and return the offset. This
+                # algorithm is susceptible to "carried errors", but should
+                # through repeated runs eventually solve indentation for
+                # multiline expressions.
+
+                if depth:
+                    for open_row in range(row - 1, -1, -1):
+                        if parens[open_row]:
+                            break
+                else:
+                    open_row = 0
+
+                # That's all we get to work with. This code attempts to
+                # "reverse" the below logic, and place into the valid indents
+                # list
+                vi = []
+                add_second_chances = False
+                if token_type == tokenize.OP and text in ']})':
+                    # this line starts with a closing bracket, so it needs to
+                    # be closed at the same indent as the opening one.
+                    if indent[depth]:
+                        # hanging indent
+                        vi.append(indent[depth])
+                    else:
+                        # visual indent
+                        vi.append(indent_level + rel_indent[open_row])
+                elif depth and indent[depth]:
+                    # visual indent was previously confirmed.
+                    vi.append(indent[depth])
+                    add_second_chances = True
+                elif depth and True in indent_chances.values():
+                    # visual indent happened before, so stick to
+                    # visual indent this time.
+                    if depth > 1 and indent[depth - 1]:
+                        vi.append(indent[depth - 1])
+                    else:
+                        # stupid fallback
+                        vi.append(indent_level + 4)
+                    add_second_chances = True
+                elif not depth:
+                    vi.append(indent_level + 4)
+                else:
+                    # must be in hanging indent
+                    hang = rel_indent[open_row] + 4
+                    vi.append(indent_level + hang)
+
+                # about the best we can do without look-ahead
+                if (indent_next and vi[0] == indent_level + 4 and
+                        nrows == row + 1):
+                    vi[0] += 4
+
+                if add_second_chances:
+                    # visual indenters like to line things up.
+                    min_indent = vi[0]
+                    for col, what in indent_chances.items():
+                        if col > min_indent and (
+                            what is True or
+                            (what == str and token_type == tokenize.STRING) or
+                            (what == text and token_type == tokenize.OP)
+                        ):
+                            vi.append(col)
+                    vi = sorted(vi)
+
+                valid_indents[row] = vi
+
+                # Returning to original continuation_line_indentation() from
+                # pep8.
+                visual_indent = indent_chances.get(start[1])
+                last_indent = start
+                rel_indent[row] = pep8.expand_indent(line) - indent_level
+                hang = rel_indent[row] - rel_indent[open_row]
+
+                if token_type == tokenize.OP and text in ']})':
+                    pass
+                elif visual_indent is True:
+                    if not indent[depth]:
+                        indent[depth] = start[1]
+
+            # line altered: comments shouldn't define a visual indent
+            if parens[row] and not indent[depth] and token_type not in (
+                tokenize.NL, tokenize.COMMENT
+            ):
+                indent[depth] = start[1]
+                indent_chances[start[1]] = True
+            elif token_type == tokenize.STRING or text in (
+                'u', 'ur', 'b', 'br'
+            ):
+                indent_chances[start[1]] = str
+
+            if token_type == tokenize.OP:
+                if text in '([{':
+                    depth += 1
+                    indent.append(0)
+                    parens[row] += 1
+                elif text in ')]}' and depth > 0:
+                    prev_indent = indent.pop() or last_indent[1]
+                    for d in range(depth):
+                        if indent[d] > prev_indent:
+                            indent[d] = 0
+                    for ind in list(indent_chances):
+                        if ind >= prev_indent:
+                            del indent_chances[ind]
+                    depth -= 1
+                    if depth and indent[depth]:  # modified
+                        indent_chances[indent[depth]] = True
+                    for idx in range(row, -1, -1):
+                        if parens[idx]:
+                            parens[idx] -= 1
+                            break
+                assert len(indent) == depth + 1
+                if start[1] not in indent_chances:
+                    indent_chances[start[1]] = text
+
+            last_token_multiline = (start[0] != end[0])
+
+        return valid_indents
+
+
+class Pep8LineShortener(object):
+    """
+    Class used to shorten lines to a given maximum of characters.
+    """
+    def __init__(self, curLine, prevLine, nextLine, maxLength=79, eol="\n",
+                 indentWord="    ", isDocString=False):
+        """
+        Constructor
         
-        @param code code of the issue (string)
-        @param line line number of the issue (integer)
-        @param pos position inside line (integer)
-        @keyparam apply flag indicating, that the fix should be applied
+        @param curLine text to work on (string)
+        @param prevLine line before the text to work on (string)
+        @param nextLine line after the text to work on (string)
+        @keyparam maxLength maximum allowed line length (integer)
+        @keyparam eol eond-of-line marker (string)
+        @keyparam indentWord string used for indentation (string)
+        @keyparam isDocString flag indicating that the line belongs to
+            a documentation string (boolean)
+        """
+        self.__text = curLine
+        self.__prevText = prevLine
+        self.__nextText = nextLine
+        self.__maxLength = maxLength
+        self.__eol = eol
+        self.__indentWord = indentWord
+        self.__isDocString = isDocString
+    
+    def shorten(self):
+        """
+        Public method to shorten the line wrapped by the class instance.
+        
+        @return tuple of a flag indicating successful shortening, the
+            shortened line and the changed next line (boolean, string, string)
+        """
+        # 1. check for comment
+        if self.__text.lstrip().startswith('#'):
+            lastComment = True
+            if self.__nextText.lstrip().startswith('#'):
+                lastComment = False
+
+            # Wrap commented lines.
+            newText = self.__shortenComment(lastComment)
+            if newText == self.__text:
+                return False, "", ""
+            else:
+                return True, newText, ""
+        elif '#' in self.__text:
+            pos = self.__text.rfind("#")
+            newText = self.__text[:pos].rstrip() + self.__eol + \
+                self.__getIndent(self.__text) + self.__text[pos:]
+            if newText == self.__text:
+                return False, "", ""
+            else:
+                return True, newText, ""
+
+        # Do multi line doc strings
+        if self.__isDocString:
+            source = self.__text.rstrip()
+            blank = source.rfind(" ")
+            while blank > self.__maxLength and blank != -1:
+                blank = source.rfind(" ", 0, blank)
+            if blank == -1:
+                # Cannot break
+                return False, "", ""
+            else:
+                first = self.__text[:blank]
+                second = self.__text[blank:].lstrip()
+                if self.__nextText.strip():
+                    if self.__nextText.lstrip().startswith("@"):
+                        # eric doc comment
+                        # create a new line and indent it
+                        newText = first + self.__eol + \
+                            self.__getIndent(first) + self.__indentWord + \
+                            second
+                        newNext = ""
+                    else:
+                        newText = first + self.__eol
+                        newNext = self.__getIndent(self.__nextText) + \
+                            second.rstrip() + " " + self.__nextText.lstrip()
+                else:
+                    # empty line, add a new line
+                    newText = first + self.__eol + self.__getIndent(first) + \
+                        second
+                    newNext = ""
+            return True, newText, newNext
+        
+        indent = self.__getIndent(self.__text)
+        source = self.__text[len(indent):]
+        assert source.lstrip() == source
+        sio = io.StringIO(source)
+        
+        # Check for multi line string.
+        try:
+            tokens = list(tokenize.generate_tokens(sio.readline))
+        except (SyntaxError, tokenize.TokenError):
+            if source.rstrip().endswith("\\"):
+                # just join the continuation line and let the next run
+                # handle it once it tokenizes ok
+                newText = indent + source.rstrip()[:-1].rstrip() + " " + \
+                    self.__nextText.lstrip()
+                if indent:
+                    newNext = indent
+                else:
+                    newNext = " "
+                return True, newText, newNext
+            else:
+                multilineCandidate = self.__breakMultiline()
+                if multilineCandidate:
+                    return True, multilineCandidate[0], multilineCandidate[1]
+                else:
+                    return False, "", ""
+
+        # Handle statements by putting the right hand side on a line by itself.
+        # This should let the next pass shorten it.
+        if source.startswith('return '):
+            newText = (
+                indent +
+                'return (' +
+                self.__eol +
+                indent + self.__indentWord + re.sub('^return ', '', source) +
+                indent + ')' + self.__eol
+            )
+            return True, newText, ""
+        
+        candidates = self.__shortenLine(tokens, source, indent)
+        if candidates:
+            candidates = list(sorted(
+                set(candidates).union([self.__text]),
+                key=lambda x: self.__lineShorteningRank(x)))
+            return True, candidates[0], ""
+        
+        source = self.__text
+        rs = source.rstrip()
+        if rs.endswith(("'", '"')) and " " in source:
+            if rs.endswith(('"""', "'''")):
+                quote = rs[-3:]
+            else:
+                quote = rs[-1]
+            blank = source.rfind(" ")
+            maxLen = self.__maxLength - 2 - len(quote)
+            while blank > maxLen and blank != -1:
+                blank = source.rfind(" ", 0, blank)
+            if blank != -1:
+                if source[blank + 1:].startswith(quote):
+                    first = source[:maxLen]
+                    second = source[maxLen:]
+                else:
+                    first = source[:blank]
+                    second = source[blank + 1:]
+                return (True,
+                    first + quote + " \\" + self.__eol +
+                    indent + self.__indentWord + quote + second,
+                    "")
+            else:
+                # Cannot break
+                return False, "", ""
+        
+        return False, "", ""
+    
+    def __shortenComment(self, isLast):
+        """
+        Private method to shorten a comment line.
+        
+        @param isLast flag indicating, that the line is the last comment line
             (boolean)
-        @return flag indicating an applied fix (boolean) and a message for
-            the fix (string)
+        @return shortened comment line (string)
+        """
+        if len(self.__text) <= self.__maxLength:
+            return self.__text
+        
+        newText = self.__text.rstrip()
+
+        # PEP 8 recommends 72 characters for comment text.
+        indentation = self.__getIndent(newText) + '# '
+        maxLength = min(self.__maxLength,
+                        len(indentation) + 72)
+
+        MIN_CHARACTER_REPEAT = 5
+        if (len(newText) - len(newText.rstrip(newText[-1])) >= \
+                MIN_CHARACTER_REPEAT and
+                not newText[-1].isalnum()):
+            # Trim comments that end with things like ---------
+            return newText[:maxLength] + self.__eol
+        elif isLast and re.match(r"\s*#+\s*\w+", newText):
+            import textwrap
+            splitLines = textwrap.wrap(newText.lstrip(" \t#"),
+                                       initial_indent=indentation,
+                                       subsequent_indent=indentation,
+                                       width=maxLength,
+                                       break_long_words=False,
+                                       break_on_hyphens=False)
+            return self.__eol.join(splitLines) + self.__eol
+        else:
+            return newText + self.__eol
+    
+    def __breakMultiline(self):
+        """
+        Private method to break multi line strings.
+        
+        @return tuple of the shortened line and the changed next line
+            (string, string)
         """
-        line = line - 1
-        if self.__source[line][pos] == " ":
-            pos += 1
-            while self.__source[line][pos] == " ":
-                self.__source[line] = self.__source[line][:pos] + \
-                                      self.__source[line][pos + 1:]
+        indentation = self.__getIndent(self.__text)
+
+        # Handle special case.
+        for symbol in '([{':
+            # Only valid if symbol is not on a line by itself.
+            if (
+                symbol in self.__text and
+                self.__text.strip() != symbol and
+                self.__text.rstrip().endswith((',', '%'))
+            ):
+                index = 1 + self.__text.find(symbol)
+
+                if index <= len(self.__indentWord) + len(indentation):
+                    continue
+
+                if self.__isProbablyInsideStringOrComment(
+                        self.__text, index - 1):
+                    continue
+
+                return (self.__text[:index].rstrip() + self.__eol +
+                        indentation + self.__indentWord +
+                        self.__text[index:].lstrip(), "")
+        
+        newText = self.__text
+        newNext = self.__nextText
+        blank = newText.rfind(" ")
+        while blank > self.__maxLength and blank != -1:
+            blank = newText.rfind(" ", 0, blank)
+        if blank != -1:
+            first = self.__text[:blank]
+            second = self.__text[blank:].strip()
+            if newNext.strip():
+                newText = first + self.__eol
+                newNext = self.__getIndent(newNext) + \
+                    second + " " + newNext.lstrip()
+            else:
+                # empty line, add a new line
+                newText = first + self.__eol
+                newNext = self.__getIndent(newNext) + \
+                    second + self.__eol + newNext.lstrip()
+        return newText, newNext
+    
+    def __isProbablyInsideStringOrComment(self, line, index):
+        """
+        Private method to check, if the given string might be inside a string
+        or comment.
+        
+        @param line line to check (string)
+        @param index position inside line to check (integer)
+        @return flag indicating the possibility of being inside a string
+            or comment
+        """
+        # Check against being in a string.
+        for quote in ['"', "'"]:
+            pos = line.find(quote)
+            if pos != -1 and pos <= index:
+                return True
+
+        # Check against being in a comment.
+        pos = line.find('#')
+        if pos != -1 and pos <= index:
+            return True
+
+        return False
+    
+    def __shortenLine(self, tokens, source, indent):
+        """
+        Private method to shorten a line of code at an operator.
+        
+        @param tokens tokens of the line as generated by tokenize
+            (list of token)
+        @param source code string to work at (string)
+        @param indent indentation string of the code line (string)
+        @return list of candidates (list of string)
+        """
+        candidates = []
+        
+        for tkn in tokens:
+            tokenType = tkn[0]
+            tokenString = tkn[1]
+
+            if (
+                tokenType == tokenize.COMMENT and
+                not self.__prevText.rstrip().endswith('\\')
+            ):
+                # Move inline comments to previous line.
+                offset = tkn[2][1]
+                first = source[:offset]
+                second = source[offset:]
+                candidates.append(indent + second.strip() + self.__eol +
+                       indent + first.strip() + self.__eol)
+            elif tokenType == tokenize.OP and tokenString != '=':
+                # Don't break on '=' after keyword as this violates PEP 8.
+
+                assert tokenType != tokenize.INDENT
+
+                offset = tkn[2][1] + 1
+                first = source[:offset]
+
+                secondIndent = indent
+                if first.rstrip().endswith('('):
+                    secondIndent += self.__indentWord
+                elif '(' in first:
+                    secondIndent += ' ' * (1 + first.find('('))
+                else:
+                    secondIndent += self.__indentWord
+
+                second = (secondIndent + source[offset:].lstrip())
+                if not second.strip():
+                    continue
+
+                # Do not begin a line with a comma
+                if second.lstrip().startswith(','):
+                    continue
+                
+                # Do end a line with a dot
+                if first.rstrip().endswith('.'):
+                    continue
+                
+                if tokenString in '+-*/':
+                    newText = first + ' \\' + self.__eol + second
+                else:
+                    newText = first + self.__eol + second
+
+                # Only fix if syntax is okay.
+                if self.__checkSyntax(self.__normalizeMultiline(newText)):
+                    candidates.append(indent + newText)
+        
+        return candidates
+    
+    def __normalizeMultiline(self, text):
+        """
+        Private method to remove multiline-related code that will cause syntax
+        error.
+        
+        @param line code line to work on (string)
+        @return normalized code line (string)
+        """
+        for quote in '\'"':
+            dictPattern = r"^{q}[^{q}]*{q} *: *".format(q=quote)
+            if re.match(dictPattern, text):
+                if not text.strip().endswith('}'):
+                    text += '}'
+                return '{' + text
+
+        if text.startswith('def ') and text.rstrip().endswith(':'):
+            # Do not allow ':' to be alone. That is invalid.
+            splitText = [item.strip() for item in text.split(self.__eol)]
+            if ':' not in splitText and 'def' not in splitText:
+                return text[len('def'):].strip().rstrip(':')
+
+        return text
+    
+    def __lineShorteningRank(self, candidate):
+        """
+        Private method to rank a candidate.
+        
+        @param candidate candidate line to rank (string)
+        @return rank of the candidate (integer)
+        """
+        rank = 0
+        if candidate.strip():
+            lines = candidate.split(self.__eol)
+
+            offset = 0
+            if lines[0].rstrip()[-1] not in '([{':
+                for symbol in '([{':
+                    offset = max(offset, 1 + lines[0].find(symbol))
+
+            maxLength = max([offset + len(x.strip()) for x in lines])
+            rank += maxLength
+            rank += len(lines)
+
+            badStartingSymbol = {
+                '(': ')',
+                '[': ']',
+                '{': '}'}.get(lines[0][-1], None)
+
+            if len(lines) > 1:
+                if (badStartingSymbol and
+                        lines[1].lstrip().startswith(badStartingSymbol)):
+                    rank += 20
+
+            if re.match(r".*[+\-\*/] \($", lines[0]):
+                # "1 * (\n" is ugly as hell.
+                rank += 100
+
+            for currentLine in lines:
+                for badStart in ['.', '%', '+', '-', '/']:
+                    if currentLine.startswith(badStart):
+                        rank += 100
+
+                for ending in '([{':
+                    # Avoid lonely opening. They result in longer lines.
+                    if (currentLine.endswith(ending) and
+                            len(currentLine.strip()) <= \
+                            len(self.__indentWord)):
+                        rank += 100
+
+                if currentLine.endswith('%'):
+                    rank -= 20
+
+                # Try to break list comprehensions at the "for".
+                if currentLine.lstrip().startswith('for'):
+                    rank -= 50
+
+                rank += 10 * self.__countUnbalancedBrackets(currentLine)
         else:
-            self.__source[line] = self.__source[line][:pos] + \
-                                   " " + \
-                                   self.__source[line][pos:]
-        return (True, self.trUtf8(
-            "Whitespace after inline comment sign corrected."))
+            rank = 100000
+        
+        return max(0, rank)
+    
+    def __countUnbalancedBrackets(self, line):
+        """
+        Private method to determine the number of unmatched open/close
+        brackets.
+        
+        @param line line to work at (string)
+        @return number of unmatched open/close brackets (integer)
+        """
+        count = 0
+        for opening, closing in ['()', '[]', '{}']:
+            count += abs(line.count(opening) - line.count(closing))
+        
+        return count
+    
+    def __getIndent(self, line):
+        """
+        Private method to get the indentation string.
+        
+        @param line line to determine the indentation string from (string)
+        @return indentation string (string)
+        """
+        # copied from Pep8Fixer
+        return line.replace(line.lstrip(), "")
+    
+    def __checkSyntax(self, code):
+        """
+        Private method to check the syntax of the given code fragment.
+        
+        @param code code fragment to check (string)
+        @return flag indicating syntax is ok (boolean)
+        """
+        code = code.replace("\r\n", "\n").replace("\r", "\n")
+        try:
+            return compile(code, '<string>', 'exec')
+        except (SyntaxError, TypeError, UnicodeDecodeError):
+            return False
--- a/Plugins/CheckerPlugins/Pep8/Pep8StatisticsDialog.py	Mon Aug 12 22:21:53 2013 +0200
+++ b/Plugins/CheckerPlugins/Pep8/Pep8StatisticsDialog.py	Sun Sep 08 19:04:07 2013 +0200
@@ -49,9 +49,11 @@
                 message = QCoreApplication.translate("pep8",
                     pep8.pep8_messages[code]).format(
                         *pep8.pep8_messages_sample_args[code])
-            else:
+            elif code in pep8.pep8_messages:
                 message = QCoreApplication.translate("pep8",
                     pep8.pep8_messages[code])
+            else:
+                continue
             self.__createItem(stats[code], code, message)
             totalIssues += stats[code]
         
--- a/Plugins/CheckerPlugins/Pep8/pep8.py	Mon Aug 12 22:21:53 2013 +0200
+++ b/Plugins/CheckerPlugins/Pep8/pep8.py	Sun Sep 08 19:04:07 2013 +0200
@@ -2,7 +2,8 @@
 
 #
 # pep8.py - Check Python source code formatting, according to PEP 8
-# Copyright (C) 2006 Johann C. Rocholl <johann@rocholl.net>
+# Copyright (C) 2006-2009 Johann C. Rocholl <johann@rocholl.net>
+# Copyright (C) 2009-2013 Florent Xicluna <florent.xicluna@gmail.com>
 #
 # Permission is hereby granted, free of charge, to any person
 # obtaining a copy of this software and associated documentation files
@@ -44,68 +45,21 @@
 500 line length
 600 deprecation
 700 statements
-900 processing errors
-
-You can add checks to this program by writing plugins. Each plugin is
-a simple function that is called for each line of source code, either
-physical or logical.
-
-Physical line:
-- Raw line of text from the input file.
-
-Logical line:
-- Multi-line statements converted to a single line.
-- Stripped left and right.
-- Contents of strings replaced with 'xxx' of same length.
-- Comments removed.
-
-The check function requests physical or logical lines by the name of
-the first argument:
-
-def maximum_line_length(physical_line)
-def extraneous_whitespace(logical_line)
-def blank_lines(logical_line, blank_lines, indent_level, line_number)
-
-The last example above demonstrates how check plugins can request
-additional information with extra arguments. All attributes of the
-Checker object are available. Some examples:
-
-lines: a list of the raw lines from the input file
-tokens: the tokens that contribute to this logical line
-line_number: line number in the input file
-blank_lines: blank lines before this one
-indent_char: first indentation character in this file (' ' or '\t')
-indent_level: indentation (with tabs expanded to multiples of 8)
-previous_indent_level: indentation on previous line
-previous_logical: previous logical line
-
-The docstring of each check function shall be the relevant part of
-text from PEP 8. It is printed if the user enables --show-pep8.
-Several docstrings contain examples directly from the PEP 8 document.
-
-Okay: spam(ham[1], {eggs: 2})
-E201: spam( ham[1], {eggs: 2})
-
-These examples are verified automatically when pep8.py is run with the
---doctest option. You can add examples for your own check functions.
-The format is simple: "Okay" or error/warning code followed by colon
-and space, the rest of the line is example source code. If you put 'r'
-before the docstring, you can use \n for newline, \t for tab and \s
-for space.
-
+900 syntax error
 """
 
 #
-# This is a modified version to make the original tabnanny better suitable
+# This is a modified version to make the original pep8.py better suitable
 # for being called from within the eric5 IDE. The modifications are as
 # follows:
 #
 # - made messages translatable via Qt
+# - added code for eric5 integration
 #
 # Copyright (c) 2011 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
-__version__ = '0.6.1'
+__version__ = '1.4.6'
 
 import os
 import sys
@@ -117,43 +71,60 @@
 from optparse import OptionParser
 from fnmatch import fnmatch
 try:
-    frozenset
-except NameError:
-    from sets import ImmutableSet as frozenset
+    from configparser import RawConfigParser
+    from io import TextIOWrapper
+except ImportError:
+    from ConfigParser import RawConfigParser            # __IGNORE_WARNING__
 
 from PyQt4.QtCore import QCoreApplication, QT_TRANSLATE_NOOP
 
-DEFAULT_EXCLUDE = '.svn,CVS,.bzr,.hg,.git'
-DEFAULT_IGNORE = 'E24'
+DEFAULT_EXCLUDE = '.svn,CVS,.bzr,.hg,.git,__pycache__'
+DEFAULT_IGNORE = 'E123,E226,E24'
+if sys.platform == 'win32':
+    DEFAULT_CONFIG = os.path.expanduser(r'~\.pep8')
+else:
+    DEFAULT_CONFIG = os.path.join(os.getenv('XDG_CONFIG_HOME') or
+                                  os.path.expanduser('~/.config'), 'pep8')
+PROJECT_CONFIG = ('setup.cfg', 'tox.ini', '.pep8')
+TESTSUITE_PATH = os.path.join(os.path.dirname(__file__), 'testsuite')
 MAX_LINE_LENGTH = 79
+REPORT_FORMAT = {
+    'default': '%(path)s:%(row)d:%(col)d: %(code)s %(text)s',
+    'pylint': '%(path)s:%(row)d: [%(code)s] %(text)s',
+}
+
+PyCF_ONLY_AST = 1024
+SINGLETONS = frozenset(['False', 'None', 'True'])
+KEYWORDS = frozenset(keyword.kwlist + ['print']) - SINGLETONS
+UNARY_OPERATORS = frozenset(['>>', '**', '*', '+', '-'])
+ARITHMETIC_OP = frozenset(['**', '*', '/', '//', '+', '-'])
+WS_OPTIONAL_OPERATORS = ARITHMETIC_OP.union(['^', '&', '|', '<<', '>>', '%'])
+WS_NEEDED_OPERATORS = frozenset([
+    '**=', '*=', '/=', '//=', '+=', '-=', '!=', '<>', '<', '>',
+    '%=', '^=', '&=', '|=', '==', '<=', '>=', '<<=', '>>=', '='])
+WHITESPACE = frozenset(' \t')
+SKIP_TOKENS = frozenset([tokenize.COMMENT, tokenize.NL, tokenize.NEWLINE,
+                         tokenize.INDENT, tokenize.DEDENT])
+BENCHMARK_KEYS = ['directories', 'files', 'logical lines', 'physical lines']
 
 INDENT_REGEX = re.compile(r'([ \t]*)')
-RAISE_COMMA_REGEX = re.compile(r'raise\s+\w+\s*(,)')
-SELFTEST_REGEX = re.compile(r'(Okay|[EW]\d{3}):\s(.*)')
-ERRORCODE_REGEX = re.compile(r'[EW]\d{3}')
+RAISE_COMMA_REGEX = re.compile(r'raise\s+\w+\s*,')
+RERAISE_COMMA_REGEX = re.compile(r'raise\s+\w+\s*,\s*\w+\s*,\s*\w+')
+ERRORCODE_REGEX = re.compile(r'\b[A-Z]\d{3}\b')
 DOCSTRING_REGEX = re.compile(r'u?r?["\']')
-WHITESPACE_AROUND_OPERATOR_REGEX = \
-    re.compile('([^\w\s]*)\s*(\t|  )\s*([^\w\s]*)')
 EXTRANEOUS_WHITESPACE_REGEX = re.compile(r'[[({] | []}),;:]')
-WHITESPACE_AROUND_NAMED_PARAMETER_REGEX = \
-    re.compile(r'[()]|\s=[^=]|[^=!<>]=\s')
-
-
-WHITESPACE = ' \t'
+WHITESPACE_AFTER_COMMA_REGEX = re.compile(r'[,;:]\s*(?:  |\t)')
+COMPARE_SINGLETON_REGEX = re.compile(r'([=!]=)\s*(None|False|True)')
+COMPARE_TYPE_REGEX = re.compile(r'(?:[=!]=|is(?:\s+not)?)\s*type(?:s.\w+Type'
+                                r'|\s*\(\s*([^)]*[^ )])\s*\))')
+KEYWORD_REGEX = re.compile(r'(\s*)\b(?:%s)\b(\s*)' % r'|'.join(KEYWORDS))
+OPERATOR_REGEX = re.compile(r'(?:[^,\s])(\s*)(?:[-+*/|!<=>%&^]+)(\s*)')
+LAMBDA_REGEX = re.compile(r'\blambda\b')
+HUNK_REGEX = re.compile(r'^@@ -\d+(?:,\d+)? \+(\d+)(?:,(\d+))? @@.*$')
 
-BINARY_OPERATORS = frozenset(['**=', '*=', '+=', '-=', '!=', '<>',
-    '%=', '^=', '&=', '|=', '==', '/=', '//=', '<=', '>=', '<<=', '>>=',
-    '%',  '^',  '&',  '|',  '=',  '/',  '//',  '<',  '>',  '<<'])
-UNARY_OPERATORS = frozenset(['>>', '**', '*', '+', '-'])
-OPERATORS = BINARY_OPERATORS | UNARY_OPERATORS
-SKIP_TOKENS = frozenset([tokenize.COMMENT, tokenize.NL, tokenize.INDENT,
-                         tokenize.DEDENT, tokenize.NEWLINE])
-E225NOT_KEYWORDS = (frozenset(keyword.kwlist + ['print']) -
-                    frozenset(['False', 'None', 'True']))
-BENCHMARK_KEYS = ('directories', 'files', 'logical lines', 'physical lines')
-
-options = None
-args = None
+# Work around Python < 2.6 behaviour, which does not generate NL after
+# a comment which is on a line by itself.
+COMMENT_WITH_NL = tokenize.generate_tokens(['#\n'].pop).send(None)[1] == '#\n'
 
 
 ##############################################################################
@@ -170,6 +141,24 @@
         "expected an indented block"),
     "E113": QT_TRANSLATE_NOOP("pep8",
         "unexpected indentation"),
+    "E121": QT_TRANSLATE_NOOP("pep8",
+        "continuation line indentation is not a multiple of four"),
+    "E122": QT_TRANSLATE_NOOP("pep8",
+        "continuation line missing indentation or outdented"),
+    "E123": QT_TRANSLATE_NOOP("pep8",
+        "closing bracket does not match indentation of opening bracket's line"),
+    "E124": QT_TRANSLATE_NOOP("pep8",
+        "closing bracket does not match visual indentation"),
+    "E125": QT_TRANSLATE_NOOP("pep8",
+        "continuation line does not distinguish itself from next logical line"),
+    "E126": QT_TRANSLATE_NOOP("pep8",
+        "continuation line over-indented for hanging indent"),
+    "E127": QT_TRANSLATE_NOOP("pep8",
+        "continuation line over-indented for visual indent"),
+    "E128": QT_TRANSLATE_NOOP("pep8",
+        "continuation line under-indented for visual indent"),
+    "E133": QT_TRANSLATE_NOOP("pep8",
+        "closing bracket is missing indentation"),
     "W191": QT_TRANSLATE_NOOP("pep8",
         "indentation contains tabs"),
     "E201": QT_TRANSLATE_NOOP("pep8",
@@ -190,6 +179,12 @@
         "tab after operator"),
     "E225": QT_TRANSLATE_NOOP("pep8",
         "missing whitespace around operator"),
+    "E226": QT_TRANSLATE_NOOP("pep8",
+        "missing whitespace around arithmetic operator"),
+    "E227": QT_TRANSLATE_NOOP("pep8",
+        "missing whitespace around bitwise or shift operator"),
+    "E228": QT_TRANSLATE_NOOP("pep8",
+        "missing whitespace around modulo operator"),
     "E231": QT_TRANSLATE_NOOP("pep8",
         "missing whitespace after '{0}'"),
     "E241": QT_TRANSLATE_NOOP("pep8",
@@ -197,11 +192,19 @@
     "E242": QT_TRANSLATE_NOOP("pep8",
         "tab after '{0}'"),
     "E251": QT_TRANSLATE_NOOP("pep8",
-        "no spaces around keyword / parameter equals"),
+        "unexpected spaces around keyword / parameter equals"),
     "E261": QT_TRANSLATE_NOOP("pep8",
         "at least two spaces before inline comment"),
     "E262": QT_TRANSLATE_NOOP("pep8",
         "inline comment should start with '# '"),
+    "E271": QT_TRANSLATE_NOOP("pep8",
+        "multiple spaces after keyword"),
+    "E272": QT_TRANSLATE_NOOP("pep8",
+        "multiple spaces before keyword"),
+    "E273": QT_TRANSLATE_NOOP("pep8",
+        "tab after keyword"),
+    "E274": QT_TRANSLATE_NOOP("pep8",
+        "tab before keyword"),
     "W291": QT_TRANSLATE_NOOP("pep8",
         "trailing whitespace"),
     "W292": QT_TRANSLATE_NOOP("pep8",
@@ -221,7 +224,9 @@
     "E401": QT_TRANSLATE_NOOP("pep8",
         "multiple imports on one line"),
     "E501": QT_TRANSLATE_NOOP("pep8",
-        "line too long ({0} characters)"),
+        "line too long ({0} > {1} characters)"),
+    "E502": QT_TRANSLATE_NOOP("pep8",
+        "the backslash is redundant between brackets"),
     "W601": QT_TRANSLATE_NOOP("pep8",
         ".has_key() is deprecated, use 'in'"),
     "W602": QT_TRANSLATE_NOOP("pep8",
@@ -234,8 +239,16 @@
         "multiple statements on one line (colon)"),
     "E702": QT_TRANSLATE_NOOP("pep8",
         "multiple statements on one line (semicolon)"),
+    "E703": QT_TRANSLATE_NOOP("pep8",
+        "statement ends with a semicolon"),
+    "E711": QT_TRANSLATE_NOOP("pep8",
+        "comparison to {0} should be {1}"),
+    "E712": QT_TRANSLATE_NOOP("pep8",
+        "comparison to {0} should be {1}"),
+    "E721": QT_TRANSLATE_NOOP("pep8",
+        "do not compare types, use 'isinstance()'"),
     "E901": QT_TRANSLATE_NOOP("pep8",
-        "Token Error: {0}"),
+        "{0}: {1}"),
 }
 
 pep8_messages_sample_args = {
@@ -248,7 +261,10 @@
     "E242": [",;:"],
     "E302": [1],
     "E303": [3],
-    "E501": [85],
+    "E501": [85, 79],
+    "E711": ["None", "'if cond is None:'"],
+    "E712": ["True", "'if cond is True:' or 'if cond:'"],
+    "E901": ["SyntaxError", "Invalid Syntax"],
 }
 
 
@@ -301,7 +317,7 @@
     W191: if True:\n\treturn
     """
     indent = INDENT_REGEX.match(physical_line).group(1)
-    if indent.count('\t'):
+    if '\t' in indent:
         return indent.index('\t'), "W191"
 
 
@@ -320,14 +336,14 @@
     The warning returned varies on whether the line itself is blank, for easier
     filtering for those who want to indent their blank lines.
 
-    Okay: spam(1)
-    W291: spam(1)\s
+    Okay: spam(1)\n#
+    W291: spam(1) \n#
     W293: class Foo(object):\n    \n    bang = 12
     """
     physical_line = physical_line.rstrip('\n')    # chr(10), newline
     physical_line = physical_line.rstrip('\r')    # chr(13), carriage return
     physical_line = physical_line.rstrip('\x0c')  # chr(12), form feed, ^L
-    stripped = physical_line.rstrip()
+    stripped = physical_line.rstrip(' \t\v')
     if physical_line != stripped:
         if stripped:
             return len(stripped), "W291"
@@ -342,19 +358,21 @@
     Okay: spam(1)
     W391: spam(1)\n
     """
-    if physical_line.strip() == '' and line_number == len(lines):
+    if not physical_line.rstrip() and line_number == len(lines):
         return 0, "W391"
 
 
 def missing_newline(physical_line):
     """
     JCR: The last line should have a newline.
+
+    Reports warning W292.
     """
     if physical_line.rstrip() == physical_line:
         return len(physical_line), "W292"
 
 
-def maximum_line_length(physical_line):
+def maximum_line_length(physical_line, max_line_length):
     """
     Limit all lines to a maximum of 79 characters.
 
@@ -364,17 +382,20 @@
     ugly.  Therefore, please limit all lines to a maximum of 79 characters.
     For flowing long blocks of text (docstrings or comments), limiting the
     length to 72 characters is recommended.
+
+    Reports error E501.
     """
     line = physical_line.rstrip()
     length = len(line)
-    try:
+    if length > max_line_length and not noqa(line):
+        if hasattr(line, 'decode'):   # Python 2
         # The line could contain multi-byte characters
-        if hasattr(line, 'decode'):   # Python 2 only
-            length = len(line.decode('utf-8'))
-    except (UnicodeDecodeError, UnicodeEncodeError):
-        pass    
-    if length > MAX_LINE_LENGTH:
-        return MAX_LINE_LENGTH, "E501", length
+            try: