QScintilla/Editor.py

changeset 802
e8882d16384c
parent 795
917f1945355c
child 811
2ed99614dbf4
equal deleted inserted replaced
801:16f9875e278b 802:e8882d16384c
1147 self.setLanguage("dummy.pygments", pyname = language) 1147 self.setLanguage("dummy.pygments", pyname = language)
1148 else: 1148 else:
1149 language = act.data() 1149 language = act.data()
1150 if language: 1150 if language:
1151 self.setLanguage(self.supportedLanguages[language][1]) 1151 self.setLanguage(self.supportedLanguages[language][1])
1152 self.filetype = language
1153 self.__autoSyntaxCheck()
1152 1154
1153 def __languageChanged(self, language, propagate = True): 1155 def __languageChanged(self, language, propagate = True):
1154 """ 1156 """
1155 Private slot handling a change of a connected editor's language. 1157 Private slot handling a change of a connected editor's language.
1156 1158
1164 elif language.startswith("Pygments|"): 1166 elif language.startswith("Pygments|"):
1165 pyname = language.split("|", 1)[1] 1167 pyname = language.split("|", 1)[1]
1166 self.setLanguage("dummy.pygments", pyname = pyname) 1168 self.setLanguage("dummy.pygments", pyname = pyname)
1167 else: 1169 else:
1168 self.setLanguage(self.supportedLanguages[language][1], propagate = propagate) 1170 self.setLanguage(self.supportedLanguages[language][1], propagate = propagate)
1171 self.filetype = language
1172 self.__autoSyntaxCheck()
1169 1173
1170 def __resetLanguage(self, propagate = True): 1174 def __resetLanguage(self, propagate = True):
1171 """ 1175 """
1172 Private method used to reset the language selection. 1176 Private method used to reset the language selection.
1173 1177
1341 1345
1342 language = "" 1346 language = ""
1343 if self.project.isOpen() and self.project.isProjectFile(filename): 1347 if self.project.isOpen() and self.project.isProjectFile(filename):
1344 language = self.project.getEditorLexerAssoc(os.path.basename(filename)) 1348 language = self.project.getEditorLexerAssoc(os.path.basename(filename))
1345 if not language: 1349 if not language:
1346 filename = os.path.basename(filename) 1350 ext = os.path.splitext(filename)[1]
1347 language = Preferences.getEditorLexerAssoc(filename) 1351 if ext in [".py", ".pyw"] and \
1352 Preferences.getProject("DeterminePyFromProject")and \
1353 self.project.isOpen() and \
1354 self.project.isProjectFile(self.fileName):
1355 if self.project.getProjectLanguage() in ["Python", "Python2"]:
1356 language = "Python2"
1357 else:
1358 language = "Python3"
1359 else:
1360 filename = os.path.basename(filename)
1361 language = Preferences.getEditorLexerAssoc(filename)
1362 if language == "Python":
1363 if self.isPy2File():
1364 language = "Python2"
1365 else:
1366 language = "Python3"
1348 if language.startswith("Pygments|"): 1367 if language.startswith("Pygments|"):
1349 pyname = language.split("|", 1)[1] 1368 pyname = language.split("|", 1)[1]
1350 language = "" 1369 language = ""
1351 1370
1352 self.lexer_ = Lexers.getLexer(language, self, pyname = pyname) 1371 self.lexer_ = Lexers.getLexer(language, self, pyname = pyname)
1567 """ 1586 """
1568 Public method to return a flag indicating a Python file. 1587 Public method to return a flag indicating a Python file.
1569 1588
1570 @return flag indicating a Python file (boolean) 1589 @return flag indicating a Python file (boolean)
1571 """ 1590 """
1572 return self.filetype in ["Python", "Python2"] or \ 1591 if self.filetype in ["Python", "Python2"]:
1573 (self.filetype == "" and \ 1592 return True
1574 self.fileName is not None and \ 1593
1575 os.path.splitext(self.fileName)[1] in self.dbs.getExtensions('Python2')) 1594 if self.filetype == "" and self.fileName is not None:
1595 ext = os.path.splitext(self.fileName)[1]
1596 if ext in [".py", ".pyw"] and \
1597 Preferences.getProject("DeterminePyFromProject") and \
1598 self.project.isOpen() and \
1599 self.project.isProjectFile(self.fileName):
1600 return self.project.getProjectLanguage() in ["Python", "Python2"]
1601
1602 if ext in self.dbs.getExtensions('Python2'):
1603 return True
1604
1605 return False
1606 ## return self.filetype in ["Python", "Python2"] or \
1607 ## (self.filetype == "" and \
1608 ## self.fileName is not None and \
1609 ## os.path.splitext(self.fileName)[1] in self.dbs.getExtensions('Python2'))
1576 1610
1577 def isPy3File(self): 1611 def isPy3File(self):
1578 """ 1612 """
1579 Public method to return a flag indicating a Python3 file. 1613 Public method to return a flag indicating a Python3 file.
1580 1614
1581 @return flag indicating a Python3 file (boolean) 1615 @return flag indicating a Python3 file (boolean)
1582 """ 1616 """
1583 return self.filetype == "Python3" or \ 1617 if self.filetype in ["Python3"]:
1584 (self.filetype == "" and \ 1618 return True
1585 self.fileName is not None and \ 1619
1586 os.path.splitext(self.fileName)[1] in self.dbs.getExtensions('Python3')) 1620 if self.filetype == "" and self.fileName is not None:
1621 ext = os.path.splitext(self.fileName)[1]
1622 if ext in [".py", ".pyw"] and \
1623 Preferences.getProject("DeterminePyFromProject") and \
1624 self.project.isOpen() and \
1625 self.project.isProjectFile(self.fileName):
1626 return self.project.getProjectLanguage() in ["Python3"]
1627
1628 if ext in self.dbs.getExtensions('Python3'):
1629 return True
1630
1631 return False
1632 ## return self.filetype == "Python3" or \
1633 ## (self.filetype == "" and \
1634 ## self.fileName is not None and \
1635 ## os.path.splitext(self.fileName)[1] in self.dbs.getExtensions('Python3'))
1587 1636
1588 def isRubyFile(self): 1637 def isRubyFile(self):
1589 """ 1638 """
1590 Public method to return a flag indicating a Ruby file. 1639 Public method to return a flag indicating a Ruby file.
1591 1640
4172 msg = err.text.strip() 4221 msg = err.text.strip()
4173 else: 4222 else:
4174 msg = err.msg 4223 msg = err.msg
4175 self.toggleSyntaxError(err.lineno, True, msg) 4224 self.toggleSyntaxError(err.lineno, True, msg)
4176 elif self.isPy2File(): 4225 elif self.isPy2File():
4177 syntaxError, _fn, errorline, _code, _error = \ 4226 syntaxError, _fn, errorline, _code, _error, warnings = \
4178 Utilities.py2compile(self.fileName) 4227 Utilities.py2compile(
4228 self.fileName,
4229 checkFlakes = Preferences.getFlakes("IncludeInSyntaxCheck"))
4179 if syntaxError: 4230 if syntaxError:
4180 self.toggleSyntaxError(int(errorline), True, _error) 4231 self.toggleSyntaxError(int(errorline), True, _error)
4232 else:
4233 for warning in warnings:
4234 self.toggleFlakesWarning(int(warning[1]), True, warning[2])
4181 4235
4182 def __showCodeMetrics(self): 4236 def __showCodeMetrics(self):
4183 """ 4237 """
4184 Private method to handle the code metrics context menu action. 4238 Private method to handle the code metrics context menu action.
4185 """ 4239 """

eric ide

mercurial