2045 (self.lexer_.lexer() == "container" or self.lexer_.lexer() is None): |
2045 (self.lexer_.lexer() == "container" or self.lexer_.lexer() is None): |
2046 self.__textEdit.SCN_STYLENEEDED.disconnect(self.__styleNeeded) |
2046 self.__textEdit.SCN_STYLENEEDED.disconnect(self.__styleNeeded) |
2047 |
2047 |
2048 filename = os.path.basename(filename) |
2048 filename = os.path.basename(filename) |
2049 language = Preferences.getEditorLexerAssoc(filename) |
2049 language = Preferences.getEditorLexerAssoc(filename) |
|
2050 if language == "Python": |
|
2051 if self.__isPy2File(): |
|
2052 language = "Python2" |
|
2053 else: |
|
2054 language = "Python3" |
2050 if language.startswith("Pygments|"): |
2055 if language.startswith("Pygments|"): |
2051 pyname = language.split("|", 1)[1] |
2056 pyname = language.split("|", 1)[1] |
2052 language = "" |
2057 language = "" |
2053 |
2058 |
2054 self.lexer_ = Lexers.getLexer(language, self.__textEdit, pyname=pyname) |
2059 self.lexer_ = Lexers.getLexer(language, self.__textEdit, pyname=pyname) |
2075 self.lexer_.readSettings(Preferences.Prefs.settings, "Scintilla") |
2080 self.lexer_.readSettings(Preferences.Prefs.settings, "Scintilla") |
2076 |
2081 |
2077 # now set the lexer properties |
2082 # now set the lexer properties |
2078 self.lexer_.initProperties() |
2083 self.lexer_.initProperties() |
2079 |
2084 |
|
2085 def __isPy2File(self): |
|
2086 """ |
|
2087 Private method to return a flag indicating a Python 2 file. |
|
2088 |
|
2089 @return flag indicating a Python 2 file (boolean) |
|
2090 """ |
|
2091 if self.filetype in ["Python", "Python2"]: |
|
2092 return True |
|
2093 |
|
2094 if self.filetype == "": |
|
2095 line0 = self.__textEdit.text(0) |
|
2096 if line0.startswith("#!") and \ |
|
2097 ("python2" in line0 or \ |
|
2098 ("python" in line0 and not "python3" in line0)): |
|
2099 return True |
|
2100 |
|
2101 if self.__curFile is not None: |
|
2102 exts = [] |
|
2103 for ext in Preferences.getDebugger("PythonExtensions").split(): |
|
2104 if ext.startswith("."): |
|
2105 exts.append(ext) |
|
2106 else: |
|
2107 exts.append(".{0}".format(ext)) |
|
2108 |
|
2109 ext = os.path.splitext(self.__curFile)[1] |
|
2110 if ext in exts: |
|
2111 return True |
|
2112 |
|
2113 return False |
|
2114 |
2080 def __styleNeeded(self, position): |
2115 def __styleNeeded(self, position): |
2081 """ |
2116 """ |
2082 Private slot to handle the need for more styling. |
2117 Private slot to handle the need for more styling. |
2083 |
2118 |
2084 @param position end position, that needs styling (integer) |
2119 @param position end position, that needs styling (integer) |
2096 if line0.startswith("<?xml"): |
2131 if line0.startswith("<?xml"): |
2097 # override extension for XML files |
2132 # override extension for XML files |
2098 bindName = "dummy.xml" |
2133 bindName = "dummy.xml" |
2099 |
2134 |
2100 # check filetype |
2135 # check filetype |
2101 if self.filetype in ["Python", "Python3"]: |
2136 if self.filetype in ["Python", "Python2", "Python3"]: |
2102 bindName = "dummy.py" |
2137 bindName = "dummy.py" |
2103 elif self.filetype == "Ruby": |
2138 elif self.filetype == "Ruby": |
2104 bindName = "dummy.rb" |
2139 bindName = "dummy.rb" |
2105 elif self.filetype == "D": |
2140 elif self.filetype == "D": |
2106 bindName = "dummy.d" |
2141 bindName = "dummy.d" |