Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1. Py2 comp.

Mon, 08 Apr 2013 07:52:06 +0200

author
T.Rzepka <Tobias.Rzepka@gmail.com>
date
Mon, 08 Apr 2013 07:52:06 +0200
branch
Py2 comp.
changeset 2571
e6bb19eb87ea
parent 2552
1e893ea4e366
child 2572
dc6d76ab5d10

Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
Translations between cross versions possible.

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.Utilities.SyntaxCheck.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Utilities.__init__.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Utilities.py2flakes.checker.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Utilities.py2flakes.messages.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Utilities.py3flakes.messages.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric5.Utilities.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric5.Utilities.py2flakes.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric5.UtilitiesPython2.html file | annotate | diff | comparison | revisions
QScintilla/Editor.py file | annotate | diff | comparison | revisions
Utilities/SyntaxCheck.py file | annotate | diff | comparison | revisions
Utilities/__init__.py file | annotate | diff | comparison | revisions
Utilities/py2flakes/__init__.py file | annotate | diff | comparison | revisions
Utilities/py2flakes/checker.py file | annotate | diff | comparison | revisions
Utilities/py2flakes/messages.py file | annotate | diff | comparison | revisions
Utilities/py3flakes/messages.py file | annotate | diff | comparison | revisions
UtilitiesPython2/Py2SyntaxChecker.py file | annotate | diff | comparison | revisions
UtilitiesPython2/py2flakes/__init__.py file | annotate | diff | comparison | revisions
UtilitiesPython2/py2flakes/checker.py file | annotate | diff | comparison | revisions
UtilitiesPython2/py2flakes/messages.py file | annotate | diff | comparison | revisions
eric5.e4p file | annotate | diff | comparison | revisions
i18n/eric5_de.ts file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric5.api	Thu Mar 28 20:09:00 2013 +0100
+++ b/APIs/Python3/eric5.api	Mon Apr 08 07:52:06 2013 +0200
@@ -7898,6 +7898,13 @@
 eric5.Utilities.PasswordChecker.PasswordChecker.Status_Passed?7
 eric5.Utilities.PasswordChecker.PasswordChecker.checkPassword?4(password)
 eric5.Utilities.PasswordChecker.PasswordChecker?1()
+eric5.Utilities.SyntaxCheck.codingBytes_regexps?7
+eric5.Utilities.SyntaxCheck.compile_and_check?4(file_, codestring="", checkFlakes=True, ignoreStarImportWarnings=False)
+eric5.Utilities.SyntaxCheck.decode?4(text)
+eric5.Utilities.SyntaxCheck.extractLineFlags?4(line, startComment=")
+eric5.Utilities.SyntaxCheck.get_codingBytes?4(text)
+eric5.Utilities.SyntaxCheck.normalizeCode?4(codestring)
+eric5.Utilities.SyntaxCheck.readEncodedFile?4(filename)
 eric5.Utilities._escape?8
 eric5.Utilities._escape_map?8
 eric5.Utilities._percentReplacementFunc?5(matchobj)
@@ -7963,7 +7970,6 @@
 eric5.Utilities.binplistlib.writePlist?4(rootObject, pathOrFile, binary=True)
 eric5.Utilities.binplistlib.writePlistToBytes?4(rootObject, binary=True)
 eric5.Utilities.checkPyside?4()
-eric5.Utilities.codingBytes_regexps?7
 eric5.Utilities.coding_regexps?7
 eric5.Utilities.compactPath?4(path, width, measure=len)
 eric5.Utilities.compatibility_fixes.File.fp?7
@@ -7974,7 +7980,8 @@
 eric5.Utilities.compatibility_fixes.File.write?4(txt)
 eric5.Utilities.compatibility_fixes.File?1(filein, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True)
 eric5.Utilities.compatibility_fixes.open?4(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True)
-eric5.Utilities.compile?4(file, codestring="")
+eric5.Utilities.compile?4(file, codestring="", isPy2=False)
+eric5.Utilities.compile_extern?4(file, isPy2, checkFlakes=True, ignoreStarImportWarnings=False)
 eric5.Utilities.configDir?7
 eric5.Utilities.convertLineEnds?4(text, eol)
 eric5.Utilities.crypto.CryptoMarker?7
@@ -8012,7 +8019,6 @@
 eric5.Utilities.crypto.py3PBKDF2.pbkdf2?4(password, salt, iterations, digestMod)
 eric5.Utilities.crypto.py3PBKDF2.rehashPassword?4(password, hashParameters)
 eric5.Utilities.crypto.py3PBKDF2.verifyPassword?4(password, hash)
-eric5.Utilities.decode?4(text)
 eric5.Utilities.decodeBytes?4(buffer)
 eric5.Utilities.decodeString?4(text)
 eric5.Utilities.direntries?4(path, filesonly=False, pattern=None, followsymlinks=True, checkStop=None)
@@ -8021,7 +8027,6 @@
 eric5.Utilities.escape_uentities?4(m)
 eric5.Utilities.extractFlags?4(text)
 eric5.Utilities.extractFlagsFromFile?4(filename)
-eric5.Utilities.extractLineFlags?4(line, startComment=")
 eric5.Utilities.fromNativeSeparators?4(path)
 eric5.Utilities.generateDistroInfo?4(linesep='\n')
 eric5.Utilities.generatePluginsVersionInfo?4(linesep='\n')
@@ -8042,7 +8047,6 @@
 eric5.Utilities.getTestFileName?4(fn)
 eric5.Utilities.getUserName?4()
 eric5.Utilities.get_coding?4(text)
-eric5.Utilities.get_codingBytes?4(text)
 eric5.Utilities.hasEnvironmentEntry?4(key)
 eric5.Utilities.html_encode?4(text, pattern=_escape)
 eric5.Utilities.html_udecode?4(text, pattern=_uunescape)
@@ -8060,7 +8064,97 @@
 eric5.Utilities.parseOptionString?4(s)
 eric5.Utilities.parseString?4(s, rx)
 eric5.Utilities.prepareQtMacBundle?4(toolname, version, args)
-eric5.Utilities.py2compile?4(file, checkFlakes=False)
+eric5.Utilities.py2flakes.checker.Binding?1(name, source)
+eric5.Utilities.py2flakes.checker.Checker.AND?7
+eric5.Utilities.py2flakes.checker.Checker.ASSIGN?4(node)
+eric5.Utilities.py2flakes.checker.Checker.AUGASSIGN?4(node)
+eric5.Utilities.py2flakes.checker.Checker.BOOLOP?7
+eric5.Utilities.py2flakes.checker.Checker.CLASSDEF?4(node)
+eric5.Utilities.py2flakes.checker.Checker.COMPREHENSION?7
+eric5.Utilities.py2flakes.checker.Checker.CONTINUE?7
+eric5.Utilities.py2flakes.checker.Checker.DICTCOMP?4(node)
+eric5.Utilities.py2flakes.checker.Checker.EXCEPTHANDLER?4(node)
+eric5.Utilities.py2flakes.checker.Checker.FOR?4(node)
+eric5.Utilities.py2flakes.checker.Checker.FUNCTIONDEF?4(node)
+eric5.Utilities.py2flakes.checker.Checker.GENERATOREXP?7
+eric5.Utilities.py2flakes.checker.Checker.GLOBAL?4(node)
+eric5.Utilities.py2flakes.checker.Checker.IMPORT?4(node)
+eric5.Utilities.py2flakes.checker.Checker.IMPORTFROM?4(node)
+eric5.Utilities.py2flakes.checker.Checker.LAMBDA?4(node)
+eric5.Utilities.py2flakes.checker.Checker.LISTCOMP?4(node)
+eric5.Utilities.py2flakes.checker.Checker.LOAD?7
+eric5.Utilities.py2flakes.checker.Checker.NAME?4(node)
+eric5.Utilities.py2flakes.checker.Checker.NONLOCAL?7
+eric5.Utilities.py2flakes.checker.Checker.NUM?7
+eric5.Utilities.py2flakes.checker.Checker.RETURN?7
+eric5.Utilities.py2flakes.checker.Checker.SLICE?7
+eric5.Utilities.py2flakes.checker.Checker.addArgs?4()
+eric5.Utilities.py2flakes.checker.Checker.addBinding?4(node, value, reportRedef=True)
+eric5.Utilities.py2flakes.checker.Checker.builtIns?7
+eric5.Utilities.py2flakes.checker.Checker.checkDeadScopes?4()
+eric5.Utilities.py2flakes.checker.Checker.checkUnusedAssignments?4()
+eric5.Utilities.py2flakes.checker.Checker.collectLoopVars?4()
+eric5.Utilities.py2flakes.checker.Checker.deferAssignment?4(callable)
+eric5.Utilities.py2flakes.checker.Checker.deferFunction?4(callable)
+eric5.Utilities.py2flakes.checker.Checker.descendantOf?4(node, ancestors, stop=None)
+eric5.Utilities.py2flakes.checker.Checker.differentForks?4(lnode, rnode)
+eric5.Utilities.py2flakes.checker.Checker.getCommonAncestor?4(lnode, rnode, stop=None)
+eric5.Utilities.py2flakes.checker.Checker.handleChildren?4(tree)
+eric5.Utilities.py2flakes.checker.Checker.handleNode?4(node, parent)
+eric5.Utilities.py2flakes.checker.Checker.handleNodeDelete?4(node)
+eric5.Utilities.py2flakes.checker.Checker.handleNodeLoad?4(node)
+eric5.Utilities.py2flakes.checker.Checker.handleNodeStore?4(node)
+eric5.Utilities.py2flakes.checker.Checker.hasParent?4(node, kind)
+eric5.Utilities.py2flakes.checker.Checker.ignore?4(node)
+eric5.Utilities.py2flakes.checker.Checker.isDocstring?4(node)
+eric5.Utilities.py2flakes.checker.Checker.nodeDepth?7
+eric5.Utilities.py2flakes.checker.Checker.onFork?4(parent, lnode, rnode, items)
+eric5.Utilities.py2flakes.checker.Checker.popScope?4()
+eric5.Utilities.py2flakes.checker.Checker.pushClassScope?4()
+eric5.Utilities.py2flakes.checker.Checker.pushFunctionScope?4()
+eric5.Utilities.py2flakes.checker.Checker.report?4(messageClass, *args, **kwargs)
+eric5.Utilities.py2flakes.checker.Checker.runDeferred?4(deferred)
+eric5.Utilities.py2flakes.checker.Checker.runFunction?4()
+eric5.Utilities.py2flakes.checker.Checker.scope?4()
+eric5.Utilities.py2flakes.checker.Checker.traceTree?7
+eric5.Utilities.py2flakes.checker.Checker?1(tree, filename='(none)', builtins=None)
+eric5.Utilities.py2flakes.checker.ExportBinding.names?4()
+eric5.Utilities.py2flakes.checker.FunctionScope?1()
+eric5.Utilities.py2flakes.checker.Importation?1(name, source)
+eric5.Utilities.py2flakes.checker.Scope.importStarred?7
+eric5.Utilities.py2flakes.checker.Scope.usesLocals?7
+eric5.Utilities.py2flakes.checker._MAGIC_GLOBALS?8
+eric5.Utilities.py2flakes.checker.getNodeName?4(node)
+eric5.Utilities.py2flakes.checker.iter_child_nodes?4(node, astcls=ast.AST)
+eric5.Utilities.py2flakes.messages.DuplicateArgument.message?7
+eric5.Utilities.py2flakes.messages.DuplicateArgument?1(filename, lineno, name)
+eric5.Utilities.py2flakes.messages.ImportShadowedByLoopVar.message?7
+eric5.Utilities.py2flakes.messages.ImportShadowedByLoopVar?1(filename, lineno, name, orig_lineno)
+eric5.Utilities.py2flakes.messages.ImportStarUsed.message?7
+eric5.Utilities.py2flakes.messages.ImportStarUsed?1(filename, lineno, modname)
+eric5.Utilities.py2flakes.messages.LateFutureImport.message?7
+eric5.Utilities.py2flakes.messages.LateFutureImport?1(filename, lineno, names)
+eric5.Utilities.py2flakes.messages.Message.getMessageData?4()
+eric5.Utilities.py2flakes.messages.Message.message?7
+eric5.Utilities.py2flakes.messages.Message.message_args?7
+eric5.Utilities.py2flakes.messages.Message?1(filename, lineno)
+eric5.Utilities.py2flakes.messages.QT_TRANSLATE_NOOP?4(mod, txt)
+eric5.Utilities.py2flakes.messages.Redefined.message?7
+eric5.Utilities.py2flakes.messages.Redefined?1(filename, lineno, name, orig_lineno)
+eric5.Utilities.py2flakes.messages.RedefinedInListComp.message?7
+eric5.Utilities.py2flakes.messages.RedefinedInListComp?1(filename, lineno, name, orig_lineno)
+eric5.Utilities.py2flakes.messages.RedefinedWhileUnused.message?7
+eric5.Utilities.py2flakes.messages.RedefinedWhileUnused?1(filename, lineno, name, orig_lineno)
+eric5.Utilities.py2flakes.messages.UndefinedExport.message?7
+eric5.Utilities.py2flakes.messages.UndefinedExport?1(filename, lineno, name)
+eric5.Utilities.py2flakes.messages.UndefinedLocal.message?7
+eric5.Utilities.py2flakes.messages.UndefinedLocal?1(filename, lineno, name, orig_lineno)
+eric5.Utilities.py2flakes.messages.UndefinedName.message?7
+eric5.Utilities.py2flakes.messages.UndefinedName?1(filename, lineno, name)
+eric5.Utilities.py2flakes.messages.UnusedImport.message?7
+eric5.Utilities.py2flakes.messages.UnusedImport?1(filename, lineno, name)
+eric5.Utilities.py2flakes.messages.UnusedVariable.message?7
+eric5.Utilities.py2flakes.messages.UnusedVariable?1(filename, lineno, names)
 eric5.Utilities.py3flakes.checker.Binding?1(name, source)
 eric5.Utilities.py3flakes.checker.Checker.ASSIGN?4(node)
 eric5.Utilities.py3flakes.checker.Checker.ATTRIBUTES?7
@@ -8133,6 +8227,7 @@
 eric5.Utilities.py3flakes.messages.Message.message?7
 eric5.Utilities.py3flakes.messages.Message.message_args?7
 eric5.Utilities.py3flakes.messages.Message?1(filename, lineno)
+eric5.Utilities.py3flakes.messages.QT_TRANSLATE_NOOP?4(mod, txt)
 eric5.Utilities.py3flakes.messages.RedefinedFunction.message?7
 eric5.Utilities.py3flakes.messages.RedefinedFunction?1(filename, lineno, name, orig_lineno)
 eric5.Utilities.py3flakes.messages.RedefinedWhileUnused.message?7
@@ -8147,10 +8242,10 @@
 eric5.Utilities.py3flakes.messages.UnusedImport?1(filename, lineno, name)
 eric5.Utilities.py3flakes.messages.UnusedVariable.message?7
 eric5.Utilities.py3flakes.messages.UnusedVariable?1(filename, lineno, name)
-eric5.Utilities.readEncodedFile?4(filename)
 eric5.Utilities.readEncodedFileWithHash?4(filename)
 eric5.Utilities.readStringFromStream?4(stream)
 eric5.Utilities.relpath?4(path, start=os.path.curdir)
+eric5.Utilities.samefilepath?4(f1, f2)
 eric5.Utilities.samepath?4(f1, f2)
 eric5.Utilities.splitPath?4(name)
 eric5.Utilities.supportedCodecs?7
@@ -8171,8 +8266,6 @@
 eric5.UtilitiesPython2.Pep8Checker.Pep8Checker.report_error_args?4(line_number, offset, code, check, *args)
 eric5.UtilitiesPython2.Pep8Checker.Pep8Checker.select?7
 eric5.UtilitiesPython2.Pep8Checker.Pep8Checker?1(filename, lines, repeat=False, select="", ignore="")
-eric5.UtilitiesPython2.Py2SyntaxChecker.compile?4(file, codestring)
-eric5.UtilitiesPython2.Py2SyntaxChecker.flakesCheck?4(fileName, codestring, ignoreStarImportWarnings)
 eric5.UtilitiesPython2.Tabnanny.NannyNag.get_line?4()
 eric5.UtilitiesPython2.Tabnanny.NannyNag.get_lineno?4()
 eric5.UtilitiesPython2.Tabnanny.NannyNag.get_msg?4()
@@ -8265,86 +8358,6 @@
 eric5.UtilitiesPython2.pep8.whitespace_around_operator?4(logical_line)
 eric5.UtilitiesPython2.pep8.whitespace_before_inline_comment?4(logical_line, tokens)
 eric5.UtilitiesPython2.pep8.whitespace_before_parameters?4(logical_line, tokens)
-eric5.UtilitiesPython2.py2flakes.checker.Binding?1(name, source)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.AND?7
-eric5.UtilitiesPython2.py2flakes.checker.Checker.ASSIGN?4(node)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.AUGASSIGN?4(node)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.BITOR?7
-eric5.UtilitiesPython2.py2flakes.checker.Checker.BOOLOP?7
-eric5.UtilitiesPython2.py2flakes.checker.Checker.CALL?7
-eric5.UtilitiesPython2.py2flakes.checker.Checker.CLASSDEF?4(node)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.COMPREHENSION?7
-eric5.UtilitiesPython2.py2flakes.checker.Checker.CONTINUE?7
-eric5.UtilitiesPython2.py2flakes.checker.Checker.DICTCOMP?4(node)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.EQ?7
-eric5.UtilitiesPython2.py2flakes.checker.Checker.FOR?4(node)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.FUNCTIONDEF?4(node)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.GENERATOREXP?7
-eric5.UtilitiesPython2.py2flakes.checker.Checker.GLOBAL?4(node)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.IMPORT?4(node)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.IMPORTFROM?4(node)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.LAMBDA?4(node)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.LISTCOMP?4(node)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.LOAD?7
-eric5.UtilitiesPython2.py2flakes.checker.Checker.NAME?4(node)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.NUM?7
-eric5.UtilitiesPython2.py2flakes.checker.Checker.RETURN?7
-eric5.UtilitiesPython2.py2flakes.checker.Checker.SLICE?7
-eric5.UtilitiesPython2.py2flakes.checker.Checker._runDeferred?5(deferred)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.addArgs?4()
-eric5.UtilitiesPython2.py2flakes.checker.Checker.addBinding?4(lineno, value, reportRedef=True)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.checkUnusedAssignments?4()
-eric5.UtilitiesPython2.py2flakes.checker.Checker.check_dead_scopes?4()
-eric5.UtilitiesPython2.py2flakes.checker.Checker.collectLoopVars?4()
-eric5.UtilitiesPython2.py2flakes.checker.Checker.deferAssignment?4(callable)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.deferFunction?4(callable)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.handleChildren?4(tree)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.handleNode?4(node, parent)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.ignore?4(node)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.isDocstring?4(node)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.nodeDepth?7
-eric5.UtilitiesPython2.py2flakes.checker.Checker.popScope?4()
-eric5.UtilitiesPython2.py2flakes.checker.Checker.pushClassScope?4()
-eric5.UtilitiesPython2.py2flakes.checker.Checker.pushFunctionScope?4()
-eric5.UtilitiesPython2.py2flakes.checker.Checker.report?4(messageClass, *args, **kwargs)
-eric5.UtilitiesPython2.py2flakes.checker.Checker.runFunction?4()
-eric5.UtilitiesPython2.py2flakes.checker.Checker.scope?4()
-eric5.UtilitiesPython2.py2flakes.checker.Checker.scope?7
-eric5.UtilitiesPython2.py2flakes.checker.Checker.traceTree?7
-eric5.UtilitiesPython2.py2flakes.checker.Checker?1(module, filename='(none)')
-eric5.UtilitiesPython2.py2flakes.checker.ExportBinding.names?4()
-eric5.UtilitiesPython2.py2flakes.checker.FunctionScope?1()
-eric5.UtilitiesPython2.py2flakes.checker.Importation?1(name, source)
-eric5.UtilitiesPython2.py2flakes.checker.Scope.importStarred?7
-eric5.UtilitiesPython2.py2flakes.checker.Scope?1()
-eric5.UtilitiesPython2.py2flakes.checker._MAGIC_GLOBALS?8
-eric5.UtilitiesPython2.py2flakes.checker.iter_child_nodes?4(node, astcls=_ast.AST)
-eric5.UtilitiesPython2.py2flakes.messages.DuplicateArgument.message?7
-eric5.UtilitiesPython2.py2flakes.messages.DuplicateArgument?1(filename, lineno, name)
-eric5.UtilitiesPython2.py2flakes.messages.ImportShadowedByLoopVar.message?7
-eric5.UtilitiesPython2.py2flakes.messages.ImportShadowedByLoopVar?1(filename, lineno, name, orig_lineno)
-eric5.UtilitiesPython2.py2flakes.messages.ImportStarUsed.message?7
-eric5.UtilitiesPython2.py2flakes.messages.ImportStarUsed?1(filename, lineno, modname)
-eric5.UtilitiesPython2.py2flakes.messages.LateFutureImport.message?7
-eric5.UtilitiesPython2.py2flakes.messages.LateFutureImport?1(filename, lineno, names)
-eric5.UtilitiesPython2.py2flakes.messages.Message.getMessageData?4()
-eric5.UtilitiesPython2.py2flakes.messages.Message.message?7
-eric5.UtilitiesPython2.py2flakes.messages.Message.message_args?7
-eric5.UtilitiesPython2.py2flakes.messages.Message?1(filename, lineno)
-eric5.UtilitiesPython2.py2flakes.messages.RedefinedFunction.message?7
-eric5.UtilitiesPython2.py2flakes.messages.RedefinedFunction?1(filename, lineno, name, orig_lineno)
-eric5.UtilitiesPython2.py2flakes.messages.RedefinedWhileUnused.message?7
-eric5.UtilitiesPython2.py2flakes.messages.RedefinedWhileUnused?1(filename, lineno, name, orig_lineno)
-eric5.UtilitiesPython2.py2flakes.messages.UndefinedExport.message?7
-eric5.UtilitiesPython2.py2flakes.messages.UndefinedExport?1(filename, lineno, name)
-eric5.UtilitiesPython2.py2flakes.messages.UndefinedLocal.message?7
-eric5.UtilitiesPython2.py2flakes.messages.UndefinedLocal?1(filename, lineno, name, orig_lineno)
-eric5.UtilitiesPython2.py2flakes.messages.UndefinedName.message?7
-eric5.UtilitiesPython2.py2flakes.messages.UndefinedName?1(filename, lineno, name)
-eric5.UtilitiesPython2.py2flakes.messages.UnusedImport.message?7
-eric5.UtilitiesPython2.py2flakes.messages.UnusedImport?1(filename, lineno, name)
-eric5.UtilitiesPython2.py2flakes.messages.UnusedVariable.message?7
-eric5.UtilitiesPython2.py2flakes.messages.UnusedVariable?1(filename, lineno, names)
 eric5.VCS.CommandOptionsDialog.vcsCommandOptionsDialog.getOptions?4()
 eric5.VCS.CommandOptionsDialog.vcsCommandOptionsDialog?1(vcs, parent=None)
 eric5.VCS.ProjectBrowserHelper.VcsProjectBrowserHelper._VCSAdd?5()
--- a/APIs/Python3/eric5.bas	Thu Mar 28 20:09:00 2013 +0100
+++ b/APIs/Python3/eric5.bas	Mon Apr 08 07:52:06 2013 +0200
@@ -63,6 +63,7 @@
 ChatWidget QWidget Ui_ChatWidget
 ChromeImporter BookmarksImporter
 Class ClbrBaseClasses.Class VisibilityMixin
+ClassDefinition Definition
 ClassItem UMLItem
 ClassModel UMLModel
 ClassScope Scope
@@ -119,6 +120,7 @@
 DebuggerPython3Page ConfigurationPageBase Ui_DebuggerPython3Page
 DebuggerPythonPage ConfigurationPageBase Ui_DebuggerPythonPage
 DebuggerRubyPage ConfigurationPageBase Ui_DebuggerRubyPage
+Definition Binding
 DeleteFilesConfirmationDialog QDialog Ui_DeleteFilesConfirmationDialog
 DiffDialog QWidget Ui_DiffDialog
 DiffWindow E5MainWindow
@@ -556,7 +558,9 @@
 Rebase HgExtension
 RebaseProjectHelper HgExtensionProjectHelper
 RecursionError OverflowError ValueError
+Redefined Message
 RedefinedFunction Message
+RedefinedInListComp Message
 RedefinedWhileUnused Message
 Redirector QObject
 RemoveBookmarksCommand QUndoCommand
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Thu Mar 28 20:09:00 2013 +0100
+++ b/Documentation/Help/source.qhp	Mon Apr 08 07:52:06 2013 +0200
@@ -936,6 +936,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" />
@@ -944,18 +948,14 @@
             <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.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" />
@@ -1319,8 +1319,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__" />
@@ -1328,8 +1328,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" />
@@ -1456,14 +1456,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" />
@@ -1915,93 +1915,102 @@
       <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_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.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.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__" />
@@ -2028,6 +2037,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" />
@@ -2044,8 +2054,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" />
@@ -3192,6 +3202,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" />
@@ -3314,10 +3325,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" />
@@ -4483,10 +4494,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" />
@@ -4766,12 +4777,12 @@
       <keyword name="Function (Constructor)" id="Function (Constructor)" ref="eric5.Utilities.ClassBrowsers.rbclbr.html#Function.__init__" />
       <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="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__" />
@@ -6445,18 +6456,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" />
@@ -6836,10 +6847,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" />
@@ -7195,14 +7206,14 @@
       <keyword name="MercurialPage (Module)" id="MercurialPage (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.html" />
       <keyword name="MercurialPage.on_configButton_clicked" id="MercurialPage.on_configButton_clicked" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.html#MercurialPage.on_configButton_clicked" />
       <keyword name="MercurialPage.save" id="MercurialPage.save" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.html#MercurialPage.save" />
+      <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" />
@@ -7366,8 +7377,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" />
@@ -8719,7 +8730,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" />
@@ -8916,6 +8926,8 @@
       <keyword name="QRegExpWizardWindow (Constructor)" id="QRegExpWizardWindow (Constructor)" ref="eric5.Plugins.WizardPlugins.QRegExpWizard.QRegExpWizardDialog.html#QRegExpWizardWindow.__init__" />
       <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" />
@@ -9145,14 +9157,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" />
@@ -9179,12 +9193,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" />
@@ -10644,6 +10657,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__" />
@@ -11213,20 +11227,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" />
@@ -11256,14 +11270,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" />
@@ -12234,14 +12248,13 @@
       <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="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" />
@@ -12249,6 +12262,8 @@
       <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" />
@@ -12350,7 +12365,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.Utilities.SyntaxCheck.html#decode" />
       <keyword name="decode" id="decode" ref="eric5.UtilitiesPython2.Tools.html#decode" />
       <keyword name="decodeBytes" id="decodeBytes" ref="eric5.Utilities.__init__.html#decodeBytes" />
       <keyword name="decodeString" id="decodeString" ref="eric5.Utilities.__init__.html#decodeString" />
@@ -12408,7 +12423,7 @@
       <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.Utilities.SyntaxCheck.html#extractLineFlags" />
       <keyword name="extractLineFlags" id="extractLineFlags" ref="eric5.UtilitiesPython2.Tools.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" />
@@ -12424,7 +12439,6 @@
       <keyword name="find_checks" id="find_checks" ref="eric5.UtilitiesPython2.pep8.html#find_checks" />
       <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" />
@@ -12488,6 +12502,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" />
@@ -12546,7 +12561,7 @@
       <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_codingBytes" id="get_codingBytes" ref="eric5.Utilities.SyntaxCheck.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" />
@@ -12610,7 +12625,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="linesep" id="linesep" ref="eric5.Utilities.__init__.html#linesep" />
       <keyword name="loadTranslatorForLocale" id="loadTranslatorForLocale" ref="eric5.Toolbox.Startup.html#loadTranslatorForLocale" />
@@ -12647,8 +12662,8 @@
       <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="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" />
@@ -12659,6 +12674,7 @@
       <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.Utilities.SyntaxCheck.html#normalizeCode" />
       <keyword name="normalizeCode" id="normalizeCode" ref="eric5.UtilitiesPython2.Tools.html#normalizeCode" />
       <keyword name="normcaseabspath" id="normcaseabspath" ref="eric5.Utilities.__init__.html#normcaseabspath" />
       <keyword name="normcasepath" id="normcasepath" ref="eric5.Utilities.__init__.html#normcasepath" />
@@ -12698,8 +12714,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" />
@@ -12719,7 +12734,7 @@
       <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.Utilities.SyntaxCheck.html#readEncodedFile" />
       <keyword name="readEncodedFile" id="readEncodedFile" ref="eric5.UtilitiesPython2.Tools.html#readEncodedFile" />
       <keyword name="readEncodedFileWithHash" id="readEncodedFileWithHash" ref="eric5.Utilities.__init__.html#readEncodedFileWithHash" />
       <keyword name="readModule" id="readModule" ref="eric5.Utilities.ModuleParser.html#readModule" />
@@ -12755,6 +12770,7 @@
       <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="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" />
@@ -13626,12 +13642,15 @@
       <file>eric5.Utilities.FtpUtilities.html</file>
       <file>eric5.Utilities.ModuleParser.html</file>
       <file>eric5.Utilities.PasswordChecker.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>
@@ -13777,6 +13796,7 @@
       <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>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric5.Utilities.SyntaxCheck.html	Mon Apr 08 07:52:06 2013 +0200
@@ -0,0 +1,187 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric5.Utilities.SyntaxCheck</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric5.Utilities.SyntaxCheck</h1>
+<p>
+Module implementing the syntax check for Python 2/3.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>codingBytes_regexps</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr>
+<td><a href="#compile_and_check">compile_and_check</a></td>
+<td>Function to compile one Python source file to Python bytecode and to perform a pyflakes check.</td>
+</tr><tr>
+<td><a href="#decode">decode</a></td>
+<td>Function to decode some byte text into a string.</td>
+</tr><tr>
+<td><a href="#extractLineFlags">extractLineFlags</a></td>
+<td>Function to extract flags starting and ending with '__' from a line comment.</td>
+</tr><tr>
+<td><a href="#get_codingBytes">get_codingBytes</a></td>
+<td>Function to get the coding of a bytes text.</td>
+</tr><tr>
+<td><a href="#normalizeCode">normalizeCode</a></td>
+<td>Function to normalize the given code.</td>
+</tr><tr>
+<td><a href="#readEncodedFile">readEncodedFile</a></td>
+<td>Function to read a file and decode it's contents into proper text.</td>
+</tr>
+</table>
+<hr /><hr />
+<a NAME="compile_and_check" ID="compile_and_check"></a>
+<h2>compile_and_check</h2>
+<b>compile_and_check</b>(<i>file_, codestring="", checkFlakes=True, ignoreStarImportWarnings=False</i>)
+<p>
+    Function to compile one Python source file to Python bytecode
+    and to perform a pyflakes check.
+</p><dl>
+<dt><i>file_</i></dt>
+<dd>
+source filename (string)
+</dd><dt><i>codestring</i></dt>
+<dd>
+string containing the code to compile (string)
+</dd><dt><i>checkFlakes=</i></dt>
+<dd>
+flag indicating to do a pyflakes check (boolean)
+</dd><dt><i>ignoreStarImportWarnings=</i></dt>
+<dd>
+flag indicating to
+        ignore 'star import' warnings (boolean)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+A tuple indicating status (True = an error was found), the
+        file name, the line number, the index number, the code string
+        and the error message (boolean, string, string, string, string,
+        string). If checkFlakes is True, a list of strings containing the
+        warnings (marker, file name, line number, message)
+        The values are only valid, if the status is True.
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="decode" ID="decode"></a>
+<h2>decode</h2>
+<b>decode</b>(<i>text</i>)
+<p>
+    Function to decode some byte text into a string.
+</p><dl>
+<dt><i>text</i></dt>
+<dd>
+byte text to decode (bytes)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+tuple of decoded text and encoding (string, string)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="extractLineFlags" ID="extractLineFlags"></a>
+<h2>extractLineFlags</h2>
+<b>extractLineFlags</b>(<i>line, startComment="</i>)
+<p>
+    Function to extract flags starting and ending with '__' from a line comment.
+</p><dl>
+<dt><i>line</i></dt>
+<dd>
+line to extract flags from (string)
+</dd><dt><i>startComment=</i></dt>
+<dd>
+string identifying the start of the comment (string)
+</dd><dt><i>endComment=</i></dt>
+<dd>
+string identifying the end of a comment (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+list containing the extracted flags (list of strings)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="get_codingBytes" ID="get_codingBytes"></a>
+<h2>get_codingBytes</h2>
+<b>get_codingBytes</b>(<i>text</i>)
+<p>
+    Function to get the coding of a bytes text.
+</p><dl>
+<dt><i>text</i></dt>
+<dd>
+bytes text to inspect (bytes)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+coding string
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="normalizeCode" ID="normalizeCode"></a>
+<h2>normalizeCode</h2>
+<b>normalizeCode</b>(<i>codestring</i>)
+<p>
+    Function to normalize the given code.
+</p><dl>
+<dt><i>codestring</i></dt>
+<dd>
+code to be normalized (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+normalized code (string)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="readEncodedFile" ID="readEncodedFile"></a>
+<h2>readEncodedFile</h2>
+<b>readEncodedFile</b>(<i>filename</i>)
+<p>
+    Function to read a file and decode it's contents into proper text.
+</p><dl>
+<dt><i>filename</i></dt>
+<dd>
+name of the file to read (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+tuple of decoded text and encoding (string, string)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric5.Utilities.__init__.html	Thu Mar 28 20:09:00 2013 +0100
+++ b/Documentation/Source/eric5.Utilities.__init__.html	Mon Apr 08 07:52:06 2013 +0200
@@ -25,7 +25,7 @@
 </p>
 <h3>Global Attributes</h3>
 <table>
-<tr><td>_escape</td></tr><tr><td>_escape_map</td></tr><tr><td>_uescape</td></tr><tr><td>_uunescape</td></tr><tr><td>codingBytes_regexps</td></tr><tr><td>coding_regexps</td></tr><tr><td>configDir</td></tr><tr><td>supportedCodecs</td></tr>
+<tr><td>_escape</td></tr><tr><td>_escape_map</td></tr><tr><td>_uescape</td></tr><tr><td>_uunescape</td></tr><tr><td>coding_regexps</td></tr><tr><td>configDir</td></tr><tr><td>supportedCodecs</td></tr>
 </table>
 <h3>Classes</h3>
 <table>
@@ -52,12 +52,12 @@
 <td><a href="#compile">compile</a></td>
 <td>Function to compile one Python source file to Python bytecode.</td>
 </tr><tr>
+<td><a href="#compile_extern">compile_extern</a></td>
+<td>Function to compile one Python source file to Python bytecode.</td>
+</tr><tr>
 <td><a href="#convertLineEnds">convertLineEnds</a></td>
 <td>Function to convert the end of line characters.</td>
 </tr><tr>
-<td><a href="#decode">decode</a></td>
-<td>Function to decode some byte text into a string.</td>
-</tr><tr>
 <td><a href="#decodeBytes">decodeBytes</a></td>
 <td>Function to decode some byte text into a string.</td>
 </tr><tr>
@@ -82,9 +82,6 @@
 <td><a href="#extractFlagsFromFile">extractFlagsFromFile</a></td>
 <td>Function to extract eric specific flags out of the given file.</td>
 </tr><tr>
-<td><a href="#extractLineFlags">extractLineFlags</a></td>
-<td>Function to extract flags starting and ending with '__' from a line comment.</td>
-</tr><tr>
 <td><a href="#fromNativeSeparators">fromNativeSeparators</a></td>
 <td>Function returning a path, that is using "/" separator characters.</td>
 </tr><tr>
@@ -145,9 +142,6 @@
 <td><a href="#get_coding">get_coding</a></td>
 <td>Function to get the coding of a text.</td>
 </tr><tr>
-<td><a href="#get_codingBytes">get_codingBytes</a></td>
-<td>Function to get the coding of a bytes text.</td>
-</tr><tr>
 <td><a href="#hasEnvironmentEntry">hasEnvironmentEntry</a></td>
 <td>Module function to check, if the environment contains an entry.</td>
 </tr><tr>
@@ -199,12 +193,6 @@
 <td><a href="#prepareQtMacBundle">prepareQtMacBundle</a></td>
 <td>Module function for starting Qt tools that are Mac OS X bundles.</td>
 </tr><tr>
-<td><a href="#py2compile">py2compile</a></td>
-<td>Function to compile one Python 2 source file to Python 2 bytecode.</td>
-</tr><tr>
-<td><a href="#readEncodedFile">readEncodedFile</a></td>
-<td>Function to read a file and decode it's contents into proper text.</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>
 </tr><tr>
@@ -214,6 +202,9 @@
 <td><a href="#relpath">relpath</a></td>
 <td>Return a relative version of a path.</td>
 </tr><tr>
+<td><a href="#samefilepath">samefilepath</a></td>
+<td>Function to compare two paths.</td>
+</tr><tr>
 <td><a href="#samepath">samepath</a></td>
 <td>Function to compare two paths.</td>
 </tr><tr>
@@ -394,7 +385,7 @@
 <hr /><hr />
 <a NAME="compile" ID="compile"></a>
 <h2>compile</h2>
-<b>compile</b>(<i>file, codestring=""</i>)
+<b>compile</b>(<i>file, codestring="", isPy2=False</i>)
 <p>
     Function to compile one Python source file to Python bytecode.
 </p><dl>
@@ -404,6 +395,9 @@
 </dd><dt><i>codestring</i></dt>
 <dd>
 string containing the code to compile (string)
+</dd><dt><i>isPy2</i></dt>
+<dd>
+shows which interperter to use (boolean)
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
@@ -416,6 +410,33 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="compile_extern" ID="compile_extern"></a>
+<h2>compile_extern</h2>
+<b>compile_extern</b>(<i>file, isPy2, checkFlakes=True, ignoreStarImportWarnings=False</i>)
+<p>
+    Function to compile one Python source file to Python bytecode.
+</p><dl>
+<dt><i>file</i></dt>
+<dd>
+source filename (string)
+</dd><dt><i>checkFlakes=</i></dt>
+<dd>
+flag indicating to do a pyflakes check (boolean)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+A tuple indicating status (True = an error was found), the
+        file name, the line number, the index number, the code string,
+        the error message and a list of tuples of pyflakes warnings indicating
+        file name, line number and message (boolean, string, string, string,
+        string, string, list of (string, string, string)). The syntax error
+        values are only valid, if the status is True. The pyflakes list will
+        be empty, if a syntax error was detected by the syntax checker.
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="convertLineEnds" ID="convertLineEnds"></a>
 <h2>convertLineEnds</h2>
 <b>convertLineEnds</b>(<i>text, eol</i>)
@@ -437,24 +458,6 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
-<a NAME="decode" ID="decode"></a>
-<h2>decode</h2>
-<b>decode</b>(<i>text</i>)
-<p>
-    Function to decode some byte text into a string.
-</p><dl>
-<dt><i>text</i></dt>
-<dd>
-byte text to decode (bytes)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-tuple of decoded text and encoding (string, string)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
 <a NAME="decodeBytes" ID="decodeBytes"></a>
 <h2>decodeBytes</h2>
 <b>decodeBytes</b>(<i>buffer</i>)
@@ -627,30 +630,6 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
-<a NAME="extractLineFlags" ID="extractLineFlags"></a>
-<h2>extractLineFlags</h2>
-<b>extractLineFlags</b>(<i>line, startComment="</i>)
-<p>
-    Function to extract flags starting and ending with '__' from a line comment.
-</p><dl>
-<dt><i>line</i></dt>
-<dd>
-line to extract flags from (string)
-</dd><dt><i>startComment=</i></dt>
-<dd>
-string identifying the start of the comment (string)
-</dd><dt><i>endComment=</i></dt>
-<dd>
-string identifying the end of a comment (string)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-list containing the extracted flags (list of strings)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
 <a NAME="fromNativeSeparators" ID="fromNativeSeparators"></a>
 <h2>fromNativeSeparators</h2>
 <b>fromNativeSeparators</b>(<i>path</i>)
@@ -989,24 +968,6 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
-<a NAME="get_codingBytes" ID="get_codingBytes"></a>
-<h2>get_codingBytes</h2>
-<b>get_codingBytes</b>(<i>text</i>)
-<p>
-    Function to get the coding of a bytes text.
-</p><dl>
-<dt><i>text</i></dt>
-<dd>
-bytes text to inspect (bytes)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-coding string
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
 <a NAME="hasEnvironmentEntry" ID="hasEnvironmentEntry"></a>
 <h2>hasEnvironmentEntry</h2>
 <b>hasEnvironmentEntry</b>(<i>key</i>)
@@ -1340,51 +1301,6 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
-<a NAME="py2compile" ID="py2compile"></a>
-<h2>py2compile</h2>
-<b>py2compile</b>(<i>file, checkFlakes=False</i>)
-<p>
-    Function to compile one Python 2 source file to Python 2 bytecode.
-</p><dl>
-<dt><i>file</i></dt>
-<dd>
-source filename (string)
-</dd><dt><i>checkFlakes=</i></dt>
-<dd>
-flag indicating to do a pyflakes check (boolean)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-A tuple indicating status (True = an error was found), the
-        file name, the line number, the index number, the code string,
-        the error message and a list of tuples of pyflakes warnings indicating
-        file name, line number and message (boolean, string, string, string,
-        string, string, list of (string, string, string)). The syntax error
-        values are only valid, if the status is True. The pyflakes list will
-        be empty, if a syntax error was detected by the syntax checker.
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="readEncodedFile" ID="readEncodedFile"></a>
-<h2>readEncodedFile</h2>
-<b>readEncodedFile</b>(<i>filename</i>)
-<p>
-    Function to read a file and decode it's contents into proper text.
-</p><dl>
-<dt><i>filename</i></dt>
-<dd>
-name of the file to read (string)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-tuple of decoded text and encoding (string, string)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
 <a NAME="readEncodedFileWithHash" ID="readEncodedFileWithHash"></a>
 <h2>readEncodedFileWithHash</h2>
 <b>readEncodedFileWithHash</b>(<i>filename</i>)
@@ -1438,6 +1354,28 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="samefilepath" ID="samefilepath"></a>
+<h2>samefilepath</h2>
+<b>samefilepath</b>(<i>f1, f2</i>)
+<p>
+    Function to compare two paths. Strips the filename.
+</p><dl>
+<dt><i>f1</i></dt>
+<dd>
+first filepath for the compare (string)
+</dd><dt><i>f2</i></dt>
+<dd>
+second filepath for the compare (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating whether the two paths represent the
+        same path on disk.
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="samepath" ID="samepath"></a>
 <h2>samepath</h2>
 <b>samepath</b>(<i>f1, f2</i>)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric5.Utilities.py2flakes.checker.html	Mon Apr 08 07:52:06 2013 +0200
@@ -0,0 +1,796 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric5.Utilities.py2flakes.checker</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric5.Utilities.py2flakes.checker</h1>
+
+<h3>Global Attributes</h3>
+<table>
+<tr><td>_MAGIC_GLOBALS</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#Argument">Argument</a></td>
+<td>Represents binding a name as an argument.</td>
+</tr><tr>
+<td><a href="#Assignment">Assignment</a></td>
+<td>Represents binding a name with an explicit assignment.</td>
+</tr><tr>
+<td><a href="#Binding">Binding</a></td>
+<td>Represents the binding of a value to a name.</td>
+</tr><tr>
+<td><a href="#Checker">Checker</a></td>
+<td>I check the cleanliness and sanity of Python code.</td>
+</tr><tr>
+<td><a href="#ClassDefinition">ClassDefinition</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#ClassScope">ClassScope</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Definition">Definition</a></td>
+<td>A binding that defines a function or a class.</td>
+</tr><tr>
+<td><a href="#ExportBinding">ExportBinding</a></td>
+<td>A binding created by an C{__all__} assignment.</td>
+</tr><tr>
+<td><a href="#FunctionDefinition">FunctionDefinition</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#FunctionScope">FunctionScope</a></td>
+<td>I represent a name scope for a function.</td>
+</tr><tr>
+<td><a href="#Importation">Importation</a></td>
+<td>A binding created by an import statement.</td>
+</tr><tr>
+<td><a href="#ModuleScope">ModuleScope</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Scope">Scope</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#UnBinding">UnBinding</a></td>
+<td>Created by the 'del' operator.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr>
+<td><a href="#getNodeName">getNodeName</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#iter_child_nodes">iter_child_nodes</a></td>
+<td>Yield all direct child nodes of *node*, that is, all fields that are nodes and all items of fields that are lists of nodes.</td>
+</tr>
+</table>
+<hr /><hr />
+<a NAME="Argument" ID="Argument"></a>
+<h2>Argument</h2>
+<p>
+    Represents binding a name as an argument.
+</p>
+<h3>Derived from</h3>
+Binding
+<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>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="Assignment" ID="Assignment"></a>
+<h2>Assignment</h2>
+<p>
+    Represents binding a name with an explicit assignment.
+</p><p>
+    The checker will raise warnings for any Assignment that isn't used. Also,
+    the checker does not consider assignments in tuple/list unpacking to be
+    Assignments, rather it treats them as simple Bindings.
+</p>
+<h3>Derived from</h3>
+Binding
+<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>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="Binding" ID="Binding"></a>
+<h2>Binding</h2>
+<p>
+    Represents the binding of a value to a name.
+</p><p>
+    The checker uses this to keep track of which names have been bound and
+    which names have not. See L{Assignment} for a special type of binding that
+    is checked with stricter rules.
+</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="#Binding.__init__">Binding</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Binding.__repr__">__repr__</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Binding.__str__">__str__</a></td>
+<td></td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="Binding.__init__" ID="Binding.__init__"></a>
+<h4>Binding (Constructor)</h4>
+<b>Binding</b>(<i>name, source</i>)
+<a NAME="Binding.__repr__" ID="Binding.__repr__"></a>
+<h4>Binding.__repr__</h4>
+<b>__repr__</b>(<i></i>)
+<a NAME="Binding.__str__" ID="Binding.__str__"></a>
+<h4>Binding.__str__</h4>
+<b>__str__</b>(<i></i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="Checker" ID="Checker"></a>
+<h2>Checker</h2>
+<p>
+    I check the cleanliness and sanity of Python code.
+</p>
+<h3>Derived from</h3>
+object
+<h3>Class Attributes</h3>
+<table>
+<tr><td>AND</td></tr><tr><td>BOOLOP</td></tr><tr><td>COMPREHENSION</td></tr><tr><td>CONTINUE</td></tr><tr><td>GENERATOREXP</td></tr><tr><td>LOAD</td></tr><tr><td>NONLOCAL</td></tr><tr><td>NUM</td></tr><tr><td>RETURN</td></tr><tr><td>SLICE</td></tr><tr><td>builtIns</td></tr><tr><td>nodeDepth</td></tr><tr><td>traceTree</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#Checker.__init__">Checker</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.ASSIGN">ASSIGN</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.AUGASSIGN">AUGASSIGN</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.CLASSDEF">CLASSDEF</a></td>
+<td>Check names used in a class definition, including its decorators, base classes, and the body of its definition.</td>
+</tr><tr>
+<td><a href="#Checker.DICTCOMP">DICTCOMP</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.EXCEPTHANDLER">EXCEPTHANDLER</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.FOR">FOR</a></td>
+<td>Process bindings for loop variables.</td>
+</tr><tr>
+<td><a href="#Checker.FUNCTIONDEF">FUNCTIONDEF</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.GLOBAL">GLOBAL</a></td>
+<td>Keep track of globals declarations.</td>
+</tr><tr>
+<td><a href="#Checker.IMPORT">IMPORT</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.IMPORTFROM">IMPORTFROM</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.LAMBDA">LAMBDA</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.LISTCOMP">LISTCOMP</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.NAME">NAME</a></td>
+<td>Handle occurrence of Name (which can be a load/store/delete access.)</td>
+</tr><tr>
+<td><a href="#Checker.addArgs">addArgs</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.addBinding">addBinding</a></td>
+<td>Called when a binding is altered.</td>
+</tr><tr>
+<td><a href="#Checker.checkDeadScopes">checkDeadScopes</a></td>
+<td>Look at scopes which have been fully examined and report names in them which were imported but unused.</td>
+</tr><tr>
+<td><a href="#Checker.checkUnusedAssignments">checkUnusedAssignments</a></td>
+<td>Check to see if any assignments have not been used.</td>
+</tr><tr>
+<td><a href="#Checker.collectLoopVars">collectLoopVars</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.deferAssignment">deferAssignment</a></td>
+<td>Schedule an assignment handler to be called just after deferred function handlers.</td>
+</tr><tr>
+<td><a href="#Checker.deferFunction">deferFunction</a></td>
+<td>Schedule a function handler to be called just before completion.</td>
+</tr><tr>
+<td><a href="#Checker.descendantOf">descendantOf</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.differentForks">differentForks</a></td>
+<td>True, if lnode and rnode are located on different forks of IF/TRY</td>
+</tr><tr>
+<td><a href="#Checker.getCommonAncestor">getCommonAncestor</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.handleChildren">handleChildren</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.handleNode">handleNode</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.handleNodeDelete">handleNodeDelete</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.handleNodeLoad">handleNodeLoad</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.handleNodeStore">handleNodeStore</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.hasParent">hasParent</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.ignore">ignore</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.isDocstring">isDocstring</a></td>
+<td>Determine if the given node is a docstring, as long as it is at the correct place in the node tree.</td>
+</tr><tr>
+<td><a href="#Checker.onFork">onFork</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.popScope">popScope</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.pushClassScope">pushClassScope</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.pushFunctionScope">pushFunctionScope</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.report">report</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.runDeferred">runDeferred</a></td>
+<td>Run the callables in C{deferred} using their associated scope stack.</td>
+</tr><tr>
+<td><a href="#Checker.runFunction">runFunction</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.scope">scope</a></td>
+<td></td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="Checker.__init__" ID="Checker.__init__"></a>
+<h4>Checker (Constructor)</h4>
+<b>Checker</b>(<i>tree, filename='(none)', builtins=None</i>)
+<a NAME="Checker.ASSIGN" ID="Checker.ASSIGN"></a>
+<h4>Checker.ASSIGN</h4>
+<b>ASSIGN</b>(<i>node</i>)
+<a NAME="Checker.AUGASSIGN" ID="Checker.AUGASSIGN"></a>
+<h4>Checker.AUGASSIGN</h4>
+<b>AUGASSIGN</b>(<i>node</i>)
+<a NAME="Checker.CLASSDEF" ID="Checker.CLASSDEF"></a>
+<h4>Checker.CLASSDEF</h4>
+<b>CLASSDEF</b>(<i>node</i>)
+<p>
+        Check names used in a class definition, including its decorators, base
+        classes, and the body of its definition.  Additionally, add its name to
+        the current scope.
+</p><a NAME="Checker.DICTCOMP" ID="Checker.DICTCOMP"></a>
+<h4>Checker.DICTCOMP</h4>
+<b>DICTCOMP</b>(<i>node</i>)
+<a NAME="Checker.EXCEPTHANDLER" ID="Checker.EXCEPTHANDLER"></a>
+<h4>Checker.EXCEPTHANDLER</h4>
+<b>EXCEPTHANDLER</b>(<i>node</i>)
+<a NAME="Checker.FOR" ID="Checker.FOR"></a>
+<h4>Checker.FOR</h4>
+<b>FOR</b>(<i>node</i>)
+<p>
+        Process bindings for loop variables.
+</p><a NAME="Checker.FUNCTIONDEF" ID="Checker.FUNCTIONDEF"></a>
+<h4>Checker.FUNCTIONDEF</h4>
+<b>FUNCTIONDEF</b>(<i>node</i>)
+<a NAME="Checker.GLOBAL" ID="Checker.GLOBAL"></a>
+<h4>Checker.GLOBAL</h4>
+<b>GLOBAL</b>(<i>node</i>)
+<p>
+        Keep track of globals declarations.
+</p><a NAME="Checker.IMPORT" ID="Checker.IMPORT"></a>
+<h4>Checker.IMPORT</h4>
+<b>IMPORT</b>(<i>node</i>)
+<a NAME="Checker.IMPORTFROM" ID="Checker.IMPORTFROM"></a>
+<h4>Checker.IMPORTFROM</h4>
+<b>IMPORTFROM</b>(<i>node</i>)
+<a NAME="Checker.LAMBDA" ID="Checker.LAMBDA"></a>
+<h4>Checker.LAMBDA</h4>
+<b>LAMBDA</b>(<i>node</i>)
+<a NAME="Checker.LISTCOMP" ID="Checker.LISTCOMP"></a>
+<h4>Checker.LISTCOMP</h4>
+<b>LISTCOMP</b>(<i>node</i>)
+<a NAME="Checker.NAME" ID="Checker.NAME"></a>
+<h4>Checker.NAME</h4>
+<b>NAME</b>(<i>node</i>)
+<p>
+        Handle occurrence of Name (which can be a load/store/delete access.)
+</p><a NAME="Checker.addArgs" ID="Checker.addArgs"></a>
+<h4>Checker.addArgs</h4>
+<b>addArgs</b>(<i></i>)
+<a NAME="Checker.addBinding" ID="Checker.addBinding"></a>
+<h4>Checker.addBinding</h4>
+<b>addBinding</b>(<i>node, value, reportRedef=True</i>)
+<p>
+        Called when a binding is altered.
+</p><p>
+        - `node` is the statement responsible for the change
+        - `value` is the optional new value, a Binding instance, associated
+          with the binding; if None, the binding is deleted if it exists.
+        - if `reportRedef` is True (default), rebinding while unused will be
+          reported.
+</p><a NAME="Checker.checkDeadScopes" ID="Checker.checkDeadScopes"></a>
+<h4>Checker.checkDeadScopes</h4>
+<b>checkDeadScopes</b>(<i></i>)
+<p>
+        Look at scopes which have been fully examined and report names in them
+        which were imported but unused.
+</p><a NAME="Checker.checkUnusedAssignments" ID="Checker.checkUnusedAssignments"></a>
+<h4>Checker.checkUnusedAssignments</h4>
+<b>checkUnusedAssignments</b>(<i></i>)
+<p>
+                Check to see if any assignments have not been used.
+</p><a NAME="Checker.collectLoopVars" ID="Checker.collectLoopVars"></a>
+<h4>Checker.collectLoopVars</h4>
+<b>collectLoopVars</b>(<i></i>)
+<a NAME="Checker.deferAssignment" ID="Checker.deferAssignment"></a>
+<h4>Checker.deferAssignment</h4>
+<b>deferAssignment</b>(<i>callable</i>)
+<p>
+        Schedule an assignment handler to be called just after deferred
+        function handlers.
+</p><a NAME="Checker.deferFunction" ID="Checker.deferFunction"></a>
+<h4>Checker.deferFunction</h4>
+<b>deferFunction</b>(<i>callable</i>)
+<p>
+        Schedule a function handler to be called just before completion.
+</p><p>
+        This is used for handling function bodies, which must be deferred
+        because code later in the file might modify the global scope. When
+        `callable` is called, the scope at the time this is called will be
+        restored, however it will contain any new bindings added to it.
+</p><a NAME="Checker.descendantOf" ID="Checker.descendantOf"></a>
+<h4>Checker.descendantOf</h4>
+<b>descendantOf</b>(<i>node, ancestors, stop=None</i>)
+<a NAME="Checker.differentForks" ID="Checker.differentForks"></a>
+<h4>Checker.differentForks</h4>
+<b>differentForks</b>(<i>lnode, rnode</i>)
+<p>
+True, if lnode and rnode are located on different forks of IF/TRY
+</p><a NAME="Checker.getCommonAncestor" ID="Checker.getCommonAncestor"></a>
+<h4>Checker.getCommonAncestor</h4>
+<b>getCommonAncestor</b>(<i>lnode, rnode, stop=None</i>)
+<a NAME="Checker.handleChildren" ID="Checker.handleChildren"></a>
+<h4>Checker.handleChildren</h4>
+<b>handleChildren</b>(<i>tree</i>)
+<a NAME="Checker.handleNode" ID="Checker.handleNode"></a>
+<h4>Checker.handleNode</h4>
+<b>handleNode</b>(<i>node, parent</i>)
+<a NAME="Checker.handleNodeDelete" ID="Checker.handleNodeDelete"></a>
+<h4>Checker.handleNodeDelete</h4>
+<b>handleNodeDelete</b>(<i>node</i>)
+<a NAME="Checker.handleNodeLoad" ID="Checker.handleNodeLoad"></a>
+<h4>Checker.handleNodeLoad</h4>
+<b>handleNodeLoad</b>(<i>node</i>)
+<a NAME="Checker.handleNodeStore" ID="Checker.handleNodeStore"></a>
+<h4>Checker.handleNodeStore</h4>
+<b>handleNodeStore</b>(<i>node</i>)
+<a NAME="Checker.hasParent" ID="Checker.hasParent"></a>
+<h4>Checker.hasParent</h4>
+<b>hasParent</b>(<i>node, kind</i>)
+<a NAME="Checker.ignore" ID="Checker.ignore"></a>
+<h4>Checker.ignore</h4>
+<b>ignore</b>(<i>node</i>)
+<a NAME="Checker.isDocstring" ID="Checker.isDocstring"></a>
+<h4>Checker.isDocstring</h4>
+<b>isDocstring</b>(<i>node</i>)
+<p>
+        Determine if the given node is a docstring, as long as it is at the
+        correct place in the node tree.
+</p><a NAME="Checker.onFork" ID="Checker.onFork"></a>
+<h4>Checker.onFork</h4>
+<b>onFork</b>(<i>parent, lnode, rnode, items</i>)
+<a NAME="Checker.popScope" ID="Checker.popScope"></a>
+<h4>Checker.popScope</h4>
+<b>popScope</b>(<i></i>)
+<a NAME="Checker.pushClassScope" ID="Checker.pushClassScope"></a>
+<h4>Checker.pushClassScope</h4>
+<b>pushClassScope</b>(<i></i>)
+<a NAME="Checker.pushFunctionScope" ID="Checker.pushFunctionScope"></a>
+<h4>Checker.pushFunctionScope</h4>
+<b>pushFunctionScope</b>(<i></i>)
+<a NAME="Checker.report" ID="Checker.report"></a>
+<h4>Checker.report</h4>
+<b>report</b>(<i>messageClass, *args, **kwargs</i>)
+<a NAME="Checker.runDeferred" ID="Checker.runDeferred"></a>
+<h4>Checker.runDeferred</h4>
+<b>runDeferred</b>(<i>deferred</i>)
+<p>
+        Run the callables in C{deferred} using their associated scope stack.
+</p><a NAME="Checker.runFunction" ID="Checker.runFunction"></a>
+<h4>Checker.runFunction</h4>
+<b>runFunction</b>(<i></i>)
+<a NAME="Checker.scope" ID="Checker.scope"></a>
+<h4>Checker.scope</h4>
+<b>scope</b>(<i></i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="ClassDefinition" ID="ClassDefinition"></a>
+<h2>ClassDefinition</h2>
+
+<h3>Derived from</h3>
+Definition
+<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>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="ClassScope" ID="ClassScope"></a>
+<h2>ClassScope</h2>
+
+<h3>Derived from</h3>
+Scope
+<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>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="Definition" ID="Definition"></a>
+<h2>Definition</h2>
+<p>
+    A binding that defines a function or a class.
+</p>
+<h3>Derived from</h3>
+Binding
+<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>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="ExportBinding" ID="ExportBinding"></a>
+<h2>ExportBinding</h2>
+<p>
+    A binding created by an C{__all__} assignment.  If the names in the list
+    can be determined statically, they will be treated as names for export and
+    additional checking applied to them.
+</p><p>
+    The only C{__all__} assignment that can be recognized is one which takes
+    the value of a literal list containing literal strings.  For example::
+</p><p>
+        __all__ = ["foo", "bar"]
+</p><p>
+    Names which are imported and not otherwise used but appear in the value of
+    C{__all__} will not have an unused import warning reported for them.
+</p>
+<h3>Derived from</h3>
+Binding
+<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="#ExportBinding.names">names</a></td>
+<td>Return a list of the names referenced by this binding.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="ExportBinding.names" ID="ExportBinding.names"></a>
+<h4>ExportBinding.names</h4>
+<b>names</b>(<i></i>)
+<p>
+        Return a list of the names referenced by this binding.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="FunctionDefinition" ID="FunctionDefinition"></a>
+<h2>FunctionDefinition</h2>
+
+<h3>Derived from</h3>
+Definition
+<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>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="FunctionScope" ID="FunctionScope"></a>
+<h2>FunctionScope</h2>
+<p>
+    I represent a name scope for a function.
+</p>
+<h3>Derived from</h3>
+Scope
+<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="#FunctionScope.__init__">FunctionScope</a></td>
+<td></td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="FunctionScope.__init__" ID="FunctionScope.__init__"></a>
+<h4>FunctionScope (Constructor)</h4>
+<b>FunctionScope</b>(<i></i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="Importation" ID="Importation"></a>
+<h2>Importation</h2>
+<p>
+    A binding created by an import statement.
+</p>
+<h3>Derived from</h3>
+Binding
+<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="#Importation.__init__">Importation</a></td>
+<td></td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="Importation.__init__" ID="Importation.__init__"></a>
+<h4>Importation (Constructor)</h4>
+<b>Importation</b>(<i>name, source</i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="ModuleScope" ID="ModuleScope"></a>
+<h2>ModuleScope</h2>
+
+<h3>Derived from</h3>
+Scope
+<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>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="Scope" ID="Scope"></a>
+<h2>Scope</h2>
+
+<h3>Derived from</h3>
+dict
+<h3>Class Attributes</h3>
+<table>
+<tr><td>importStarred</td></tr><tr><td>usesLocals</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#Scope.__repr__">__repr__</a></td>
+<td></td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="Scope.__repr__" ID="Scope.__repr__"></a>
+<h4>Scope.__repr__</h4>
+<b>__repr__</b>(<i></i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="UnBinding" ID="UnBinding"></a>
+<h2>UnBinding</h2>
+<p>
+Created by the 'del' operator.
+</p>
+<h3>Derived from</h3>
+Binding
+<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>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="getNodeName" ID="getNodeName"></a>
+<h2>getNodeName</h2>
+<b>getNodeName</b>(<i>node</i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="iter_child_nodes" ID="iter_child_nodes"></a>
+<h2>iter_child_nodes</h2>
+<b>iter_child_nodes</b>(<i>node, astcls=ast.AST</i>)
+<p>
+        Yield all direct child nodes of *node*, that is, all fields that are nodes
+        and all items of fields that are lists of nodes.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric5.Utilities.py2flakes.messages.html	Mon Apr 08 07:52:06 2013 +0200
@@ -0,0 +1,725 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric5.Utilities.py2flakes.messages</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric5.Utilities.py2flakes.messages</h1>
+
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#DuplicateArgument">DuplicateArgument</a></td>
+<td>Class defining the "Duplicate Argument" message.</td>
+</tr><tr>
+<td><a href="#ImportShadowedByLoopVar">ImportShadowedByLoopVar</a></td>
+<td>Class defining the "Import Shadowed By Loop Var" message.</td>
+</tr><tr>
+<td><a href="#ImportStarUsed">ImportStarUsed</a></td>
+<td>Class defining the "Import Star Used" message.</td>
+</tr><tr>
+<td><a href="#LateFutureImport">LateFutureImport</a></td>
+<td>Class defining the "Late Future Import" message.</td>
+</tr><tr>
+<td><a href="#Message">Message</a></td>
+<td>Class defining the base for all specific message classes.</td>
+</tr><tr>
+<td><a href="#Redefined">Redefined</a></td>
+<td>Class defining the "Redefined" message.</td>
+</tr><tr>
+<td><a href="#RedefinedInListComp">RedefinedInListComp</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#RedefinedWhileUnused">RedefinedWhileUnused</a></td>
+<td>Class defining the "Redefined While Unused" message.</td>
+</tr><tr>
+<td><a href="#UndefinedExport">UndefinedExport</a></td>
+<td>Class defining the "Undefined Export" message.</td>
+</tr><tr>
+<td><a href="#UndefinedLocal">UndefinedLocal</a></td>
+<td>Class defining the "Undefined Local Variable" message.</td>
+</tr><tr>
+<td><a href="#UndefinedName">UndefinedName</a></td>
+<td>Class defining the "Undefined Name" message.</td>
+</tr><tr>
+<td><a href="#UnusedImport">UnusedImport</a></td>
+<td>Class defining the "Unused Import" message.</td>
+</tr><tr>
+<td><a href="#UnusedVariable">UnusedVariable</a></td>
+<td>Class defining the "Unused Variable" message.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr>
+<td><a href="#QT_TRANSLATE_NOOP">QT_TRANSLATE_NOOP</a></td>
+<td>Function to tell 'lupdate' which strings to keep for translation.</td>
+</tr>
+</table>
+<hr /><hr />
+<a NAME="DuplicateArgument" ID="DuplicateArgument"></a>
+<h2>DuplicateArgument</h2>
+<p>
+    Class defining the "Duplicate Argument" message.
+</p>
+<h3>Derived from</h3>
+Message
+<h3>Class Attributes</h3>
+<table>
+<tr><td>message</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#DuplicateArgument.__init__">DuplicateArgument</a></td>
+<td>Constructor</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="DuplicateArgument.__init__" ID="DuplicateArgument.__init__"></a>
+<h4>DuplicateArgument (Constructor)</h4>
+<b>DuplicateArgument</b>(<i>filename, lineno, name</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>filename</i></dt>
+<dd>
+name of the file (string)
+</dd><dt><i>lineno</i></dt>
+<dd>
+line number (integer)
+</dd><dt><i>name</i></dt>
+<dd>
+name of the duplicate argument (string)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="ImportShadowedByLoopVar" ID="ImportShadowedByLoopVar"></a>
+<h2>ImportShadowedByLoopVar</h2>
+<p>
+    Class defining the "Import Shadowed By Loop Var" message.
+</p>
+<h3>Derived from</h3>
+Message
+<h3>Class Attributes</h3>
+<table>
+<tr><td>message</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#ImportShadowedByLoopVar.__init__">ImportShadowedByLoopVar</a></td>
+<td>Constructor</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="ImportShadowedByLoopVar.__init__" ID="ImportShadowedByLoopVar.__init__"></a>
+<h4>ImportShadowedByLoopVar (Constructor)</h4>
+<b>ImportShadowedByLoopVar</b>(<i>filename, lineno, name, orig_lineno</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>filename</i></dt>
+<dd>
+name of the file (string)
+</dd><dt><i>lineno</i></dt>
+<dd>
+line number (integer)
+</dd><dt><i>name</i></dt>
+<dd>
+name of the shadowed import (string)
+</dd><dt><i>orig_lineno</i></dt>
+<dd>
+line number of the import (integer)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="ImportStarUsed" ID="ImportStarUsed"></a>
+<h2>ImportStarUsed</h2>
+<p>
+    Class defining the "Import Star Used" message.
+</p>
+<h3>Derived from</h3>
+Message
+<h3>Class Attributes</h3>
+<table>
+<tr><td>message</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#ImportStarUsed.__init__">ImportStarUsed</a></td>
+<td>Constructor</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="ImportStarUsed.__init__" ID="ImportStarUsed.__init__"></a>
+<h4>ImportStarUsed (Constructor)</h4>
+<b>ImportStarUsed</b>(<i>filename, lineno, modname</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>filename</i></dt>
+<dd>
+name of the file (string)
+</dd><dt><i>lineno</i></dt>
+<dd>
+line number (integer)
+</dd><dt><i>modname</i></dt>
+<dd>
+name of the module imported using star import (string)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="LateFutureImport" ID="LateFutureImport"></a>
+<h2>LateFutureImport</h2>
+<p>
+    Class defining the "Late Future Import" message.
+</p>
+<h3>Derived from</h3>
+Message
+<h3>Class Attributes</h3>
+<table>
+<tr><td>message</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#LateFutureImport.__init__">LateFutureImport</a></td>
+<td>Constructor</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="LateFutureImport.__init__" ID="LateFutureImport.__init__"></a>
+<h4>LateFutureImport (Constructor)</h4>
+<b>LateFutureImport</b>(<i>filename, lineno, names</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>filename</i></dt>
+<dd>
+name of the file (string)
+</dd><dt><i>lineno</i></dt>
+<dd>
+line number (integer)
+</dd><dt><i>names</i></dt>
+<dd>
+names of the imported futures (string)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="Message" ID="Message"></a>
+<h2>Message</h2>
+<p>
+    Class defining the base for all specific message classes.
+</p>
+<h3>Derived from</h3>
+object
+<h3>Class Attributes</h3>
+<table>
+<tr><td>message</td></tr><tr><td>message_args</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#Message.__init__">Message</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#Message.__str__">__str__</a></td>
+<td>Special method return a string representation of the instance object.</td>
+</tr><tr>
+<td><a href="#Message.getMessageData">getMessageData</a></td>
+<td>Public method to get the individual message data elements.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="Message.__init__" ID="Message.__init__"></a>
+<h4>Message (Constructor)</h4>
+<b>Message</b>(<i>filename, lineno</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>filename</i></dt>
+<dd>
+name of the file (string)
+</dd><dt><i>lineno</i></dt>
+<dd>
+line number (integer)
+</dd>
+</dl><a NAME="Message.__str__" ID="Message.__str__"></a>
+<h4>Message.__str__</h4>
+<b>__str__</b>(<i></i>)
+<p>
+        Special method return a string representation of the instance object.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+string representation of the object (string)
+</dd>
+</dl><a NAME="Message.getMessageData" ID="Message.getMessageData"></a>
+<h4>Message.getMessageData</h4>
+<b>getMessageData</b>(<i></i>)
+<p>
+        Public method to get the individual message data elements.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+tuple containing file name, line number and message
+            (string, integer, string)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="Redefined" ID="Redefined"></a>
+<h2>Redefined</h2>
+<p>
+    Class defining the "Redefined" message.
+</p>
+<h3>Derived from</h3>
+Message
+<h3>Class Attributes</h3>
+<table>
+<tr><td>message</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#Redefined.__init__">Redefined</a></td>
+<td>Constructor</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="Redefined.__init__" ID="Redefined.__init__"></a>
+<h4>Redefined (Constructor)</h4>
+<b>Redefined</b>(<i>filename, lineno, name, orig_lineno</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>filename</i></dt>
+<dd>
+name of the file (string)
+</dd><dt><i>lineno</i></dt>
+<dd>
+line number (integer)
+</dd><dt><i>name</i></dt>
+<dd>
+name of the redefined function (string)
+</dd><dt><i>orig_lineno</i></dt>
+<dd>
+line number of the original definition (integer)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="RedefinedInListComp" ID="RedefinedInListComp"></a>
+<h2>RedefinedInListComp</h2>
+
+<h3>Derived from</h3>
+Message
+<h3>Class Attributes</h3>
+<table>
+<tr><td>message</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#RedefinedInListComp.__init__">RedefinedInListComp</a></td>
+<td>Constructor</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="RedefinedInListComp.__init__" ID="RedefinedInListComp.__init__"></a>
+<h4>RedefinedInListComp (Constructor)</h4>
+<b>RedefinedInListComp</b>(<i>filename, lineno, name, orig_lineno</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>filename</i></dt>
+<dd>
+name of the file (string)
+</dd><dt><i>lineno</i></dt>
+<dd>
+line number (integer)
+</dd><dt><i>name</i></dt>
+<dd>
+name of the redefined object (string)
+</dd><dt><i>orig_lineno</i></dt>
+<dd>
+line number of the original definition (integer)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="RedefinedWhileUnused" ID="RedefinedWhileUnused"></a>
+<h2>RedefinedWhileUnused</h2>
+<p>
+    Class defining the "Redefined While Unused" message.
+</p>
+<h3>Derived from</h3>
+Message
+<h3>Class Attributes</h3>
+<table>
+<tr><td>message</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#RedefinedWhileUnused.__init__">RedefinedWhileUnused</a></td>
+<td>Constructor</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="RedefinedWhileUnused.__init__" ID="RedefinedWhileUnused.__init__"></a>
+<h4>RedefinedWhileUnused (Constructor)</h4>
+<b>RedefinedWhileUnused</b>(<i>filename, lineno, name, orig_lineno</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>filename</i></dt>
+<dd>
+name of the file (string)
+</dd><dt><i>lineno</i></dt>
+<dd>
+line number (integer)
+</dd><dt><i>name</i></dt>
+<dd>
+name of the redefined object (string)
+</dd><dt><i>orig_lineno</i></dt>
+<dd>
+line number of the original definition (integer)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="UndefinedExport" ID="UndefinedExport"></a>
+<h2>UndefinedExport</h2>
+<p>
+    Class defining the "Undefined Export" message.
+</p>
+<h3>Derived from</h3>
+Message
+<h3>Class Attributes</h3>
+<table>
+<tr><td>message</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#UndefinedExport.__init__">UndefinedExport</a></td>
+<td>Constructor</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="UndefinedExport.__init__" ID="UndefinedExport.__init__"></a>
+<h4>UndefinedExport (Constructor)</h4>
+<b>UndefinedExport</b>(<i>filename, lineno, name</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>filename</i></dt>
+<dd>
+name of the file (string)
+</dd><dt><i>lineno</i></dt>
+<dd>
+line number (integer)
+</dd><dt><i>name</i></dt>
+<dd>
+undefined exported name (string)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="UndefinedLocal" ID="UndefinedLocal"></a>
+<h2>UndefinedLocal</h2>
+<p>
+    Class defining the "Undefined Local Variable" message.
+</p>
+<h3>Derived from</h3>
+Message
+<h3>Class Attributes</h3>
+<table>
+<tr><td>message</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#UndefinedLocal.__init__">UndefinedLocal</a></td>
+<td>Constructor</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="UndefinedLocal.__init__" ID="UndefinedLocal.__init__"></a>
+<h4>UndefinedLocal (Constructor)</h4>
+<b>UndefinedLocal</b>(<i>filename, lineno, name, orig_lineno</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>filename</i></dt>
+<dd>
+name of the file (string)
+</dd><dt><i>lineno</i></dt>
+<dd>
+line number (integer)
+</dd><dt><i>name</i></dt>
+<dd>
+name of the prematurely referenced variable (string)
+</dd><dt><i>orig_lineno</i></dt>
+<dd>
+line number of the variable definition (integer)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="UndefinedName" ID="UndefinedName"></a>
+<h2>UndefinedName</h2>
+<p>
+    Class defining the "Undefined Name" message.
+</p>
+<h3>Derived from</h3>
+Message
+<h3>Class Attributes</h3>
+<table>
+<tr><td>message</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#UndefinedName.__init__">UndefinedName</a></td>
+<td>Constructor</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="UndefinedName.__init__" ID="UndefinedName.__init__"></a>
+<h4>UndefinedName (Constructor)</h4>
+<b>UndefinedName</b>(<i>filename, lineno, name</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>filename</i></dt>
+<dd>
+name of the file (string)
+</dd><dt><i>lineno</i></dt>
+<dd>
+line number (integer)
+</dd><dt><i>name</i></dt>
+<dd>
+undefined name (string)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="UnusedImport" ID="UnusedImport"></a>
+<h2>UnusedImport</h2>
+<p>
+    Class defining the "Unused Import" message.
+</p>
+<h3>Derived from</h3>
+Message
+<h3>Class Attributes</h3>
+<table>
+<tr><td>message</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#UnusedImport.__init__">UnusedImport</a></td>
+<td>Constructor</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="UnusedImport.__init__" ID="UnusedImport.__init__"></a>
+<h4>UnusedImport (Constructor)</h4>
+<b>UnusedImport</b>(<i>filename, lineno, name</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>filename</i></dt>
+<dd>
+name of the file (string)
+</dd><dt><i>lineno</i></dt>
+<dd>
+line number (integer)
+</dd><dt><i>name</i></dt>
+<dd>
+name of the unused import (string)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="UnusedVariable" ID="UnusedVariable"></a>
+<h2>UnusedVariable</h2>
+<p>
+    Class defining the "Unused Variable" message.
+</p><p>
+    Indicates that a variable has been explicitly assigned to but not actually
+    used.
+</p>
+<h3>Derived from</h3>
+Message
+<h3>Class Attributes</h3>
+<table>
+<tr><td>message</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#UnusedVariable.__init__">UnusedVariable</a></td>
+<td>Constructor</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="UnusedVariable.__init__" ID="UnusedVariable.__init__"></a>
+<h4>UnusedVariable (Constructor)</h4>
+<b>UnusedVariable</b>(<i>filename, lineno, names</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>filename</i></dt>
+<dd>
+name of the file (string)
+</dd><dt><i>lineno</i></dt>
+<dd>
+line number (integer)
+</dd><dt><i>name</i></dt>
+<dd>
+name of the unused variable (string)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="QT_TRANSLATE_NOOP" ID="QT_TRANSLATE_NOOP"></a>
+<h2>QT_TRANSLATE_NOOP</h2>
+<b>QT_TRANSLATE_NOOP</b>(<i>mod, txt</i>)
+<p>
+    Function to tell 'lupdate' which strings to keep for translation.
+</p><dl>
+<dt><i>mod</i></dt>
+<dd>
+module name
+</dd><dt><i>txt</i></dt>
+<dd>
+translatable string
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+the untranslated! string
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric5.Utilities.py3flakes.messages.html	Thu Mar 28 20:09:00 2013 +0100
+++ b/Documentation/Source/eric5.Utilities.py3flakes.messages.html	Mon Apr 08 07:52:06 2013 +0200
@@ -67,7 +67,10 @@
 </table>
 <h3>Functions</h3>
 <table>
-<tr><td>None</td></tr>
+<tr>
+<td><a href="#QT_TRANSLATE_NOOP">QT_TRANSLATE_NOOP</a></td>
+<td>Function to tell 'lupdate' which strings to keep for translation.</td>
+</tr>
 </table>
 <hr /><hr />
 <a NAME="DuplicateArgument" ID="DuplicateArgument"></a>
@@ -648,5 +651,26 @@
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="QT_TRANSLATE_NOOP" ID="QT_TRANSLATE_NOOP"></a>
+<h2>QT_TRANSLATE_NOOP</h2>
+<b>QT_TRANSLATE_NOOP</b>(<i>mod, txt</i>)
+<p>
+    Function to tell 'lupdate' which strings to keep for translation.
+</p><dl>
+<dt><i>mod</i></dt>
+<dd>
+module name
+</dd><dt><i>txt</i></dt>
+<dd>
+translatable string
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+the untranslated! string
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
\ No newline at end of file
--- a/Documentation/Source/index-eric5.Utilities.html	Thu Mar 28 20:09:00 2013 +0100
+++ b/Documentation/Source/index-eric5.Utilities.html	Mon Apr 08 07:52:06 2013 +0200
@@ -33,6 +33,9 @@
 <td><a href="index-eric5.Utilities.crypto.html">crypto</a></td>
 <td>Package implementing cryptography related functionality.</td>
 </tr><tr>
+<td><a href="index-eric5.Utilities.py2flakes.html">py2flakes</a></td>
+<td>Package containg the pyflakes Python2 port adapted for Qt.</td>
+</tr><tr>
 <td><a href="index-eric5.Utilities.py3flakes.html">py3flakes</a></td>
 <td>Package containg the pyflakes Python3 port adapted for Qt.</td>
 </tr>
@@ -53,6 +56,9 @@
 <td><a href="eric5.Utilities.PasswordChecker.html">PasswordChecker</a></td>
 <td>Module implementing a checker for password strength</td>
 </tr><tr>
+<td><a href="eric5.Utilities.SyntaxCheck.html">SyntaxCheck</a></td>
+<td>Module implementing the syntax check for Python 2/3.</td>
+</tr><tr>
 <td><a href="eric5.Utilities.__init__.html">Utilities</a></td>
 <td>Package implementing various functions/classes needed everywhere within eric5.</td>
 </tr><tr>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/index-eric5.Utilities.py2flakes.html	Mon Apr 08 07:52:06 2013 +0200
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric5.Utilities.py2flakes</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body>
+<h1>eric5.Utilities.py2flakes</h1>
+<p>
+Package containg the pyflakes Python2 port adapted for Qt.
+</p>
+
+
+<h3>Modules</h3>
+<table>
+<tr>
+<td><a href="eric5.Utilities.py2flakes.checker.html">checker</a></td>
+<td></td>
+</tr><tr>
+<td><a href="eric5.Utilities.py2flakes.messages.html">messages</a></td>
+<td></td>
+</tr>
+</table>
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/index-eric5.UtilitiesPython2.html	Thu Mar 28 20:09:00 2013 +0100
+++ b/Documentation/Source/index-eric5.UtilitiesPython2.html	Mon Apr 08 07:52:06 2013 +0200
@@ -24,13 +24,6 @@
 This package implements some utilities and tools for Python2
 </p>
 
-<h3>Packages</h3>
-<table>
-<tr>
-<td><a href="index-eric5.UtilitiesPython2.py2flakes.html">py2flakes</a></td>
-<td>Package containg pyflakes for Python2.</td>
-</tr>
-</table>
 
 <h3>Modules</h3>
 <table>
@@ -38,9 +31,6 @@
 <td><a href="eric5.UtilitiesPython2.Pep8Checker.html">Pep8Checker</a></td>
 <td>Class implementing the PEP 8 checker for Python2.</td>
 </tr><tr>
-<td><a href="eric5.UtilitiesPython2.Py2SyntaxChecker.html">Py2SyntaxChecker</a></td>
-<td>Module implementing the syntax check for Python 2.</td>
-</tr><tr>
 <td><a href="eric5.UtilitiesPython2.PySideImporter.html">PySideImporter</a></td>
 <td>Module to check for the presence of PySide by importing it.</td>
 </tr><tr>
--- a/QScintilla/Editor.py	Thu Mar 28 20:09:00 2013 +0100
+++ b/QScintilla/Editor.py	Mon Apr 08 07:52:06 2013 +0200
@@ -4749,62 +4749,31 @@
         return self.fileName is not None and \
                not self.autosaveManuallyDisabled and \
                not self.isReadOnly()
-        
+
+
     def __autoSyntaxCheck(self):
         """
         Private method to perform an automatic syntax check of the file.
         """
+        isPy2 = self.isPy2File()
+        if (isPy2 or self.isPy3File()) == False:
+            return
+        
         if Preferences.getEditor("AutoCheckSyntax"):
             self.clearSyntaxError()
             self.clearFlakesWarnings()
-            if self.isPy3File():
-                syntaxError, _fn, errorline, errorindex, _code, _error = \
-                    Utilities.compile(self.fileName or "(Unnamed)", self.text())
-                if syntaxError:
-                    self.toggleSyntaxError(
-                        int(errorline), int(errorindex), True, _error)
-                else:
-                    if Preferences.getFlakes("IncludeInSyntaxCheck"):
-                        from Utilities.py3flakes.checker import Checker
-                        from Utilities.py3flakes.messages import ImportStarUsed
-                        
-                        ignoreStarImportWarnings = \
-                            Preferences.getFlakes("IgnoreStarImportWarnings")
-                        try:
-                            txt = self.text()\
-                                .replace("\r\n", "\n")\
-                                .replace("\r", "\n")
-                            warnings = Checker(txt, self.fileName or "(Unnamed)")
-                            warnings.messages.sort(key=lambda a: a.lineno)
-                            for warning in warnings.messages:
-                                if ignoreStarImportWarnings and \
-                                   isinstance(warning, ImportStarUsed):
-                                    continue
-                                
-                                _fn, lineno, message = warning.getMessageData()
-                                if "__IGNORE_WARNING__" not in Utilities.extractLineFlags(
-                                        self.text(lineno - 1).strip()):
-                                    self.toggleFlakesWarning(
-                                        lineno, True, message)
-                        except SyntaxError as err:
-                            if err.text.strip():
-                                msg = err.text.strip()
-                            else:
-                                msg = err.msg
-                            self.toggleSyntaxError(err.lineno, True, msg)
-            elif self.isPy2File() and self.fileName is not None:
-                syntaxError, _fn, errorline, errorindex, _code, _error, \
-                warnings = Utilities.py2compile(
-                    self.fileName,
-                    checkFlakes=Preferences.getFlakes("IncludeInSyntaxCheck"))
-                if syntaxError:
-                    self.toggleSyntaxError(
-                        int(errorline), int(errorindex), True, _error)
-                else:
-                    for warning in warnings:
-                        self.toggleFlakesWarning(
-                            int(warning[1]), True, warning[2])
-        
+
+            syntaxError, _fn, errorline, errorindex, _code, _error, warnings = \
+                Utilities.compile(self.fileName or "(Unnamed)", self.text(), isPy2)
+            if syntaxError:
+                self.toggleSyntaxError(errorline, errorindex, True, _error)
+            else:
+                for warning in warnings:
+                    self.toggleFlakesWarning(
+                        warning[2], True, warning[3])
+            return
+
+
     def __initOnlineSyntaxCheck(self):
         """
         Private slot to initialize the online syntax check.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Utilities/SyntaxCheck.py	Mon Apr 08 07:52:06 2013 +0200
@@ -0,0 +1,350 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2011 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the syntax check for Python 2/3.
+"""
+
+import sys
+if sys.version_info[0] >= 3:
+    if __name__ == '__main__':
+        from py3flakes.checker import Checker
+        from py3flakes.messages import ImportStarUsed
+    else:
+        from .py3flakes.checker import Checker      #__IGNORE_WARNING__
+        from .py3flakes.messages import ImportStarUsed      #__IGNORE_WARNING__
+else:
+    str = unicode      #__IGNORE_WARNING__
+    if __name__ == '__main__':
+        from py2flakes.checker import Checker      #__IGNORE_WARNING__
+        from py2flakes.messages import ImportStarUsed      #__IGNORE_WARNING__
+    else:
+        from .py2flakes.checker import Checker      #__IGNORE_WARNING__
+        from .py2flakes.messages import ImportStarUsed      #__IGNORE_WARNING__
+
+import re
+import traceback
+from codecs import BOM_UTF8, BOM_UTF16, BOM_UTF32
+
+try:
+    import Preferences
+except (ImportError):
+    pass
+
+codingBytes_regexps = [
+    (2, re.compile(br'''coding[:=]\s*([-\w_.]+)''')),
+    (1, re.compile(br'''<\?xml.*\bencoding\s*=\s*['"]([-\w_.]+)['"]\?>''')),
+]
+
+
+def get_codingBytes(text):
+    """
+    Function to get the coding of a bytes text.
+    
+    @param text bytes text to inspect (bytes)
+    @return coding string
+    """
+    lines = text.splitlines()
+    for coding in codingBytes_regexps:
+        coding_re = coding[1]
+        head = lines[:coding[0]]
+        for l in head:
+            m = coding_re.search(l)
+            if m:
+                return str(m.group(1), "ascii").lower()
+    return None
+
+
+def decode(text):
+    """
+    Function to decode some byte text into a string.
+    
+    @param text byte text to decode (bytes)
+    @return tuple of decoded text and encoding (string, string)
+    """
+    try:
+        if text.startswith(BOM_UTF8):
+            # UTF-8 with BOM
+            return str(text[len(BOM_UTF8):], 'utf-8'), 'utf-8-bom'
+        elif text.startswith(BOM_UTF16):
+            # UTF-16 with BOM
+            return str(text[len(BOM_UTF16):], 'utf-16'), 'utf-16'
+        elif text.startswith(BOM_UTF32):
+            # UTF-32 with BOM
+            return str(text[len(BOM_UTF32):], 'utf-32'), 'utf-32'
+        coding = get_codingBytes(text)
+        if coding:
+            return str(text, coding), coding
+    except (UnicodeError, LookupError):
+        pass
+    
+    # Assume UTF-8
+    try:
+        return str(text, 'utf-8'), 'utf-8-guessed'
+    except (UnicodeError, LookupError):
+        pass
+    
+    try:
+        guess = None
+        if Preferences.getEditor("AdvancedEncodingDetection"):
+            # Try the universal character encoding detector
+            try:
+                import ThirdParty.CharDet.chardet
+                guess = ThirdParty.CharDet.chardet.detect(text)
+                if guess and guess['confidence'] > 0.95 and guess['encoding'] is not None:
+                    codec = guess['encoding'].lower()
+                    return str(text, codec), '{0}-guessed'.format(codec)
+            except (UnicodeError, LookupError, ImportError):
+                pass
+    except (NameError):
+        pass
+    
+    # Try default encoding
+    try:
+        codec = Preferences.getEditor("DefaultEncoding")
+        return str(text, codec), '{0}-default'.format(codec)
+    except (UnicodeError, LookupError, NameError):
+        pass
+    
+    try:
+        if Preferences.getEditor("AdvancedEncodingDetection"):
+            # Use the guessed one even if confifence level is low
+            if guess and guess['encoding'] is not None:
+                try:
+                    codec = guess['encoding'].lower()
+                    return str(text, codec), '{0}-guessed'.format(codec)
+                except (UnicodeError, LookupError):
+                    pass
+    except (NameError):
+        pass
+    
+    # Assume UTF-8 loosing information
+    return str(text, "utf-8", "ignore"), 'utf-8-ignore'
+
+
+def readEncodedFile(filename):
+    """
+    Function to read a file and decode it's contents into proper text.
+    
+    @param filename name of the file to read (string)
+    @return tuple of decoded text and encoding (string, string)
+    """
+    try:
+        filename = filename.encode(sys.getfilesystemencoding())
+    except (UnicodeDecodeError):
+        pass
+    f = open(filename, "rb")
+    text = f.read()
+    f.close()
+    return decode(text)
+
+
+def normalizeCode(codestring):
+    """
+    Function to normalize the given code.
+    
+    @param codestring code to be normalized (string)
+    @return normalized code (string)
+    """
+    codestring = codestring.replace("\r\n", "\n").replace("\r", "\n")
+
+    if codestring and codestring[-1] != '\n':
+        codestring = codestring + '\n'
+
+    # Check type for py2: if not str it's unicode
+    if sys.version_info[0] == 2:
+        try:
+            codestring = codestring.encode('utf-8')
+        except:
+            pass
+    
+    return codestring
+
+
+def extractLineFlags(line, startComment="#", endComment=""):
+    """
+    Function to extract flags starting and ending with '__' from a line comment.
+    
+    @param line line to extract flags from (string)
+    @keyparam startComment string identifying the start of the comment (string)
+    @keyparam endComment string identifying the end of a comment (string)
+    @return list containing the extracted flags (list of strings)
+    """
+    flags = []
+    
+    pos = line.rfind(startComment)
+    if pos >= 0:
+        comment = line[pos + len(startComment):].strip()
+        if endComment:
+            comment = comment.replace("endComment", "")
+        flags = [f.strip() for f in comment.split()
+                 if (f.startswith("__") and f.endswith("__"))]
+    return flags
+
+
+def compile_and_check(file_, codestring="", checkFlakes=True, ignoreStarImportWarnings=False):
+    """
+    Function to compile one Python source file to Python bytecode
+    and to perform a pyflakes check.
+    
+    @param file_ source filename (string)
+    @param codestring string containing the code to compile (string)
+    @keyparam checkFlakes flag indicating to do a pyflakes check (boolean)
+    @keyparam ignoreStarImportWarnings flag indicating to
+        ignore 'star import' warnings (boolean)
+    @return A tuple indicating status (True = an error was found), the
+        file name, the line number, the index number, the code string
+        and the error message (boolean, string, string, string, string,
+        string). If checkFlakes is True, a list of strings containing the
+        warnings (marker, file name, line number, message)
+        The values are only valid, if the status is True.
+    """
+ 
+    try:
+        import builtins
+    except ImportError:
+        import __builtin__ as builtins        #__IGNORE_WARNING__
+    
+    try:
+        if sys.version_info[0] == 2:
+            file_enc = file_.encode(sys.getfilesystemencoding())
+        else:
+            file_enc = file_
+        
+        if not codestring:
+            try:
+                codestring = readEncodedFile(file_)[0]
+            except (UnicodeDecodeError, IOError):
+                return (False, None, None, None, None, None, [])
+        
+        codestring = normalizeCode(codestring)
+        
+        if file_.endswith('.ptl'):
+            try:
+                import quixote.ptl_compile
+            except ImportError:
+                return (False, None, None, None, None, None, [])
+            template = quixote.ptl_compile.Template(codestring, file_enc)
+            template.compile()
+        
+        # ast.PyCF_ONLY_AST = 1024, speed optimisation
+        module = builtins.compile(codestring, file_enc, 'exec',  1024)
+    except SyntaxError as detail:
+        index = 0
+        code = ""
+        error = ""
+        lines = traceback.format_exception_only(SyntaxError, detail)
+        match = re.match('\s*File "(.+)", line (\d+)',
+            lines[0].replace('<string>', '{0}'.format(file_)))
+        if match is not None:
+            fn, line = match.group(1, 2)
+            if lines[1].startswith('SyntaxError:'):
+                error = re.match('SyntaxError: (.+)', lines[1]).group(1)
+            else:
+                code = re.match('(.+)', lines[1]).group(1)
+                for seLine in lines[2:]:
+                    if seLine.startswith('SyntaxError:'):
+                        error = re.match('SyntaxError: (.+)', seLine).group(1)
+                    elif seLine.rstrip().endswith('^'):
+                        index = len(seLine.rstrip()) - 4
+        else:
+            fn = detail.filename
+            line = detail.lineno or 1
+            error = detail.msg
+        return (True, fn, int(line), index, code, error, [])
+    except ValueError as detail:
+        index = 0
+        code = ""
+        try:
+            fn = detail.filename
+            line = detail.lineno
+            error = detail.msg
+        except AttributeError:
+            fn = file_
+            line = 1
+            error = str(detail)
+        return (True, fn, line, index, code, error, [])
+    except Exception as detail:
+        try:
+            fn = detail.filename
+            line = detail.lineno
+            index = 0
+            code = ""
+            error = detail.msg
+            return (True, fn, line, index, code, error, [])
+        except:         # this catchall is intentional
+            pass
+    
+    # pyflakes
+    if not checkFlakes:
+        return (False, "", -1, -1, "", "", [])
+    
+    strings = []
+    lines = codestring.splitlines()
+    try:
+        warnings = Checker(module, file_)
+        warnings.messages.sort(key=lambda a: a.lineno)
+        for warning in warnings.messages:
+            if ignoreStarImportWarnings and \
+                isinstance(warning, ImportStarUsed):
+                    continue
+            
+            _fn, lineno, message, msg_args = warning.getMessageData()
+            if "__IGNORE_WARNING__" not in extractLineFlags(lines[lineno - 1].strip()):
+                strings.append(["FLAKES_WARNING", _fn, lineno, message, msg_args])
+    except SyntaxError as err:
+        if err.text.strip():
+            msg = err.text.strip()
+        else:
+            msg = err.msg
+        strings.append(["FLAKES_ERROR", file_, err.lineno, msg, ()])
+    
+    return (False, "", -1, -1, "", "", strings)
+
+
+if __name__ == "__main__":
+    if len(sys.argv) < 2 or \
+       len(sys.argv) > 3 or \
+       (len(sys.argv) == 3 and sys.argv[1] not in ["-fi", "-fs"]):
+        print("ERROR")
+        print("")
+        print("")
+        print("")
+        print("")
+        print("No file name given.")
+    else:
+        filename = sys.argv[-1]
+        checkFlakes = len(sys.argv) == 3
+        ignoreStarImportWarnings = sys.argv[1] == "-fi"     # Setting is ignored if checkFlakes is False
+        
+        try:
+            codestring = readEncodedFile(filename)[0]
+            
+            syntaxerror, fname, line, index, code, error, warnings = \
+                compile_and_check(filename, codestring, checkFlakes, ignoreStarImportWarnings)
+        except IOError as msg:
+            # fake a syntax error
+            syntaxerror, fname, line, index, code, error, warnings = \
+                True, filename, 1, 0, "", "I/O Error: %s" % str(msg), []
+        
+        if syntaxerror:
+            print("ERROR")
+        else:
+            print("NO_ERROR")
+        print(fname)
+        print(line)
+        print(index)
+        print(code)
+        print(error)
+        
+        if not syntaxerror:
+            for warningLine in warnings:
+                msg_args = warningLine.pop()
+                for warning in warningLine:
+                    print(warning)
+                msg_args = [str(x) for x in msg_args]
+                print('#'.join(msg_args))
+    
+    sys.exit(0)
--- a/Utilities/__init__.py	Thu Mar 28 20:09:00 2013 +0100
+++ b/Utilities/__init__.py	Mon Apr 08 07:52:06 2013 +0200
@@ -9,12 +9,13 @@
 
 from __future__ import unicode_literals    # __IGNORE_WARNING__
 try:
-    str = unicode
+    str = unicode   # __IGNORE_WARNING__
 except (NameError):
     pass
 
 import os
 import sys
+import codecs
 import re
 import fnmatch
 import glob
@@ -57,15 +58,12 @@
 from UI.Info import Program, Version
 
 import Preferences
+from .SyntaxCheck import *
 
 from eric5config import getConfig
 
 configDir = None
 
-codingBytes_regexps = [
-    (2, re.compile(br'''coding[:=]\s*([-\w_.]+)''')),
-    (1, re.compile(br'''<\?xml.*\bencoding\s*=\s*['"]([-\w_.]+)['"]\?>''')),
-]
 coding_regexps = [
     (2, re.compile(r'''coding[:=]\s*([-\w_.]+)''')),
     (1, re.compile(r'''<\?xml.*\bencoding\s*=\s*['"]([-\w_.]+)['"]\?>''')),
@@ -117,24 +115,6 @@
         return str(self.errorMessage)
     
 
-def get_codingBytes(text):
-    """
-    Function to get the coding of a bytes text.
-    
-    @param text bytes text to inspect (bytes)
-    @return coding string
-    """
-    lines = text.splitlines()
-    for coding in codingBytes_regexps:
-        coding_re = coding[1]
-        head = lines[:coding[0]]
-        for l in head:
-            m = coding_re.search(l)
-            if m:
-                return str(m.group(1), "ascii").lower()
-    return None
-
-
 def get_coding(text):
     """
     Function to get the coding of a text.
@@ -153,19 +133,6 @@
     return None
 
 
-def readEncodedFile(filename):
-    """
-    Function to read a file and decode it's contents into proper text.
-    
-    @param filename name of the file to read (string)
-    @return tuple of decoded text and encoding (string, string)
-    """
-    f = open(filename, "rb")
-    text = f.read()
-    f.close()
-    return decode(text)
-
-
 def readEncodedFileWithHash(filename):
     """
     Function to read a file, calculate a hash value and decode it's contents
@@ -182,69 +149,6 @@
     return decode(text) + (hash, )
 
 
-def decode(text):
-    """
-    Function to decode some byte text into a string.
-    
-    @param text byte text to decode (bytes)
-    @return tuple of decoded text and encoding (string, string)
-    """
-    try:
-        if text.startswith(BOM_UTF8):
-            # UTF-8 with BOM
-            return str(text[len(BOM_UTF8):], 'utf-8'), 'utf-8-bom'
-        elif text.startswith(BOM_UTF16):
-            # UTF-16 with BOM
-            return str(text[len(BOM_UTF16):], 'utf-16'), 'utf-16'
-        elif text.startswith(BOM_UTF32):
-            # UTF-32 with BOM
-            return str(text[len(BOM_UTF32):], 'utf-32'), 'utf-32'
-        coding = get_codingBytes(text)
-        if coding:
-            return str(text, coding), coding
-    except (UnicodeError, LookupError):
-        pass
-    
-    # Assume UTF-8
-    try:
-        return str(text, 'utf-8'), 'utf-8-guessed'
-    except (UnicodeError, LookupError):
-        pass
-    
-    guess = None
-    if Preferences.getEditor("AdvancedEncodingDetection"):
-        # Try the universal character encoding detector
-        try:
-            import ThirdParty.CharDet.chardet
-            guess = ThirdParty.CharDet.chardet.detect(text)
-            if guess and guess['confidence'] > 0.95 and guess['encoding'] is not None:
-                codec = guess['encoding'].lower()
-                return str(text, codec), '{0}-guessed'.format(codec)
-        except (UnicodeError, LookupError):
-            pass
-        except ImportError:
-            pass
-    
-    # Try default encoding
-    try:
-        codec = Preferences.getEditor("DefaultEncoding")
-        return str(text, codec), '{0}-default'.format(codec)
-    except (UnicodeError, LookupError):
-        pass
-    
-    if Preferences.getEditor("AdvancedEncodingDetection"):
-        # Use the guessed one even if confifence level is low
-        if guess and guess['encoding'] is not None:
-            try:
-                codec = guess['encoding'].lower()
-                return str(text, codec), '{0}-guessed'.format(codec)
-            except (UnicodeError, LookupError):
-                pass
-    
-    # Assume UTF-8 loosing information
-    return str(text, "utf-8", "ignore"), 'utf-8-ignore'
-
-
 def writeEncodedFile(filename, text, orig_coding):
     """
     Function to write a file with properly encoded text.
@@ -391,7 +295,7 @@
     data = stream.readString()
     if data is None:
         data = b""
-    return data.decode()
+    return data.decode('utf-8')
 
 
 _escape = re.compile("[&<>\"'\u0080-\uffff]")
@@ -596,27 +500,6 @@
     return extractFlags(source)
 
 
-def extractLineFlags(line, startComment="#", endComment=""):
-    """
-    Function to extract flags starting and ending with '__' from a line comment.
-    
-    @param line line to extract flags from (string)
-    @keyparam startComment string identifying the start of the comment (string)
-    @keyparam endComment string identifying the end of a comment (string)
-    @return list containing the extracted flags (list of strings)
-    """
-    flags = []
-    
-    pos = line.rfind(startComment)
-    if pos >= 0:
-        comment = line[pos + len(startComment):].strip()
-        if endComment:
-            comment = comment.replace("endComment", "")
-        flags = [f.strip() for f in comment.split()
-                 if (f.startswith("__") and f.endswith("__"))]
-    return flags
-
-
 def toNativeSeparators(path):
     """
     Function returning a path, that is using native separator characters.
@@ -801,7 +684,26 @@
         return True
     
     return False
+
+
+def samefilepath(f1, f2):
+    """
+    Function to compare two paths. Strips the filename.
     
+    @param f1 first filepath for the compare (string)
+    @param f2 second filepath for the compare (string)
+    @return flag indicating whether the two paths represent the
+        same path on disk.
+    """
+    if f1 is None or f2 is None:
+        return False
+    
+    if (normcaseabspath(os.path.dirname(os.path.realpath(f1))) ==
+        normcaseabspath(os.path.dirname(os.path.realpath(f2)))):
+            return True
+    
+    return False
+
 try:
     EXTSEP = os.extsep
 except AttributeError:
@@ -1212,94 +1114,45 @@
     return sys.hexversion >> 16
     
 
-def compile(file, codestring=""):
+def compile(file, codestring="", isPy2=False):
     """
     Function to compile one Python source file to Python bytecode.
     
     @param file source filename (string)
     @param codestring string containing the code to compile (string)
+    @param isPy2 shows which interperter to use (boolean)
     @return A tuple indicating status (True = an error was found), the
         file name, the line number, the index number, the code string
         and the error message (boolean, string, string, string, string,
         string). The values are only valid, if the status is True.
     """
-    import builtins
-    if not codestring:
-        try:
-            codestring = readEncodedFile(file)[0]
-        except (UnicodeDecodeError, IOError):
-            return (False, None, None, None, None, None)
-
-    codestring = codestring.replace("\r\n", "\n")
-    codestring = codestring.replace("\r", "\n")
-
-    if codestring and codestring[-1] != '\n':
-        codestring = codestring + '\n'
+    from PyQt4.QtCore import QCoreApplication
     
-    try:
-        if file.endswith('.ptl'):
-            try:
-                import quixote.ptl_compile
-            except ImportError:
-                return (False, None, None, None, None, None)
-            template = quixote.ptl_compile.Template(codestring, file)
-            template.compile()
-        else:
-            builtins.compile(codestring, file, 'exec')
-    except SyntaxError as detail:
-        import traceback
-        import re
-        index = "0"
-        code = ""
-        error = ""
-        lines = traceback.format_exception_only(SyntaxError, detail)
-        match = re.match('\s*File "(.+)", line (\d+)',
-            lines[0].replace('<string>', '{0}'.format(file)))
-        if match is not None:
-            fn, line = match.group(1, 2)
-            if lines[1].startswith('SyntaxError:'):
-                error = re.match('SyntaxError: (.+)', lines[1]).group(1)
-            else:
-                code = re.match('(.+)', lines[1]).group(1)
-                for seLine in lines[2:]:
-                    if seLine.startswith('SyntaxError:'):
-                        error = re.match('SyntaxError: (.+)', seLine).group(1)
-                    elif seLine.rstrip().endswith('^'):
-                        index = len(seLine.rstrip()) - 4
-        else:
-            fn = detail.filename
-            line = detail.lineno and detail.lineno or 1
-            error = detail.msg
-        return (True, fn, line, index, code, error)
-    except ValueError as detail:
-        index = "0"
-        code = ""
-        try:
-            fn = detail.filename
-            line = detail.lineno
-            error = detail.msg
-        except AttributeError:
-            fn = file
-            line = "1"
-            error = str(detail)
-        return (True, fn, line, index, code, error)
-    except Exception as detail:
-        try:
-            fn = detail.filename
-            line = detail.lineno
-            index = "0"
-            code = ""
-            error = detail.msg
-            return (True, fn, line, index, code, error)
-        except:         # this catchall is intentional
-            pass
+    interpreter_name = 'Python' if isPy2 else 'Python3'
+    interpreter = Preferences.getDebugger(interpreter_name+"Interpreter")
+    checkFlakes = Preferences.getFlakes("IncludeInSyntaxCheck")
+    ignoreStarImportWarnings = Preferences.getFlakes("IgnoreStarImportWarnings")
+    if samefilepath(interpreter, sys.executable):
+        ret = compile_and_check(file, codestring, checkFlakes, ignoreStarImportWarnings)
+    else:
+        #TODO: create temporary file if only a codestring is given
+        ret = compile_extern(file, isPy2, checkFlakes, ignoreStarImportWarnings)
     
-    return (False, None, None, None, None, None)
+    # Translate messages
+    for warning in ret[6]:
+        msg_args = warning.pop()
+        translated = QCoreApplication.translate('py3Flakes', warning[-1]).format(*msg_args)
+        # Avoid leading "u" at Python2 unicode strings
+        if translated.startswith("u'"):
+            translated = translated[1:]
+        warning[3] = translated.replace(" u'", " '")
+    
+    return ret
 
 
-def py2compile(file, checkFlakes=False):
+def compile_extern(file, isPy2, checkFlakes=True, ignoreStarImportWarnings=False):
     """
-    Function to compile one Python 2 source file to Python 2 bytecode.
+    Function to compile one Python source file to Python bytecode.
     
     @param file source filename (string)
     @keyparam checkFlakes flag indicating to do a pyflakes check (boolean)
@@ -1311,19 +1164,18 @@
         values are only valid, if the status is True. The pyflakes list will
         be empty, if a syntax error was detected by the syntax checker.
     """
-    interpreter = Preferences.getDebugger("PythonInterpreter")
+    interpreter_name = 'Python' if isPy2 else 'Python3'
+    interpreter = Preferences.getDebugger(interpreter_name+"Interpreter")
     if interpreter == "" or not isinpath(interpreter):
-        return (False, "", "", "", "", "", [(
-            file, "1",
-            QCoreApplication.translate("Utilities",
-                                       "Python2 interpreter not configured.")
+        return (False, "", -1, -1, "", "", [(
+            "", "", 1, QCoreApplication.translate("Utilities",
+                "{0} interpreter not configured.").format(interpreter_name)
             )])
-    
     syntaxChecker = os.path.join(getConfig('ericDir'),
-                                 "UtilitiesPython2", "Py2SyntaxChecker.py")
+                                 "Utilities", "SyntaxCheck.py")
     args = [syntaxChecker]
     if checkFlakes:
-        if Preferences.getFlakes("IgnoreStarImportWarnings"):
+        if ignoreStarImportWarnings:
             args.append("-fi")
         else:
             args.append("-fs")
@@ -1333,17 +1185,15 @@
     proc.start(interpreter, args)
     finished = proc.waitForFinished(30000)
     if finished:
-        output = \
-            str(proc.readAllStandardOutput(),
-                    Preferences.getSystem("IOEncoding"),
-                    'replace').splitlines()
+        output = codecs.decode(proc.readAllStandardOutput(),
+            sys.getfilesystemencoding(), 'strict').splitlines()
         
         if output:
             syntaxerror = output[0] == "ERROR"
             if syntaxerror:
                 fn = output[1]
-                line = output[2]
-                index = output[3]
+                line = int(output[2])
+                index = int(output[3])
                 code = output[4]
                 error = output[5]
                 return (True, fn, line, index, code, error, [])
@@ -1352,21 +1202,21 @@
                 warnings = []
                 while len(output) - index > 3:
                     if output[index] == "FLAKES_ERROR":
-                        return (True, output[index + 1], output[index + 2], "",
-                                output[index + 3], [])
+                        return (True, output[index + 1], int(output[index + 2]), -1,
+                            '', output[index + 3], [])
                     else:
-                        warnings.append((output[index + 1], output[index + 2],
-                                         output[index + 3]))
-                    index += 4
+                        msg_args = output[index + 4].split('#')
+                        warnings.append([output[index], output[index + 1], 
+                            int(output[index + 2]), output[index + 3], msg_args])
+                        index += 5
                 
                 return (False, None, None, None, None, None, warnings)
         else:
-            return (False, "", "", "", "", "", [])
+            return (False, "", -1, -1, "", "", [])
     
-    return (True, file, "1", "0", "",
-        QCoreApplication.translate("Utilities",
-                                   "Python2 interpreter did not finish within 30s."),
-        [])
+    return (True, file, 1, 0, "", QCoreApplication.translate("Utilities",
+        "{0} interpreter did not finish within 30s.").format(
+        interpreter_name), [])
 
 
 ################################################################################
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Utilities/py2flakes/__init__.py	Mon Apr 08 07:52:06 2013 +0200
@@ -0,0 +1,62 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2010 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Package containg the pyflakes Python2 port adapted for Qt.
+"""
+
+""" License
+Copyright 2005-2011 Divmod, Inc.
+Copyright 2013 Florent Xicluna
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+"""
+
+""" Changes
+0.6.1 (2013-01-29):
+  - Fix detection of variables in augmented assignments.
+
+0.6.0 (2013-01-29):
+  - Support Python 3 up to 3.3, based on the pyflakes3k project.
+  - Preserve compatibility with Python 2.5 and all recent versions of Python.
+  - Support custom reporters in addition to the default Reporter.
+  - Allow function redefinition for modern property construction via
+    property.setter/deleter.
+  - Fix spurious redefinition warnings in conditionals.
+  - Do not report undefined name in __all__ if import * is used.
+  - Add WindowsError as a known built-in name on all platforms.
+  - Support specifying additional built-ins in the `Checker` constructor.
+  - Don't issue Unused Variable warning when using locals() in current scope.
+  - Handle problems with the encoding of source files.
+  - Remove dependency on Twisted for the tests.
+  - Support `python setup.py test` and `python setup.py develop`.
+  - Create script using setuptools `entry_points` to support all platforms,
+    including Windows.
+
+0.5.0 (2011-09-02):
+  - Convert pyflakes to use newer _ast infrastructure rather than compiler.
+  - Support for new syntax in 2.7 (including set literals, set comprehensions,
+    and dictionary comprehensions).
+  - Make sure class names don't get bound until after class definition.
+"""
+
+__version__ = '0.6.1'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Utilities/py2flakes/checker.py	Mon Apr 08 07:52:06 2013 +0200
@@ -0,0 +1,711 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2010 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+# Original (c) 2005-2010 Divmod, Inc.
+#
+# This module is based on pyflakes for Python2 but was modified to
+# work with eric5
+
+import os.path
+try:
+    import builtins
+    PY2 = False
+except ImportError:
+    import __builtin__ as builtins      #__IGNORE_WARNING__
+    PY2 = True
+
+try:
+    import ast
+    iter_child_nodes = ast.iter_child_nodes
+except (ImportError, AttributeError):   # Python 2.5
+    import _ast as ast
+
+    def iter_child_nodes(node, astcls=ast.AST):
+        """
+        Yield all direct child nodes of *node*, that is, all fields that are nodes
+        and all items of fields that are lists of nodes.
+        """
+        for name in node._fields:
+            field = getattr(node, name, None)
+            if isinstance(field, astcls):
+                yield field
+            elif isinstance(field, list):
+                for item in field:
+                    yield item
+# Python >= 3.3 uses ast.Try instead of (ast.TryExcept + ast.TryFinally)
+if hasattr(ast, 'Try'):
+    ast_TryExcept = ast.Try
+    ast_TryFinally = ()
+else:
+    ast_TryExcept = ast.TryExcept
+    ast_TryFinally = ast.TryFinally
+
+from . import messages
+
+
+class Binding(object):
+    """
+    Represents the binding of a value to a name.
+
+    The checker uses this to keep track of which names have been bound and
+    which names have not. See L{Assignment} for a special type of binding that
+    is checked with stricter rules.
+    """
+
+    def __init__(self, name, source):
+        self.name = name
+        self.source = source
+        self.used = False
+
+    def __str__(self):
+        return self.name
+
+    def __repr__(self):
+        return '<%s object %r from line %r at 0x%x>' % (self.__class__.__name__,
+                                                        self.name,
+                                                        self.source.lineno,
+                                                        id(self))
+
+
+class UnBinding(Binding):
+    """Created by the 'del' operator."""
+
+
+class Importation(Binding):
+    """
+    A binding created by an import statement.
+    """
+    def __init__(self, name, source):
+        self.fullName = name
+        name = name.split('.')[0]
+        super(Importation, self).__init__(name, source)
+
+
+class Argument(Binding):
+    """
+    Represents binding a name as an argument.
+    """
+
+
+class Definition(Binding):
+    """
+    A binding that defines a function or a class.
+    """
+
+
+class Assignment(Binding):
+    """
+    Represents binding a name with an explicit assignment.
+
+    The checker will raise warnings for any Assignment that isn't used. Also,
+    the checker does not consider assignments in tuple/list unpacking to be
+    Assignments, rather it treats them as simple Bindings.
+    """
+
+
+class FunctionDefinition(Definition):
+    pass
+
+
+class ClassDefinition(Definition):
+    pass
+
+
+class ExportBinding(Binding):
+    """
+    A binding created by an C{__all__} assignment.  If the names in the list
+    can be determined statically, they will be treated as names for export and
+    additional checking applied to them.
+
+    The only C{__all__} assignment that can be recognized is one which takes
+    the value of a literal list containing literal strings.  For example::
+
+        __all__ = ["foo", "bar"]
+
+    Names which are imported and not otherwise used but appear in the value of
+    C{__all__} will not have an unused import warning reported for them.
+    """
+    def names(self):
+        """
+        Return a list of the names referenced by this binding.
+        """
+        names = []
+        if isinstance(self.source, ast.List):
+            for node in self.source.elts:
+                if isinstance(node, ast.Str):
+                    names.append(node.s)
+        return names
+
+
+class Scope(dict):
+    importStarred = False       # set to True when import * is found
+    usesLocals = False
+
+    def __repr__(self):
+        return '<%s at 0x%x %s>' % (self.__class__.__name__, id(self), dict.__repr__(self))
+
+
+class ClassScope(Scope):
+    pass
+
+
+class FunctionScope(Scope):
+    """
+    I represent a name scope for a function.
+    """
+    def __init__(self):
+        super(FunctionScope, self).__init__()
+        self.globals = {}
+
+
+class ModuleScope(Scope):
+    pass
+
+
+# Globally defined names which are not attributes of the builtins module, or
+# are only present on some platforms.
+_MAGIC_GLOBALS = ['__file__', '__builtins__', 'WindowsError']
+
+
+def getNodeName(node):
+    # Returns node.id, or node.name, or None
+    if hasattr(node, 'id'):     # One of the many nodes with an id
+        return node.id
+    if hasattr(node, 'name'):   # a ExceptHandler node
+        return node.name
+
+
+class Checker(object):
+    """
+    I check the cleanliness and sanity of Python code.
+    """
+
+    nodeDepth = 0
+    traceTree = False
+    builtIns = set(dir(builtins)) | set(_MAGIC_GLOBALS)
+
+    def __init__(self, tree, filename='(none)', builtins=None):
+        self._deferredFunctions = []
+        self._deferredAssignments = []
+        self.deadScopes = []
+        self.messages = []
+        self.filename = filename
+        if builtins:
+            self.builtIns = self.builtIns.union(builtins)
+        self.scopeStack = [ModuleScope()]
+        self.futuresAllowed = True
+        self.root = tree
+        self.handleChildren(tree)
+        self.runDeferred(self._deferredFunctions)
+        # Set _deferredFunctions to None so that deferFunction will fail
+        # noisily if called after we've run through the deferred functions.
+        self._deferredFunctions = None
+        self.runDeferred(self._deferredAssignments)
+        # Set _deferredAssignments to None so that deferAssignment will fail
+        # noisily if called after we've run through the deferred assignments.
+        self._deferredAssignments = None
+        del self.scopeStack[1:]
+        self.popScope()
+        self.checkDeadScopes()
+
+    def deferFunction(self, callable):
+        """
+        Schedule a function handler to be called just before completion.
+
+        This is used for handling function bodies, which must be deferred
+        because code later in the file might modify the global scope. When
+        `callable` is called, the scope at the time this is called will be
+        restored, however it will contain any new bindings added to it.
+        """
+        self._deferredFunctions.append((callable, self.scopeStack[:]))
+
+    def deferAssignment(self, callable):
+        """
+        Schedule an assignment handler to be called just after deferred
+        function handlers.
+        """
+        self._deferredAssignments.append((callable, self.scopeStack[:]))
+
+    def runDeferred(self, deferred):
+        """
+        Run the callables in C{deferred} using their associated scope stack.
+        """
+        for handler, scope in deferred:
+            self.scopeStack = scope
+            handler()
+
+    @property
+    def scope(self):
+        return self.scopeStack[-1]
+
+    def popScope(self):
+        self.deadScopes.append(self.scopeStack.pop())
+
+    def checkDeadScopes(self):
+        """
+        Look at scopes which have been fully examined and report names in them
+        which were imported but unused.
+        """
+        for scope in self.deadScopes:
+            export = isinstance(scope.get('__all__'), ExportBinding)
+            if export:
+                all = scope['__all__'].names()
+                if not scope.importStarred and os.path.basename(self.filename) != '__init__.py':
+                    # Look for possible mistakes in the export list
+                    undefined = set(all) - set(scope)
+                    for name in undefined:
+                        self.report(messages.UndefinedExport,
+                                    scope['__all__'].source.lineno, name)
+            else:
+                all = []
+
+            # Look for imported names that aren't used.
+            for importation in scope.values():
+                if isinstance(importation, Importation):
+                    if not importation.used and importation.name not in all:
+                        self.report(messages.UnusedImport,
+                                    importation.source.lineno, importation.name)
+
+    def pushFunctionScope(self):
+        self.scopeStack.append(FunctionScope())
+
+    def pushClassScope(self):
+        self.scopeStack.append(ClassScope())
+
+    def report(self, messageClass, *args, **kwargs):
+        self.messages.append(messageClass(self.filename, *args, **kwargs))
+
+    def hasParent(self, node, kind):
+        while hasattr(node, 'parent'):
+            node = node.parent
+            if isinstance(node, kind):
+                return True
+
+    def getCommonAncestor(self, lnode, rnode, stop=None):
+        if not stop:
+            stop = self.root
+        if lnode is rnode:
+            return lnode
+        if stop in (lnode, rnode):
+            return stop
+
+        if not hasattr(lnode, 'parent') or not hasattr(rnode, 'parent'):
+            return
+        if (lnode.level > rnode.level):
+            return self.getCommonAncestor(lnode.parent, rnode, stop)
+        if (rnode.level > lnode.level):
+            return self.getCommonAncestor(lnode, rnode.parent, stop)
+        return self.getCommonAncestor(lnode.parent, rnode.parent, stop)
+
+    def descendantOf(self, node, ancestors, stop=None):
+        for a in ancestors:
+            if self.getCommonAncestor(node, a, stop) not in (stop, None):
+                return True
+        return False
+
+    def onFork(self, parent, lnode, rnode, items):
+        return (self.descendantOf(lnode, items, parent) ^
+                self.descendantOf(rnode, items, parent))
+
+    def differentForks(self, lnode, rnode):
+        """True, if lnode and rnode are located on different forks of IF/TRY"""
+        ancestor = self.getCommonAncestor(lnode, rnode)
+        if isinstance(ancestor, ast.If):
+            for fork in (ancestor.body, ancestor.orelse):
+                if self.onFork(ancestor, lnode, rnode, fork):
+                    return True
+        elif isinstance(ancestor, ast_TryExcept):
+            body = ancestor.body + ancestor.orelse
+            for fork in [body] + [[hdl] for hdl in ancestor.handlers]:
+                if self.onFork(ancestor, lnode, rnode, fork):
+                    return True
+        elif isinstance(ancestor, ast_TryFinally):
+            if self.onFork(ancestor, lnode, rnode, ancestor.body):
+                return True
+        return False
+
+    def addBinding(self, node, value, reportRedef=True):
+        """
+        Called when a binding is altered.
+
+        - `node` is the statement responsible for the change
+        - `value` is the optional new value, a Binding instance, associated
+          with the binding; if None, the binding is deleted if it exists.
+        - if `reportRedef` is True (default), rebinding while unused will be
+          reported.
+        """
+        redefinedWhileUnused = False
+        if not isinstance(self.scope, ClassScope):
+            for scope in self.scopeStack[::-1]:
+                existing = scope.get(value.name)
+                if (isinstance(existing, Importation)
+                        and not existing.used
+                        and (not isinstance(value, Importation) or value.fullName == existing.fullName)
+                        and reportRedef
+                        and not self.differentForks(node, existing.source)):
+                    redefinedWhileUnused = True
+                    self.report(messages.RedefinedWhileUnused,
+                                node.lineno, value.name, existing.source.lineno)
+
+        existing = self.scope.get(value.name)
+        if not redefinedWhileUnused and self.hasParent(value.source, ast.ListComp):
+            if (existing and reportRedef
+                    and not self.hasParent(existing.source, (ast.For, ast.ListComp))):
+                self.report(messages.RedefinedInListComp,
+                            node.lineno, value.name, existing.source.lineno)
+
+        if isinstance(value, UnBinding):
+            try:
+                del self.scope[value.name]
+            except KeyError:
+                self.report(messages.UndefinedName, node.lineno, value.name)
+        elif (isinstance(existing, Definition)
+              and not existing.used
+              and not self.differentForks(node, existing.source)):
+            self.report(messages.RedefinedWhileUnused,
+                        node.lineno, value.name, existing.source.lineno)
+        else:
+            self.scope[value.name] = value
+
+    def handleNodeLoad(self, node):
+        name = getNodeName(node)
+        if not name:
+            return
+        # try local scope
+        importStarred = self.scope.importStarred
+        try:
+            self.scope[name].used = (self.scope, node.lineno)
+        except KeyError:
+            pass
+        else:
+            return
+
+        # try enclosing function scopes
+        for scope in self.scopeStack[-2:0:-1]:
+            importStarred = importStarred or scope.importStarred
+            if not isinstance(scope, FunctionScope):
+                continue
+            try:
+                scope[name].used = (self.scope, node.lineno)
+            except KeyError:
+                pass
+            else:
+                return
+
+        # try global scope
+        importStarred = importStarred or self.scopeStack[0].importStarred
+        try:
+            self.scopeStack[0][name].used = (self.scope, node.lineno)
+        except KeyError:
+            if not importStarred and name not in self.builtIns:
+                if (os.path.basename(self.filename) == '__init__.py' and name == '__path__'):
+                    # the special name __path__ is valid only in packages
+                    pass
+                else:
+                    self.report(messages.UndefinedName, node.lineno, name)
+
+    def handleNodeStore(self, node):
+        name = getNodeName(node)
+        if not name:
+            return
+        # if the name hasn't already been defined in the current scope
+        if isinstance(self.scope, FunctionScope) and name not in self.scope:
+            # for each function or module scope above us
+            for scope in self.scopeStack[:-1]:
+                if not isinstance(scope, (FunctionScope, ModuleScope)):
+                    continue
+                # if the name was defined in that scope, and the name has
+                # been accessed already in the current scope, and hasn't
+                # been declared global
+                if (name in scope and scope[name].used and scope[name].used[0] is self.scope
+                        and name not in self.scope.globals):
+                    # then it's probably a mistake
+                    self.report(messages.UndefinedLocal,
+                                scope[name].used[1], name, scope[name].source.lineno)
+                    break
+
+        parent = getattr(node, 'parent', None)
+        if isinstance(parent, (ast.For, ast.comprehension, ast.Tuple, ast.List)):
+            binding = Binding(name, node)
+        elif parent is not None and name == '__all__' and isinstance(self.scope, ModuleScope):
+            binding = ExportBinding(name, parent.value)
+        else:
+            binding = Assignment(name, node)
+        if name in self.scope:
+            binding.used = self.scope[name].used
+        self.addBinding(node, binding)
+
+    def handleNodeDelete(self, node):
+        name = getNodeName(node)
+        if not name:
+            return
+        if isinstance(self.scope, FunctionScope) and name in self.scope.globals:
+            del self.scope.globals[name]
+        else:
+            self.addBinding(node, UnBinding(name, node))
+
+    def handleChildren(self, tree):
+        for node in iter_child_nodes(tree):
+            self.handleNode(node, tree)
+
+    def isDocstring(self, node):
+        """
+        Determine if the given node is a docstring, as long as it is at the
+        correct place in the node tree.
+        """
+        return isinstance(node, ast.Str) or (isinstance(node, ast.Expr) and
+                                             isinstance(node.value, ast.Str))
+
+    def handleNode(self, node, parent):
+        if node is None:
+            return
+        node.parent = parent
+        if self.traceTree:
+            print('  ' * self.nodeDepth + node.__class__.__name__)
+        self.nodeDepth += 1
+        if self.futuresAllowed and not (isinstance(node, ast.ImportFrom) or
+                                        self.isDocstring(node)):
+            self.futuresAllowed = False
+        nodeType = node.__class__.__name__.upper()
+        node.level = self.nodeDepth
+        try:
+            handler = getattr(self, nodeType)
+            handler(node)
+        finally:
+            self.nodeDepth -= 1
+        if self.traceTree:
+            print('  ' * self.nodeDepth + 'end ' + node.__class__.__name__)
+
+    def ignore(self, node):
+        pass
+
+    # "stmt" type nodes
+    RETURN = DELETE = PRINT = WHILE = IF = WITH = WITHITEM = RAISE = \
+        TRYEXCEPT = TRYFINALLY = TRY = ASSERT = EXEC = EXPR = handleChildren
+
+    CONTINUE = BREAK = PASS = ignore
+
+    # "expr" type nodes
+    BOOLOP = BINOP = UNARYOP = IFEXP = DICT = SET = YIELD = YIELDFROM = \
+        COMPARE = CALL = REPR = ATTRIBUTE = SUBSCRIPT = LIST = TUPLE = \
+        STARRED = handleChildren
+
+    NUM = STR = BYTES = ELLIPSIS = ignore
+
+    # "slice" type nodes
+    SLICE = EXTSLICE = INDEX = handleChildren
+
+    # expression contexts are node instances too, though being constants
+    LOAD = STORE = DEL = AUGLOAD = AUGSTORE = PARAM = ignore
+
+    # same for operators
+    AND = OR = ADD = SUB = MULT = DIV = MOD = POW = LSHIFT = RSHIFT = \
+        BITOR = BITXOR = BITAND = FLOORDIV = INVERT = NOT = UADD = USUB = \
+        EQ = NOTEQ = LT = LTE = GT = GTE = IS = ISNOT = IN = NOTIN = ignore
+
+    # additional node types
+    COMPREHENSION = KEYWORD = handleChildren
+
+    def GLOBAL(self, node):
+        """
+        Keep track of globals declarations.
+        """
+        if isinstance(self.scope, FunctionScope):
+            self.scope.globals.update(dict.fromkeys(node.names))
+
+    NONLOCAL = GLOBAL
+
+    def LISTCOMP(self, node):
+        # handle generators before element
+        for gen in node.generators:
+            self.handleNode(gen, node)
+        self.handleNode(node.elt, node)
+
+    GENERATOREXP = SETCOMP = LISTCOMP
+
+    def DICTCOMP(self, node):
+        for gen in node.generators:
+            self.handleNode(gen, node)
+        self.handleNode(node.key, node)
+        self.handleNode(node.value, node)
+
+    def FOR(self, node):
+        """
+        Process bindings for loop variables.
+        """
+        vars = []
+
+        def collectLoopVars(n):
+            if isinstance(n, ast.Name):
+                vars.append(n.id)
+            elif isinstance(n, ast.expr_context):
+                return
+            else:
+                for c in iter_child_nodes(n):
+                    collectLoopVars(c)
+
+        collectLoopVars(node.target)
+        for varn in vars:
+            if (isinstance(self.scope.get(varn), Importation)
+                    # unused ones will get an unused import warning
+                    and self.scope[varn].used):
+                self.report(messages.ImportShadowedByLoopVar,
+                            node.lineno, varn, self.scope[varn].source.lineno)
+
+        self.handleChildren(node)
+
+    def NAME(self, node):
+        """
+        Handle occurrence of Name (which can be a load/store/delete access.)
+        """
+        if node.id == 'locals' and isinstance(node.parent, ast.Call):
+            # we are doing locals() call in current scope
+            self.scope.usesLocals = True
+        # Locate the name in locals / function / globals scopes.
+        if isinstance(node.ctx, (ast.Load, ast.AugLoad)):
+            self.handleNodeLoad(node)
+        elif isinstance(node.ctx, (ast.Store, ast.AugStore)):
+            self.handleNodeStore(node)
+        elif isinstance(node.ctx, ast.Del):
+            self.handleNodeDelete(node)
+        else:
+            # must be a Param context -- this only happens for names in function
+            # arguments, but these aren't dispatched through here
+            raise RuntimeError("Got impossible expression context: %r" % (node.ctx,))
+
+    def FUNCTIONDEF(self, node):
+        if not hasattr(node, 'decorator_list'):   # Python 2.5
+            node.decorator_list = node.decorators
+        for deco in node.decorator_list:
+            self.handleNode(deco, node)
+        self.addBinding(node, FunctionDefinition(node.name, node))
+        self.LAMBDA(node)
+
+    def LAMBDA(self, node):
+        args = []
+
+        if PY2:
+            def addArgs(arglist):
+                for arg in arglist:
+                    if isinstance(arg, ast.Tuple):
+                        addArgs(arg.elts)
+                    else:
+                        if arg.id in args:
+                            self.report(messages.DuplicateArgument,
+                                        node.lineno, arg.id)
+                        args.append(arg.id)
+            addArgs(node.args.args)
+            defaults = node.args.defaults
+        else:
+            for arg in node.args.args + node.args.kwonlyargs:
+                if arg.arg in args:
+                    self.report(messages.DuplicateArgument,
+                                node.lineno, arg.arg)
+                args.append(arg.arg)
+                self.handleNode(arg.annotation, node)
+            if hasattr(node, 'returns'):    # Only for FunctionDefs
+                for annotation in (node.args.varargannotation,
+                                   node.args.kwargannotation, node.returns):
+                    self.handleNode(annotation, node)
+            defaults = node.args.defaults + node.args.kw_defaults
+
+        # vararg/kwarg identifiers are not Name nodes
+        for wildcard in (node.args.vararg, node.args.kwarg):
+            if not wildcard:
+                continue
+            if wildcard in args:
+                self.report(messages.DuplicateArgument, node.lineno, wildcard)
+            args.append(wildcard)
+        for default in defaults:
+            self.handleNode(default, node)
+
+        def runFunction():
+
+            self.pushFunctionScope()
+            for name in args:
+                self.addBinding(node, Argument(name, node), reportRedef=False)
+            if isinstance(node.body, list):
+                # case for FunctionDefs
+                for stmt in node.body:
+                    self.handleNode(stmt, node)
+            else:
+                # case for Lambdas
+                self.handleNode(node.body, node)
+
+            def checkUnusedAssignments():
+                """
+                Check to see if any assignments have not been used.
+                """
+                for name, binding in self.scope.items():
+                    if (not binding.used and name not in self.scope.globals
+                            and not self.scope.usesLocals
+                            and isinstance(binding, Assignment)):
+                        self.report(messages.UnusedVariable,
+                                    binding.source.lineno, name)
+            self.deferAssignment(checkUnusedAssignments)
+            self.popScope()
+
+        self.deferFunction(runFunction)
+
+    def CLASSDEF(self, node):
+        """
+        Check names used in a class definition, including its decorators, base
+        classes, and the body of its definition.  Additionally, add its name to
+        the current scope.
+        """
+        # no class decorator in Python 2.5
+        for deco in getattr(node, 'decorator_list', ''):
+            self.handleNode(deco, node)
+        for baseNode in node.bases:
+            self.handleNode(baseNode, node)
+        if not PY2:
+            for keywordNode in node.keywords:
+                self.handleNode(keywordNode, node)
+        self.pushClassScope()
+        for stmt in node.body:
+            self.handleNode(stmt, node)
+        self.popScope()
+        self.addBinding(node, ClassDefinition(node.name, node))
+
+    def ASSIGN(self, node):
+        self.handleNode(node.value, node)
+        for target in node.targets:
+            self.handleNode(target, node)
+
+    def AUGASSIGN(self, node):
+        self.handleNodeLoad(node.target)
+        self.handleNode(node.value, node)
+        self.handleNode(node.target, node)
+
+    def IMPORT(self, node):
+        for alias in node.names:
+            name = alias.asname or alias.name
+            importation = Importation(name, node)
+            self.addBinding(node, importation)
+
+    def IMPORTFROM(self, node):
+        if node.module == '__future__':
+            if not self.futuresAllowed:
+                self.report(messages.LateFutureImport,
+                            node.lineno, [n.name for n in node.names])
+        else:
+            self.futuresAllowed = False
+
+        for alias in node.names:
+            if alias.name == '*':
+                self.scope.importStarred = True
+                self.report(messages.ImportStarUsed, node.lineno, node.module)
+                continue
+            name = alias.asname or alias.name
+            importation = Importation(name, node)
+            if node.module == '__future__':
+                importation.used = (self.scope, node.lineno)
+            self.addBinding(node, importation)
+
+    def EXCEPTHANDLER(self, node):
+        # 3.x: in addition to handling children, we must handle the name of
+        # the exception, which is not a Name node, but a simple string.
+        if isinstance(node.name, str):
+            self.handleNodeStore(node)
+        self.handleChildren(node)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Utilities/py2flakes/messages.py	Mon Apr 08 07:52:06 2013 +0200
@@ -0,0 +1,291 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2010 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+# Original (c) 2005 Divmod, Inc.  See LICENSE file for details
+#
+# This module is based on pyflakes for Python2 but was heavily hacked to
+# work within Eric5 and Qt (translatable messages)
+
+
+def QT_TRANSLATE_NOOP(mod, txt):
+    """
+    Function to tell 'lupdate' which strings to keep for translation.
+    
+    @param mod module name
+    @param txt translatable string
+    @return the untranslated! string
+    """
+    return txt
+
+
+class Message(object):
+    """
+    Class defining the base for all specific message classes.
+    """
+    message = ''
+    message_args = ()
+    
+    def __init__(self, filename, lineno):
+        """
+        Constructor
+        
+        @param filename name of the file (string)
+        @param lineno line number (integer)
+        """
+        self.filename = filename
+        self.lineno = lineno
+    
+    def __str__(self):
+        """
+        Special method return a string representation of the instance object.
+        
+        @return string representation of the object (string)
+        """
+        return '%s:%s: %s' % (
+            self.filename, self.lineno, self.message % self.message_args)
+    
+    def getMessageData(self):
+        """
+        Public method to get the individual message data elements.
+        
+        @return tuple containing file name, line number and message
+            (string, integer, string)
+        """
+        return (self.filename, self.lineno, self.message, self.message_args)
+
+
+class UnusedImport(Message):
+    """
+    Class defining the "Unused Import" message.
+    """
+    message = QT_TRANSLATE_NOOP('py3Flakes',
+        '{0!r} imported but unused.')
+    
+    def __init__(self, filename, lineno, name):
+        """
+        Constructor
+        
+        @param filename name of the file (string)
+        @param lineno line number (integer)
+        @param name name of the unused import (string)
+        """
+        Message.__init__(self, filename, lineno)
+        self.message_args = (name,)
+
+
+class RedefinedWhileUnused(Message):
+    """
+    Class defining the "Redefined While Unused" message.
+    """
+    message = QT_TRANSLATE_NOOP('py3Flakes', 
+        'Redefinition of unused {0!r} from line {1!r}.')
+
+    def __init__(self, filename, lineno, name, orig_lineno):
+        """
+        Constructor
+        
+        @param filename name of the file (string)
+        @param lineno line number (integer)
+        @param name name of the redefined object (string)
+        @param orig_lineno line number of the original definition (integer)
+        """
+        Message.__init__(self, filename, lineno)
+        self.message_args = (name, orig_lineno)
+
+
+class RedefinedInListComp(Message):
+    message = QT_TRANSLATE_NOOP('py3Flakes',
+        'List comprehension redefines {0!r} from line {1!r}.')
+
+    def __init__(self, filename, lineno, name, orig_lineno):
+        """
+        Constructor
+        
+        @param filename name of the file (string)
+        @param lineno line number (integer)
+        @param name name of the redefined object (string)
+        @param orig_lineno line number of the original definition (integer)
+        """
+        Message.__init__(self, filename, lineno)
+        self.message_args = (name, orig_lineno)
+
+
+class ImportShadowedByLoopVar(Message):
+    """
+    Class defining the "Import Shadowed By Loop Var" message.
+    """
+    message = QT_TRANSLATE_NOOP('py3Flakes',
+        'Import {0!r} from line {1!r} shadowed by loop variable.')
+    
+    def __init__(self, filename, lineno, name, orig_lineno):
+        """
+        Constructor
+        
+        @param filename name of the file (string)
+        @param lineno line number (integer)
+        @param name name of the shadowed import (string)
+        @param orig_lineno line number of the import (integer)
+        """
+        Message.__init__(self, filename, lineno)
+        self.message_args = (name, orig_lineno)
+
+
+class ImportStarUsed(Message):
+    """
+    Class defining the "Import Star Used" message.
+    """
+    message = QT_TRANSLATE_NOOP('py3Flakes',
+        "'from {0} import *' used; unable to detect undefined names.")
+    
+    def __init__(self, filename, lineno, modname):
+        """
+        Constructor
+        
+        @param filename name of the file (string)
+        @param lineno line number (integer)
+        @param modname name of the module imported using star import (string)
+        """
+        Message.__init__(self, filename, lineno)
+        self.message_args = (modname,)
+
+
+class UndefinedName(Message):
+    """
+    Class defining the "Undefined Name" message.
+    """
+    message = QT_TRANSLATE_NOOP('py3Flakes', 'Undefined name {0!r}.')
+    
+    def __init__(self, filename, lineno, name):
+        """
+        Constructor
+        
+        @param filename name of the file (string)
+        @param lineno line number (integer)
+        @param name undefined name (string)
+        """
+        Message.__init__(self, filename, lineno)
+        self.message_args = (name,)
+
+
+class UndefinedExport(Message):
+    """
+    Class defining the "Undefined Export" message.
+    """
+    message = QT_TRANSLATE_NOOP('py3Flakes', 
+        'Undefined name {0!r} in __all__.')
+    
+    def __init__(self, filename, lineno, name):
+        """
+        Constructor
+        
+        @param filename name of the file (string)
+        @param lineno line number (integer)
+        @param name undefined exported name (string)
+        """
+        Message.__init__(self, filename, lineno)
+        self.message_args = (name,)
+
+
+class UndefinedLocal(Message):
+    """
+    Class defining the "Undefined Local Variable" message.
+    """
+    message = QT_TRANSLATE_NOOP('py3Flakes',
+        "Local variable {0!r} (defined in enclosing scope on line {1!r})" \
+              " referenced before assignment.")
+    
+    def __init__(self, filename, lineno, name, orig_lineno):
+        """
+        Constructor
+        
+        @param filename name of the file (string)
+        @param lineno line number (integer)
+        @param name name of the prematurely referenced variable (string)
+        @param orig_lineno line number of the variable definition (integer)
+        """
+        Message.__init__(self, filename, lineno)
+        self.message_args = (name, orig_lineno)
+
+
+class DuplicateArgument(Message):
+    """
+    Class defining the "Duplicate Argument" message.
+    """
+    message = QT_TRANSLATE_NOOP('py3Flakes',
+        'Duplicate argument {0!r} in function definition.')
+    
+    def __init__(self, filename, lineno, name):
+        """
+        Constructor
+        
+        @param filename name of the file (string)
+        @param lineno line number (integer)
+        @param name name of the duplicate argument (string)
+        """
+        Message.__init__(self, filename, lineno)
+        self.message_args = (name,)
+
+
+class Redefined(Message):
+    """
+    Class defining the "Redefined" message.
+    """
+    message = QT_TRANSLATE_NOOP('py3Flakes',
+        'Redefinition of {0!r} from line {1!r}.')
+    
+    def __init__(self, filename, lineno, name, orig_lineno):
+        """
+        Constructor
+        
+        @param filename name of the file (string)
+        @param lineno line number (integer)
+        @param name name of the redefined function (string)
+        @param orig_lineno line number of the original definition (integer)
+        """
+        Message.__init__(self, filename, lineno)
+        self.message_args = (name, orig_lineno)
+
+
+class LateFutureImport(Message):
+    """
+    Class defining the "Late Future Import" message.
+    """
+    message = QT_TRANSLATE_NOOP('py3Flakes',
+        'Future import(s) {0!r} after other statements.')
+    
+    def __init__(self, filename, lineno, names):
+        """
+        Constructor
+        
+        @param filename name of the file (string)
+        @param lineno line number (integer)
+        @param names names of the imported futures (string)
+        """
+        Message.__init__(self, filename, lineno)
+        self.message_args = (names,)
+
+
+class UnusedVariable(Message):
+    """
+    Class defining the "Unused Variable" message.
+    
+    Indicates that a variable has been explicitly assigned to but not actually
+    used.
+    """
+    message = QT_TRANSLATE_NOOP('py3Flakes',
+        'Local variable {0!r} is assigned to but never used.')
+    
+    def __init__(self, filename, lineno, names):
+        """
+        Constructor
+        
+        @param filename name of the file (string)
+        @param lineno line number (integer)
+        @param name name of the unused variable (string)
+        """
+        Message.__init__(self, filename, lineno)
+        self.message_args = (names,)
+    
+#
+# eflag: FileType = Python2
--- a/Utilities/py3flakes/messages.py	Thu Mar 28 20:09:00 2013 +0100
+++ b/Utilities/py3flakes/messages.py	Mon Apr 08 07:52:06 2013 +0200
@@ -7,7 +7,16 @@
 # This module is based on pyflakes for Python2 but was heavily hacked to
 # work with Python3 and Qt (translatable messages)
 
-from PyQt4.QtCore import QCoreApplication
+
+def QT_TRANSLATE_NOOP(mod, txt):
+    """
+    Function to tell 'lupdate' which strings to keep for translation.
+    
+    @param mod module name
+    @param txt translatable string
+    @return the untranslated! string
+    """
+    return txt
 
 
 class Message(object):
@@ -43,14 +52,14 @@
         @return tuple containing file name, line number and message
             (string, integer, string)
         """
-        return (self.filename, self.lineno, self.message.format(*self.message_args))
+        return (self.filename, self.lineno, self.message, self.message_args)
 
 
 class UnusedImport(Message):
     """
     Class defining the "Unused Import" message.
     """
-    message = QCoreApplication.translate('py3Flakes',
+    message = QT_TRANSLATE_NOOP('py3Flakes',
         '{0!r} imported but unused.')
     
     def __init__(self, filename, lineno, name):
@@ -69,9 +78,9 @@
     """
     Class defining the "Redefined While Unused" message.
     """
-    message = QCoreApplication.translate('py3Flakes',
+    message = QT_TRANSLATE_NOOP('py3Flakes', 
         'Redefinition of unused {0!r} from line {1!r}.')
-    
+
     def __init__(self, filename, lineno, name, orig_lineno):
         """
         Constructor
@@ -89,7 +98,7 @@
     """
     Class defining the "Import Shadowed By Loop Var" message.
     """
-    message = QCoreApplication.translate('py3Flakes',
+    message = QT_TRANSLATE_NOOP('py3Flakes',
         'Import {0!r} from line {1!r} shadowed by loop variable.')
     
     def __init__(self, filename, lineno, name, orig_lineno):
@@ -109,7 +118,7 @@
     """
     Class defining the "Import Star Used" message.
     """
-    message = QCoreApplication.translate('py3Flakes',
+    message = QT_TRANSLATE_NOOP('py3Flakes',
         "'from {0} import *' used; unable to detect undefined names.")
     
     def __init__(self, filename, lineno, modname):
@@ -128,7 +137,7 @@
     """
     Class defining the "Undefined Name" message.
     """
-    message = QCoreApplication.translate('py3Flakes', 'Undefined name {0!r}.')
+    message = QT_TRANSLATE_NOOP('py3Flakes', 'Undefined name {0!r}.')
     
     def __init__(self, filename, lineno, name):
         """
@@ -146,7 +155,8 @@
     """
     Class defining the "Undefined Export" message.
     """
-    message = QCoreApplication.translate('py3Flakes', 'Undefined name {0!r} in __all__.')
+    message = QT_TRANSLATE_NOOP('py3Flakes', 
+        'Undefined name {0!r} in __all__.')
     
     def __init__(self, filename, lineno, name):
         """
@@ -164,9 +174,9 @@
     """
     Class defining the "Undefined Local Variable" message.
     """
-    message = QCoreApplication.translate('py3Flakes',
-        "Local variable {0!r} (defined in enclosing scope on line {1!r})"
-        " referenced before assignment.")
+    message = QT_TRANSLATE_NOOP('py3Flakes',
+        "Local variable {0!r} (defined in enclosing scope on line {1!r})" \
+              " referenced before assignment.")
     
     def __init__(self, filename, lineno, name, orig_lineno):
         """
@@ -185,7 +195,7 @@
     """
     Class defining the "Duplicate Argument" message.
     """
-    message = QCoreApplication.translate('py3Flakes',
+    message = QT_TRANSLATE_NOOP('py3Flakes',
         'Duplicate argument {0!r} in function definition.')
     
     def __init__(self, filename, lineno, name):
@@ -204,7 +214,7 @@
     """
     Class defining the "Redefined Function" message.
     """
-    message = QCoreApplication.translate('py3Flakes',
+    message = QT_TRANSLATE_NOOP('py3Flakes',
         'Redefinition of function {0!r} from line {1!r}.')
     
     def __init__(self, filename, lineno, name, orig_lineno):
@@ -224,7 +234,7 @@
     """
     Class defining the "Late Future Import" message.
     """
-    message = QCoreApplication.translate('py3Flakes',
+    message = QT_TRANSLATE_NOOP('py3Flakes',
         'Future import(s) {0!r} after other statements.')
     
     def __init__(self, filename, lineno, names):
@@ -246,7 +256,7 @@
     Indicates that a variable has been explicitly assigned to but not actually
     used.
     """
-    message = QCoreApplication.translate('py3Flakes',
+    message = QT_TRANSLATE_NOOP('py3Flakes',
         'Local variable {0!r} is assigned to but never used.')
     
     def __init__(self, filename, lineno, name):
--- a/UtilitiesPython2/Py2SyntaxChecker.py	Thu Mar 28 20:09:00 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,171 +0,0 @@
-#!/usr/bin/env python2
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2011 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing the syntax check for Python 2.
-"""
-
-import sys
-import re
-import traceback
-
-from Tools import readEncodedFile, normalizeCode, extractLineFlags
-
-
-def compile(file, codestring):
-    """
-    Function to compile one Python source file to Python bytecode.
-    
-    @param file source filename (string)
-    @param codestring source code (string)
-    @return A tuple indicating status (True = an error was found), the
-        file name, the line number, the index number, the code string
-        and the error message (boolean, string, string, string, string,
-        string). The values are only valid, if the status equals 1.
-    """
-    import __builtin__
-    
-    try:
-        if type(file) == type(u""):
-            file = file.encode('utf-8')
-        
-        if file.endswith('.ptl'):
-            try:
-                import quixote.ptl_compile
-            except ImportError:
-                return (0, None, None, None, None)
-            template = quixote.ptl_compile.Template(codestring, file)
-            template.compile()
-        else:
-            __builtin__.compile(codestring, file, 'exec')
-    except SyntaxError, detail:
-        index = "0"
-        code = ""
-        error = ""
-        lines = traceback.format_exception_only(SyntaxError, detail)
-        match = re.match('\s*File "(.+)", line (\d+)',
-            lines[0].replace('<string>', '%s' % file))
-        if match is not None:
-            fn, line = match.group(1, 2)
-            if lines[1].startswith('SyntaxError:'):
-                error = re.match('SyntaxError: (.+)', lines[1]).group(1)
-            else:
-                code = re.match('(.+)', lines[1]).group(1)
-                for seLine in lines[2:]:
-                    if seLine.startswith('SyntaxError:'):
-                        error = re.match('SyntaxError: (.+)', seLine).group(1)
-                    elif seLine.rstrip().endswith('^'):
-                        index = len(seLine.rstrip()) - 4
-        else:
-            fn = detail.filename
-            line = detail.lineno and detail.lineno or 1
-            error = detail.msg
-        return (1, fn, line, index, code, error)
-    except ValueError, detail:
-        index = "0"
-        code = ""
-        try:
-            fn = detail.filename
-            line = detail.lineno
-            error = detail.msg
-        except AttributeError:
-            fn = file
-            line = 1
-            error = unicode(detail)
-        return (1, fn, line, index, code, error)
-    except StandardError, detail:
-        try:
-            fn = detail.filename
-            line = detail.lineno
-            index = "0"
-            code = ""
-            error = detail.msg
-            return (1, fn, line, index, code, error)
-        except:         # this catchall is intentional
-            pass
-    
-    return (0, None, None, None, None, None)
-
-
-def flakesCheck(fileName, codestring, ignoreStarImportWarnings):
-    """
-    Function to perform a pyflakes check.
-    
-    @param fileName name of the file (string)
-    @param codestring source code to be checked (string)
-    @param ignoreStarImportWarnings flag indicating to
-        ignore 'star import' warnings (boolean)
-    @return list of strings containing the warnings
-        (marker, file name, line number, message)
-    """
-    from py2flakes.checker import Checker
-    from py2flakes.messages import ImportStarUsed
-    
-    strings = []
-    lines = codestring.splitlines()
-    try:
-        warnings = Checker(codestring, fileName)
-        warnings.messages.sort(key=lambda a: a.lineno)
-        for warning in warnings.messages:
-            if ignoreStarImportWarnings and \
-               isinstance(warning, ImportStarUsed):
-                continue
-            
-            _fn, lineno, message = warning.getMessageData()
-            if "__IGNORE_WARNING__" not in extractLineFlags(lines[lineno - 1].strip()):
-                strings.extend(["FLAKES_WARNING", _fn, lineno, message])
-    except SyntaxError as err:
-        if err.text.strip():
-            msg = err.text.strip()
-        else:
-            msg = err.msg
-        strings.extend(["FLAKES_ERROR", fileName, err.lineno, msg])
-    
-    return strings
-
-if __name__ == "__main__":
-    if len(sys.argv) < 2 or \
-       len(sys.argv) > 3 or \
-       (len(sys.argv) == 3 and sys.argv[1] not in ["-fi", "-fs"]):
-        print "ERROR"
-        print ""
-        print ""
-        print ""
-        print ""
-        print "No file name given."
-    else:
-        filename = sys.argv[-1]
-        try:
-            codestring = readEncodedFile(filename)[0]
-            codestring = normalizeCode(codestring)
-            
-            syntaxerror, fname, line, index, code, error = \
-                compile(filename, codestring)
-        except IOError, msg:
-            # fake a syntax error
-            syntaxerror, fname, line, index, code, error = \
-                1, filename, "1", "0", "", "I/O Error: %s" % unicode(msg)
-        
-        if syntaxerror:
-            print "ERROR"
-        else:
-            print "NO_ERROR"
-        print fname
-        print line
-        print index
-        print code
-        print error
-        
-        if not syntaxerror and sys.argv[1] in ["-fi", "-fs"]:
-            # do pyflakes check
-            warningLines = flakesCheck(filename, codestring, sys.argv[1] == "-fi")
-            for warningLine in warningLines:
-                print warningLine
-    
-    sys.exit(0)
-    
-#
-# eflag: FileType = Python2
--- a/UtilitiesPython2/py2flakes/__init__.py	Thu Mar 28 20:09:00 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2011 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Package containg pyflakes for Python2.
-"""
-
-__version__ = '0.5.0'
-    
-#
-# eflag: FileType = Python2
--- a/UtilitiesPython2/py2flakes/checker.py	Thu Mar 28 20:09:00 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,618 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2011 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-# Original (c) 2005-2010 Divmod, Inc.
-#
-# This module is based on pyflakes for Python2 but was heavily hacked to
-# work within eric5
-
-import __builtin__
-import os.path
-import _ast
-
-from py2flakes import messages
-
-
-# utility function to iterate over an AST node's children, adapted
-# from Python 2.6's standard ast module
-try:
-    import ast
-    iter_child_nodes = ast.iter_child_nodes
-except (ImportError, AttributeError):
-    def iter_child_nodes(node, astcls=_ast.AST):
-        """
-        Yield all direct child nodes of *node*, that is, all fields that are nodes
-        and all items of fields that are lists of nodes.
-        """
-        for name in node._fields:
-            field = getattr(node, name, None)
-            if isinstance(field, astcls):
-                yield field
-            elif isinstance(field, list):
-                for item in field:
-                    yield item
-
-
-class Binding(object):
-    """
-    Represents the binding of a value to a name.
-
-    The checker uses this to keep track of which names have been bound and
-    which names have not. See L{Assignment} for a special type of binding that
-    is checked with stricter rules.
-    """
-    def __init__(self, name, source):
-        self.name = name
-        self.source = source
-        self.used = False
-
-    def __str__(self):
-        return self.name
-
-    def __repr__(self):
-        return '<%s object %r from line %r at 0x%x>' % (
-            self.__class__.__name__,
-            self.name,
-            self.source.lineno,
-            id(self))
-
-
-class UnBinding(Binding):
-    '''
-    Created by the 'del' operator.
-    '''
-
-
-class Importation(Binding):
-    """
-    A binding created by an import statement.
-    """
-    def __init__(self, name, source):
-        self.fullName = name
-        name = name.split('.')[0]
-        super(Importation, self).__init__(name, source)
-
-
-class Argument(Binding):
-    """
-    Represents binding a name as an argument.
-    """
-
-
-class Assignment(Binding):
-    """
-    Represents binding a name with an explicit assignment.
-
-    The checker will raise warnings for any Assignment that isn't used. Also,
-    the checker does not consider assignments in tuple/list unpacking to be
-    Assignments, rather it treats them as simple Bindings.
-    """
-
-
-class FunctionDefinition(Binding):
-    """
-    Represents a function definition.
-    """
-    pass
-
-
-class ExportBinding(Binding):
-    """
-    A binding created by an __all__ assignment.  If the names in the list
-    can be determined statically, they will be treated as names for export and
-    additional checking applied to them.
-
-    The only __all__ assignment that can be recognized is one which takes
-    the value of a literal list containing literal strings.  For example::
-
-        __all__ = ["foo", "bar"]
-
-    Names which are imported and not otherwise used but appear in the value of
-    __all__ will not have an unused import warning reported for them.
-    """
-    def names(self):
-        """
-        Return a list of the names referenced by this binding.
-        """
-        names = []
-        if isinstance(self.source, _ast.List):
-            for node in self.source.elts:
-                if isinstance(node, _ast.Str):
-                    names.append(node.s)
-        return names
-
-
-class Scope(dict):
-    """
-    Class defining the scope base class.
-    """
-    importStarred = False       # set to True when import * is found
-
-    def __repr__(self):
-        return '<%s at 0x%x %s>' % (
-            self.__class__.__name__, id(self), dict.__repr__(self))
-
-    def __init__(self):
-        super(Scope, self).__init__()
-
-
-class ClassScope(Scope):
-    """
-    Class representing a name scope for a class.
-    """
-    pass
-
-
-class FunctionScope(Scope):
-    """
-    Class representing a name scope for a function.
-    """
-    def __init__(self):
-        super(FunctionScope, self).__init__()
-        self.globals = {}
-
-
-class ModuleScope(Scope):
-    """
-    Class representing a name scope for a module.
-    """
-    pass
-
-# Globally defined names which are not attributes of the __builtin__ module.
-_MAGIC_GLOBALS = ['__file__', '__builtins__']
-
-
-class Checker(object):
-    """
-    Class to check the cleanliness and sanity of Python code.
-    """
-    nodeDepth = 0
-    traceTree = False
-
-    def __init__(self, module, filename='(none)'):
-        """
-        Constructor
-        
-        @param module parsed module tree or module source code
-        @param filename name of the module file (string)
-        """
-        self._deferredFunctions = []
-        self._deferredAssignments = []
-        self.dead_scopes = []
-        self.messages = []
-        self.filename = filename
-        self.scopeStack = [ModuleScope()]
-        self.futuresAllowed = True
-        
-        if isinstance(module, str):
-            module = ast.parse(module, filename, "exec")
-        self.handleChildren(module)
-        self._runDeferred(self._deferredFunctions)
-        # Set _deferredFunctions to None so that deferFunction will fail
-        # noisily if called after we've run through the deferred functions.
-        self._deferredFunctions = None
-        self._runDeferred(self._deferredAssignments)
-        # Set _deferredAssignments to None so that deferAssignment will fail
-        # noisly if called after we've run through the deferred assignments.
-        self._deferredAssignments = None
-        del self.scopeStack[1:]
-        self.popScope()
-        self.check_dead_scopes()
-
-    def deferFunction(self, callable):
-        '''
-        Schedule a function handler to be called just before completion.
-
-        This is used for handling function bodies, which must be deferred
-        because code later in the file might modify the global scope. When
-        `callable` is called, the scope at the time this is called will be
-        restored, however it will contain any new bindings added to it.
-        '''
-        self._deferredFunctions.append((callable, self.scopeStack[:]))
-
-    def deferAssignment(self, callable):
-        """
-        Schedule an assignment handler to be called just after deferred
-        function handlers.
-        """
-        self._deferredAssignments.append((callable, self.scopeStack[:]))
-
-    def _runDeferred(self, deferred):
-        """
-        Run the callables in deferred using their associated scope stack.
-        """
-        for handler, scope in deferred:
-            self.scopeStack = scope
-            handler()
-
-    def scope(self):
-        return self.scopeStack[-1]
-    scope = property(scope)
-
-    def popScope(self):
-        self.dead_scopes.append(self.scopeStack.pop())
-
-    def check_dead_scopes(self):
-        """
-        Look at scopes which have been fully examined and report names in them
-        which were imported but unused.
-        """
-        for scope in self.dead_scopes:
-            export = isinstance(scope.get('__all__'), ExportBinding)
-            if export:
-                all = scope['__all__'].names()
-                if os.path.split(self.filename)[1] != '__init__.py':
-                    # Look for possible mistakes in the export list
-                    undefined = set(all) - set(scope)
-                    for name in undefined:
-                        self.report(
-                            messages.UndefinedExport,
-                            scope['__all__'].source.lineno,
-                            name)
-            else:
-                all = []
-
-            # Look for imported names that aren't used.
-            for importation in scope.itervalues():
-                if isinstance(importation, Importation):
-                    if not importation.used and importation.name not in all:
-                        self.report(
-                            messages.UnusedImport,
-                            importation.source.lineno,
-                            importation.name)
-
-    def pushFunctionScope(self):
-        self.scopeStack.append(FunctionScope())
-
-    def pushClassScope(self):
-        self.scopeStack.append(ClassScope())
-
-    def report(self, messageClass, *args, **kwargs):
-        self.messages.append(messageClass(self.filename, *args, **kwargs))
-
-    def handleChildren(self, tree):
-        for node in iter_child_nodes(tree):
-            self.handleNode(node, tree)
-
-    def isDocstring(self, node):
-        """
-        Determine if the given node is a docstring, as long as it is at the
-        correct place in the node tree.
-        """
-        return isinstance(node, _ast.Str) or \
-               (isinstance(node, _ast.Expr) and
-                isinstance(node.value, _ast.Str))
-
-    def handleNode(self, node, parent):
-        if node:
-            node.parent = parent
-            if self.traceTree:
-                print '  ' * self.nodeDepth + node.__class__.__name__
-            self.nodeDepth += 1
-            if self.futuresAllowed and not \
-                   (isinstance(node, _ast.ImportFrom) or self.isDocstring(node)):
-                self.futuresAllowed = False
-            nodeType = node.__class__.__name__.upper()
-            try:
-                handler = getattr(self, nodeType)
-                handler(node)
-            except AttributeError:
-                print nodeType, "not supported yet. Please report this."
-            finally:
-                self.nodeDepth -= 1
-            if self.traceTree:
-                print '  ' * self.nodeDepth + 'end ' + node.__class__.__name__
-
-    def ignore(self, node):
-        pass
-
-    # "stmt" type nodes
-    RETURN = DELETE = PRINT = WHILE = IF = WITH = RAISE = TRYEXCEPT = \
-        TRYFINALLY = ASSERT = EXEC = EXPR = handleChildren
-
-    CONTINUE = BREAK = PASS = ignore
-
-    # "expr" type nodes
-    BOOLOP = BINOP = UNARYOP = IFEXP = DICT = SET = YIELD = COMPARE = \
-    CALL = REPR = ATTRIBUTE = SUBSCRIPT = LIST = TUPLE = handleChildren
-
-    NUM = STR = ELLIPSIS = ignore
-
-    # "slice" type nodes
-    SLICE = EXTSLICE = INDEX = handleChildren
-
-    # expression contexts are node instances too, though being constants
-    LOAD = STORE = DEL = AUGLOAD = AUGSTORE = PARAM = ignore
-
-    # same for operators
-    AND = OR = ADD = SUB = MULT = DIV = MOD = POW = LSHIFT = RSHIFT = \
-    BITOR = BITXOR = BITAND = FLOORDIV = INVERT = NOT = UADD = USUB = \
-    EQ = NOTEQ = LT = LTE = GT = GTE = IS = ISNOT = IN = NOTIN = ignore
-
-    # additional node types
-    COMPREHENSION = EXCEPTHANDLER = KEYWORD = handleChildren
-
-    def addBinding(self, lineno, value, reportRedef=True):
-        '''
-        Called when a binding is altered.
-
-        @param lineno line of the statement responsible for the change (integer)
-        @param value the optional new value, a Binding instance, associated
-            with the binding; if None, the binding is deleted if it exists
-        @param reportRedef flag indicating if rebinding while unused will be
-            reported (boolean)
-        '''
-        if (isinstance(self.scope.get(value.name), FunctionDefinition)
-                    and isinstance(value, FunctionDefinition)):
-            self.report(messages.RedefinedFunction,
-                        lineno, value.name, self.scope[value.name].source.lineno)
-
-        if not isinstance(self.scope, ClassScope):
-            for scope in self.scopeStack[::-1]:
-                existing = scope.get(value.name)
-                if (isinstance(existing, Importation)
-                    and not existing.used
-                    and (not isinstance(value, Importation) or
-                          value.fullName == existing.fullName)
-                    and reportRedef):
-
-                    self.report(messages.RedefinedWhileUnused,
-                                lineno, value.name, scope[value.name].source.lineno)
-
-        if isinstance(value, UnBinding):
-            try:
-                del self.scope[value.name]
-            except KeyError:
-                self.report(messages.UndefinedName, lineno, value.name)
-        else:
-            self.scope[value.name] = value
-
-    def GLOBAL(self, node):
-        """
-        Keep track of globals declarations.
-        """
-        if isinstance(self.scope, FunctionScope):
-            self.scope.globals.update(dict.fromkeys(node.names))
-
-    def LISTCOMP(self, node):
-        # handle generators before element
-        for gen in node.generators:
-            self.handleNode(gen, node)
-        self.handleNode(node.elt, node)
-
-    GENERATOREXP = SETCOMP = LISTCOMP
-
-    # dictionary comprehensions; introduced in Python 2.7
-    def DICTCOMP(self, node):
-        for gen in node.generators:
-            self.handleNode(gen, node)
-        self.handleNode(node.key, node)
-        self.handleNode(node.value, node)
-
-    def FOR(self, node):
-        """
-        Process bindings for loop variables.
-        """
-        vars = []
-
-        def collectLoopVars(n):
-            if isinstance(n, _ast.Name):
-                vars.append(n.id)
-            elif isinstance(n, _ast.expr_context):
-                return
-            else:
-                for c in iter_child_nodes(n):
-                    collectLoopVars(c)
-
-        collectLoopVars(node.target)
-        for varn in vars:
-            if (isinstance(self.scope.get(varn), Importation)
-                    # unused ones will get an unused import warning
-                    and self.scope[varn].used):
-                self.report(messages.ImportShadowedByLoopVar,
-                            node.lineno, varn, self.scope[varn].source.lineno)
-
-        self.handleChildren(node)
-
-    def NAME(self, node):
-        """
-        Locate the name in locals / function / globals scopes.
-        """
-        if isinstance(node.ctx, (_ast.Load, _ast.AugLoad)):
-            # try local scope
-            importStarred = self.scope.importStarred
-            try:
-                self.scope[node.id].used = (self.scope, node.lineno)
-            except KeyError:
-                pass
-            else:
-                return
-
-            # try enclosing function scopes
-
-            for scope in self.scopeStack[-2:0:-1]:
-                importStarred = importStarred or scope.importStarred
-                if not isinstance(scope, FunctionScope):
-                    continue
-                try:
-                    scope[node.id].used = (self.scope, node.lineno)
-                except KeyError:
-                    pass
-                else:
-                    return
-
-            # try global scope
-
-            importStarred = importStarred or self.scopeStack[0].importStarred
-            try:
-                self.scopeStack[0][node.id].used = (self.scope, node.lineno)
-            except KeyError:
-                if ((not hasattr(__builtin__, node.id))
-                        and node.id not in _MAGIC_GLOBALS
-                        and not importStarred):
-                    if (os.path.basename(self.filename) == '__init__.py' and
-                        node.id == '__path__'):
-                        # the special name __path__ is valid only in packages
-                        pass
-                    else:
-                        self.report(messages.UndefinedName, node.lineno, node.id)
-        elif isinstance(node.ctx, (_ast.Store, _ast.AugStore)):
-            # if the name hasn't already been defined in the current scope
-            if isinstance(self.scope, FunctionScope) and node.id not in self.scope:
-                # for each function or module scope above us
-                for scope in self.scopeStack[:-1]:
-                    if not isinstance(scope, (FunctionScope, ModuleScope)):
-                        continue
-                    # if the name was defined in that scope, and the name has
-                    # been accessed already in the current scope, and hasn't
-                    # been declared global
-                    if (node.id in scope
-                            and scope[node.id].used
-                            and scope[node.id].used[0] is self.scope
-                            and node.id not in self.scope.globals):
-                        # then it's probably a mistake
-                        self.report(messages.UndefinedLocal,
-                                    scope[node.id].used[1],
-                                    node.id,
-                                    scope[node.id].source.lineno)
-                        break
-
-            if isinstance(node.parent,
-                          (_ast.For, _ast.comprehension, _ast.Tuple, _ast.List)):
-                binding = Binding(node.id, node)
-            elif (node.id == '__all__' and
-                  isinstance(self.scope, ModuleScope)):
-                binding = ExportBinding(node.id, node.parent.value)
-            else:
-                binding = Assignment(node.id, node)
-            if node.id in self.scope:
-                binding.used = self.scope[node.id].used
-            self.addBinding(node.lineno, binding)
-        elif isinstance(node.ctx, _ast.Del):
-            if isinstance(self.scope, FunctionScope) and \
-                   node.id in self.scope.globals:
-                del self.scope.globals[node.id]
-            else:
-                self.addBinding(node.lineno, UnBinding(node.id, node))
-        else:
-            # must be a Param context -- this only happens for names in function
-            # arguments, but these aren't dispatched through here
-            raise RuntimeError(
-                "Got impossible expression context: %r" % (node.ctx,))
-
-    def FUNCTIONDEF(self, node):
-        if hasattr(node, 'decorators'):
-            for deco in node.decorators:
-                self.handleNode(deco, node)
-        else:
-            for deco in node.decorator_list:
-                self.handleNode(deco, node)
-        self.addBinding(node.lineno, FunctionDefinition(node.name, node))
-        self.LAMBDA(node)
-
-    def LAMBDA(self, node):
-        for default in node.args.defaults:
-            self.handleNode(default, node)
-
-        def runFunction():
-            args = []
-
-            def addArgs(arglist):
-                for arg in arglist:
-                    if isinstance(arg, _ast.Tuple):
-                        addArgs(arg.elts)
-                    else:
-                        if arg.id in args:
-                            self.report(messages.DuplicateArgument, node.lineno, arg.id)
-                        args.append(arg.id)
-
-            self.pushFunctionScope()
-            addArgs(node.args.args)
-            # vararg/kwarg identifiers are not Name nodes
-            if node.args.vararg:
-                args.append(node.args.vararg)
-            if node.args.kwarg:
-                args.append(node.args.kwarg)
-            for name in args:
-                self.addBinding(node.lineno, Argument(name, node), reportRedef=False)
-            if isinstance(node.body, list):
-                # case for FunctionDefs
-                for stmt in node.body:
-                    self.handleNode(stmt, node)
-            else:
-                # case for Lambdas
-                self.handleNode(node.body, node)
-
-            def checkUnusedAssignments():
-                """
-                Check to see if any assignments have not been used.
-                """
-                for name, binding in self.scope.iteritems():
-                    if (not binding.used and not name in self.scope.globals
-                        and isinstance(binding, Assignment)):
-                        self.report(messages.UnusedVariable,
-                                    binding.source.lineno, name)
-            self.deferAssignment(checkUnusedAssignments)
-            self.popScope()
-
-        self.deferFunction(runFunction)
-
-    def CLASSDEF(self, node):
-        """
-        Check names used in a class definition, including its decorators, base
-        classes, and the body of its definition.  Additionally, add its name to
-        the current scope.
-        """
-        # decorator_list is present as of Python 2.6
-        for deco in getattr(node, 'decorator_list', []):
-            self.handleNode(deco, node)
-        for baseNode in node.bases:
-            self.handleNode(baseNode, node)
-        self.pushClassScope()
-        for stmt in node.body:
-            self.handleNode(stmt, node)
-        self.popScope()
-        self.addBinding(node.lineno, Binding(node.name, node))
-
-    def ASSIGN(self, node):
-        self.handleNode(node.value, node)
-        for target in node.targets:
-            self.handleNode(target, node)
-
-    def AUGASSIGN(self, node):
-        # AugAssign is awkward: must set the context explicitly and visit twice,
-        # once with AugLoad context, once with AugStore context
-        node.target.ctx = _ast.AugLoad()
-        self.handleNode(node.target, node)
-        self.handleNode(node.value, node)
-        node.target.ctx = _ast.AugStore()
-        self.handleNode(node.target, node)
-
-    def IMPORT(self, node):
-        for alias in node.names:
-            name = alias.asname or alias.name
-            importation = Importation(name, node)
-            self.addBinding(node.lineno, importation)
-
-    def IMPORTFROM(self, node):
-        if node.module == '__future__':
-            if not self.futuresAllowed:
-                self.report(messages.LateFutureImport, node.lineno,
-                            [n.name for n in node.names])
-        else:
-            self.futuresAllowed = False
-
-        for alias in node.names:
-            if alias.name == '*':
-                self.scope.importStarred = True
-                self.report(messages.ImportStarUsed, node.lineno, node.module)
-                continue
-            name = alias.asname or alias.name
-            importation = Importation(name, node)
-            if node.module == '__future__':
-                importation.used = (self.scope, node.lineno)
-            self.addBinding(node.lineno, importation)
-    
-#
-# eflag: FileType = Python2
--- a/UtilitiesPython2/py2flakes/messages.py	Thu Mar 28 20:09:00 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,253 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2010 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-# Original (c) 2005 Divmod, Inc.  See LICENSE file for details
-#
-# This module is based on pyflakes for Python2 but was heavily hacked to
-# work within eric5
-
-
-class Message(object):
-    """
-    Class defining the base for all specific message classes.
-    """
-    message = ''
-    message_args = ()
-    
-    def __init__(self, filename, lineno):
-        """
-        Constructor
-        
-        @param filename name of the file (string)
-        @param lineno line number (integer)
-        """
-        self.filename = filename
-        self.lineno = lineno
-    
-    def __str__(self):
-        """
-        Special method return a string representation of the instance object.
-        
-        @return string representation of the object (string)
-        """
-        return '%s:%s: %s' % (
-            self.filename, self.lineno, self.message % self.message_args)
-    
-    def getMessageData(self):
-        """
-        Public method to get the individual message data elements.
-        
-        @return tuple containing file name, line number and message
-            (string, integer, string)
-        """
-        return (self.filename, self.lineno, self.message % self.message_args)
-
-
-class UnusedImport(Message):
-    """
-    Class defining the "Unused Import" message.
-    """
-    message = '%r imported but unused'
-    
-    def __init__(self, filename, lineno, name):
-        """
-        Constructor
-        
-        @param filename name of the file (string)
-        @param lineno line number (integer)
-        @param name name of the unused import (string)
-        """
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name,)
-
-
-class RedefinedWhileUnused(Message):
-    """
-    Class defining the "Redefined While Unused" message.
-    """
-    message = 'redefinition of unused %r from line %r'
-    
-    def __init__(self, filename, lineno, name, orig_lineno):
-        """
-        Constructor
-        
-        @param filename name of the file (string)
-        @param lineno line number (integer)
-        @param name name of the redefined object (string)
-        @param orig_lineno line number of the original definition (integer)
-        """
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, orig_lineno)
-
-
-class ImportShadowedByLoopVar(Message):
-    """
-    Class defining the "Import Shadowed By Loop Var" message.
-    """
-    message = 'import %r from line %r shadowed by loop variable'
-    
-    def __init__(self, filename, lineno, name, orig_lineno):
-        """
-        Constructor
-        
-        @param filename name of the file (string)
-        @param lineno line number (integer)
-        @param name name of the shadowed import (string)
-        @param orig_lineno line number of the import (integer)
-        """
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, orig_lineno)
-
-
-class ImportStarUsed(Message):
-    """
-    Class defining the "Import Star Used" message.
-    """
-    message = "'from %s import *' used; unable to detect undefined names"
-    
-    def __init__(self, filename, lineno, modname):
-        """
-        Constructor
-        
-        @param filename name of the file (string)
-        @param lineno line number (integer)
-        @param modname name of the module imported using star import (string)
-        """
-        Message.__init__(self, filename, lineno)
-        self.message_args = (modname,)
-
-
-class UndefinedName(Message):
-    """
-    Class defining the "Undefined Name" message.
-    """
-    message = 'undefined name %r'
-    
-    def __init__(self, filename, lineno, name):
-        """
-        Constructor
-        
-        @param filename name of the file (string)
-        @param lineno line number (integer)
-        @param name undefined name (string)
-        """
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name,)
-
-
-class UndefinedExport(Message):
-    """
-    Class defining the "Undefined Export" message.
-    """
-    message = 'undefined name %r in __all__'
-    
-    def __init__(self, filename, lineno, name):
-        """
-        Constructor
-        
-        @param filename name of the file (string)
-        @param lineno line number (integer)
-        @param name undefined exported name (string)
-        """
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name,)
-
-
-class UndefinedLocal(Message):
-    """
-    Class defining the "Undefined Local Variable" message.
-    """
-    message = "local variable %r (defined in enclosing scope on line %r)" \
-              " referenced before assignment"
-    
-    def __init__(self, filename, lineno, name, orig_lineno):
-        """
-        Constructor
-        
-        @param filename name of the file (string)
-        @param lineno line number (integer)
-        @param name name of the prematurely referenced variable (string)
-        @param orig_lineno line number of the variable definition (integer)
-        """
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, orig_lineno)
-
-
-class DuplicateArgument(Message):
-    """
-    Class defining the "Duplicate Argument" message.
-    """
-    message = 'duplicate argument %r in function definition'
-    
-    def __init__(self, filename, lineno, name):
-        """
-        Constructor
-        
-        @param filename name of the file (string)
-        @param lineno line number (integer)
-        @param name name of the duplicate argument (string)
-        """
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name,)
-
-
-class RedefinedFunction(Message):
-    """
-    Class defining the "Redefined Function" message.
-    """
-    message = 'redefinition of function %r from line %r'
-    
-    def __init__(self, filename, lineno, name, orig_lineno):
-        """
-        Constructor
-        
-        @param filename name of the file (string)
-        @param lineno line number (integer)
-        @param name name of the redefined function (string)
-        @param orig_lineno line number of the original definition (integer)
-        """
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, orig_lineno)
-
-
-class LateFutureImport(Message):
-    """
-    Class defining the "Late Future Import" message.
-    """
-    message = 'future import(s) %r after other statements'
-    
-    def __init__(self, filename, lineno, names):
-        """
-        Constructor
-        
-        @param filename name of the file (string)
-        @param lineno line number (integer)
-        @param names names of the imported futures (string)
-        """
-        Message.__init__(self, filename, lineno)
-        self.message_args = (names,)
-
-
-class UnusedVariable(Message):
-    """
-    Class defining the "Unused Variable" message.
-    
-    Indicates that a variable has been explicitly assigned to but not actually
-    used.
-    """
-    message = 'local variable %r is assigned to but never used'
-    
-    def __init__(self, filename, lineno, names):
-        """
-        Constructor
-        
-        @param filename name of the file (string)
-        @param lineno line number (integer)
-        @param name name of the unused variable (string)
-        """
-        Message.__init__(self, filename, lineno)
-        self.message_args = (names,)
-    
-#
-# eflag: FileType = Python2
--- a/eric5.e4p	Thu Mar 28 20:09:00 2013 +0100
+++ b/eric5.e4p	Mon Apr 08 07:52:06 2013 +0200
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE Project SYSTEM "Project-5.1.dtd">
 <!-- eric5 project file for project eric5 -->
+<!-- Saved: 2013-04-08, 07:48:51 -->
+<!-- Copyright (C) 2013 Detlev Offenbach, detlev@die-offenbachs.de -->
 <Project version="5.1">
   <Language>en_US</Language>
   <ProjectWordList>Dictionaries/words.dic</ProjectWordList>
@@ -801,10 +803,6 @@
     <Source>ThirdParty/Pygments/pygments/styles/monokai.py</Source>
     <Source>Preferences/ConfigurationPages/TrayStarterPage.py</Source>
     <Source>UtilitiesPython2/__init__.py</Source>
-    <Source>UtilitiesPython2/Py2SyntaxChecker.py</Source>
-    <Source>UtilitiesPython2/py2flakes/__init__.py</Source>
-    <Source>UtilitiesPython2/py2flakes/checker.py</Source>
-    <Source>UtilitiesPython2/py2flakes/messages.py</Source>
     <Source>UtilitiesPython2/Tools.py</Source>
     <Source>UtilitiesPython2/Tabnanny.py</Source>
     <Source>UtilitiesPython2/TabnannyChecker.py</Source>
@@ -1076,6 +1074,10 @@
     <Source>E5Network/E5SslCertificatesInfoDialog.py</Source>
     <Source>E5Network/E5SslInfoWidget.py</Source>
     <Source>Utilities/compatibility_fixes.py</Source>
+    <Source>Utilities/SyntaxCheck.py</Source>
+    <Source>Utilities/py2flakes/checker.py</Source>
+    <Source>Utilities/py2flakes/messages.py</Source>
+    <Source>Utilities/py2flakes/__init__.py</Source>
   </Sources>
   <Forms>
     <Form>PyUnit/UnittestDialog.ui</Form>
--- a/i18n/eric5_de.ts	Thu Mar 28 20:09:00 2013 +0100
+++ b/i18n/eric5_de.ts	Mon Apr 08 07:52:06 2013 +0200
@@ -29,7 +29,7 @@
         <translation>&amp;Lizenz Vereinbarung</translation>
     </message>
     <message>
-        <location filename="Plugins/AboutPlugin/AboutDialog.py" line="22"/>
+        <location filename="Plugins/AboutPlugin/AboutDialog.py" line="24"/>
         <source>&lt;p&gt;{0} is an Integrated Development Environment for the Python programming language. It is written using the PyQt Python bindings for the Qt GUI toolkit and the QScintilla editor widget.&lt;/p&gt;&lt;p&gt;For more information see &lt;a href=&quot;{1}&quot;&gt;{1}&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Please send bug reports to &lt;a href=&quot;mailto:{2}&quot;&gt;{2}&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;To request a new feature please send an email to &lt;a href=&quot;mailto:{3}&quot;&gt;{3}&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;{0} uses third party software which is copyrighted by it&apos;s respective copyright holder. For details see the copyright notice of the individual package.&lt;/p&gt;</source>
         <translation>&lt;p&gt;{0} ist eine Integrierte Entwicklungsumgebung für die Python Programmiersprache. Sie wurde unter Verwendung der PyQt Python Bindings für das Qt GUI Toolkit und unter Verwendung des QScintilla Editor Widgets erstellt.&lt;/p&gt;&lt;p&gt;Weitergehende Informationen erhalten Sie unter &lt;a href=&quot;{1}&quot;&gt;{1}&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Bitte senden Sie Fehlerberichte an &lt;a href=&quot;mailto:{2}&quot;&gt;{2}&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Um eine neue Funktion anzufragen, senden sie bitte eine Email an &lt;a href=&quot;mailto:{3}&quot;&gt;{3}&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;{0} benutzt Fremdsoftware, deren Copyright bei den entsprechend Copyright Haltern liegt. Details können der Copyright Notiz des entsprechenden Paketes entnommen werden.&lt;/p&gt;</translation>
     </message>
@@ -37,42 +37,42 @@
 <context>
     <name>AboutPlugin</name>
     <message>
-        <location filename="Plugins/PluginAbout.py" line="76"/>
+        <location filename="Plugins/PluginAbout.py" line="78"/>
         <source>About {0}</source>
         <translation>Über {0}</translation>
     </message>
     <message>
-        <location filename="Plugins/PluginAbout.py" line="76"/>
+        <location filename="Plugins/PluginAbout.py" line="78"/>
         <source>&amp;About {0}</source>
         <translation>&amp;Über {0}</translation>
     </message>
     <message>
-        <location filename="Plugins/PluginAbout.py" line="80"/>
+        <location filename="Plugins/PluginAbout.py" line="82"/>
         <source>Display information about this software</source>
         <translation>Zeigt Informationen zu diesem Programm an</translation>
     </message>
     <message>
-        <location filename="Plugins/PluginAbout.py" line="81"/>
+        <location filename="Plugins/PluginAbout.py" line="83"/>
         <source>&lt;b&gt;About {0}&lt;/b&gt;&lt;p&gt;Display some information about this software.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Über {0}&lt;/b&gt;&lt;p&gt;Zeige Informationen über dieses Programm an.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Plugins/PluginAbout.py" line="89"/>
+        <location filename="Plugins/PluginAbout.py" line="91"/>
         <source>About Qt</source>
         <translation>Über Qt</translation>
     </message>
     <message>
-        <location filename="Plugins/PluginAbout.py" line="89"/>
+        <location filename="Plugins/PluginAbout.py" line="91"/>
         <source>About &amp;Qt</source>
         <translation>Über &amp;Qt</translation>
     </message>
     <message>
-        <location filename="Plugins/PluginAbout.py" line="92"/>
-        <source>Display information about the Qt toolkit</source>
-        <translation>Zeige Informationen über das Qt Toolkit an</translation>
-    </message>
-    <message>
         <location filename="Plugins/PluginAbout.py" line="94"/>
+        <source>Display information about the Qt toolkit</source>
+        <translation>Zeige Informationen über das Qt Toolkit an</translation>
+    </message>
+    <message>
+        <location filename="Plugins/PluginAbout.py" line="96"/>
         <source>&lt;b&gt;About Qt&lt;/b&gt;&lt;p&gt;Display some information about the Qt toolkit.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Über Qt&lt;/b&gt;&lt;p&gt;Zeige Informationen über das Qt Toolkit an.&lt;/p&gt;</translation>
     </message>
@@ -80,12 +80,12 @@
 <context>
     <name>AdBlockAccessHandler</name>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockAccessHandler.py" line="43"/>
+        <location filename="Helpviewer/AdBlock/AdBlockAccessHandler.py" line="45"/>
         <source>Subscribe?</source>
         <translation>Abonieren?</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockAccessHandler.py" line="43"/>
+        <location filename="Helpviewer/AdBlock/AdBlockAccessHandler.py" line="45"/>
         <source>&lt;p&gt;Subscribe to this AdBlock subscription?&lt;/p&gt;&lt;p&gt;{0}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Soll dieses AdBlock Abonnement gebucht werden?&lt;/p&gt;&lt;p&gt;{0}&lt;/p&gt;</translation>
     </message>
@@ -108,22 +108,22 @@
         <translation>Aktionen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="139"/>
+        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="141"/>
         <source>Learn more about writing rules...</source>
         <translation>Mehr über das Schreiben von Regeln lernen...</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="134"/>
+        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="136"/>
         <source>Update Subscription</source>
         <translation>Abonnement aktualisieren</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="123"/>
+        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="125"/>
         <source>Browse Subscriptions...</source>
         <translation>Abonnements anschauen...</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="212"/>
+        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="214"/>
         <source>Remove Subscription</source>
         <translation>Abonnement löschen</translation>
     </message>
@@ -138,42 +138,42 @@
         <translation>Gib die Aktualisierungsperiode ein (1 bis 14 Tage)</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="36"/>
+        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="38"/>
         <source>Search...</source>
         <translation>Suchen...</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="118"/>
-        <source>Add Rule</source>
-        <translation>Regel hinzufügen</translation>
-    </message>
-    <message>
         <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="120"/>
+        <source>Add Rule</source>
+        <translation>Regel hinzufügen</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="122"/>
         <source>Remove Rule</source>
         <translation>Regel löschen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="129"/>
-        <source>Disable Subscription</source>
-        <translation>Abonnement deaktivieren</translation>
-    </message>
-    <message>
         <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="131"/>
+        <source>Disable Subscription</source>
+        <translation>Abonnement deaktivieren</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="133"/>
         <source>Enable Subscription</source>
         <translation>Abonnement aktivieren</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="136"/>
+        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="138"/>
         <source>Update All Subscriptions</source>
         <translation>Alle Abonnements aktualisieren</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="204"/>
+        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="206"/>
         <source>&lt;p&gt;Do you really want to remove subscription &lt;b&gt;{0}&lt;/b&gt; and all subscriptions requiring it?&lt;/p&gt;&lt;ul&gt;&lt;li&gt;{1}&lt;/li&gt;&lt;/ul&gt;</source>
         <translation>&lt;p&gt;Soll das Abonnement &lt;b&gt;{0}&lt;/b&gt; und alle abhängigen Abonnements wirklich gelöscht werden?&lt;/p&gt;&lt;ul&gt;&lt;li&gt;{1}&lt;/li&gt;&lt;/ul&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="210"/>
+        <location filename="Helpviewer/AdBlock/AdBlockDialog.py" line="212"/>
         <source>&lt;p&gt;Do you really want to remove subscription &lt;b&gt;{0}&lt;/b&gt;?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Soll das Abonnement &lt;b&gt;{0}&lt;/b&gt; wirklich gelöscht werden?&lt;/p&gt;</translation>
     </message>
@@ -216,7 +216,7 @@
         <translation>&amp;Löschen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockExceptionsDialog.py" line="33"/>
+        <location filename="Helpviewer/AdBlock/AdBlockExceptionsDialog.py" line="35"/>
         <source>Enter host to be added...</source>
         <translation>Gib einen hinzuzufügenden Host ein...</translation>
     </message>
@@ -224,57 +224,57 @@
 <context>
     <name>AdBlockIcon</name>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="36"/>
+        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="38"/>
         <source>AdBlock lets you block unwanted content on web pages.</source>
         <translation>AdBlock lässt sie ungewünschten Webinhalt blockieren.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="70"/>
+        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="72"/>
         <source>Disable AdBlock</source>
         <translation>AdBlock deaktivieren</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="73"/>
+        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="75"/>
         <source>Enable AdBlock</source>
         <translation>AdBlock aktivieren</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="95"/>
+        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="97"/>
         <source>Blocked URL (AdBlock Rule) - click to edit rule</source>
         <translation>Blockierte URL (AdBlock Regel) - klicken, um Regel anzuzeigen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="100"/>
+        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="102"/>
         <source>{0} with ({1})</source>
         <translation>{0} mit ({1})</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="105"/>
+        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="107"/>
         <source>No content blocked</source>
         <translation>Kein blockierter Inhalt</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="114"/>
+        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="116"/>
         <source>AdBlock</source>
         <translation>AdBlock</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="79"/>
+        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="81"/>
         <source>Remove AdBlock Exception</source>
         <translation>AdBlock Ausnahme löschen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="83"/>
+        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="85"/>
         <source>Add AdBlock Exception</source>
         <translation>AdBlock Ausnahme hinzufügen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="86"/>
+        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="88"/>
         <source>AdBlock Exceptions...</source>
         <translation>AdBlock Ausnahmen...</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="89"/>
+        <location filename="Helpviewer/AdBlock/AdBlockIcon.py" line="91"/>
         <source>AdBlock Configuration...</source>
         <translation>AdBlock Konfiguration...</translation>
     </message>
@@ -282,7 +282,7 @@
 <context>
     <name>AdBlockManager</name>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockManager.py" line="136"/>
+        <location filename="Helpviewer/AdBlock/AdBlockManager.py" line="138"/>
         <source>Custom Rules</source>
         <translation>Spezifische Regel</translation>
     </message>
@@ -290,47 +290,47 @@
 <context>
     <name>AdBlockSubscription</name>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="273"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="275"/>
         <source>Load subscription rules</source>
         <translation>Abonnementregeln laden</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="265"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="267"/>
         <source>Unable to open adblock file &apos;{0}&apos; for reading.</source>
         <translation>Adblock Datei &apos;{0}&apos; konnte nicht zum Lesen geöffnet werden.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="434"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="436"/>
         <source>Downloading subscription rules</source>
         <translation>Lade Abonnementregeln herunter</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="366"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="368"/>
         <source>&lt;p&gt;Subscription rules could not be downloaded.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Abonnementregeln konnten nicht heruntergeladen werden.&lt;/p&gt;&lt;p&gt;Fehler: {0}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="376"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="378"/>
         <source>Got empty subscription rules.</source>
         <translation>Habe leere Abonnementregeln erhalten.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="454"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="456"/>
         <source>Unable to open adblock file &apos;{0}&apos; for writing.</source>
         <translation>Adblock Datei &apos;{0}&apos; konnte nicht zum Schreiben geöffnet werden.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="454"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="456"/>
         <source>Saving subscription rules</source>
         <translation>Speichern der Abonnementregeln</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="273"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="275"/>
         <source>AdBlock file &apos;{0}&apos; does not start with [Adblock.</source>
         <translation>AdBlock Datei &apos;{0}&apos; startet nicht mit [Adblock.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="434"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="436"/>
         <source>&lt;p&gt;AdBlock subscription &lt;b&gt;{0}&lt;/b&gt; has a wrong checksum.&lt;br/&gt;Found: {1}&lt;br/&gt;Calculated: {2}&lt;br/&gt;Use it anyway?&lt;/p&gt;</source>
         <translation>&lt;p&gt;AdBlock Abonnement &lt;b&gt;{0}&lt;/b&gt; hat eine falsche Prüfsumme.&lt;br/&gt;Gefunden: {1}&lt;br/&gt;Berechnet: {2}&lt;br/&gt;Trotzdem verwenden?&lt;/p&gt;</translation>
     </message>
@@ -338,27 +338,27 @@
 <context>
     <name>AdBlockTreeWidget</name>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockTreeWidget.py" line="116"/>
+        <location filename="Helpviewer/AdBlock/AdBlockTreeWidget.py" line="118"/>
         <source>Add Custom Rule</source>
         <translation>Spezifische Regel hinzufügen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockTreeWidget.py" line="116"/>
+        <location filename="Helpviewer/AdBlock/AdBlockTreeWidget.py" line="118"/>
         <source>Write your rule here:</source>
         <translation>Schreibe die Regel hier:</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockTreeWidget.py" line="167"/>
-        <source>Add Rule</source>
-        <translation>Regel hinzufügen</translation>
-    </message>
-    <message>
         <location filename="Helpviewer/AdBlock/AdBlockTreeWidget.py" line="169"/>
+        <source>Add Rule</source>
+        <translation>Regel hinzufügen</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockTreeWidget.py" line="171"/>
         <source>Remove Rule</source>
         <translation>Regel löschen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockTreeWidget.py" line="221"/>
+        <location filename="Helpviewer/AdBlock/AdBlockTreeWidget.py" line="223"/>
         <source>{0} (recently updated)</source>
         <translation>{0} (kürzlich aktualisiert)</translation>
     </message>
@@ -366,7 +366,7 @@
 <context>
     <name>AddBookmarkDialog</name>
     <message>
-        <location filename="Helpviewer/Bookmarks/AddBookmarkDialog.py" line="195"/>
+        <location filename="Helpviewer/Bookmarks/AddBookmarkDialog.py" line="197"/>
         <source>Add Bookmark</source>
         <translation>Lesezeichen hinzufügen</translation>
     </message>
@@ -381,17 +381,17 @@
         <translation>Gib die Adresse ein</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/AddBookmarkDialog.py" line="109"/>
+        <location filename="Helpviewer/Bookmarks/AddBookmarkDialog.py" line="111"/>
         <source>Url</source>
         <translation>URL</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/AddBookmarkDialog.py" line="110"/>
+        <location filename="Helpviewer/Bookmarks/AddBookmarkDialog.py" line="112"/>
         <source>Title</source>
         <translation>Titel</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/AddBookmarkDialog.py" line="192"/>
+        <location filename="Helpviewer/Bookmarks/AddBookmarkDialog.py" line="194"/>
         <source>Add Folder</source>
         <translation>Ordner hinzufügen</translation>
     </message>
@@ -424,7 +424,7 @@
 <context>
     <name>AddDirectoryDialog</name>
     <message>
-        <location filename="Project/AddDirectoryDialog.py" line="96"/>
+        <location filename="Project/AddDirectoryDialog.py" line="98"/>
         <source>Select directory</source>
         <translation>Wähle ein Verzeichnis</translation>
     </message>
@@ -521,27 +521,27 @@
         <translation>&amp;Dateityp:</translation>
     </message>
     <message>
-        <location filename="Project/AddDirectoryDialog.py" line="60"/>
+        <location filename="Project/AddDirectoryDialog.py" line="62"/>
         <source>Source Files</source>
         <translation>Quelldateien</translation>
     </message>
     <message>
-        <location filename="Project/AddDirectoryDialog.py" line="61"/>
-        <source>Forms Files</source>
-        <translation>Formulare</translation>
-    </message>
-    <message>
         <location filename="Project/AddDirectoryDialog.py" line="63"/>
+        <source>Forms Files</source>
+        <translation>Formulare</translation>
+    </message>
+    <message>
+        <location filename="Project/AddDirectoryDialog.py" line="65"/>
         <source>Interface Files</source>
         <translation>Corba IDL Dateien</translation>
     </message>
     <message>
+        <location filename="Project/AddDirectoryDialog.py" line="66"/>
+        <source>Other Files (*)</source>
+        <translation>Andere Dateien (*)</translation>
+    </message>
+    <message>
         <location filename="Project/AddDirectoryDialog.py" line="64"/>
-        <source>Other Files (*)</source>
-        <translation>Andere Dateien (*)</translation>
-    </message>
-    <message>
-        <location filename="Project/AddDirectoryDialog.py" line="62"/>
         <source>Resource Files</source>
         <translation>Resource Dateien</translation>
     </message>
@@ -549,37 +549,37 @@
 <context>
     <name>AddFileDialog</name>
     <message>
-        <location filename="Project/AddFileDialog.py" line="62"/>
+        <location filename="Project/AddFileDialog.py" line="64"/>
         <source>Select target directory</source>
         <translation>Wähle das Zielverzeichnis</translation>
     </message>
     <message>
-        <location filename="Project/AddFileDialog.py" line="146"/>
+        <location filename="Project/AddFileDialog.py" line="148"/>
         <source>All Files (*)</source>
         <translation>Alle Dateien (*)</translation>
     </message>
     <message>
-        <location filename="Project/AddFileDialog.py" line="104"/>
+        <location filename="Project/AddFileDialog.py" line="106"/>
         <source>Select Files</source>
         <translation>Dateien auswählen</translation>
     </message>
     <message>
-        <location filename="Project/AddFileDialog.py" line="112"/>
+        <location filename="Project/AddFileDialog.py" line="114"/>
         <source>Select user-interface files</source>
         <translation>Qt-Formulardateien auswählen</translation>
     </message>
     <message>
-        <location filename="Project/AddFileDialog.py" line="128"/>
+        <location filename="Project/AddFileDialog.py" line="130"/>
         <source>Select source files</source>
         <translation>Quellcodedateien auswählen</translation>
     </message>
     <message>
-        <location filename="Project/AddFileDialog.py" line="136"/>
+        <location filename="Project/AddFileDialog.py" line="138"/>
         <source>Select interface files</source>
         <translation>Corba IDL Dateien auswählen</translation>
     </message>
     <message>
-        <location filename="Project/AddFileDialog.py" line="147"/>
+        <location filename="Project/AddFileDialog.py" line="149"/>
         <source>Select files</source>
         <translation>Dateien auswählen</translation>
     </message>
@@ -671,42 +671,42 @@
         <translation>Alt+T</translation>
     </message>
     <message>
-        <location filename="Project/AddFileDialog.py" line="120"/>
+        <location filename="Project/AddFileDialog.py" line="122"/>
         <source>Select resource files</source>
         <translation>Resourcedatei auswählen</translation>
     </message>
     <message>
+        <location filename="Project/AddFileDialog.py" line="146"/>
+        <source>Select translation files</source>
+        <translation>Wähle Übersetzungsdateien</translation>
+    </message>
+    <message>
+        <location filename="Project/AddFileDialog.py" line="112"/>
+        <source>Forms Files ({0})</source>
+        <translation>Formulare ({0})</translation>
+    </message>
+    <message>
+        <location filename="Project/AddFileDialog.py" line="120"/>
+        <source>Resource Files ({0})</source>
+        <translation>Resource Dateien ({0})</translation>
+    </message>
+    <message>
+        <location filename="Project/AddFileDialog.py" line="128"/>
+        <source>Source Files ({0});;All Files (*)</source>
+        <translation>Quelldateien ({0});;Alle Dateien (*)</translation>
+    </message>
+    <message>
+        <location filename="Project/AddFileDialog.py" line="136"/>
+        <source>Interface Files ({0})</source>
+        <translation>Corba IDL Dateien ({0})</translation>
+    </message>
+    <message>
+        <location filename="Project/AddFileDialog.py" line="94"/>
+        <source>Source Files ({0});;Forms Files ({1});;Resource Files ({2});;Interface Files ({3});;Translation Files ({4});;All Files (*)</source>
+        <translation>Quelldateien ({0});;Formulare ({1});;Resource Dateien ({2});;Corba IDL Dateien ({3});;Übersetzungs-Dateien ({4});;Alle Dateien (*)</translation>
+    </message>
+    <message>
         <location filename="Project/AddFileDialog.py" line="144"/>
-        <source>Select translation files</source>
-        <translation>Wähle Übersetzungsdateien</translation>
-    </message>
-    <message>
-        <location filename="Project/AddFileDialog.py" line="110"/>
-        <source>Forms Files ({0})</source>
-        <translation>Formulare ({0})</translation>
-    </message>
-    <message>
-        <location filename="Project/AddFileDialog.py" line="118"/>
-        <source>Resource Files ({0})</source>
-        <translation>Resource Dateien ({0})</translation>
-    </message>
-    <message>
-        <location filename="Project/AddFileDialog.py" line="126"/>
-        <source>Source Files ({0});;All Files (*)</source>
-        <translation>Quelldateien ({0});;Alle Dateien (*)</translation>
-    </message>
-    <message>
-        <location filename="Project/AddFileDialog.py" line="134"/>
-        <source>Interface Files ({0})</source>
-        <translation>Corba IDL Dateien ({0})</translation>
-    </message>
-    <message>
-        <location filename="Project/AddFileDialog.py" line="92"/>
-        <source>Source Files ({0});;Forms Files ({1});;Resource Files ({2});;Interface Files ({3});;Translation Files ({4});;All Files (*)</source>
-        <translation>Quelldateien ({0});;Formulare ({1});;Resource Dateien ({2});;Corba IDL Dateien ({3});;Übersetzungs-Dateien ({4});;Alle Dateien (*)</translation>
-    </message>
-    <message>
-        <location filename="Project/AddFileDialog.py" line="142"/>
         <source>Translation Files ({0})</source>
         <translation>Übersetzungs-Dateien ({0})</translation>
     </message>
@@ -729,22 +729,22 @@
         <translation>Liste der gefundenen Dateien.</translation>
     </message>
     <message>
-        <location filename="Project/AddFoundFilesDialog.py" line="41"/>
+        <location filename="Project/AddFoundFilesDialog.py" line="43"/>
         <source>Add all files.</source>
         <translation>Alle Datein hinzufügen.</translation>
     </message>
     <message>
+        <location filename="Project/AddFoundFilesDialog.py" line="46"/>
+        <source>Add selected files only.</source>
+        <translation>Ausgewählte Dateien hinzufügen.</translation>
+    </message>
+    <message>
+        <location filename="Project/AddFoundFilesDialog.py" line="41"/>
+        <source>Add All</source>
+        <translation>Alle hinzufügen</translation>
+    </message>
+    <message>
         <location filename="Project/AddFoundFilesDialog.py" line="44"/>
-        <source>Add selected files only.</source>
-        <translation>Ausgewählte Dateien hinzufügen.</translation>
-    </message>
-    <message>
-        <location filename="Project/AddFoundFilesDialog.py" line="39"/>
-        <source>Add All</source>
-        <translation>Alle hinzufügen</translation>
-    </message>
-    <message>
-        <location filename="Project/AddFoundFilesDialog.py" line="42"/>
         <source>Add Selected</source>
         <translation>Auswahl hinzufügen</translation>
     </message>
@@ -1084,7 +1084,7 @@
 <context>
     <name>AddProjectDialog</name>
     <message>
-        <location filename="MultiProject/AddProjectDialog.py" line="62"/>
+        <location filename="MultiProject/AddProjectDialog.py" line="64"/>
         <source>Add Project</source>
         <translation>Projekt hinzufügen</translation>
     </message>
@@ -1139,12 +1139,12 @@
         <translation>&amp;Beschreibung:</translation>
     </message>
     <message>
-        <location filename="MultiProject/AddProjectDialog.py" line="44"/>
+        <location filename="MultiProject/AddProjectDialog.py" line="46"/>
         <source>Project Properties</source>
         <translation>Projekteigenschaften</translation>
     </message>
     <message>
-        <location filename="MultiProject/AddProjectDialog.py" line="62"/>
+        <location filename="MultiProject/AddProjectDialog.py" line="64"/>
         <source>Project Files (*.e4p)</source>
         <translation>Projektdateien (*.e4p)</translation>
     </message>
@@ -1152,32 +1152,32 @@
 <context>
     <name>ApplicationDiagramBuilder</name>
     <message>
-        <location filename="Graphics/ApplicationDiagramBuilder.py" line="42"/>
+        <location filename="Graphics/ApplicationDiagramBuilder.py" line="44"/>
         <source>Application Diagram {0}</source>
         <translation>Applikations-Diagramm {0}</translation>
     </message>
     <message>
-        <location filename="Graphics/ApplicationDiagramBuilder.py" line="62"/>
+        <location filename="Graphics/ApplicationDiagramBuilder.py" line="64"/>
         <source>Parsing modules...</source>
         <translation>Module werden gelesen...</translation>
     </message>
     <message>
-        <location filename="Graphics/ApplicationDiagramBuilder.py" line="185"/>
-        <source>&lt;&lt;Application&gt;&gt;</source>
-        <translation>&lt;&lt;Applikation&gt;&gt;</translation>
-    </message>
-    <message>
         <location filename="Graphics/ApplicationDiagramBuilder.py" line="187"/>
+        <source>&lt;&lt;Application&gt;&gt;</source>
+        <translation>&lt;&lt;Applikation&gt;&gt;</translation>
+    </message>
+    <message>
+        <location filename="Graphics/ApplicationDiagramBuilder.py" line="189"/>
         <source>&lt;&lt;Others&gt;&gt;</source>
         <translation>&lt;&lt;Sonstige&gt;&gt;</translation>
     </message>
     <message>
-        <location filename="Graphics/ApplicationDiagramBuilder.py" line="270"/>
+        <location filename="Graphics/ApplicationDiagramBuilder.py" line="272"/>
         <source>Load Diagram</source>
         <translation>Diagramm laden</translation>
     </message>
     <message>
-        <location filename="Graphics/ApplicationDiagramBuilder.py" line="270"/>
+        <location filename="Graphics/ApplicationDiagramBuilder.py" line="272"/>
         <source>&lt;p&gt;The diagram belongs to the project &lt;b&gt;{0}&lt;/b&gt;. Shall this project be opened?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Das Diagramm gehört zum Projekt &lt;b&gt;{0}&lt;/b&gt;. Soll dieses Projekt geöffnet werden?&lt;/p&gt;</translation>
     </message>
@@ -1401,22 +1401,22 @@
         <translation>&lt;b&gt;Lesezeichen hinzufügen/bearbeiten&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/UrlBar/BookmarkActionSelectionDialog.py" line="47"/>
+        <location filename="Helpviewer/UrlBar/BookmarkActionSelectionDialog.py" line="49"/>
         <source>Add Bookmark</source>
         <translation>Lesezeichen hinzufügen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/UrlBar/BookmarkActionSelectionDialog.py" line="50"/>
+        <location filename="Helpviewer/UrlBar/BookmarkActionSelectionDialog.py" line="52"/>
         <source>Edit Bookmark</source>
         <translation>Lesezeichen bearbeiten</translation>
     </message>
     <message>
-        <location filename="Helpviewer/UrlBar/BookmarkActionSelectionDialog.py" line="54"/>
+        <location filename="Helpviewer/UrlBar/BookmarkActionSelectionDialog.py" line="56"/>
         <source>Remove from Speed Dial</source>
         <translation>Von Schnellwahl löschen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/UrlBar/BookmarkActionSelectionDialog.py" line="57"/>
+        <location filename="Helpviewer/UrlBar/BookmarkActionSelectionDialog.py" line="59"/>
         <source>Add to Speed Dial</source>
         <translation>Zur Schnellwahl hinzufügen</translation>
     </message>
@@ -1636,62 +1636,62 @@
 <context>
     <name>Bookmarks</name>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="126"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="132"/>
         <source>Mercurial Bookmark</source>
         <translation>Mercurial Lesezeichen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="144"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="150"/>
         <source>Delete Bookmark</source>
         <translation>Lesezeichen löschen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="144"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="150"/>
         <source>Select the bookmark to be deleted:</source>
         <translation>Wähle das zu löschende Lesezeichen aus:</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="156"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="162"/>
         <source>Delete Mercurial Bookmark</source>
         <translation>Mercurial Lesezeichen löschen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="185"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="191"/>
         <source>Rename Mercurial Bookmark</source>
         <translation>Mercurial Lesezeichen umbenennen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="219"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="225"/>
         <source>Move Mercurial Bookmark</source>
         <translation>Mercurial Lesezeichen verschieben</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="305"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="311"/>
         <source>Pull Bookmark</source>
         <translation>Lesezeichen herunterladen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="305"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="311"/>
         <source>Select the bookmark to be pulled:</source>
         <translation>Wähle das herunterzuladende Lesezeichen:</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="317"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="323"/>
         <source>Pulling bookmark from a remote Mercurial repository</source>
         <translation>Lade Lesezeichen von einem entfernten Mercurial Repository herunter</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="339"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="345"/>
         <source>Push Bookmark</source>
         <translation>Lesezeichen hochladen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="339"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="345"/>
         <source>Select the bookmark to be push:</source>
         <translation>Wähle das hochzuladende Lesezeichen:</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="351"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/bookmarks.py" line="357"/>
         <source>Pushing bookmark to a remote Mercurial repository</source>
         <translation>Lade Lesezeichen zu einem entfernten Mercurial Repository hoch</translation>
     </message>
@@ -1719,32 +1719,32 @@
         <translation>&amp;Ordner hinzufügen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksDialog.py" line="138"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksDialog.py" line="140"/>
         <source>&amp;Open</source>
         <translation>Ö&amp;ffnen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksDialog.py" line="139"/>
-        <source>Open in New &amp;Tab</source>
-        <translation>In neuem &amp;Register öffnen</translation>
-    </message>
-    <message>
         <location filename="Helpviewer/Bookmarks/BookmarksDialog.py" line="141"/>
+        <source>Open in New &amp;Tab</source>
+        <translation>In neuem &amp;Register öffnen</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Bookmarks/BookmarksDialog.py" line="143"/>
         <source>Edit &amp;Name</source>
         <translation>&amp;Namen editieren</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksDialog.py" line="144"/>
-        <source>Edit &amp;Address</source>
-        <translation>&amp;Adresse editieren</translation>
-    </message>
-    <message>
         <location filename="Helpviewer/Bookmarks/BookmarksDialog.py" line="146"/>
+        <source>Edit &amp;Address</source>
+        <translation>&amp;Adresse editieren</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Bookmarks/BookmarksDialog.py" line="148"/>
         <source>&amp;Delete</source>
         <translation>&amp;Löschen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksDialog.py" line="252"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksDialog.py" line="254"/>
         <source>New Folder</source>
         <translation>Neuer Ordner</translation>
     </message>
@@ -1754,7 +1754,7 @@
         <translation>Drücken, um die ausgwählten Einträge zu löschen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksDialog.py" line="149"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksDialog.py" line="151"/>
         <source>&amp;Properties...</source>
         <translation>&amp;Eigenschaften...</translation>
     </message>
@@ -1782,27 +1782,27 @@
         <translation>Abbrechen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksImportDialog.py" line="85"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksImportDialog.py" line="87"/>
         <source>Choose Directory ...</source>
         <translation>Wähle Verzeichnis ...</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksImportDialog.py" line="95"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksImportDialog.py" line="97"/>
         <source>Choose File ...</source>
         <translation>Wähle Datei ...</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksImportDialog.py" line="119"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksImportDialog.py" line="121"/>
         <source>&lt;b&gt;Importing from {0}&lt;/b&gt;</source>
         <translation>&lt;b&gt;Imprtiere von {0}&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksImportDialog.py" line="125"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksImportDialog.py" line="127"/>
         <source>Finish</source>
         <translation>Abschließen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksImportDialog.py" line="140"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksImportDialog.py" line="142"/>
         <source>Error importing bookmarks</source>
         <translation>Fehler beim Importieren von Lesezeichen</translation>
     </message>
@@ -1820,12 +1820,12 @@
 <context>
     <name>BookmarksImporters</name>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksImporters/__init__.py" line="42"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksImporters/__init__.py" line="44"/>
         <source>XBEL File</source>
         <translation>XBEL Datei</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksImporters/__init__.py" line="46"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksImporters/__init__.py" line="48"/>
         <source>HTML File</source>
         <translation>HTML Datei</translation>
     </message>
@@ -1833,89 +1833,89 @@
 <context>
     <name>BookmarksManager</name>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="24"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="26"/>
         <source>Bookmarks Bar</source>
         <translation>Lesezeichenleiste</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="25"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="27"/>
         <source>Bookmarks Menu</source>
         <translation>Lesezeichenmenü</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="132"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="134"/>
         <source>Loading Bookmarks</source>
         <translation>Lesezeichen laden</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="144"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="146"/>
         <source>Toolbar Bookmarks</source>
         <translation>Lesezeichenleiste</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="150"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="152"/>
         <source>Menu</source>
         <translation>Menü</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="194"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="196"/>
         <source>Saving Bookmarks</source>
         <translation>Lesezeichen speichern</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="194"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="196"/>
         <source>Error saving bookmarks to &lt;b&gt;{0}&lt;/b&gt;.</source>
         <translation>Fehler beim Speichern der Lesezeichen in &lt;b&gt;{0}&lt;/b&gt;.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="350"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="352"/>
         <source>Export Bookmarks</source>
         <translation>Lesezeichen exportieren</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="374"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="376"/>
         <source>Exporting Bookmarks</source>
         <translation>Lesezeichen exportieren</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="374"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="376"/>
         <source>Error exporting bookmarks to &lt;b&gt;{0}&lt;/b&gt;.</source>
         <translation>Fehler beim Exportieren der Lesezeichen in &lt;b&gt;{0}&lt;/b&gt;.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="389"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="391"/>
         <source>Converted {0}</source>
         <translation>Umgewandelt {0}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="509"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="511"/>
         <source>Remove Bookmark</source>
         <translation>Lesezeichen löschen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="549"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="551"/>
         <source>Insert Bookmark</source>
         <translation>Lesezeichen einfügen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="588"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="590"/>
         <source>Name Change</source>
         <translation>Namensänderung</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="591"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="593"/>
         <source>Address Change</source>
         <translation>Adressenänderung</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="132"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="134"/>
         <source>Error when loading bookmarks on line {0}, column {1}:
 {2}</source>
         <translation>Fehler beim Laden der Lesezeichen in Zeile {0}, Spalte {1}:
 {2}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="350"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksManager.py" line="352"/>
         <source>XBEL bookmarks (*.xbel);;XBEL bookmarks (*.xml);;HTML Bookmarks (*.html)</source>
         <translation>XBEL Lesezeichen (*.xbel);;XBEL Lesezeichen (*.xml);;HTML Lesezeichen (*.html)</translation>
     </message>
@@ -1923,27 +1923,27 @@
 <context>
     <name>BookmarksMenu</name>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksMenu.py" line="95"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksMenu.py" line="97"/>
         <source>Open all in Tabs</source>
         <translation>Alle in Tabs öffnen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksMenu.py" line="137"/>
-        <source>&amp;Open</source>
-        <translation>Ö&amp;ffnen</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksMenu.py" line="144"/>
-        <source>&amp;Remove</source>
-        <translation>&amp;Entfernen</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksMenu.py" line="148"/>
-        <source>&amp;Properties...</source>
-        <translation>&amp;Eigenschaften...</translation>
-    </message>
-    <message>
         <location filename="Helpviewer/Bookmarks/BookmarksMenu.py" line="139"/>
+        <source>&amp;Open</source>
+        <translation>Ö&amp;ffnen</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Bookmarks/BookmarksMenu.py" line="146"/>
+        <source>&amp;Remove</source>
+        <translation>&amp;Entfernen</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Bookmarks/BookmarksMenu.py" line="150"/>
+        <source>&amp;Properties...</source>
+        <translation>&amp;Eigenschaften...</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Bookmarks/BookmarksMenu.py" line="141"/>
         <source>Open in New &amp;Tab	Ctrl+LMB</source>
         <translation>In neuem &amp;Register öffnen	Strg+LMK</translation>
     </message>
@@ -1951,17 +1951,17 @@
 <context>
     <name>BookmarksMenuBarMenu</name>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksMenu.py" line="270"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksMenu.py" line="272"/>
         <source>Default Home Page</source>
         <translation>Stadard Startseite</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksMenu.py" line="273"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksMenu.py" line="275"/>
         <source>Speed Dial</source>
         <translation>Schnellwahl</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksMenu.py" line="277"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksMenu.py" line="279"/>
         <source>Open all in Tabs</source>
         <translation>Alle in Tabs öffnen</translation>
     </message>
@@ -1969,12 +1969,12 @@
 <context>
     <name>BookmarksModel</name>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksModel.py" line="44"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksModel.py" line="46"/>
         <source>Title</source>
         <translation>Titel</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksModel.py" line="45"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksModel.py" line="47"/>
         <source>Address</source>
         <translation>Adresse</translation>
     </message>
@@ -1982,167 +1982,167 @@
 <context>
     <name>BookmarksProjectHelper</name>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="33"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="35"/>
         <source>List bookmarks</source>
         <translation>Lesezeichen listen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="33"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="35"/>
         <source>List bookmarks...</source>
         <translation>Lesezeichen listen...</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="37"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="39"/>
         <source>List bookmarks of the project</source>
         <translation>Listet Lesezeichen des Projektes</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="40"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="42"/>
         <source>&lt;b&gt;List bookmarks&lt;/b&gt;&lt;p&gt;This lists the bookmarks of the project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Lesezeichen listen&lt;/b&gt;&lt;p&gt;Dies listet die Lesezeichen des Projektes.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="47"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="49"/>
         <source>Define bookmark</source>
         <translation>Lesezeichen hinzufügen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="47"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="49"/>
         <source>Define bookmark...</source>
         <translation>Lesezeichen hinzufügen...</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="51"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="53"/>
         <source>Define a bookmark for the project</source>
         <translation>Fügt dem Projekt ein Lesezeichen hinzu</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="54"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="56"/>
         <source>&lt;b&gt;Define bookmark&lt;/b&gt;&lt;p&gt;This defines a bookmark for the project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Lesezeichen hinzufügen&lt;/b&gt;&lt;p&gt;Dies fügt dem Projekt ein Lesezeichen hinzu.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="61"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="63"/>
         <source>Delete bookmark</source>
         <translation>Lesezeichen löschen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="61"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="63"/>
         <source>Delete bookmark...</source>
         <translation>Lesezeichen löschen...</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="65"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="67"/>
         <source>Delete a bookmark of the project</source>
         <translation>Löscht ein Lesezeichen aus dem Projekt</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="68"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="70"/>
         <source>&lt;b&gt;Delete bookmark&lt;/b&gt;&lt;p&gt;This deletes a bookmark of the project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Lesezeichen löschen&lt;/b&gt;&lt;p&gt;Dies löscht ein Lesezeichen aus dem Projekt.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="75"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="77"/>
         <source>Rename bookmark</source>
         <translation>Lesezeichen umbenennen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="75"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="77"/>
         <source>Rename bookmark...</source>
         <translation>Lesezeichen umbenennen...</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="79"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="81"/>
         <source>Rename a bookmark of the project</source>
         <translation>Benennt ein Lesezeichen des Projektes um</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="82"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="84"/>
         <source>&lt;b&gt;Rename bookmark&lt;/b&gt;&lt;p&gt;This renames a bookmark of the project.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Lesezeichen umbenennen&lt;/b&gt;&lt;p&gt;Dies benennt ein Lesezeichen des Projektes um&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="89"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="91"/>
         <source>Move bookmark</source>
         <translation>Lesezeichen verschieben</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="89"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="91"/>
         <source>Move bookmark...</source>
         <translation>Lesezeichen verschieben...</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="93"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="95"/>
         <source>Move a bookmark of the project</source>
         <translation>Verschiebt ein Lesezeichen des Projektes</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="96"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="98"/>
         <source>&lt;b&gt;Move bookmark&lt;/b&gt;&lt;p&gt;This moves a bookmark of the project to another changeset.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Lesezeichen verschieben&lt;/b&gt;&lt;p&gt;Dies verschiebt ein Lesezeichen des Projektes.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="103"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="105"/>
         <source>Show incoming bookmarks</source>
         <translation>Zeige eingehende Lesezeichen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="107"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="109"/>
         <source>Show a list of incoming bookmarks</source>
         <translation>Zeigt eine Liste eingehender Lesezeichen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="110"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="112"/>
         <source>&lt;b&gt;Show incoming bookmarks&lt;/b&gt;&lt;p&gt;This shows a list of new bookmarks available at the remote repository.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Zeige eingehende Lesezeichen&lt;/b&gt;&lt;p&gt;Dies zeigt eine Liste neuer Lesezeichen, die in einem entfernten Repository verfügbar sind, an.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="118"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="120"/>
         <source>Pull bookmark</source>
         <translation>Lesezeichen herunterladen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="122"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="124"/>
         <source>Pull a bookmark from a remote repository</source>
         <translation>Ein Lesezeichen von einem entfernten Repository herunterladen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="125"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="127"/>
         <source>&lt;b&gt;Pull bookmark&lt;/b&gt;&lt;p&gt;This pulls a bookmark from a remote repository into the local repository.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Lesezeichen herunterladen&lt;/b&gt;&lt;p&gt;Dies lädt ein Lesezeichen von einem entfernten Repository in das lokale Repository herunter.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="133"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="135"/>
         <source>Show outgoing bookmarks</source>
         <translation>Zeige ausgehende Lesezeichen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="137"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="139"/>
         <source>Show a list of outgoing bookmarks</source>
         <translation>Zeigt eine Liste ausgehender Lesezeichen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="140"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="142"/>
         <source>&lt;b&gt;Show outgoing bookmarks&lt;/b&gt;&lt;p&gt;This shows a list of new bookmarks available at the local repository.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Zeige ausgehende Lesezeichen&lt;/b&gt;&lt;p&gt;Dies zeigt eine Liste neuer Lesezeichen, die im lokalen Repository verfügbar sind, an.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="148"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="150"/>
         <source>Push bookmark</source>
         <translation>Lesezeichen hochladen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="152"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="154"/>
         <source>Push a bookmark to a remote repository</source>
         <translation>Ein Lesezeichen an ein entferntes Repository hochladen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="155"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="157"/>
         <source>&lt;b&gt;Push bookmark&lt;/b&gt;&lt;p&gt;This pushes a bookmark from the local repository to a remote repository.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Lesezeichen hochladen&lt;/b&gt;&lt;p&gt;Dies lädt ein Lesezeichen vom lokalen Repository an ein entferntes Repository hoch.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="195"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/BookmarksExtension/ProjectHelper.py" line="197"/>
         <source>Bookmarks</source>
         <translation>Lesezeichen</translation>
     </message>
@@ -2150,37 +2150,37 @@
 <context>
     <name>BookmarksToolBar</name>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksToolBar.py" line="39"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksToolBar.py" line="41"/>
         <source>Bookmarks</source>
         <translation>Lesezeichen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksToolBar.py" line="85"/>
-        <source>&amp;Open</source>
-        <translation>Ö&amp;ffnen</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksToolBar.py" line="92"/>
-        <source>&amp;Remove</source>
-        <translation>&amp;Entfernen</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksToolBar.py" line="100"/>
-        <source>Add &amp;Bookmark...</source>
-        <translation>&amp;Lesezeichen hinzufügen...</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksToolBar.py" line="101"/>
-        <source>Add &amp;Folder...</source>
-        <translation>&amp;Ordner hinzufügen...</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksToolBar.py" line="96"/>
-        <source>&amp;Properties...</source>
-        <translation>&amp;Eigenschaften...</translation>
-    </message>
-    <message>
         <location filename="Helpviewer/Bookmarks/BookmarksToolBar.py" line="87"/>
+        <source>&amp;Open</source>
+        <translation>Ö&amp;ffnen</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Bookmarks/BookmarksToolBar.py" line="94"/>
+        <source>&amp;Remove</source>
+        <translation>&amp;Entfernen</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Bookmarks/BookmarksToolBar.py" line="102"/>
+        <source>Add &amp;Bookmark...</source>
+        <translation>&amp;Lesezeichen hinzufügen...</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Bookmarks/BookmarksToolBar.py" line="103"/>
+        <source>Add &amp;Folder...</source>
+        <translation>&amp;Ordner hinzufügen...</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Bookmarks/BookmarksToolBar.py" line="98"/>
+        <source>&amp;Properties...</source>
+        <translation>&amp;Eigenschaften...</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Bookmarks/BookmarksToolBar.py" line="89"/>
         <source>Open in New &amp;Tab	Ctrl+LMB</source>
         <translation>In neuem &amp;Register öffnen	Strg+LMK</translation>
     </message>
@@ -2188,32 +2188,32 @@
 <context>
     <name>BreakPointModel</name>
     <message>
-        <location filename="Debugger/BreakPointModel.py" line="29"/>
+        <location filename="Debugger/BreakPointModel.py" line="31"/>
         <source>Filename</source>
         <translation>Dateiname</translation>
     </message>
     <message>
-        <location filename="Debugger/BreakPointModel.py" line="30"/>
-        <source>Line</source>
-        <translation>Zeile</translation>
-    </message>
-    <message>
-        <location filename="Debugger/BreakPointModel.py" line="31"/>
-        <source>Condition</source>
-        <translation>Bedingung</translation>
-    </message>
-    <message>
         <location filename="Debugger/BreakPointModel.py" line="32"/>
-        <source>Temporary</source>
-        <translation>Temporär</translation>
+        <source>Line</source>
+        <translation>Zeile</translation>
     </message>
     <message>
         <location filename="Debugger/BreakPointModel.py" line="33"/>
-        <source>Enabled</source>
-        <translation>Aktiv</translation>
+        <source>Condition</source>
+        <translation>Bedingung</translation>
     </message>
     <message>
         <location filename="Debugger/BreakPointModel.py" line="34"/>
+        <source>Temporary</source>
+        <translation>Temporär</translation>
+    </message>
+    <message>
+        <location filename="Debugger/BreakPointModel.py" line="35"/>
+        <source>Enabled</source>
+        <translation>Aktiv</translation>
+    </message>
+    <message>
+        <location filename="Debugger/BreakPointModel.py" line="36"/>
         <source>Ignore Count</source>
         <translation># Ignorierungen</translation>
     </message>
@@ -2221,72 +2221,72 @@
 <context>
     <name>BreakPointViewer</name>
     <message>
-        <location filename="Debugger/BreakPointViewer.py" line="45"/>
+        <location filename="Debugger/BreakPointViewer.py" line="47"/>
         <source>Breakpoints</source>
         <translation>Haltepunkte</translation>
     </message>
     <message>
-        <location filename="Debugger/BreakPointViewer.py" line="143"/>
-        <source>Edit...</source>
-        <translation>Bearbeiten...</translation>
-    </message>
-    <message>
         <location filename="Debugger/BreakPointViewer.py" line="145"/>
+        <source>Edit...</source>
+        <translation>Bearbeiten...</translation>
+    </message>
+    <message>
+        <location filename="Debugger/BreakPointViewer.py" line="147"/>
         <source>Enable</source>
         <translation>Aktivieren</translation>
     </message>
     <message>
+        <location filename="Debugger/BreakPointViewer.py" line="178"/>
+        <source>Enable all</source>
+        <translation>Alle aktivieren</translation>
+    </message>
+    <message>
+        <location filename="Debugger/BreakPointViewer.py" line="150"/>
+        <source>Disable</source>
+        <translation>Deaktivieren</translation>
+    </message>
+    <message>
+        <location filename="Debugger/BreakPointViewer.py" line="182"/>
+        <source>Disable all</source>
+        <translation>Alle deaktivieren</translation>
+    </message>
+    <message>
+        <location filename="Debugger/BreakPointViewer.py" line="153"/>
+        <source>Delete</source>
+        <translation>Löschen</translation>
+    </message>
+    <message>
+        <location filename="Debugger/BreakPointViewer.py" line="186"/>
+        <source>Delete all</source>
+        <translation>Alle löschen</translation>
+    </message>
+    <message>
+        <location filename="Debugger/BreakPointViewer.py" line="156"/>
+        <source>Goto</source>
+        <translation>Gehe zu</translation>
+    </message>
+    <message>
         <location filename="Debugger/BreakPointViewer.py" line="176"/>
-        <source>Enable all</source>
-        <translation>Alle aktivieren</translation>
-    </message>
-    <message>
-        <location filename="Debugger/BreakPointViewer.py" line="148"/>
-        <source>Disable</source>
-        <translation>Deaktivieren</translation>
+        <source>Enable selected</source>
+        <translation>Ausgewählte aktivieren</translation>
     </message>
     <message>
         <location filename="Debugger/BreakPointViewer.py" line="180"/>
-        <source>Disable all</source>
-        <translation>Alle deaktivieren</translation>
-    </message>
-    <message>
-        <location filename="Debugger/BreakPointViewer.py" line="151"/>
-        <source>Delete</source>
-        <translation>Löschen</translation>
+        <source>Disable selected</source>
+        <translation>Ausgewählte deaktivieren</translation>
     </message>
     <message>
         <location filename="Debugger/BreakPointViewer.py" line="184"/>
-        <source>Delete all</source>
-        <translation>Alle löschen</translation>
-    </message>
-    <message>
-        <location filename="Debugger/BreakPointViewer.py" line="154"/>
-        <source>Goto</source>
-        <translation>Gehe zu</translation>
+        <source>Delete selected</source>
+        <translation>Ausgewählte löschen</translation>
     </message>
     <message>
         <location filename="Debugger/BreakPointViewer.py" line="174"/>
-        <source>Enable selected</source>
-        <translation>Ausgewählte aktivieren</translation>
-    </message>
-    <message>
-        <location filename="Debugger/BreakPointViewer.py" line="178"/>
-        <source>Disable selected</source>
-        <translation>Ausgewählte deaktivieren</translation>
-    </message>
-    <message>
-        <location filename="Debugger/BreakPointViewer.py" line="182"/>
-        <source>Delete selected</source>
-        <translation>Ausgewählte löschen</translation>
-    </message>
-    <message>
-        <location filename="Debugger/BreakPointViewer.py" line="172"/>
         <source>Add</source>
         <translation>Hinzufügen</translation>
     </message>
     <message>
-        <location filename="Debugger/BreakPointViewer.py" line="186"/>
+        <location filename="Debugger/BreakPointViewer.py" line="188"/>
         <source>Configure...</source>
         <translation>Einstellungen...</translation>
     </message>
@@ -2294,82 +2294,82 @@
 <context>
     <name>Browser</name>
     <message>
-        <location filename="UI/Browser.py" line="89"/>
+        <location filename="UI/Browser.py" line="91"/>
         <source>&lt;b&gt;The Browser Window&lt;/b&gt;&lt;p&gt;This allows you to easily navigate the hierachy of directories and files on your system, identify the Python programs and open them up in a Source Viewer window. The window displays several separate hierachies.&lt;/p&gt;&lt;p&gt;The first hierachy is only shown if you have opened a program for debugging and it&apos;s root is the directory containing that program. Usually all of the separate files that make up a Python application are held in the same directory, so this hierachy gives you easy access to most of what you will need.&lt;/p&gt;&lt;p&gt;The next hierachy is used to easily navigate the directories that are specified in the Python &lt;tt&gt;sys.path&lt;/tt&gt; variable.&lt;/p&gt;&lt;p&gt;The remaining hierachies allow you navigate your system as a whole. On a UNIX system there will be a hierachy with &lt;tt&gt;/&lt;/tt&gt; at its root and another with the user home directory. On a Windows system there will be a hierachy for each drive on the system.&lt;/p&gt;&lt;p&gt;Python programs (i.e. those with a &lt;tt&gt;.py&lt;/tt&gt; file name suffix) are identified in the hierachies with a Python icon. The right mouse button will popup a menu which lets you open the file in a Source Viewer window, open the file for debugging or use it for a unittest run.&lt;/p&gt;&lt;p&gt;The context menu of a class, function or method allows you to open the file defining this class, function or method and will ensure, that the correct source line is visible.&lt;/p&gt;&lt;p&gt;Qt-Designer files (i.e. those with a &lt;tt&gt;.ui&lt;/tt&gt; file name suffix) are shown with a Designer icon. The context menu of these files allows you to start Qt-Designer with that file.&lt;/p&gt;&lt;p&gt;Qt-Linguist files (i.e. those with a &lt;tt&gt;.ts&lt;/tt&gt; file name suffix) are shown with a Linguist icon. The context menu of these files allows you to start Qt-Linguist with that file.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Das Browser Fenster&lt;/b&gt;&lt;p&gt;Dies erlaubt es ihnen, sich leicht in der Verzeichnishierarchie ihres Systems zu bewegen, Python Programme zu identifizieren und diese in einem Quelltextfenster zu öffnen. Das Fenster stellt verschiedene Hierarchien dar.&lt;/p&gt;&lt;p&gt;Die erste wird nur angezeigt, wenn ein Programm zum debuggen geöffnet ist. Gewöhnlich werden alle zum Programm zugehörigen Python Dateien im selben Verzeichnis gespeichert, so dass sie über diese Hierarchie Zugriff auf das am meisten Benötigte haben.&lt;/p&gt;&lt;p&gt;Die nächste Hierarchie wird verwendet, um sich in den in der Python Variablen &lt;tt&gt;sys.path&lt;/tt&gt; gespeicherten Verzeichnissen zu bewegen.&lt;/p&gt;&lt;p&gt;Die restlichen Hierachien erlauben die Navigation im gesamten System. Unter UNIX wird gewöhnlich ein Verzeichnis mit &lt;tt&gt;/&lt;/tt&gt; als Wurzel und eines mit dem Home-Verzeichnis des Nutzers angezeigt. Auf einem Windows System wird eine Hierarchie pro Laufwerk angezeigt.&lt;/p&gt;&lt;p&gt;Python Programme (Dateien mit der Endung &lt;tt&gt;.py&lt;/tt&gt;) werden mit einem Python Sinnbild dargestellt. Ein Rechtsklick bringt ein Kontextmenü, über das die Datei in einem Editor, zum Debuggen oder für einen Modultest geöffnet werden kann.&lt;/p&gt;&lt;p&gt;Das Kontextmenü einer Klasse, einer Funktion oder einer Methode öffnet die Datei, in der diese Klasse, Funktion oder Methode definiert ist, und stellt sicher, dass die richtige Codezeile sichtbar ist.&lt;/p&gt;&lt;p&gt;Qt-Designer Dateien (Dateien mit der Endung &lt;tt&gt;.ui&lt;/tt&gt;) werden mit einem Designer Sinnbild dargestellt. Das Kontextmenü dieser Dateien erlaubt es, sie im Qt-Designer zu öffnen.&lt;/p&gt;&lt;p&gt;Qt-Linguist Dateien (Dateien mit der Endung &lt;tt&gt;.ts&lt;/tt&gt;) werden mit eine Linguist Sinnbild dargestellt. Das Kontextmenü dieser Dateien erlaubt es, sie im Qt-Linguist zu öffnen.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="UI/Browser.py" line="207"/>
+        <location filename="UI/Browser.py" line="209"/>
         <source>Open</source>
         <translation>Öffnen</translation>
     </message>
     <message>
-        <location filename="UI/Browser.py" line="185"/>
+        <location filename="UI/Browser.py" line="187"/>
         <source>Run unittest...</source>
         <translation>Modultest...</translation>
     </message>
     <message>
-        <location filename="UI/Browser.py" line="69"/>
+        <location filename="UI/Browser.py" line="71"/>
         <source>File-Browser</source>
         <translation>Datei-Browser</translation>
     </message>
     <message>
-        <location filename="UI/Browser.py" line="263"/>
+        <location filename="UI/Browser.py" line="265"/>
         <source>New toplevel directory...</source>
         <translation>Neuer übergeordneter Ordner...</translation>
     </message>
     <message>
-        <location filename="UI/Browser.py" line="222"/>
+        <location filename="UI/Browser.py" line="224"/>
         <source>Remove from toplevel</source>
         <translation>Vom Anfang entfernen</translation>
     </message>
     <message>
-        <location filename="UI/Browser.py" line="219"/>
+        <location filename="UI/Browser.py" line="221"/>
         <source>Add as toplevel directory</source>
         <translation>Als übergeordneten Ordner hinzufügen</translation>
     </message>
     <message>
-        <location filename="UI/Browser.py" line="466"/>
+        <location filename="UI/Browser.py" line="468"/>
         <source>New toplevel directory</source>
         <translation>Neuer übergeordneter Ordner</translation>
     </message>
     <message>
-        <location filename="UI/Browser.py" line="230"/>
+        <location filename="UI/Browser.py" line="232"/>
         <source>Find in this directory</source>
         <translation>In diesem Verzeichnis suchen</translation>
     </message>
     <message>
-        <location filename="UI/Browser.py" line="233"/>
+        <location filename="UI/Browser.py" line="235"/>
         <source>Find&amp;&amp;Replace in this directory</source>
         <translation>In diesem Verzeichnis suchen&amp;&amp;ersetzen</translation>
     </message>
     <message>
-        <location filename="UI/Browser.py" line="268"/>
+        <location filename="UI/Browser.py" line="270"/>
         <source>Configure...</source>
         <translation>Einstellungen...</translation>
     </message>
     <message>
-        <location filename="UI/Browser.py" line="195"/>
+        <location filename="UI/Browser.py" line="197"/>
         <source>Open in Icon Editor</source>
         <translation>Mit Icon Editor öffnen</translation>
     </message>
     <message>
-        <location filename="UI/Browser.py" line="236"/>
+        <location filename="UI/Browser.py" line="238"/>
         <source>Copy Path to Clipboard</source>
         <translation>Pfad in die Zwischenablage kopieren</translation>
     </message>
     <message>
-        <location filename="UI/Browser.py" line="226"/>
+        <location filename="UI/Browser.py" line="228"/>
         <source>Refresh directory</source>
         <translation>Verzeichnis aktualisieren</translation>
     </message>
     <message>
-        <location filename="UI/Browser.py" line="245"/>
+        <location filename="UI/Browser.py" line="247"/>
         <source>Goto</source>
         <translation>Gehe zu</translation>
     </message>
     <message>
-        <location filename="UI/Browser.py" line="347"/>
+        <location filename="UI/Browser.py" line="349"/>
         <source>Line {0}</source>
         <translation>Zeile {0}</translation>
     </message>
@@ -2377,27 +2377,27 @@
 <context>
     <name>BrowserModel</name>
     <message>
-        <location filename="UI/BrowserModel.py" line="44"/>
+        <location filename="UI/BrowserModel.py" line="46"/>
         <source>Name</source>
         <translation>Name</translation>
     </message>
     <message>
-        <location filename="UI/BrowserModel.py" line="602"/>
+        <location filename="UI/BrowserModel.py" line="604"/>
         <source>Attributes</source>
         <translation>Attribute</translation>
     </message>
     <message>
-        <location filename="UI/BrowserModel.py" line="556"/>
+        <location filename="UI/BrowserModel.py" line="558"/>
         <source>Coding: {0}</source>
         <translation>Kodierung: {0}</translation>
     </message>
     <message>
-        <location filename="UI/BrowserModel.py" line="561"/>
+        <location filename="UI/BrowserModel.py" line="563"/>
         <source>Globals</source>
         <translation>Globale Variablen</translation>
     </message>
     <message>
-        <location filename="UI/BrowserModel.py" line="612"/>
+        <location filename="UI/BrowserModel.py" line="614"/>
         <source>Class Attributes</source>
         <translation>Klassenattribute</translation>
     </message>
@@ -2435,37 +2435,37 @@
         <translation>Drücken, um die Aufrufverfolgung in eine Textdatei zu speichern</translation>
     </message>
     <message>
-        <location filename="Debugger/CallTraceViewer.py" line="48"/>
+        <location filename="Debugger/CallTraceViewer.py" line="50"/>
         <source>From</source>
         <translation>Von</translation>
     </message>
     <message>
-        <location filename="Debugger/CallTraceViewer.py" line="48"/>
+        <location filename="Debugger/CallTraceViewer.py" line="50"/>
         <source>To</source>
         <translation>Nach</translation>
     </message>
     <message>
-        <location filename="Debugger/CallTraceViewer.py" line="130"/>
+        <location filename="Debugger/CallTraceViewer.py" line="132"/>
         <source>Save Call Trace Info</source>
         <translation>Aufrufinformation speichern</translation>
     </message>
     <message>
-        <location filename="Debugger/CallTraceViewer.py" line="116"/>
+        <location filename="Debugger/CallTraceViewer.py" line="118"/>
         <source>Text Files (*.txt);;All Files (*)</source>
         <translation>Text Dateien (*.txt);;Alle Dateien (*)</translation>
     </message>
     <message>
-        <location filename="Debugger/CallTraceViewer.py" line="130"/>
+        <location filename="Debugger/CallTraceViewer.py" line="132"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; existiert bereits. Überschreiben?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Debugger/CallTraceViewer.py" line="153"/>
+        <location filename="Debugger/CallTraceViewer.py" line="155"/>
         <source>Error saving Call Trace Info</source>
         <translation>Fehler beim Speichern der Aufrufinformation</translation>
     </message>
     <message>
-        <location filename="Debugger/CallTraceViewer.py" line="153"/>
+        <location filename="Debugger/CallTraceViewer.py" line="155"/>
         <source>&lt;p&gt;The call trace info could not be written to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Aufrufinformationen konnten nicht nach &lt;b&gt;{0}&lt;/b&gt; geschrieben werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
@@ -2523,50 +2523,50 @@
         <translation>Zeigt den Status des Servers</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="296"/>
+        <location filename="Cooperation/ChatWidget.py" line="298"/>
         <source>Start Server</source>
         <translation>Server starten</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="150"/>
+        <location filename="Cooperation/ChatWidget.py" line="152"/>
         <source>! Unknown command: {0}
 </source>
         <translation>! Unbekannter Befehl: {0}
 </translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="171"/>
+        <location filename="Cooperation/ChatWidget.py" line="173"/>
         <source>* {0} has joined.
 </source>
         <translation>* {0} ist beigetreten.
 </translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="204"/>
+        <location filename="Cooperation/ChatWidget.py" line="206"/>
         <source>* {0} has left.
 </source>
         <translation>* {0} hat die Sitzung verlassen.
 </translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="304"/>
+        <location filename="Cooperation/ChatWidget.py" line="306"/>
         <source>Stop Server</source>
         <translation>Server anhalten</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="309"/>
+        <location filename="Cooperation/ChatWidget.py" line="311"/>
         <source>! Server Error: {0}
 </source>
         <translation>! Serverfehler: {0}
 </translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="321"/>
+        <location filename="Cooperation/ChatWidget.py" line="323"/>
         <source>Disconnect</source>
         <translation>Unterbrechen</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="325"/>
+        <location filename="Cooperation/ChatWidget.py" line="327"/>
         <source>Connect</source>
         <translation>Verbinden</translation>
     </message>
@@ -2601,37 +2601,37 @@
         <translation>Drücken, um eine verteilte Änderungssitzung abzubrechen</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="494"/>
+        <location filename="Cooperation/ChatWidget.py" line="496"/>
         <source>Clear</source>
         <translation>Löschen</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="499"/>
+        <location filename="Cooperation/ChatWidget.py" line="501"/>
         <source>Save</source>
         <translation>Speichern</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="553"/>
+        <location filename="Cooperation/ChatWidget.py" line="555"/>
         <source>Save Chat</source>
         <translation>Chat speichern</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="539"/>
+        <location filename="Cooperation/ChatWidget.py" line="541"/>
         <source>Text Files (*.txt);;All Files (*)</source>
         <translation>Text Dateien (*.txt);;Alle Dateien (*)</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="567"/>
+        <location filename="Cooperation/ChatWidget.py" line="569"/>
         <source>Error saving Chat</source>
         <translation>Fehlr beim Speichern</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="567"/>
+        <location filename="Cooperation/ChatWidget.py" line="569"/>
         <source>&lt;p&gt;The chat contents could not be written to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Der Inhalt des Chats konnte nicht nach &lt;b&gt;{0}&lt;/b&gt; geschrieben werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="480"/>
+        <location filename="Cooperation/ChatWidget.py" line="482"/>
         <source>Copy</source>
         <translation>Kopieren</translation>
     </message>
@@ -2651,75 +2651,75 @@
         <translation>Drücken, um die Hostsliste zu löschen</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="485"/>
+        <location filename="Cooperation/ChatWidget.py" line="487"/>
         <source>Cut all</source>
         <translation>Alles ausschneiden</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="489"/>
+        <location filename="Cooperation/ChatWidget.py" line="491"/>
         <source>Copy all</source>
         <translation>Alles kopieren</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="604"/>
+        <location filename="Cooperation/ChatWidget.py" line="606"/>
         <source>Kick User</source>
         <translation>Nutzer ausschließen</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="608"/>
+        <location filename="Cooperation/ChatWidget.py" line="610"/>
         <source>Ban User</source>
         <translation>Nutzer bannen</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="612"/>
+        <location filename="Cooperation/ChatWidget.py" line="614"/>
         <source>Ban and Kick User</source>
         <translation>Nutzer bannen und ausschließen</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="640"/>
+        <location filename="Cooperation/ChatWidget.py" line="642"/>
         <source>* {0} has been kicked.
 </source>
         <translation>* {0} wurde ausgeschlossen.</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="655"/>
+        <location filename="Cooperation/ChatWidget.py" line="657"/>
         <source>* {0} has been banned.
 </source>
         <translation>* {0} wurde gebannt.</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="670"/>
+        <location filename="Cooperation/ChatWidget.py" line="672"/>
         <source>* {0} has been banned and kicked.
 </source>
         <translation>* {0} wurde gebannt und ausgeschlossen.</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="553"/>
+        <location filename="Cooperation/ChatWidget.py" line="555"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; existiert bereits. Überschreiben?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="183"/>
+        <location filename="Cooperation/ChatWidget.py" line="185"/>
         <source>New User</source>
         <translation>Neuer Nutzer</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="183"/>
+        <location filename="Cooperation/ChatWidget.py" line="185"/>
         <source>{0} has joined.</source>
         <translation>{0} ist beigetreten.</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="211"/>
+        <location filename="Cooperation/ChatWidget.py" line="213"/>
         <source>User Left</source>
         <translation>Nutzer abgemeldet</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="211"/>
+        <location filename="Cooperation/ChatWidget.py" line="213"/>
         <source>{0} has left.</source>
         <translation>{0} hat die Sitzung verlassen.</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="232"/>
+        <location filename="Cooperation/ChatWidget.py" line="234"/>
         <source>Message from &lt;{0}&gt;</source>
         <translation>Nachricht von &lt;{0}&gt;</translation>
     </message>
@@ -2732,44 +2732,44 @@
 <context>
     <name>ChromeImporter</name>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksImporters/ChromeImporter.py" line="38"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksImporters/ChromeImporter.py" line="40"/>
         <source>Google Chrome stores its bookmarks in the &lt;b&gt;Bookmarks&lt;/b&gt; text file. This file is usually located in</source>
         <translation>Google Chrome speichert die Lesezeichen in der Datei &lt;b&gt;Bookmarks&lt;/b&gt;. Diese Datei befindet sich gewöhnlich in</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksImporters/ChromeImporter.py" line="55"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksImporters/ChromeImporter.py" line="57"/>
         <source>Please choose the file to begin importing bookmarks.</source>
         <translation>Bitte wähle die Datei, um den Import von Lesezeichen zu starten.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksImporters/ChromeImporter.py" line="55"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksImporters/ChromeImporter.py" line="57"/>
         <source>Chromium stores its bookmarks in the &lt;b&gt;Bookmarks&lt;/b&gt; text file. This file is usually located in</source>
         <translation>Chromium speichert die Lesezeichen in der Datei &lt;b&gt;Bookmarks&lt;/b&gt;. Diese Datei befindet sich gewöhnlich in</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksImporters/ChromeImporter.py" line="101"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksImporters/ChromeImporter.py" line="103"/>
         <source>File &apos;{0}&apos; does not exist.</source>
         <translation>Datei &apos;{0}&apos; existiert nicht.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksImporters/ChromeImporter.py" line="118"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksImporters/ChromeImporter.py" line="120"/>
         <source>File &apos;{0}&apos; cannot be read.
 Reason: {1}</source>
         <translation>Datei &apos;{0}&apos; kann nicht gelesen werden.
 Ursache: {1}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksImporters/ChromeImporter.py" line="128"/>
+        <location filename="Helpviewer/Bookmarks/BookmarksImporters/ChromeImporter.py" line="130"/>
         <source>Google Chrome Import</source>
         <translation>Google Chrome Import</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Bookmarks/BookmarksImporters/ChromeImporter.py" line="130"/>
-        <source>Chromium Import</source>
-        <translation>Chromium Import</translation>
-    </message>
-    <message>
         <location filename="Helpviewer/Bookmarks/BookmarksImporters/ChromeImporter.py" line="132"/>
+        <source>Chromium Import</source>
+        <translation>Chromium Import</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Bookmarks/BookmarksImporters/ChromeImporter.py" line="134"/>
         <source>Imported {0}</source>
         <translation>Importiert {0}</translation>
     </message>
@@ -2782,57 +2782,57 @@
         <translation>Drücken, um den Inhalt zu aktivieren; Kontextmenu für weitere Optionen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="94"/>
+        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="96"/>
         <source>Load</source>
         <translation>Laden</translation>
     </message>
     <message>
-        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="88"/>
+        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="90"/>
         <source>Object blocked by ClickToFlash</source>
         <translation>Objekt durch ClickToFlash blockiert</translation>
     </message>
     <message>
-        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="92"/>
+        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="94"/>
         <source>Show information about object</source>
         <translation>Informationen über das Objekt anzeigen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="95"/>
+        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="97"/>
         <source>Delete object</source>
         <translation>Objekt löschen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="98"/>
-        <source>Add &apos;{0}&apos; to Whitelist</source>
-        <translation>&apos;{0}&apos; zur Whitelist hinzufügen</translation>
-    </message>
-    <message>
         <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="100"/>
+        <source>Add &apos;{0}&apos; to Whitelist</source>
+        <translation>&apos;{0}&apos; zur Whitelist hinzufügen</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="102"/>
         <source>Remove &apos;{0}&apos; from Whitelist</source>
         <translation>&apos;{0}&apos; von der Whitelist löschen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="106"/>
+        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="108"/>
         <source>Configure Whitelist</source>
         <translation>Whitelist konfigurieren</translation>
     </message>
     <message>
-        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="252"/>
+        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="254"/>
         <source>Flash Object</source>
         <translation>Flash Objekt</translation>
     </message>
     <message>
-        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="255"/>
+        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="257"/>
         <source>&lt;b&gt;Attribute Name&lt;/b&gt;</source>
         <translation>&lt;b&gt;Attributname&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="255"/>
+        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="257"/>
         <source>&lt;b&gt;Value&lt;/b&gt;</source>
         <translation>&lt;b&gt;Wert&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="270"/>
+        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py" line="272"/>
         <source>No information available.</source>
         <translation>Keine Informationen verfügbar.</translation>
     </message>
@@ -2840,7 +2840,7 @@
 <context>
     <name>ClickToFlashWhitelistDialog</name>
     <message>
-        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlashWhitelistDialog.py" line="52"/>
+        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlashWhitelistDialog.py" line="54"/>
         <source>ClickToFlash Whitelist</source>
         <translation>ClickToFlash Whitelist</translation>
     </message>
@@ -2875,7 +2875,7 @@
         <translation>&amp;Alle entfernen</translation>
     </message>
     <message>
-        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlashWhitelistDialog.py" line="52"/>
+        <location filename="Helpviewer/WebPlugins/ClickToFlash/ClickToFlashWhitelistDialog.py" line="54"/>
         <source>Enter host name to add to whitelist:</source>
         <translation>Gib den hinzuzufügenden Hostnamen ein:</translation>
     </message>
@@ -2888,37 +2888,37 @@
 <context>
     <name>CodeMetricsDialog</name>
     <message>
-        <location filename="DataViews/CodeMetricsDialog.py" line="191"/>
+        <location filename="DataViews/CodeMetricsDialog.py" line="193"/>
         <source>non-commentary lines</source>
         <translation>Quelltextzeilen</translation>
     </message>
     <message>
+        <location filename="DataViews/CodeMetricsDialog.py" line="191"/>
+        <source>empty lines</source>
+        <translation>Leerzeilen</translation>
+    </message>
+    <message>
+        <location filename="DataViews/CodeMetricsDialog.py" line="190"/>
+        <source>comments</source>
+        <translation>Kommentarzeilen</translation>
+    </message>
+    <message>
         <location filename="DataViews/CodeMetricsDialog.py" line="189"/>
-        <source>empty lines</source>
-        <translation>Leerzeilen</translation>
+        <source>bytes</source>
+        <translation>Bytes</translation>
     </message>
     <message>
         <location filename="DataViews/CodeMetricsDialog.py" line="188"/>
-        <source>comments</source>
-        <translation>Kommentarzeilen</translation>
+        <source>lines</source>
+        <translation>Zeilen</translation>
     </message>
     <message>
         <location filename="DataViews/CodeMetricsDialog.py" line="187"/>
-        <source>bytes</source>
-        <translation>Bytes</translation>
-    </message>
-    <message>
-        <location filename="DataViews/CodeMetricsDialog.py" line="186"/>
-        <source>lines</source>
-        <translation>Zeilen</translation>
-    </message>
-    <message>
-        <location filename="DataViews/CodeMetricsDialog.py" line="185"/>
         <source>files</source>
         <translation>Dateien</translation>
     </message>
     <message>
-        <location filename="DataViews/CodeMetricsDialog.py" line="193"/>
+        <location filename="DataViews/CodeMetricsDialog.py" line="195"/>
         <source>documentation lines</source>
         <translation>Dokumentationszeilen</translation>
     </message>
@@ -2999,12 +2999,12 @@
         <translation>Zeigt den Fortschritt der Quelltext Metriken Ermittlung an</translation>
     </message>
     <message>
-        <location filename="DataViews/CodeMetricsDialog.py" line="48"/>
+        <location filename="DataViews/CodeMetricsDialog.py" line="50"/>
         <source>Collapse all</source>
         <translation>Alle einklappen</translation>
     </message>
     <message>
-        <location filename="DataViews/CodeMetricsDialog.py" line="49"/>
+        <location filename="DataViews/CodeMetricsDialog.py" line="51"/>
         <source>Expand all</source>
         <translation>Alle aufklappen</translation>
     </message>
@@ -3027,7 +3027,7 @@
 <context>
     <name>CodingError</name>
     <message>
-        <location filename="Utilities/__init__.py" line="94"/>
+        <location filename="Utilities/__init__.py" line="98"/>
         <source>The coding &apos;{0}&apos; is wrong for the given text.</source>
         <translation>Die Kodierung &apos;{0}&apos; ist für den übergebenen Text falsch.</translation>
     </message>
@@ -3035,27 +3035,27 @@
 <context>
     <name>ColorDialogWizard</name>
     <message>
-        <location filename="Plugins/PluginWizardQColorDialog.py" line="120"/>
+        <location filename="Plugins/PluginWizardQColorDialog.py" line="122"/>
         <source>No current editor</source>
         <translation>Kein aktueller Editor</translation>
     </message>
     <message>
-        <location filename="Plugins/PluginWizardQColorDialog.py" line="120"/>
+        <location filename="Plugins/PluginWizardQColorDialog.py" line="122"/>
         <source>Please open or create a file first.</source>
         <translation>Bitte öffnen oder erzeugen Sie zuerst eine Datei.</translation>
     </message>
     <message>
-        <location filename="Plugins/PluginWizardQColorDialog.py" line="73"/>
+        <location filename="Plugins/PluginWizardQColorDialog.py" line="75"/>
         <source>QColorDialog Wizard</source>
         <translation>QColorDialog Autopilot</translation>
     </message>
     <message>
-        <location filename="Plugins/PluginWizardQColorDialog.py" line="70"/>
+        <location filename="Plugins/PluginWizardQColorDialog.py" line="72"/>
         <source>Q&amp;ColorDialog Wizard...</source>
         <translation>Q&amp;ColorDialog Autopilot...</translation>
     </message>
     <message>
-        <location filename="Plugins/PluginWizardQColorDialog.py" line="74"/>
+        <location filename="Plugins/PluginWizardQColorDialog.py" line="76"/>
         <source>&lt;b&gt;QColorDialog Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create a QColorDialog. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
         <translation>&lt;b&gt;QColorDialog Autopilot&lt;/b&gt;&lt;p&gt;Dieser Autopilot öffnet einen Dialog zur Eingabe der Parameter, die zur Erzeugung eines QColorDialog benötigt werden. Der erzeugte Quelltext wird an der aktuellen Cursorposition eingefügt.&lt;/p&gt;</translation>
     </message>
@@ -3063,12 +3063,12 @@
 <context>
     <name>ColorDialogWizardDialog</name>
     <message>
-        <location filename="Plugins/WizardPlugins/ColorDialogWizard/ColorDialogWizardDialog.py" line="67"/>
+        <location filename="Plugins/WizardPlugins/ColorDialogWizard/ColorDialogWizardDialog.py" line="69"/>
         <source>QColorDialog Wizard Error</source>
         <translation>QColorDialog Autopilot Fehler</translation>
     </message>
     <message>
-        <location filename="Plugins/WizardPlugins/ColorDialogWizard/ColorDialogWizardDialog.py" line="67"/>
+        <location filename="Plugins/WizardPlugins/ColorDialogWizard/ColorDialogWizardDialog.py" line="69"/>
         <source>&lt;p&gt;The colour &lt;b&gt;{0}&lt;/b&gt; is not valid.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Farbe &lt;b&gt;{0}&lt;/b&gt; is ungültig.&lt;/p&gt;</translation>
     </message>
@@ -3258,7 +3258,7 @@
         <translation>Grün</translation>
     </message>
     <message>
-        <location filename="Plugins/WizardPlugins/ColorDialogWizard/ColorDialogWizardDialog.py" line="37"/>
+        <location filename="Plugins/WizardPlugins/ColorDialogWizard/ColorDialogWizardDialog.py" line="39"/>
         <source>Test</source>
         <translation>Test</translation>
     </message>
@@ -3276,17 +3276,17 @@
 <context>
     <name>CompareDialog</name>
     <message>
-        <location filename="UI/CompareDialog.py" line="240"/>
+        <location filename="UI/CompareDialog.py" line="242"/>
         <source>Compare Files</source>
         <translation>Dateien vergleichen</translation>
     </message>
     <message>
-        <location filename="UI/CompareDialog.py" line="389"/>
+        <location filename="UI/CompareDialog.py" line="391"/>
         <source>Select file to compare</source>
         <translation>Wähle eine zu vergleichende Datei</translation>
     </message>
     <message>
-        <location filename="UI/CompareDialog.py" line="240"/>
+        <location filename="UI/CompareDialog.py" line="242"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; konnte nicht gelesen werden.&lt;/p&gt;</translation>
     </message>
@@ -3331,7 +3331,7 @@
         <translation>Alt+R</translation>
     </message>
     <message>
-        <location filename="UI/CompareDialog.py" line="99"/>
+        <location filename="UI/CompareDialog.py" line="101"/>
         <source>Press to perform the comparison of the two files</source>
         <translation>Drücken, um den Dateivergleich durchzuführen</translation>
     </message>
@@ -3356,27 +3356,27 @@
         <translation>Drücken, um zum ersten Unterschied zu springen</translation>
     </message>
     <message>
-        <location filename="UI/CompareDialog.py" line="98"/>
+        <location filename="UI/CompareDialog.py" line="100"/>
         <source>Compare</source>
         <translation>Vergleichen</translation>
     </message>
     <message>
-        <location filename="UI/CompareDialog.py" line="302"/>
-        <source>Total: {0}</source>
-        <translation>Gesamt: {0}</translation>
-    </message>
-    <message>
         <location filename="UI/CompareDialog.py" line="304"/>
-        <source>Changed: {0}</source>
-        <translation>Geändert: {0}</translation>
-    </message>
-    <message>
-        <location filename="UI/CompareDialog.py" line="305"/>
-        <source>Added: {0}</source>
-        <translation>Hinzugefügt: {0}</translation>
+        <source>Total: {0}</source>
+        <translation>Gesamt: {0}</translation>
     </message>
     <message>
         <location filename="UI/CompareDialog.py" line="306"/>
+        <source>Changed: {0}</source>
+        <translation>Geändert: {0}</translation>
+    </message>
+    <message>
+        <location filename="UI/CompareDialog.py" line="307"/>
+        <source>Added: {0}</source>
+        <translation>Hinzugefügt: {0}</translation>
+    </message>
+    <message>
+        <location filename="UI/CompareDialog.py" line="308"/>
         <source>Deleted: {0}</source>
         <translation>Gelöscht: {0}</translation>
     </message>
@@ -3394,289 +3394,289 @@
 <context>
     <name>ConfigurationWidget</name>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="119"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="121"/>
         <source>Application</source>
         <translation>Applikation</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="125"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="127"/>
         <source>CORBA</source>
         <translation>CORBA</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="128"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="130"/>
         <source>Email</source>
         <translation>Email</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="131"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="133"/>
         <source>Graphics</source>
         <translation>Grafiken</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="134"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="136"/>
         <source>Icons</source>
         <translation>Symbole</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="146"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="148"/>
         <source>Plugin Manager</source>
         <translation>Plugin Manager</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="318"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="320"/>
         <source>Printer</source>
         <translation>Drucker</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="186"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="188"/>
         <source>Python</source>
         <translation>Python</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="158"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="160"/>
         <source>Qt</source>
         <translation>Qt</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="164"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="166"/>
         <source>Shell</source>
         <translation>Shell</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="167"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="169"/>
         <source>Tasks</source>
         <translation>Aufgaben</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="170"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="172"/>
         <source>Templates</source>
         <translation>Vorlagen</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="176"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="178"/>
         <source>Version Control Systems</source>
         <translation>Versionskontrollsysteme</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="180"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="182"/>
         <source>Debugger</source>
         <translation>Debugger</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="192"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="194"/>
         <source>Ruby</source>
         <translation>Ruby</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="196"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="198"/>
         <source>Editor</source>
         <translation>Editor</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="199"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="201"/>
         <source>APIs</source>
         <translation>APIs</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="202"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="204"/>
         <source>Autocompletion</source>
         <translation>Autom. Vervollständigung</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="209"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="211"/>
         <source>Calltips</source>
         <translation>Calltips</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="215"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="217"/>
         <source>General</source>
         <translation>Allgemein</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="233"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="235"/>
         <source>Typing</source>
         <translation>Eingabe</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="236"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="238"/>
         <source>Exporters</source>
         <translation>Exporter</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="240"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="242"/>
         <source>Highlighters</source>
         <translation>Syntax-Hervorhebung</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="243"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="245"/>
         <source>Filetype Associations</source>
         <translation>Dateitypzuordnungen</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="247"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="249"/>
         <source>Styles</source>
         <translation>Stile</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="325"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="327"/>
         <source>Help</source>
         <translation>Hilfe</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="331"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="333"/>
         <source>Help Documentation</source>
         <translation>Hilfe Dokumentation</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="268"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="270"/>
         <source>Help Viewers</source>
         <translation>Hilfeanzeiger</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="284"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="286"/>
         <source>Project</source>
         <translation>Projekt</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="281"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="283"/>
         <source>Project Viewer</source>
         <translation>Projektanzeige</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="287"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="289"/>
         <source>Multiproject</source>
         <translation>Mehrfachprojekt</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="312"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="314"/>
         <source>Interface</source>
         <translation>Oberfläche</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="297"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="299"/>
         <source>Viewmanager</source>
         <translation>Ansichtenmanager</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="543"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="545"/>
         <source>Configuration Page Error</source>
         <translation>Konfigurationsseitenfehler</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="543"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="545"/>
         <source>&lt;p&gt;The configuration page &lt;b&gt;{0}&lt;/b&gt; could not be loaded.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Konfigurationsseite &lt;b&gt;{0}&lt;/b&gt; konnte nicht geladen werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="218"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="220"/>
         <source>Filehandling</source>
         <translation>Dateibehandlung</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="221"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="223"/>
         <source>Searching</source>
         <translation>Suchen</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="328"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="330"/>
         <source>Appearance</source>
         <translation>Erscheinung</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="212"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="214"/>
         <source>QScintilla</source>
         <translation>QScintilla</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="227"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="229"/>
         <source>Style</source>
         <translation>Stil</translation>
     </message>
     <message>
-        <location filename="Preferences/ConfigurationDialog.py" line="254"/>
+        <location filename="Preferences/ConfigurationDialog.py" line="256"/>
         <source>Properties</source>
         <translation>Einstellungen</translation>
     </message>
     <message>