Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.

Fri, 24 Apr 2015 18:41:06 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 24 Apr 2015 18:41:06 +0200
changeset 4237
ff8a3e769fca
parent 4236
8d4e498a7af8
child 4238
53bd830433dc

Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.

APIs/Python3/eric6.api 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/eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.Plugins.PluginTabnanny.html file | annotate | diff | comparison | revisions
Plugins/CheckerPlugins/Tabnanny/Tabnanny.py file | annotate | diff | comparison | revisions
Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py file | annotate | diff | comparison | revisions
Plugins/PluginTabnanny.py file | annotate | diff | comparison | revisions
changelog file | annotate | diff | comparison | revisions
i18n/eric6_cs.ts file | annotate | diff | comparison | revisions
i18n/eric6_de.qm file | annotate | diff | comparison | revisions
i18n/eric6_de.ts file | annotate | diff | comparison | revisions
i18n/eric6_en.ts file | annotate | diff | comparison | revisions
i18n/eric6_es.ts file | annotate | diff | comparison | revisions
i18n/eric6_fr.ts file | annotate | diff | comparison | revisions
i18n/eric6_it.ts file | annotate | diff | comparison | revisions
i18n/eric6_pt.ts file | annotate | diff | comparison | revisions
i18n/eric6_ru.ts file | annotate | diff | comparison | revisions
i18n/eric6_tr.ts file | annotate | diff | comparison | revisions
i18n/eric6_zh_CN.GB2312.ts file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric6.api	Thu Apr 23 20:11:44 2015 +0200
+++ b/APIs/Python3/eric6.api	Fri Apr 24 18:41:06 2015 +0200
@@ -4038,11 +4038,15 @@
 eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.Whitespace.not_equal_witness?4(other)
 eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.Whitespace.not_less_witness?4(other)
 eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.Whitespace?1(ws)
+eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.batchCheck?4(argumentsList, send, fx, cancelled)
 eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.check?4(file, text="")
 eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.format_witnesses?4(w)
+eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.initBatchService?4()
 eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.initService?4()
 eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.process_tokens?4(tokens)
+eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.worker?4(input, output)
 eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.TabnannyDialog.check?4(codestring='')
+eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.TabnannyDialog.checkBatch?4()
 eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.TabnannyDialog.on_buttonBox_clicked?4(button)
 eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.TabnannyDialog.on_resultList_itemActivated?4(itm, col)
 eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.TabnannyDialog.on_startButton_clicked?4()
@@ -4171,7 +4175,11 @@
 eric6.Plugins.PluginSyntaxChecker.shortDescription?7
 eric6.Plugins.PluginSyntaxChecker.version?7
 eric6.Plugins.PluginTabnanny.TabnannyPlugin.activate?4()
+eric6.Plugins.PluginTabnanny.TabnannyPlugin.batchFinished?7
+eric6.Plugins.PluginTabnanny.TabnannyPlugin.batchJobDone?4(fx, lang)
+eric6.Plugins.PluginTabnanny.TabnannyPlugin.cancelIndentBatchCheck?4()
 eric6.Plugins.PluginTabnanny.TabnannyPlugin.deactivate?4()
+eric6.Plugins.PluginTabnanny.TabnannyPlugin.indentBatchCheck?4(argumentsList)
 eric6.Plugins.PluginTabnanny.TabnannyPlugin.indentCheck?4(lang, filename, source)
 eric6.Plugins.PluginTabnanny.TabnannyPlugin.indentChecked?7
 eric6.Plugins.PluginTabnanny.TabnannyPlugin.serviceErrorPy2?4(fx, lang, fn, msg)
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Thu Apr 23 20:11:44 2015 +0200
+++ b/Documentation/Help/source.qhp	Fri Apr 24 18:41:06 2015 +0200
@@ -11540,11 +11540,13 @@
       <keyword name="TabnannyDialog" id="TabnannyDialog" ref="eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog" />
       <keyword name="TabnannyDialog (Constructor)" id="TabnannyDialog (Constructor)" ref="eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.__init__" />
       <keyword name="TabnannyDialog (Module)" id="TabnannyDialog (Module)" ref="eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html" />
+      <keyword name="TabnannyDialog.__batchFinished" id="TabnannyDialog.__batchFinished" ref="eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.__batchFinished" />
       <keyword name="TabnannyDialog.__createResultItem" id="TabnannyDialog.__createResultItem" ref="eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.__createResultItem" />
       <keyword name="TabnannyDialog.__finish" id="TabnannyDialog.__finish" ref="eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.__finish" />
       <keyword name="TabnannyDialog.__processResult" id="TabnannyDialog.__processResult" ref="eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.__processResult" />
       <keyword name="TabnannyDialog.__resort" id="TabnannyDialog.__resort" ref="eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.__resort" />
       <keyword name="TabnannyDialog.check" id="TabnannyDialog.check" ref="eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.check" />
+      <keyword name="TabnannyDialog.checkBatch" id="TabnannyDialog.checkBatch" ref="eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.checkBatch" />
       <keyword name="TabnannyDialog.on_buttonBox_clicked" id="TabnannyDialog.on_buttonBox_clicked" ref="eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.on_buttonBox_clicked" />
       <keyword name="TabnannyDialog.on_resultList_itemActivated" id="TabnannyDialog.on_resultList_itemActivated" ref="eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.on_resultList_itemActivated" />
       <keyword name="TabnannyDialog.on_startButton_clicked" id="TabnannyDialog.on_startButton_clicked" ref="eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.on_startButton_clicked" />
@@ -11563,7 +11565,10 @@
       <keyword name="TabnannyPlugin.__projectTabnanny" id="TabnannyPlugin.__projectTabnanny" ref="eric6.Plugins.PluginTabnanny.html#TabnannyPlugin.__projectTabnanny" />
       <keyword name="TabnannyPlugin.__serviceError" id="TabnannyPlugin.__serviceError" ref="eric6.Plugins.PluginTabnanny.html#TabnannyPlugin.__serviceError" />
       <keyword name="TabnannyPlugin.activate" id="TabnannyPlugin.activate" ref="eric6.Plugins.PluginTabnanny.html#TabnannyPlugin.activate" />
+      <keyword name="TabnannyPlugin.batchJobDone" id="TabnannyPlugin.batchJobDone" ref="eric6.Plugins.PluginTabnanny.html#TabnannyPlugin.batchJobDone" />
+      <keyword name="TabnannyPlugin.cancelIndentBatchCheck" id="TabnannyPlugin.cancelIndentBatchCheck" ref="eric6.Plugins.PluginTabnanny.html#TabnannyPlugin.cancelIndentBatchCheck" />
       <keyword name="TabnannyPlugin.deactivate" id="TabnannyPlugin.deactivate" ref="eric6.Plugins.PluginTabnanny.html#TabnannyPlugin.deactivate" />
+      <keyword name="TabnannyPlugin.indentBatchCheck" id="TabnannyPlugin.indentBatchCheck" ref="eric6.Plugins.PluginTabnanny.html#TabnannyPlugin.indentBatchCheck" />
       <keyword name="TabnannyPlugin.indentCheck" id="TabnannyPlugin.indentCheck" ref="eric6.Plugins.PluginTabnanny.html#TabnannyPlugin.indentCheck" />
       <keyword name="TabnannyPlugin.serviceErrorPy2" id="TabnannyPlugin.serviceErrorPy2" ref="eric6.Plugins.PluginTabnanny.html#TabnannyPlugin.serviceErrorPy2" />
       <keyword name="TabnannyPlugin.serviceErrorPy3" id="TabnannyPlugin.serviceErrorPy3" ref="eric6.Plugins.PluginTabnanny.html#TabnannyPlugin.serviceErrorPy3" />
@@ -13028,6 +13033,7 @@
       <keyword name="_ClbrBase.setEndLine" id="_ClbrBase.setEndLine" ref="eric6.Utilities.ClassBrowsers.ClbrBaseClasses.html#_ClbrBase.setEndLine" />
       <keyword name="_StrikeThroughExtension" id="_StrikeThroughExtension" ref="eric6.UI.Previewers.PreviewerHTML.html#_StrikeThroughExtension" />
       <keyword name="_StrikeThroughExtension.extendMarkdown" id="_StrikeThroughExtension.extendMarkdown" ref="eric6.UI.Previewers.PreviewerHTML.html#_StrikeThroughExtension.extendMarkdown" />
+      <keyword name="__check" id="__check" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#__check" />
       <keyword name="__checkCodeStyle" id="__checkCodeStyle" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.html#__checkCodeStyle" />
       <keyword name="__getMasterPassword" id="__getMasterPassword" ref="eric6.Utilities.crypto.__init__.html#__getMasterPassword" />
       <keyword name="__getPygmentsLexer" id="__getPygmentsLexer" ref="eric6.QScintilla.Lexers.__init__.html#__getPygmentsLexer" />
@@ -13060,6 +13066,7 @@
       <keyword name="amendConfig" id="amendConfig" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnUtilities.html#amendConfig" />
       <keyword name="analyze" id="analyze" ref="eric6.DataViews.CodeMetrics.html#analyze" />
       <keyword name="append_PKCS7_padding" id="append_PKCS7_padding" ref="eric6.Utilities.crypto.py3AES.html#append_PKCS7_padding" />
+      <keyword name="batchCheck" id="batchCheck" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#batchCheck" />
       <keyword name="binplistlib (Module)" id="binplistlib (Module)" ref="eric6.Utilities.binplistlib.html" />
       <keyword name="blank_lines" id="blank_lines" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#blank_lines" />
       <keyword name="changeRememberedMaster" id="changeRememberedMaster" ref="eric6.Utilities.crypto.__init__.html#changeRememberedMaster" />
@@ -13416,6 +13423,7 @@
       <keyword name="initBatchService" id="initBatchService" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.html#initBatchService" />
       <keyword name="initBatchService" id="initBatchService" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.html#initBatchService" />
       <keyword name="initBatchService" id="initBatchService" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.jsCheckSyntax.html#initBatchService" />
+      <keyword name="initBatchService" id="initBatchService" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#initBatchService" />
       <keyword name="initDebugger" id="initDebugger" ref="eric6.DebugClients.Python.eric6dbgstub.html#initDebugger" />
       <keyword name="initDebugger" id="initDebugger" ref="eric6.DebugClients.Python3.eric6dbgstub.html#initDebugger" />
       <keyword name="initGlobals" id="initGlobals" ref="eric6.install.html#initGlobals" />
@@ -13707,6 +13715,7 @@
       <keyword name="worker" id="worker" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.html#worker" />
       <keyword name="worker" id="worker" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.html#worker" />
       <keyword name="worker" id="worker" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.jsCheckSyntax.html#worker" />
+      <keyword name="worker" id="worker" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#worker" />
       <keyword name="wrapperName" id="wrapperName" ref="eric6.install.html#wrapperName" />
       <keyword name="wrapperName" id="wrapperName" ref="eric6.uninstall.html#wrapperName" />
       <keyword name="write" id="write" ref="eric6.DebugClients.Ruby.AsyncFile.html#write" />
--- a/Documentation/Source/eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html	Thu Apr 23 20:11:44 2015 +0200
+++ b/Documentation/Source/eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html	Fri Apr 24 18:41:06 2015 +0200
@@ -57,17 +57,29 @@
 <h3>Functions</h3>
 <table>
 <tr>
+<td><a href="#__check">__check</a></td>
+<td>Private function to check one Python source file for whitespace related problems.</td>
+</tr><tr>
+<td><a href="#batchCheck">batchCheck</a></td>
+<td>Module function to check a batch of files for whitespace related problems.</td>
+</tr><tr>
 <td><a href="#check">check</a></td>
 <td>Private function to check one Python source file for whitespace related problems.</td>
 </tr><tr>
 <td><a href="#format_witnesses">format_witnesses</a></td>
 <td>Function to format the witnesses as a readable string.</td>
 </tr><tr>
+<td><a href="#initBatchService">initBatchService</a></td>
+<td>Initialize the batch service and return the entry point.</td>
+</tr><tr>
 <td><a href="#initService">initService</a></td>
 <td>Initialize the service and return the entry point.</td>
 </tr><tr>
 <td><a href="#process_tokens">process_tokens</a></td>
 <td>Function processing all tokens generated by a tokenizer run.</td>
+</tr><tr>
+<td><a href="#worker">worker</a></td>
+<td>Module function acting as the parallel worker for the style check.</td>
 </tr>
 </table>
 <hr /><hr />
@@ -312,6 +324,54 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="__check" ID="__check"></a>
+<h2>__check</h2>
+<b>__check</b>(<i>file, text=""</i>)
+<p>
+    Private function to check one Python source file for whitespace related
+    problems.
+</p><dl>
+<dt><i>file</i></dt>
+<dd>
+source filename (string)
+</dd><dt><i>text</i></dt>
+<dd>
+source text (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+A tuple indicating status (True = an error was found), the
+        filename, the linenumber and the error message
+        (boolean, string, string). 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="batchCheck" ID="batchCheck"></a>
+<h2>batchCheck</h2>
+<b>batchCheck</b>(<i>argumentsList, send, fx, cancelled</i>)
+<p>
+    Module function to check a batch of files for whitespace related problems.
+</p><dl>
+<dt><i>argumentsList</i></dt>
+<dd>
+list of arguments tuples as given for check
+</dd><dt><i>send</i></dt>
+<dd>
+reference to send function (function)
+</dd><dt><i>fx</i></dt>
+<dd>
+registered service name (string)
+</dd><dt><i>cancelled</i></dt>
+<dd>
+reference to function checking for a cancellation
+        (function)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="check" ID="check"></a>
 <h2>check</h2>
 <b>check</b>(<i>file, text=""</i>)
@@ -355,6 +415,19 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="initBatchService" ID="initBatchService"></a>
+<h2>initBatchService</h2>
+<b>initBatchService</b>(<i></i>)
+<p>
+    Initialize the batch service and return the entry point.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+the entry point for the background client (function)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="initService" ID="initService"></a>
 <h2>initService</h2>
 <b>initService</b>(<i></i>)
@@ -385,5 +458,21 @@
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="worker" ID="worker"></a>
+<h2>worker</h2>
+<b>worker</b>(<i>input, output</i>)
+<p>
+    Module function acting as the parallel worker for the style check.
+</p><dl>
+<dt><i>input</i></dt>
+<dd>
+input queue (multiprocessing.Queue)
+</dd><dt><i>output</i></dt>
+<dd>
+output queue (multiprocessing.Queue)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html	Thu Apr 23 20:11:44 2015 +0200
+++ b/Documentation/Source/eric6.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html	Fri Apr 24 18:41:06 2015 +0200
@@ -61,6 +61,9 @@
 <td><a href="#TabnannyDialog.__init__">TabnannyDialog</a></td>
 <td>Constructor</td>
 </tr><tr>
+<td><a href="#TabnannyDialog.__batchFinished">__batchFinished</a></td>
+<td>Private slot handling the completion of a batch job.</td>
+</tr><tr>
 <td><a href="#TabnannyDialog.__createResultItem">__createResultItem</a></td>
 <td>Private method to create an entry in the result list.</td>
 </tr><tr>
@@ -74,7 +77,10 @@
 <td>Private method to resort the tree.</td>
 </tr><tr>
 <td><a href="#TabnannyDialog.check">check</a></td>
-<td>Public method to start a style check for one file.</td>
+<td>Public method to start an indentation check for one file.</td>
+</tr><tr>
+<td><a href="#TabnannyDialog.checkBatch">checkBatch</a></td>
+<td>Public method to start an indentation check batch job.</td>
 </tr><tr>
 <td><a href="#TabnannyDialog.on_buttonBox_clicked">on_buttonBox_clicked</a></td>
 <td>Private slot called by a button of the button box clicked.</td>
@@ -109,7 +115,12 @@
 <dd>
 The parent widget (QWidget).
 </dd>
-</dl><a NAME="TabnannyDialog.__createResultItem" ID="TabnannyDialog.__createResultItem"></a>
+</dl><a NAME="TabnannyDialog.__batchFinished" ID="TabnannyDialog.__batchFinished"></a>
+<h4>TabnannyDialog.__batchFinished</h4>
+<b>__batchFinished</b>(<i></i>)
+<p>
+        Private slot handling the completion of a batch job.
+</p><a NAME="TabnannyDialog.__createResultItem" ID="TabnannyDialog.__createResultItem"></a>
 <h4>TabnannyDialog.__createResultItem</h4>
 <b>__createResultItem</b>(<i>file, line, sourcecode</i>)
 <p>
@@ -158,7 +169,7 @@
 <h4>TabnannyDialog.check</h4>
 <b>check</b>(<i>codestring=''</i>)
 <p>
-        Public method to start a style check for one file.
+        Public method to start an indentation check for one file.
 </p><p>
         The results are reported to the __processResult slot.
 </p><dl>
@@ -166,7 +177,14 @@
 <dd>
 optional sourcestring (str)
 </dd>
-</dl><a NAME="TabnannyDialog.on_buttonBox_clicked" ID="TabnannyDialog.on_buttonBox_clicked"></a>
+</dl><a NAME="TabnannyDialog.checkBatch" ID="TabnannyDialog.checkBatch"></a>
+<h4>TabnannyDialog.checkBatch</h4>
+<b>checkBatch</b>(<i></i>)
+<p>
+        Public method to start an indentation check batch job.
+</p><p>
+        The results are reported to the __processResult slot.
+</p><a NAME="TabnannyDialog.on_buttonBox_clicked" ID="TabnannyDialog.on_buttonBox_clicked"></a>
 <h4>TabnannyDialog.on_buttonBox_clicked</h4>
 <b>on_buttonBox_clicked</b>(<i>button</i>)
 <p>
--- a/Documentation/Source/eric6.Plugins.PluginTabnanny.html	Thu Apr 23 20:11:44 2015 +0200
+++ b/Documentation/Source/eric6.Plugins.PluginTabnanny.html	Fri Apr 24 18:41:06 2015 +0200
@@ -45,9 +45,12 @@
     Class implementing the Tabnanny plugin.
 </p><h3>Signals</h3>
 <dl>
-<dt>indentChecked(str, bool, str, str)</dt>
+<dt>batchFinished()</dt>
 <dd>
-emited when the indent
+emitted when a style check batch is done
+</dd><dt>indentChecked(str, bool, str, str)</dt>
+<dd>
+emitted when the indent
         check was done.
 </dd>
 </dl>
@@ -100,17 +103,26 @@
 <td><a href="#TabnannyPlugin.activate">activate</a></td>
 <td>Public method to activate this plugin.</td>
 </tr><tr>
+<td><a href="#TabnannyPlugin.batchJobDone">batchJobDone</a></td>
+<td>Public slot handling the completion of a batch job.</td>
+</tr><tr>
+<td><a href="#TabnannyPlugin.cancelIndentBatchCheck">cancelIndentBatchCheck</a></td>
+<td>Public method to cancel all batch jobs.</td>
+</tr><tr>
 <td><a href="#TabnannyPlugin.deactivate">deactivate</a></td>
 <td>Public method to deactivate this plugin.</td>
 </tr><tr>
+<td><a href="#TabnannyPlugin.indentBatchCheck">indentBatchCheck</a></td>
+<td>Public method to prepare an indentation check on multiple Python source files.</td>
+</tr><tr>
 <td><a href="#TabnannyPlugin.indentCheck">indentCheck</a></td>
-<td>Public method to prepare a style check on one Python source file.</td>
+<td>Public method to prepare an indentation check on one Python source file.</td>
 </tr><tr>
 <td><a href="#TabnannyPlugin.serviceErrorPy2">serviceErrorPy2</a></td>
-<td>Public method handling service errors for Python 2.</td>
+<td>Public slot handling service errors for Python 2.</td>
 </tr><tr>
 <td><a href="#TabnannyPlugin.serviceErrorPy3">serviceErrorPy3</a></td>
-<td>Public method handling service errors for Python 2.</td>
+<td>Public slot handling service errors for Python 2.</td>
 </tr>
 </table>
 <h3>Static Methods</h3>
@@ -236,16 +248,47 @@
 <dd>
 tuple of None and activation status (boolean)
 </dd>
-</dl><a NAME="TabnannyPlugin.deactivate" ID="TabnannyPlugin.deactivate"></a>
+</dl><a NAME="TabnannyPlugin.batchJobDone" ID="TabnannyPlugin.batchJobDone"></a>
+<h4>TabnannyPlugin.batchJobDone</h4>
+<b>batchJobDone</b>(<i>fx, lang</i>)
+<p>
+        Public slot handling the completion of a batch job.
+</p><dl>
+<dt><i>fx</i></dt>
+<dd>
+service name (string)
+</dd><dt><i>lang</i></dt>
+<dd>
+language (string)
+</dd>
+</dl><a NAME="TabnannyPlugin.cancelIndentBatchCheck" ID="TabnannyPlugin.cancelIndentBatchCheck"></a>
+<h4>TabnannyPlugin.cancelIndentBatchCheck</h4>
+<b>cancelIndentBatchCheck</b>(<i></i>)
+<p>
+        Public method to cancel all batch jobs.
+</p><a NAME="TabnannyPlugin.deactivate" ID="TabnannyPlugin.deactivate"></a>
 <h4>TabnannyPlugin.deactivate</h4>
 <b>deactivate</b>(<i></i>)
 <p>
         Public method to deactivate this plugin.
-</p><a NAME="TabnannyPlugin.indentCheck" ID="TabnannyPlugin.indentCheck"></a>
+</p><a NAME="TabnannyPlugin.indentBatchCheck" ID="TabnannyPlugin.indentBatchCheck"></a>
+<h4>TabnannyPlugin.indentBatchCheck</h4>
+<b>indentBatchCheck</b>(<i>argumentsList</i>)
+<p>
+        Public method to prepare an indentation check on multiple Python
+        source files.
+</p><dl>
+<dt><i>argumentsList</i></dt>
+<dd>
+list of arguments tuples with each tuple
+            containing filename and source (string, string)
+</dd>
+</dl><a NAME="TabnannyPlugin.indentCheck" ID="TabnannyPlugin.indentCheck"></a>
 <h4>TabnannyPlugin.indentCheck</h4>
 <b>indentCheck</b>(<i>lang, filename, source</i>)
 <p>
-        Public method to prepare a style check on one Python source file.
+        Public method to prepare an indentation check on one Python source
+        file.
 </p><dl>
 <dt><i>lang</i></dt>
 <dd>
@@ -262,7 +305,7 @@
 <h4>TabnannyPlugin.serviceErrorPy2</h4>
 <b>serviceErrorPy2</b>(<i>fx, lang, fn, msg</i>)
 <p>
-        Public method handling service errors for Python 2.
+        Public slot handling service errors for Python 2.
 </p><dl>
 <dt><i>fx</i></dt>
 <dd>
@@ -281,7 +324,7 @@
 <h4>TabnannyPlugin.serviceErrorPy3</h4>
 <b>serviceErrorPy3</b>(<i>fx, lang, fn, msg</i>)
 <p>
-        Public method handling service errors for Python 2.
+        Public slot handling service errors for Python 2.
 </p><dl>
 <dt><i>fx</i></dt>
 <dd>
--- a/Plugins/CheckerPlugins/Tabnanny/Tabnanny.py	Thu Apr 23 20:11:44 2015 +0200
+++ b/Plugins/CheckerPlugins/Tabnanny/Tabnanny.py	Fri Apr 24 18:41:06 2015 +0200
@@ -48,6 +48,7 @@
     import StringIO as io
 except (ImportError):
     import io    # __IGNORE_WARNING__
+import multiprocessing
 
 if not hasattr(tokenize, 'NL'):
     raise ValueError("tokenize.NL doesn't exist -- tokenize module too old")
@@ -64,6 +65,15 @@
     return check
 
 
+def initBatchService():
+    """
+    Initialize the batch service and return the entry point.
+    
+    @return the entry point for the background client (function)
+    """
+    return batchCheck
+
+
 class NannyNag(Exception):
     """
     Class implementing an exception for indentation issues.
@@ -118,6 +128,80 @@
         (boolean, string, string, string). The values are only
         valid, if the status is True.
     """
+    return __check(file, text)
+
+
+def batchCheck(argumentsList, send, fx, cancelled):
+    """
+    Module function to check a batch of files for whitespace related problems.
+    
+    @param argumentsList list of arguments tuples as given for check
+    @param send reference to send function (function)
+    @param fx registered service name (string)
+    @param cancelled reference to function checking for a cancellation
+        (function)
+    """
+    try:
+        NumberOfProcesses = multiprocessing.cpu_count()
+        if NumberOfProcesses >= 1:
+            NumberOfProcesses -= 1
+    except NotImplementedError:
+        NumberOfProcesses = 1
+
+    # Create queues
+    taskQueue = multiprocessing.Queue()
+    doneQueue = multiprocessing.Queue()
+
+    # Submit tasks (initially two time number of processes
+    initialTasks = 2 * NumberOfProcesses
+    for task in argumentsList[:initialTasks]:
+        taskQueue.put(task)
+
+    # Start worker processes
+    for i in range(NumberOfProcesses):
+        multiprocessing.Process(target=worker, args=(taskQueue, doneQueue))\
+            .start()
+
+    # Get and send results
+    endIndex = len(argumentsList) - initialTasks
+    for i in range(len(argumentsList)):
+        filename, result = doneQueue.get()
+        send(fx, filename, result)
+        if cancelled():
+            # just exit the loop ignoring the results of queued tasks
+            break
+        if i < endIndex:
+            taskQueue.put(argumentsList[i + initialTasks])
+
+    # Tell child processes to stop
+    for i in range(NumberOfProcesses):
+        taskQueue.put('STOP')
+
+
+def worker(input, output):
+    """
+    Module function acting as the parallel worker for the style check.
+    
+    @param input input queue (multiprocessing.Queue)
+    @param output output queue (multiprocessing.Queue)
+    """
+    for filename, source in iter(input.get, 'STOP'):
+        result = __check(filename, source)
+        output.put((filename, result))
+
+
+def __check(file, text=""):
+    """
+    Private function to check one Python source file for whitespace related
+    problems.
+    
+    @param file source filename (string)
+    @param text source text (string)
+    @return A tuple indicating status (True = an error was found), the
+        filename, the linenumber and the error message
+        (boolean, string, string). The values are only
+        valid, if the status is True.
+    """
     global indents, check_equal
     indents = [Whitespace("")]
     check_equal = 0
@@ -143,7 +227,7 @@
     except Exception as err:
         return (True, "1", "Unspecific Error: {0}".format(str(err)))
     
-    return (False, None, None)
+    return (False, "", "")
 
 
 class Whitespace(object):
--- a/Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py	Thu Apr 23 20:11:44 2015 +0200
+++ b/Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py	Fri Apr 24 18:41:06 2015 +0200
@@ -17,7 +17,7 @@
 import os
 import fnmatch
 
-from PyQt5.QtCore import pyqtSlot, Qt
+from PyQt5.QtCore import pyqtSlot, Qt, QTimer
 from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QTreeWidgetItem, \
     QApplication, QHeaderView
 
@@ -51,10 +51,12 @@
         
         self.indentCheckService = indentCheckService
         self.indentCheckService.indentChecked.connect(self.__processResult)
+        self.indentCheckService.batchFinished.connect(self.__batchFinished)
         self.filename = None
         
         self.noResults = True
         self.cancelled = False
+        self.__finished = True
         
         self.__fileList = []
         self.__project = None
@@ -141,14 +143,20 @@
             self.checkProgress.setVisible(len(self.files) > 1)
             self.checkProgressLabel.setVisible(len(self.files) > 1)
             QApplication.processEvents()
-        
-        # now go through all the files
-        self.progress = 0
-        self.check()
+            
+            # now go through all the files
+            self.progress = 0
+            self.files.sort()
+            if len(self.files) == 1:
+                self.__batch = False
+                self.check()
+            else:
+                self.__batch = True
+                self.checkBatch()
 
     def check(self, codestring=''):
         """
-        Public method to start a style check for one file.
+        Public method to start an indentation check for one file.
         
         The results are reported to the __processResult slot.
         @keyparam codestring optional sourcestring (str)
@@ -182,9 +190,55 @@
             self.check()
             return
 
+        self.__finished = False
         self.indentCheckService.indentCheck(
             None, self.filename, self.source)
 
+    def checkBatch(self):
+        """
+        Public method to start an indentation check batch job.
+        
+        The results are reported to the __processResult slot.
+        """
+        self.__lastFileItem = None
+        
+        self.checkProgressLabel.setPath(self.tr("Preparing files..."))
+        progress = 0
+        
+        argumentsList = []
+        for filename in self.files:
+            progress += 1
+            self.checkProgress.setValue(progress)
+            QApplication.processEvents()
+            
+            try:
+                source = Utilities.readEncodedFile(filename)[0]
+                source = Utilities.normalizeCode(source)
+            except (UnicodeError, IOError) as msg:
+                self.noResults = False
+                self.__createResultItem(
+                    filename, 1,
+                    "Error: {0}".format(str(msg)).rstrip())
+                continue
+            
+            argumentsList.append((filename, source))
+        
+        # reset the progress bar to the checked files
+        self.checkProgress.setValue(self.progress)
+        QApplication.processEvents()
+        
+        self.__finished = False
+        self.indentCheckService.indentBatchCheck(argumentsList)
+    
+    def __batchFinished(self):
+        """
+        Private slot handling the completion of a batch job.
+        """
+        self.checkProgressLabel.setPath("")
+        self.checkProgress.setMaximum(1)
+        self.checkProgress.setValue(1)
+        self.__finish()
+    
     def __processResult(self, fn, nok, line, error):
         """
         Private slot called after perfoming a style check on one file.
@@ -194,8 +248,12 @@
         @param line line number (str)
         @param error text of the problem (str)
         """
-        # Check if it's the requested file, otherwise ignore signal
-        if fn != self.filename:
+        if self.__finished:
+            return
+        
+        # Check if it's the requested file, otherwise ignore signal if not
+        # in batch mode
+        if not self.__batch and fn != self.filename:
             return
         
         if nok:
@@ -204,30 +262,35 @@
         self.progress += 1
         
         self.checkProgress.setValue(self.progress)
-        self.checkProgressLabel.setPath("")
+        self.checkProgressLabel.setPath(fn)
         QApplication.processEvents()
         self.__resort()
         
-        self.check()
+        if not self.__batch:
+            self.check()
 
     def __finish(self):
         """
         Private slot called when the action or the user pressed the button.
         """
-        self.cancelled = True
-        self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True)
-        self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(False)
-        self.buttonBox.button(QDialogButtonBox.Close).setDefault(True)
-        
-        if self.noResults:
-            self.__createResultItem(
-                self.tr('No indentation errors found.'), "", "")
-            QApplication.processEvents()
-        self.resultList.header().resizeSections(QHeaderView.ResizeToContents)
-        self.resultList.header().setStretchLastSection(True)
-        
-        self.checkProgress.setVisible(False)
-        self.checkProgressLabel.setVisible(False)
+        if not self.__finished:
+            self.__finished = True
+            
+            self.cancelled = True
+            self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True)
+            self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(False)
+            self.buttonBox.button(QDialogButtonBox.Close).setDefault(True)
+            
+            if self.noResults:
+                self.__createResultItem(
+                    self.tr('No indentation errors found.'), "", "")
+                QApplication.processEvents()
+            self.resultList.header().resizeSections(
+                QHeaderView.ResizeToContents)
+            self.resultList.header().setStretchLastSection(True)
+            
+            self.checkProgress.setVisible(False)
+            self.checkProgressLabel.setVisible(False)
         
     def on_buttonBox_clicked(self, button):
         """
@@ -238,7 +301,11 @@
         if button == self.buttonBox.button(QDialogButtonBox.Close):
             self.close()
         elif button == self.buttonBox.button(QDialogButtonBox.Cancel):
-            self.__finish()
+            if self.__batch:
+                self.indentCheckService.cancelIndentBatchCheck()
+                QTimer.singleShot(1000, self.__finish)
+            else:
+                self.__finish()
         
     @pyqtSlot()
     def on_startButton_clicked(self):
--- a/Plugins/PluginTabnanny.py	Thu Apr 23 20:11:44 2015 +0200
+++ b/Plugins/PluginTabnanny.py	Fri Apr 24 18:41:06 2015 +0200
@@ -43,10 +43,12 @@
     """
     Class implementing the Tabnanny plugin.
     
-    @signal indentChecked(str, bool, str, str) emited when the indent
+    @signal indentChecked(str, bool, str, str) emitted when the indent
         check was done.
+    @signal batchFinished() emitted when a style check batch is done
     """
     indentChecked = pyqtSignal(str, bool, str, str)
+    batchFinished = pyqtSignal()
     
     def __init__(self, ui):
         """
@@ -65,11 +67,16 @@
         self.backgroundService.serviceConnect(
             'indent', 'Python2', path, 'Tabnanny',
             lambda *args: self.indentChecked.emit(*args),
-            onErrorCallback=self.serviceErrorPy2)
+            onErrorCallback=self.serviceErrorPy2,
+            onBatchDone=self.batchJobDone)
         self.backgroundService.serviceConnect(
             'indent', 'Python3', path, 'Tabnanny',
             lambda *args: self.indentChecked.emit(*args),
-            onErrorCallback=self.serviceErrorPy3)
+            onErrorCallback=self.serviceErrorPy3,
+            onBatchDone=self.batchJobDone)
+        
+        self.queuedBatches = []
+        self.batchesFinished = True
     
     def __serviceError(self, fn, msg):
         """
@@ -82,27 +89,50 @@
     
     def serviceErrorPy2(self, fx, lang, fn, msg):
         """
-        Public method handling service errors for Python 2.
+        Public slot handling service errors for Python 2.
         
         @param fx service name (string)
         @param lang language (string)
         @param fn file name (string)
         @param msg message text (string)
         """
-        if fx == 'indent' and lang == 'Python2':
-            self.__serviceError(fn, msg)
+        if fx in ['indent', 'batch_indent'] and lang == 'Python2':
+            if fx == 'indent':
+                self.__serviceError(fn, msg)
+            else:
+                self.__serviceError(self.tr("Python 2 batch check"), msg)
+                self.batchJobDone(fx, lang)
     
     def serviceErrorPy3(self, fx, lang, fn, msg):
         """
-        Public method handling service errors for Python 2.
+        Public slot handling service errors for Python 2.
         
         @param fx service name (string)
         @param lang language (string)
         @param fn file name (string)
         @param msg message text (string)
         """
-        if fx == 'indent' and lang == 'Python3':
-            self.__serviceError(fn, msg)
+        if fx in ['indent', 'batch_indent'] and lang == 'Python3':
+            if fx == 'indent':
+                self.__serviceError(fn, msg)
+            else:
+                self.__serviceError(self.tr("Python 3 batch check"), msg)
+                self.batchJobDone(fx, lang)
+    
+    def batchJobDone(self, fx, lang):
+        """
+        Public slot handling the completion of a batch job.
+        
+        @param fx service name (string)
+        @param lang language (string)
+        """
+        if fx in ['indent', 'batch_indent']:
+            if lang in self.queuedBatches:
+                self.queuedBatches.remove(lang)
+            # prevent sending the signal multiple times
+            if len(self.queuedBatches) == 0 and not self.batchesFinished:
+                self.batchFinished.emit()
+                self.batchesFinished = True
     
     def __initialize(self):
         """
@@ -121,7 +151,8 @@
 
     def indentCheck(self, lang, filename, source):
         """
-        Public method to prepare a style check on one Python source file.
+        Public method to prepare an indentation check on one Python source
+        file.
 
         @param lang language of the file or None to determine by internal
             algorithm (str or None)
@@ -136,6 +167,40 @@
         self.backgroundService.enqueueRequest(
             'indent', lang, filename, [source])
 
+    def indentBatchCheck(self, argumentsList):
+        """
+        Public method to prepare an indentation check on multiple Python
+        source files.
+        
+        @param argumentsList list of arguments tuples with each tuple
+            containing filename and source (string, string)
+        """
+        data = {
+            "Python2": [],
+            "Python3": [],
+        }
+        for filename, source in argumentsList:
+            lang = 'Python{0}'.format(determinePythonVersion(filename, source))
+            if lang not in ['Python2', 'Python3']:
+                continue
+            else:
+                data[lang].append((filename, source))
+        
+        self.queuedBatches = []
+        for lang in ['Python2', 'Python3']:
+            if data[lang]:
+                self.queuedBatches.append(lang)
+                self.backgroundService.enqueueRequest('batch_indent', lang, "",
+                                                      data[lang])
+                self.batchesFinished = False
+    
+    def cancelIndentBatchCheck(self):
+        """
+        Public method to cancel all batch jobs.
+        """
+        for lang in ['Python2', 'Python3']:
+            self.backgroundService.requestCancel('batch_style', lang)
+    
     def activate(self):
         """
         Public method to activate this plugin.
--- a/changelog	Thu Apr 23 20:11:44 2015 +0200
+++ b/changelog	Fri Apr 24 18:41:06 2015 +0200
@@ -10,6 +10,8 @@
      multiple CPUs/CPU-Cores
   -- added a batch mode to the syntax checker to make use of
      multiple CPUs/CPU-Cores
+  -- added a batch mode to the indentation checker to make use of
+     multiple CPUs/CPU-Cores
 - Editor
   -- added capability to configure the indentation guides colors
   -- Lexers
--- a/i18n/eric6_cs.ts	Thu Apr 23 20:11:44 2015 +0200
+++ b/i18n/eric6_cs.ts	Fri Apr 24 18:41:06 2015 +0200
@@ -1393,37 +1393,37 @@
 <context>
     <name>BackgroundService</name>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="120"/>
+        <location filename="../Utilities/BackgroundService.py" line="121"/>
         <source>{0} not configured.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>Restart background client?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="195"/>
+        <location filename="../Utilities/BackgroundService.py" line="200"/>
         <source>An error in Erics background client stopped the service.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="390"/>
+        <location filename="../Utilities/BackgroundService.py" line="405"/>
         <source>Erics background client disconnected because of an unknown reason.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>Background client disconnected.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>The background client for &lt;b&gt;{0}&lt;/b&gt; disconnect because of an unknown reason.&lt;br&gt;Should it be restarted?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>&lt;p&gt;The background client for &lt;b&gt;{0}&lt;/b&gt; has stopped due to an exception. It&apos;s used by various plug-ins like the different checkers.&lt;/p&gt;&lt;p&gt;Select&lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;Yes&apos;&lt;/b&gt; to restart the client, but abort the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Retry&apos;&lt;/b&gt; to restart the client and the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;No&apos;&lt;/b&gt; to leave the client off.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Note: The client can be restarted by opening and accepting the preferences dialog or reloading/changing the project.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3142,7 +3142,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="585"/>
+        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="586"/>
         <source>No issues found.</source>
         <translation type="unfinished">Žádné problémy nenalezeny.</translation>
     </message>
@@ -53526,17 +53526,17 @@
 <context>
     <name>SyntaxCheckService</name>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="204"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="201"/>
         <source>Python 2 batch check</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="220"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="217"/>
         <source>Python 3 batch check</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="236"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="233"/>
         <source>JavaScript batch check</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53598,7 +53598,7 @@
         <translation>Stisknout pro zobrazení všech souborů, které obsahují problém</translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="332"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="345"/>
         <source>No issues found.</source>
         <translation>Žádné problémy nenalezeny.</translation>
     </message>
@@ -54044,7 +54044,7 @@
         <translation>Zobrazit průběh akce tabnanny</translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="223"/>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="285"/>
         <source>No indentation errors found.</source>
         <translation>Žádné chyby zarážek nebyly nalezeny.</translation>
     </message>
@@ -54073,29 +54073,44 @@
         <source>%v/%m Files</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="205"/>
+        <source>Preparing files...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TabnannyPlugin</name>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>Check Indentations</source>
         <translation>Kontrola odsazení</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>&amp;Indentations...</source>
         <translation>&amp;Odsazení...</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="152"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="217"/>
         <source>Check indentations using tabnanny.</source>
         <translation>Kontrola odsazení za použití tabnanny.</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="247"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="312"/>
         <source>&lt;b&gt;Check Indentations...&lt;/b&gt;&lt;p&gt;This checks Python files for bad indentations using tabnanny.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Kontrola odsazení....&lt;/b&gt;&lt;p&gt;Zkontroluje všechny Python soubory na správné odsazení za použití funkce tabnanny.&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="104"/>
+        <source>Python 2 batch check</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="120"/>
+        <source>Python 3 batch check</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>Tabview</name>
Binary file i18n/eric6_de.qm has changed
--- a/i18n/eric6_de.ts	Thu Apr 23 20:11:44 2015 +0200
+++ b/i18n/eric6_de.ts	Fri Apr 24 18:41:06 2015 +0200
@@ -1401,37 +1401,37 @@
 <context>
     <name>BackgroundService</name>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="120"/>
+        <location filename="../Utilities/BackgroundService.py" line="121"/>
         <source>{0} not configured.</source>
         <translation>{0} nicht konfiguriert.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>Restart background client?</source>
         <translation>Hintergrund Client neu starten?</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>Background client disconnected.</source>
         <translation>Hintergrund Client wurde getrennt.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>The background client for &lt;b&gt;{0}&lt;/b&gt; disconnect because of an unknown reason.&lt;br&gt;Should it be restarted?</source>
         <translation>Die Verbindung zum Hintergund Client für &lt;b&gt;{0}&lt;/b&gt; wurde aus unbekanntem Grund getrennt.&lt;br&gt;Soll er neu gestartet werden?</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="390"/>
+        <location filename="../Utilities/BackgroundService.py" line="405"/>
         <source>Erics background client disconnected because of an unknown reason.</source>
         <translation>Die Verbindung zu Erics Hintergund Client wurde aus unbekanntem Grund getrennt.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="195"/>
+        <location filename="../Utilities/BackgroundService.py" line="200"/>
         <source>An error in Erics background client stopped the service.</source>
         <translation>Ein Fehler im Eric Hintergrunddienst hat den Dienst beendet.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>&lt;p&gt;The background client for &lt;b&gt;{0}&lt;/b&gt; has stopped due to an exception. It&apos;s used by various plug-ins like the different checkers.&lt;/p&gt;&lt;p&gt;Select&lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;Yes&apos;&lt;/b&gt; to restart the client, but abort the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Retry&apos;&lt;/b&gt; to restart the client and the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;No&apos;&lt;/b&gt; to leave the client off.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Note: The client can be restarted by opening and accepting the preferences dialog or reloading/changing the project.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Der Hintergund Client für &lt;b&gt;{0}&lt;/b&gt; wurde durch eine Exception gestoppt. Er wird für verschiedene Plugins, wie z.B. die Checker, verwendet.&lt;/p&gt;&lt;p&gt;Wähle:&lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;Ja&apos;&lt;/b&gt;, um den Client aber nicht den letzten Job neu zu starten&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Wiederholen&apos;&lt;/b&gt;, um den Client und letzten Job neu zu starten&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Nein&apos;&lt;/b&gt;, um den Client nicht neu zu starten.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Hinweis: Der Client kann immer wieder gestartet werden, indem der Einstellungsdialog mit Ok geschlossen wird oder durch das Neuladen/ Wechseln des Projektes.&lt;/p&gt;</translation>
     </message>
@@ -3159,7 +3159,7 @@
         <translation>Lösung: {0}</translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="585"/>
+        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="586"/>
         <source>No issues found.</source>
         <translation>Keine Probleme gefunden.</translation>
     </message>
@@ -53628,17 +53628,17 @@
 <context>
     <name>SyntaxCheckService</name>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="204"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="201"/>
         <source>Python 2 batch check</source>
         <translation>Python 2 Stapelprüfung</translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="220"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="217"/>
         <source>Python 3 batch check</source>
         <translation>Python 3 Stapelprüfung</translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="236"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="233"/>
         <source>JavaScript batch check</source>
         <translation>JavaScript Stapelprüfung</translation>
     </message>
@@ -53702,7 +53702,7 @@
         <translation>Drücken, um alle Dateien mit Problemen anzuzeigen</translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="332"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="345"/>
         <source>No issues found.</source>
         <translation>Keine Probleme gefunden.</translation>
     </message>
@@ -54106,7 +54106,7 @@
 <context>
     <name>TabnannyDialog</name>
     <message>
-        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="223"/>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="285"/>
         <source>No indentation errors found.</source>
         <translation>Keine Einrückungsfehler gefunden.</translation>
     </message>
@@ -54181,29 +54181,44 @@
         <source>%v/%m Files</source>
         <translation>%v/%m Dateien</translation>
     </message>
+    <message>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="205"/>
+        <source>Preparing files...</source>
+        <translation>Bereite Dateien vor...</translation>
+    </message>
 </context>
 <context>
     <name>TabnannyPlugin</name>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>Check Indentations</source>
         <translation>Einrückungen prüfen</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>&amp;Indentations...</source>
         <translation>&amp;Einrückungen...</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="152"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="217"/>
         <source>Check indentations using tabnanny.</source>
         <translation>Einrückungen mit Tabnanny überprüfen.</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="247"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="312"/>
         <source>&lt;b&gt;Check Indentations...&lt;/b&gt;&lt;p&gt;This checks Python files for bad indentations using tabnanny.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Einrückungen überprüfen...&lt;/b&gt;&lt;p&gt;Dies überprüft Python-Dateien auf fehlerhafte Einrückungen mittels Tabnanny.&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="104"/>
+        <source>Python 2 batch check</source>
+        <translation>Python 2 Stapelprüfung</translation>
+    </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="120"/>
+        <source>Python 3 batch check</source>
+        <translation>Python 3 Stapelprüfung</translation>
+    </message>
 </context>
 <context>
     <name>Tabview</name>
--- a/i18n/eric6_en.ts	Thu Apr 23 20:11:44 2015 +0200
+++ b/i18n/eric6_en.ts	Fri Apr 24 18:41:06 2015 +0200
@@ -1380,37 +1380,37 @@
 <context>
     <name>BackgroundService</name>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="120"/>
+        <location filename="../Utilities/BackgroundService.py" line="121"/>
         <source>{0} not configured.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>Restart background client?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="195"/>
+        <location filename="../Utilities/BackgroundService.py" line="200"/>
         <source>An error in Erics background client stopped the service.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="390"/>
+        <location filename="../Utilities/BackgroundService.py" line="405"/>
         <source>Erics background client disconnected because of an unknown reason.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>Background client disconnected.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>The background client for &lt;b&gt;{0}&lt;/b&gt; disconnect because of an unknown reason.&lt;br&gt;Should it be restarted?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>&lt;p&gt;The background client for &lt;b&gt;{0}&lt;/b&gt; has stopped due to an exception. It&apos;s used by various plug-ins like the different checkers.&lt;/p&gt;&lt;p&gt;Select&lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;Yes&apos;&lt;/b&gt; to restart the client, but abort the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Retry&apos;&lt;/b&gt; to restart the client and the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;No&apos;&lt;/b&gt; to leave the client off.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Note: The client can be restarted by opening and accepting the preferences dialog or reloading/changing the project.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3114,7 +3114,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="585"/>
+        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="586"/>
         <source>No issues found.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53136,17 +53136,17 @@
 <context>
     <name>SyntaxCheckService</name>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="204"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="201"/>
         <source>Python 2 batch check</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="220"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="217"/>
         <source>Python 3 batch check</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="236"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="233"/>
         <source>JavaScript batch check</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53224,7 +53224,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="332"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="345"/>
         <source>No issues found.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53668,7 +53668,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="223"/>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="285"/>
         <source>No indentation errors found.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53677,29 +53677,44 @@
         <source>%v/%m Files</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="205"/>
+        <source>Preparing files...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TabnannyPlugin</name>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>Check Indentations</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>&amp;Indentations...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="152"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="217"/>
         <source>Check indentations using tabnanny.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="247"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="312"/>
         <source>&lt;b&gt;Check Indentations...&lt;/b&gt;&lt;p&gt;This checks Python files for bad indentations using tabnanny.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="104"/>
+        <source>Python 2 batch check</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="120"/>
+        <source>Python 3 batch check</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>Tabview</name>
--- a/i18n/eric6_es.ts	Thu Apr 23 20:11:44 2015 +0200
+++ b/i18n/eric6_es.ts	Fri Apr 24 18:41:06 2015 +0200
@@ -1397,37 +1397,37 @@
 <context>
     <name>BackgroundService</name>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="120"/>
+        <location filename="../Utilities/BackgroundService.py" line="121"/>
         <source>{0} not configured.</source>
         <translation>{0} no configurado.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>Restart background client?</source>
         <translation>¿Reiniciar cliente en background?</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>Background client disconnected.</source>
         <translation>Cliente en background desconectado.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>The background client for &lt;b&gt;{0}&lt;/b&gt; disconnect because of an unknown reason.&lt;br&gt;Should it be restarted?</source>
         <translation>El cliente en background para &lt;b&gt;{0}&lt;/b&gt; ha desconectado por razón desconocida.&lt;br&gt;¿Reiniciarlo?</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="390"/>
+        <location filename="../Utilities/BackgroundService.py" line="405"/>
         <source>Erics background client disconnected because of an unknown reason.</source>
         <translation>El cliente en background de Eric ha desconectado debido a una razón desconocida.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="195"/>
+        <location filename="../Utilities/BackgroundService.py" line="200"/>
         <source>An error in Erics background client stopped the service.</source>
         <translation>Un error en el cliente en background de Eric ha detenido el servicio.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>&lt;p&gt;The background client for &lt;b&gt;{0}&lt;/b&gt; has stopped due to an exception. It&apos;s used by various plug-ins like the different checkers.&lt;/p&gt;&lt;p&gt;Select&lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;Yes&apos;&lt;/b&gt; to restart the client, but abort the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Retry&apos;&lt;/b&gt; to restart the client and the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;No&apos;&lt;/b&gt; to leave the client off.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Note: The client can be restarted by opening and accepting the preferences dialog or reloading/changing the project.&lt;/p&gt;</source>
         <translation>&lt;p&gt;El cliente en background para &lt;b&gt;{0}&lt;/b&gt; se ha detenido debido a una excepción. Éste es utilizado por varios plug-ins como los distintos comprobadores.&lt;/p&gt;&lt;p&gt;Seleccionar&lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;Si&apos;&lt;/b&gt; para reiniciar el cliente, abortando el último trabajo&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Reintentar&apos;&lt;/b&gt; para reiniciar el cliente y el último trabajo&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;No&apos;&lt;/b&gt; para dejar el cliente sin iniciar.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Nota: El cliente se puede reiniciar abriendo y aceptando el diálogo de preferencias o recargando/cambiando el proyecto.&lt;/p&gt;</translation>
     </message>
@@ -3156,7 +3156,7 @@
         <translation>Arreglar: {0}</translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="585"/>
+        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="586"/>
         <source>No issues found.</source>
         <translation>No se han encontrado problemas.</translation>
     </message>
@@ -53597,17 +53597,17 @@
 <context>
     <name>SyntaxCheckService</name>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="204"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="201"/>
         <source>Python 2 batch check</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="220"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="217"/>
         <source>Python 3 batch check</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="236"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="233"/>
         <source>JavaScript batch check</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53669,7 +53669,7 @@
         <translation>Pulsar para mostrar todos los archivos con algún problema</translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="332"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="345"/>
         <source>No issues found.</source>
         <translation>No se han encontrado problemas.</translation>
     </message>
@@ -54117,7 +54117,7 @@
         <translation>Muestra el progreso de la acción de tabnanny</translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="223"/>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="285"/>
         <source>No indentation errors found.</source>
         <translation>No se han encontrado errores de indentación.</translation>
     </message>
@@ -54146,29 +54146,44 @@
         <source>%v/%m Files</source>
         <translation>%v/%m Archivos</translation>
     </message>
+    <message>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="205"/>
+        <source>Preparing files...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TabnannyPlugin</name>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>Check Indentations</source>
         <translation>Verificar Indentaciones</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>&amp;Indentations...</source>
         <translation>&amp;Indentaciones...</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="152"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="217"/>
         <source>Check indentations using tabnanny.</source>
         <translation>Verificar indentaciones utilizando tabnanny.</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="247"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="312"/>
         <source>&lt;b&gt;Check Indentations...&lt;/b&gt;&lt;p&gt;This checks Python files for bad indentations using tabnanny.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Verificar Indentaciones...&lt;/b&gt;&lt;p&gt;Chequea archivos Python buscando indentaciones mal hechas usando tabnanny.&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="104"/>
+        <source>Python 2 batch check</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="120"/>
+        <source>Python 3 batch check</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>Tabview</name>
--- a/i18n/eric6_fr.ts	Thu Apr 23 20:11:44 2015 +0200
+++ b/i18n/eric6_fr.ts	Fri Apr 24 18:41:06 2015 +0200
@@ -1400,37 +1400,37 @@
 <context>
     <name>BackgroundService</name>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="120"/>
+        <location filename="../Utilities/BackgroundService.py" line="121"/>
         <source>{0} not configured.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>Restart background client?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="195"/>
+        <location filename="../Utilities/BackgroundService.py" line="200"/>
         <source>An error in Erics background client stopped the service.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="390"/>
+        <location filename="../Utilities/BackgroundService.py" line="405"/>
         <source>Erics background client disconnected because of an unknown reason.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>Background client disconnected.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>The background client for &lt;b&gt;{0}&lt;/b&gt; disconnect because of an unknown reason.&lt;br&gt;Should it be restarted?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>&lt;p&gt;The background client for &lt;b&gt;{0}&lt;/b&gt; has stopped due to an exception. It&apos;s used by various plug-ins like the different checkers.&lt;/p&gt;&lt;p&gt;Select&lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;Yes&apos;&lt;/b&gt; to restart the client, but abort the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Retry&apos;&lt;/b&gt; to restart the client and the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;No&apos;&lt;/b&gt; to leave the client off.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Note: The client can be restarted by opening and accepting the preferences dialog or reloading/changing the project.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3144,7 +3144,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="585"/>
+        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="586"/>
         <source>No issues found.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53587,17 +53587,17 @@
 <context>
     <name>SyntaxCheckService</name>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="204"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="201"/>
         <source>Python 2 batch check</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="220"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="217"/>
         <source>Python 3 batch check</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="236"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="233"/>
         <source>JavaScript batch check</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53657,7 +53657,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="332"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="345"/>
         <source>No issues found.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -54061,7 +54061,7 @@
 <context>
     <name>TabnannyDialog</name>
     <message>
-        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="223"/>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="285"/>
         <source>No indentation errors found.</source>
         <translation>Aucune erreur d&apos;indentation trouvée.</translation>
     </message>
@@ -54136,29 +54136,44 @@
         <source>%v/%m Files</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="205"/>
+        <source>Preparing files...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TabnannyPlugin</name>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>Check Indentations</source>
         <translation>Vérification des indentations</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>&amp;Indentations...</source>
         <translation>&amp;Indentations...</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="152"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="217"/>
         <source>Check indentations using tabnanny.</source>
         <translation>Vérifie les indentation en utilisant tabanny.</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="247"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="312"/>
         <source>&lt;b&gt;Check Indentations...&lt;/b&gt;&lt;p&gt;This checks Python files for bad indentations using tabnanny.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Vérification des indentations...&lt;/b&gt;&lt;p&gt;Vérifie les mauvaises indentations des fichiers Python en utilisant tabanny.&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="104"/>
+        <source>Python 2 batch check</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="120"/>
+        <source>Python 3 batch check</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>Tabview</name>
--- a/i18n/eric6_it.ts	Thu Apr 23 20:11:44 2015 +0200
+++ b/i18n/eric6_it.ts	Fri Apr 24 18:41:06 2015 +0200
@@ -1398,37 +1398,37 @@
 <context>
     <name>BackgroundService</name>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="120"/>
+        <location filename="../Utilities/BackgroundService.py" line="121"/>
         <source>{0} not configured.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>Restart background client?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="195"/>
+        <location filename="../Utilities/BackgroundService.py" line="200"/>
         <source>An error in Erics background client stopped the service.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="390"/>
+        <location filename="../Utilities/BackgroundService.py" line="405"/>
         <source>Erics background client disconnected because of an unknown reason.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>Background client disconnected.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>The background client for &lt;b&gt;{0}&lt;/b&gt; disconnect because of an unknown reason.&lt;br&gt;Should it be restarted?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>&lt;p&gt;The background client for &lt;b&gt;{0}&lt;/b&gt; has stopped due to an exception. It&apos;s used by various plug-ins like the different checkers.&lt;/p&gt;&lt;p&gt;Select&lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;Yes&apos;&lt;/b&gt; to restart the client, but abort the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Retry&apos;&lt;/b&gt; to restart the client and the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;No&apos;&lt;/b&gt; to leave the client off.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Note: The client can be restarted by opening and accepting the preferences dialog or reloading/changing the project.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3156,7 +3156,7 @@
         <translation>Corregge:{0}</translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="585"/>
+        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="586"/>
         <source>No issues found.</source>
         <translation>Nessun problema trovato.</translation>
     </message>
@@ -53682,17 +53682,17 @@
 <context>
     <name>SyntaxCheckService</name>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="204"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="201"/>
         <source>Python 2 batch check</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="220"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="217"/>
         <source>Python 3 batch check</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="236"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="233"/>
         <source>JavaScript batch check</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53755,7 +53755,7 @@
         <translation>Premi per mostrare tutti i file che contengono errori di sintassi</translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="332"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="345"/>
         <source>No issues found.</source>
         <translation>Nessun problema trovato.</translation>
     </message>
@@ -54159,7 +54159,7 @@
 <context>
     <name>TabnannyDialog</name>
     <message>
-        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="223"/>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="285"/>
         <source>No indentation errors found.</source>
         <translation>Nessun errore di identazione trovato.</translation>
     </message>
@@ -54232,29 +54232,44 @@
         <source>%v/%m Files</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="205"/>
+        <source>Preparing files...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TabnannyPlugin</name>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>Check Indentations</source>
         <translation>Controlla indentazione</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>&amp;Indentations...</source>
         <translation>&amp;Indentazione...</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="152"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="217"/>
         <source>Check indentations using tabnanny.</source>
         <translation>Controlla indentazione con tabnanny.</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="247"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="312"/>
         <source>&lt;b&gt;Check Indentations...&lt;/b&gt;&lt;p&gt;This checks Python files for bad indentations using tabnanny.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Controlla indentazione...&lt;/b&gt;&lt;p&gt;Controlla i file Python per errori di indentazione usando tabnanny.&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="104"/>
+        <source>Python 2 batch check</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="120"/>
+        <source>Python 3 batch check</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>Tabview</name>
--- a/i18n/eric6_pt.ts	Thu Apr 23 20:11:44 2015 +0200
+++ b/i18n/eric6_pt.ts	Fri Apr 24 18:41:06 2015 +0200
@@ -1398,37 +1398,37 @@
 <context>
     <name>BackgroundService</name>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="120"/>
+        <location filename="../Utilities/BackgroundService.py" line="121"/>
         <source>{0} not configured.</source>
         <translation>{0} sem configurar.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>Restart background client?</source>
         <translation>Reiniciar cliente de fundo?</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>&lt;p&gt;The background client for &lt;b&gt;{0}&lt;/b&gt; has stopped due to an exception. It&apos;s used by various plug-ins like the different checkers.&lt;/p&gt;&lt;p&gt;Select&lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;Yes&apos;&lt;/b&gt; to restart the client, but abort the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Retry&apos;&lt;/b&gt; to restart the client and the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;No&apos;&lt;/b&gt; to leave the client off.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Note: The client can be restarted by opening and accepting the preferences dialog or reloading/changing the project.&lt;/p&gt;</source>
         <translation>&lt;p&gt;O cliente de fundo para &lt;b&gt;{0}&lt;/b&gt; parou devido a uma exceção. Usa-se por varios complementos tais como os diferentes verificadores.&lt;/p&gt;&lt;p&gt;Selecionar&lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;Sim&apos;&lt;/b&gt; para reiniciar o cliente mas abandona o último trabalho&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Reintentar&apos;&lt;/b&gt; para reiniciar o cliente e o último trabalho&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Não&apos;&lt;/b&gt; para deixar o cliente apagado.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Nota: O cliente pode reiniciar-se abrindo e confirmando a caixa de diálogo de preferências ou recarregando/alterando o projeto.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="195"/>
+        <location filename="../Utilities/BackgroundService.py" line="200"/>
         <source>An error in Erics background client stopped the service.</source>
         <translation>Um erro no cliente de fundo de Eric parou o serviço.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="390"/>
+        <location filename="../Utilities/BackgroundService.py" line="405"/>
         <source>Erics background client disconnected because of an unknown reason.</source>
         <translation>Cliente de fundo de Eric desconectou-se por motivo desconhecido.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>Background client disconnected.</source>
         <translation>Cliente de fundo desconectado.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>The background client for &lt;b&gt;{0}&lt;/b&gt; disconnect because of an unknown reason.&lt;br&gt;Should it be restarted?</source>
         <translation>O cliente de fundo para &lt;b&gt;{0}&lt;/b&gt; desconectou-se por um motivo desconhecido.&lt;br&gt;Deverá ser reiniciado?</translation>
     </message>
@@ -3153,7 +3153,7 @@
         <translation>Corrigir: {0}</translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="585"/>
+        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="586"/>
         <source>No issues found.</source>
         <translation>Não se encontraram problemas.</translation>
     </message>
@@ -53395,17 +53395,17 @@
 <context>
     <name>SyntaxCheckService</name>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="204"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="201"/>
         <source>Python 2 batch check</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="220"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="217"/>
         <source>Python 3 batch check</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="236"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="233"/>
         <source>JavaScript batch check</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53483,7 +53483,7 @@
         <translation type="unfinished">Pressionar para mostrar todos os ficheiros que tenham algum problema</translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="332"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="345"/>
         <source>No issues found.</source>
         <translation type="unfinished">Não se encontraram problemas.</translation>
     </message>
@@ -53927,7 +53927,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="223"/>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="285"/>
         <source>No indentation errors found.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53936,29 +53936,44 @@
         <source>%v/%m Files</source>
         <translation>%v/%m Ficheiros</translation>
     </message>
+    <message>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="205"/>
+        <source>Preparing files...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TabnannyPlugin</name>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>Check Indentations</source>
         <translation>Verificar Indentações</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>&amp;Indentations...</source>
         <translation>&amp;Indentações...</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="152"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="217"/>
         <source>Check indentations using tabnanny.</source>
         <translation>Verificar indentações com tabnanny.</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="247"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="312"/>
         <source>&lt;b&gt;Check Indentations...&lt;/b&gt;&lt;p&gt;This checks Python files for bad indentations using tabnanny.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Verificar Indentações...&lt;/b&gt;&lt;p&gt;Verifica os ficheiros Python procurando más indentações usando tabnanny.&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="104"/>
+        <source>Python 2 batch check</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="120"/>
+        <source>Python 3 batch check</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>Tabview</name>
--- a/i18n/eric6_ru.ts	Thu Apr 23 20:11:44 2015 +0200
+++ b/i18n/eric6_ru.ts	Fri Apr 24 18:41:06 2015 +0200
@@ -1397,37 +1397,37 @@
 <context>
     <name>BackgroundService</name>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="120"/>
+        <location filename="../Utilities/BackgroundService.py" line="121"/>
         <source>{0} not configured.</source>
         <translation>{0} не сконфигурирован.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>Restart background client?</source>
         <translation>Перезапустить клиент в фоновом режиме?</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="195"/>
+        <location filename="../Utilities/BackgroundService.py" line="200"/>
         <source>An error in Erics background client stopped the service.</source>
         <translation>Ошибка в слиенте остановила сервис.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="390"/>
+        <location filename="../Utilities/BackgroundService.py" line="405"/>
         <source>Erics background client disconnected because of an unknown reason.</source>
         <translation>Фоновый клиент прервал соединение по неизвестной причине.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>Background client disconnected.</source>
         <translation>Соединение фонового клиента прервано.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>The background client for &lt;b&gt;{0}&lt;/b&gt; disconnect because of an unknown reason.&lt;br&gt;Should it be restarted?</source>
         <translation>Соединение фонового клиента&lt;b&gt;{0}&lt;/b&gt; прервано по неизвестной причине.&lt;br&gt;Перезапустить клиента?</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>&lt;p&gt;The background client for &lt;b&gt;{0}&lt;/b&gt; has stopped due to an exception. It&apos;s used by various plug-ins like the different checkers.&lt;/p&gt;&lt;p&gt;Select&lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;Yes&apos;&lt;/b&gt; to restart the client, but abort the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Retry&apos;&lt;/b&gt; to restart the client and the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;No&apos;&lt;/b&gt; to leave the client off.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Note: The client can be restarted by opening and accepting the preferences dialog or reloading/changing the project.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Фоновый клиент&lt;b&gt;{0}&lt;/b&gt; прекратил выполнение из-за ошибки. Этот клиент необходим для работы различных плагинов.&lt;/p&gt;&lt;p&gt;Выберите&lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;Да&apos;&lt;/b&gt; чтобы перезапустить его и отменить последнее задание&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Повторить&apos;&lt;/b&gt;чтобы перезапустить его и последнее задание&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Нет&apos;&lt;/b&gt; чтобы не перезапускать клиент.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Заметте: Клиент можно перезапустить открыв и сохранив диалог настроек или закрыв и снова открыв текущий проект.&lt;/p&gt;</translation>
     </message>
@@ -3155,7 +3155,7 @@
         <translation>Исправлено: {0}</translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="585"/>
+        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="586"/>
         <source>No issues found.</source>
         <translation>Проблем со стилем не найдено.</translation>
     </message>
@@ -53726,17 +53726,17 @@
 <context>
     <name>SyntaxCheckService</name>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="204"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="201"/>
         <source>Python 2 batch check</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="220"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="217"/>
         <source>Python 3 batch check</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="236"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="233"/>
         <source>JavaScript batch check</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53799,7 +53799,7 @@
         <translation>Показать все файлы, содержащие синтаксические ошибки</translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="332"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="345"/>
         <source>No issues found.</source>
         <translation>Синтаксисические ошибки не найдены.</translation>
     </message>
@@ -54206,7 +54206,7 @@
 <context>
     <name>TabnannyDialog</name>
     <message>
-        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="223"/>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="285"/>
         <source>No indentation errors found.</source>
         <translation>Ошибки в отступах не найдены.</translation>
     </message>
@@ -54279,29 +54279,44 @@
         <source>%v/%m Files</source>
         <translation>%v/%m Файлы</translation>
     </message>
+    <message>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="205"/>
+        <source>Preparing files...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TabnannyPlugin</name>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>Check Indentations</source>
         <translation>Проверить отступы</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>&amp;Indentations...</source>
         <translation>&amp;Отступы...</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="152"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="217"/>
         <source>Check indentations using tabnanny.</source>
         <translation>Проверить отступы с помощью tabnanny.</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="247"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="312"/>
         <source>&lt;b&gt;Check Indentations...&lt;/b&gt;&lt;p&gt;This checks Python files for bad indentations using tabnanny.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Проверить отступы...&lt;/b&gt;&lt;p&gt;Проверяет файлы Python на некорректные отступы при помощи tabnanny.&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="104"/>
+        <source>Python 2 batch check</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="120"/>
+        <source>Python 3 batch check</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>Tabview</name>
--- a/i18n/eric6_tr.ts	Thu Apr 23 20:11:44 2015 +0200
+++ b/i18n/eric6_tr.ts	Fri Apr 24 18:41:06 2015 +0200
@@ -1394,37 +1394,37 @@
 <context>
     <name>BackgroundService</name>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="120"/>
+        <location filename="../Utilities/BackgroundService.py" line="121"/>
         <source>{0} not configured.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>Restart background client?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="195"/>
+        <location filename="../Utilities/BackgroundService.py" line="200"/>
         <source>An error in Erics background client stopped the service.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="390"/>
+        <location filename="../Utilities/BackgroundService.py" line="405"/>
         <source>Erics background client disconnected because of an unknown reason.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>Background client disconnected.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>The background client for &lt;b&gt;{0}&lt;/b&gt; disconnect because of an unknown reason.&lt;br&gt;Should it be restarted?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>&lt;p&gt;The background client for &lt;b&gt;{0}&lt;/b&gt; has stopped due to an exception. It&apos;s used by various plug-ins like the different checkers.&lt;/p&gt;&lt;p&gt;Select&lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;Yes&apos;&lt;/b&gt; to restart the client, but abort the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Retry&apos;&lt;/b&gt; to restart the client and the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;No&apos;&lt;/b&gt; to leave the client off.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Note: The client can be restarted by opening and accepting the preferences dialog or reloading/changing the project.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3141,7 +3141,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="585"/>
+        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="586"/>
         <source>No issues found.</source>
         <translation type="unfinished">Sorun bulunamadı.</translation>
     </message>
@@ -53374,17 +53374,17 @@
 <context>
     <name>SyntaxCheckService</name>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="204"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="201"/>
         <source>Python 2 batch check</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="220"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="217"/>
         <source>Python 3 batch check</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="236"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="233"/>
         <source>JavaScript batch check</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53444,7 +53444,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="332"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="345"/>
         <source>No issues found.</source>
         <translation>Sorun bulunamadı.</translation>
     </message>
@@ -53888,7 +53888,7 @@
         <translation>Sekme yardımcısı işlem sürecini göster</translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="223"/>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="285"/>
         <source>No indentation errors found.</source>
         <translation>Hiç girintileme hatası bulunamadı.</translation>
     </message>
@@ -53917,29 +53917,44 @@
         <source>%v/%m Files</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="205"/>
+        <source>Preparing files...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TabnannyPlugin</name>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>Check Indentations</source>
         <translation>Girinti Kontrolü</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>&amp;Indentations...</source>
         <translation>G&amp;irintiler...</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="152"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="217"/>
         <source>Check indentations using tabnanny.</source>
         <translation>Girintileri sekmeyardımcıları kullanarak kontrol et.</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="247"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="312"/>
         <source>&lt;b&gt;Check Indentations...&lt;/b&gt;&lt;p&gt;This checks Python files for bad indentations using tabnanny.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Girinti Kontrolu...&lt;/b&gt;&lt;p&gt;bu kontrol python dosyalarında sekmelerin yanlış kullanımına karşı yapılır.&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="104"/>
+        <source>Python 2 batch check</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="120"/>
+        <source>Python 3 batch check</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>Tabview</name>
--- a/i18n/eric6_zh_CN.GB2312.ts	Thu Apr 23 20:11:44 2015 +0200
+++ b/i18n/eric6_zh_CN.GB2312.ts	Fri Apr 24 18:41:06 2015 +0200
@@ -1395,37 +1395,37 @@
 <context>
     <name>BackgroundService</name>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="120"/>
+        <location filename="../Utilities/BackgroundService.py" line="121"/>
         <source>{0} not configured.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>Restart background client?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="195"/>
+        <location filename="../Utilities/BackgroundService.py" line="200"/>
         <source>An error in Erics background client stopped the service.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="390"/>
+        <location filename="../Utilities/BackgroundService.py" line="405"/>
         <source>Erics background client disconnected because of an unknown reason.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>Background client disconnected.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="396"/>
+        <location filename="../Utilities/BackgroundService.py" line="411"/>
         <source>The background client for &lt;b&gt;{0}&lt;/b&gt; disconnect because of an unknown reason.&lt;br&gt;Should it be restarted?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="170"/>
+        <location filename="../Utilities/BackgroundService.py" line="175"/>
         <source>&lt;p&gt;The background client for &lt;b&gt;{0}&lt;/b&gt; has stopped due to an exception. It&apos;s used by various plug-ins like the different checkers.&lt;/p&gt;&lt;p&gt;Select&lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;Yes&apos;&lt;/b&gt; to restart the client, but abort the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Retry&apos;&lt;/b&gt; to restart the client and the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;No&apos;&lt;/b&gt; to leave the client off.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Note: The client can be restarted by opening and accepting the preferences dialog or reloading/changing the project.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3138,7 +3138,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="585"/>
+        <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="586"/>
         <source>No issues found.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53516,17 +53516,17 @@
 <context>
     <name>SyntaxCheckService</name>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="204"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="201"/>
         <source>Python 2 batch check</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="220"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="217"/>
         <source>Python 3 batch check</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="236"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py" line="233"/>
         <source>JavaScript batch check</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53587,7 +53587,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="332"/>
+        <location filename="../Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py" line="345"/>
         <source>No issues found.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -54035,7 +54035,7 @@
         <translation>显示 tabnanny 行为的进程</translation>
     </message>
     <message>
-        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="223"/>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="285"/>
         <source>No indentation errors found.</source>
         <translation>未找到缩进错误。</translation>
     </message>
@@ -54064,29 +54064,44 @@
         <source>%v/%m Files</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py" line="205"/>
+        <source>Preparing files...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TabnannyPlugin</name>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>Check Indentations</source>
         <translation>检查缩进</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="243"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="308"/>
         <source>&amp;Indentations...</source>
         <translation>缩进(&amp;I)……</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="152"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="217"/>
         <source>Check indentations using tabnanny.</source>
         <translation>使用 tabnanny 检查缩进。</translation>
     </message>
     <message>
-        <location filename="../Plugins/PluginTabnanny.py" line="247"/>
+        <location filename="../Plugins/PluginTabnanny.py" line="312"/>
         <source>&lt;b&gt;Check Indentations...&lt;/b&gt;&lt;p&gt;This checks Python files for bad indentations using tabnanny.&lt;/p&gt;</source>
         <translation>&lt;b&gt;检查缩进……&lt;/b&gt;&lt;p&gt;使用 tabnanny 检查 Python 文件的不良缩进。&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="104"/>
+        <source>Python 2 batch check</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Plugins/PluginTabnanny.py" line="120"/>
+        <source>Python 3 batch check</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>Tabview</name>

eric ide

mercurial