2030 (self.lexer_.lexer() == "container" or self.lexer_.lexer() is None): |
2030 (self.lexer_.lexer() == "container" or self.lexer_.lexer() is None): |
2031 self.__textEdit.SCN_STYLENEEDED.disconnect(self.__styleNeeded) |
2031 self.__textEdit.SCN_STYLENEEDED.disconnect(self.__styleNeeded) |
2032 |
2032 |
2033 filename = os.path.basename(filename) |
2033 filename = os.path.basename(filename) |
2034 language = Preferences.getEditorLexerAssoc(filename) |
2034 language = Preferences.getEditorLexerAssoc(filename) |
|
2035 if language == "Python": |
|
2036 if self.__isPy2File(): |
|
2037 language = "Python2" |
|
2038 else: |
|
2039 language = "Python3" |
2035 if language.startswith("Pygments|"): |
2040 if language.startswith("Pygments|"): |
2036 pyname = language.split("|", 1)[1] |
2041 pyname = language.split("|", 1)[1] |
2037 language = "" |
2042 language = "" |
2038 |
2043 |
2039 self.lexer_ = Lexers.getLexer(language, self.__textEdit, pyname = pyname) |
2044 self.lexer_ = Lexers.getLexer(language, self.__textEdit, pyname = pyname) |
2060 self.lexer_.readSettings(Preferences.Prefs.settings, "Scintilla") |
2065 self.lexer_.readSettings(Preferences.Prefs.settings, "Scintilla") |
2061 |
2066 |
2062 # now set the lexer properties |
2067 # now set the lexer properties |
2063 self.lexer_.initProperties() |
2068 self.lexer_.initProperties() |
2064 |
2069 |
|
2070 def __isPy2File(self): |
|
2071 """ |
|
2072 Private method to return a flag indicating a Python 2 file. |
|
2073 |
|
2074 @return flag indicating a Python 2 file (boolean) |
|
2075 """ |
|
2076 if self.filetype in ["Python", "Python2"]: |
|
2077 return True |
|
2078 |
|
2079 if self.filetype == "": |
|
2080 line0 = self.__textEdit.text(0) |
|
2081 if line0.startswith("#!") and \ |
|
2082 ("python2" in line0 or \ |
|
2083 ("python" in line0 and not "python3" in line0)): |
|
2084 return True |
|
2085 |
|
2086 if self.__curFile is not None: |
|
2087 exts = [] |
|
2088 for ext in Preferences.getDebugger("PythonExtensions").split(): |
|
2089 if ext.startswith("."): |
|
2090 exts.append(ext) |
|
2091 else: |
|
2092 exts.append(".{0}".format(ext)) |
|
2093 |
|
2094 ext = os.path.splitext(self.__curFile)[1] |
|
2095 if ext in exts: |
|
2096 return True |
|
2097 |
|
2098 return False |
|
2099 |
2065 def __styleNeeded(self, position): |
2100 def __styleNeeded(self, position): |
2066 """ |
2101 """ |
2067 Private slot to handle the need for more styling. |
2102 Private slot to handle the need for more styling. |
2068 |
2103 |
2069 @param position end position, that needs styling (integer) |
2104 @param position end position, that needs styling (integer) |
2081 if line0.startswith("<?xml"): |
2116 if line0.startswith("<?xml"): |
2082 # override extension for XML files |
2117 # override extension for XML files |
2083 bindName = "dummy.xml" |
2118 bindName = "dummy.xml" |
2084 |
2119 |
2085 # check filetype |
2120 # check filetype |
2086 if self.filetype in ["Python", "Python3"]: |
2121 if self.filetype in ["Python", "Python2", "Python3"]: |
2087 bindName = "dummy.py" |
2122 bindName = "dummy.py" |
2088 elif self.filetype == "Ruby": |
2123 elif self.filetype == "Ruby": |
2089 bindName = "dummy.rb" |
2124 bindName = "dummy.rb" |
2090 elif self.filetype == "D": |
2125 elif self.filetype == "D": |
2091 bindName = "dummy.d" |
2126 bindName = "dummy.d" |