Plugins/PluginSyntaxChecker.py

branch
Py2 comp.
changeset 3484
645c12de6b0c
parent 3456
96232974dcdb
parent 3447
64fb656bd334
child 3515
1b8381afe38f
equal deleted inserted replaced
3456:96232974dcdb 3484:645c12de6b0c
10 from __future__ import unicode_literals 10 from __future__ import unicode_literals
11 11
12 import os 12 import os
13 13
14 from PyQt4.QtCore import QObject 14 from PyQt4.QtCore import QObject
15 from PyQt4.QtGui import QApplication
16 15
17 from E5Gui.E5Action import E5Action 16 from E5Gui.E5Action import E5Action
18 from E5Gui.E5Application import e5App 17 from E5Gui.E5Application import e5App
19 from eric5config import getConfig 18 from eric5config import getConfig
20 19
23 # Start-Of-Header 22 # Start-Of-Header
24 name = "Syntax Checker Plugin" 23 name = "Syntax Checker Plugin"
25 author = "Detlev Offenbach <detlev@die-offenbachs.de>" 24 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
26 autoactivate = True 25 autoactivate = True
27 deactivateable = True 26 deactivateable = True
28 version = "5.4.0" 27 version = "5.5.0"
29 className = "SyntaxCheckerPlugin" 28 className = "SyntaxCheckerPlugin"
30 packageName = "__core__" 29 packageName = "__core__"
31 shortDescription = "Show the Syntax Checker dialog." 30 shortDescription = "Show the Syntax Checker dialog."
32 longDescription = """This plugin implements the Syntax Checker dialog.""" \ 31 longDescription = """This plugin implements the Syntax Checker dialog.""" \
33 """ Syntax Checker is used to check Python source files for correct""" \ 32 """ Syntax Checker is used to check Python source files for correct""" \
117 @param problems dictionary with the keys 'error' and 'warnings' which 116 @param problems dictionary with the keys 'error' and 'warnings' which
118 hold a list containing details about the error/ warnings 117 hold a list containing details about the error/ warnings
119 (file name, line number, column, codestring (only at syntax 118 (file name, line number, column, codestring (only at syntax
120 errors), the message, a list with arguments for the message) 119 errors), the message, a list with arguments for the message)
121 """ 120 """
121 from CheckerPlugins.SyntaxChecker.pyflakes.translations import \
122 getTranslatedFlakesMessage
122 warnings = problems.get('warnings', []) 123 warnings = problems.get('warnings', [])
123 for warning in warnings: 124 for warning in warnings:
124 # Translate messages 125 # Translate messages
125 msg_args = warning.pop() 126 msg_args = warning.pop()
126 translated = QApplication.translate( 127 warning[4] = getTranslatedFlakesMessage(warning[4], msg_args)
127 'py3Flakes', warning[4]).format(*msg_args)
128 # Avoid leading "u" at Python2 unicode strings
129 if translated.startswith("u'"):
130 translated = translated[1:]
131 warning[4] = translated.replace(" u'", " '")
132 128
133 problems['warnings'] = warnings 129 problems['warnings'] = warnings
134 self.syntaxCheckService.syntaxChecked.emit(fn, problems) 130 self.syntaxCheckService.syntaxChecked.emit(fn, problems)
135 131
136 def activate(self): 132 def activate(self):
140 @return tuple of None and activation status (boolean) 136 @return tuple of None and activation status (boolean)
141 """ 137 """
142 menu = e5App().getObject("Project").getMenu("Checks") 138 menu = e5App().getObject("Project").getMenu("Checks")
143 if menu: 139 if menu:
144 self.__projectAct = E5Action( 140 self.__projectAct = E5Action(
145 self.trUtf8('Check Syntax'), 141 self.tr('Check Syntax'),
146 self.trUtf8('&Syntax...'), 0, 0, 142 self.tr('&Syntax...'), 0, 0,
147 self, 'project_check_syntax') 143 self, 'project_check_syntax')
148 self.__projectAct.setStatusTip( 144 self.__projectAct.setStatusTip(
149 self.trUtf8('Check syntax.')) 145 self.tr('Check syntax.'))
150 self.__projectAct.setWhatsThis(self.trUtf8( 146 self.__projectAct.setWhatsThis(self.tr(
151 """<b>Check Syntax...</b>""" 147 """<b>Check Syntax...</b>"""
152 """<p>This checks Python files for syntax errors.</p>""" 148 """<p>This checks Python files for syntax errors.</p>"""
153 )) 149 ))
154 self.__projectAct.triggered[()].connect(self.__projectSyntaxCheck) 150 self.__projectAct.triggered.connect(self.__projectSyntaxCheck)
155 e5App().getObject("Project").addE5Actions([self.__projectAct]) 151 e5App().getObject("Project").addE5Actions([self.__projectAct])
156 menu.addAction(self.__projectAct) 152 menu.addAction(self.__projectAct)
157 153
158 self.__editorAct = E5Action( 154 self.__editorAct = E5Action(
159 self.trUtf8('Check Syntax'), 155 self.tr('Check Syntax'),
160 self.trUtf8('&Syntax...'), 0, 0, 156 self.tr('&Syntax...'), 0, 0,
161 self, "") 157 self, "")
162 self.__editorAct.setWhatsThis(self.trUtf8( 158 self.__editorAct.setWhatsThis(self.tr(
163 """<b>Check Syntax...</b>""" 159 """<b>Check Syntax...</b>"""
164 """<p>This checks Python files for syntax errors.</p>""" 160 """<p>This checks Python files for syntax errors.</p>"""
165 )) 161 ))
166 self.__editorAct.triggered[()].connect(self.__editorSyntaxCheck) 162 self.__editorAct.triggered.connect(self.__editorSyntaxCheck)
167 163
168 e5App().getObject("Project").showMenu.connect(self.__projectShowMenu) 164 e5App().getObject("Project").showMenu.connect(self.__projectShowMenu)
169 e5App().getObject("ProjectBrowser").getProjectBrowser("sources")\ 165 e5App().getObject("ProjectBrowser").getProjectBrowser("sources")\
170 .showMenu.connect(self.__projectBrowserShowMenu) 166 .showMenu.connect(self.__projectBrowserShowMenu)
171 e5App().getObject("ViewManager").editorOpenedEd.connect( 167 e5App().getObject("ViewManager").editorOpenedEd.connect(
233 e5App().getObject("Project").getProjectLanguage() in \ 229 e5App().getObject("Project").getProjectLanguage() in \
234 self.syntaxCheckService.getLanguages(): 230 self.syntaxCheckService.getLanguages():
235 self.__projectBrowserMenu = menu 231 self.__projectBrowserMenu = menu
236 if self.__projectBrowserAct is None: 232 if self.__projectBrowserAct is None:
237 self.__projectBrowserAct = E5Action( 233 self.__projectBrowserAct = E5Action(
238 self.trUtf8('Check Syntax'), 234 self.tr('Check Syntax'),
239 self.trUtf8('&Syntax...'), 0, 0, 235 self.tr('&Syntax...'), 0, 0,
240 self, "") 236 self, "")
241 self.__projectBrowserAct.setWhatsThis(self.trUtf8( 237 self.__projectBrowserAct.setWhatsThis(self.tr(
242 """<b>Check Syntax...</b>""" 238 """<b>Check Syntax...</b>"""
243 """<p>This checks Python files for syntax errors.</p>""" 239 """<p>This checks Python files for syntax errors.</p>"""
244 )) 240 ))
245 self.__projectBrowserAct.triggered[()].connect( 241 self.__projectBrowserAct.triggered.connect(
246 self.__projectBrowserSyntaxCheck) 242 self.__projectBrowserSyntaxCheck)
247 if not self.__projectBrowserAct in menu.actions(): 243 if not self.__projectBrowserAct in menu.actions():
248 menu.addAction(self.__projectBrowserAct) 244 menu.addAction(self.__projectBrowserAct)
249 245
250 def __projectSyntaxCheck(self): 246 def __projectSyntaxCheck(self):
327 Private slot to handle the syntax check context menu action of the 323 Private slot to handle the syntax check context menu action of the
328 editors. 324 editors.
329 """ 325 """
330 editor = e5App().getObject("ViewManager").activeWindow() 326 editor = e5App().getObject("ViewManager").activeWindow()
331 if editor is not None: 327 if editor is not None:
332 from CheckerPlugins.SyntaxChecker.SyntaxCheckerDialog import \ 328 from CheckerPlugins.SyntaxChecker.SyntaxCheckerDialog import \
333 SyntaxCheckerDialog 329 SyntaxCheckerDialog
334 self.__editorSyntaxCheckerDialog = SyntaxCheckerDialog() 330 self.__editorSyntaxCheckerDialog = SyntaxCheckerDialog()
335 self.__editorSyntaxCheckerDialog.show() 331 self.__editorSyntaxCheckerDialog.show()
336 self.__editorSyntaxCheckerDialog.start( 332 if editor.isJavascriptFile():
337 editor.getFileName() or "Unnamed.py", editor.text()) 333 unnamed = "Unnamed.js"
334 else:
335 unnamed = "Unnamed.py"
336 self.__editorSyntaxCheckerDialog.start(
337 editor.getFileName() or unnamed, editor.text())

eric ide

mercurial