eric6/QScintilla/MiniEditor.py

changeset 7278
1820a0344b62
parent 7267
aedc309827c7
child 7279
d02fe4c17413
equal deleted inserted replaced
7277:adecbc6335c5 7278:1820a0344b62
2342 '<p>Reason: {1}</p>') 2342 '<p>Reason: {1}</p>')
2343 .format(fileName, str(why))) 2343 .format(fileName, str(why)))
2344 QApplication.restoreOverrideCursor() 2344 QApplication.restoreOverrideCursor()
2345 return 2345 return
2346 2346
2347 modified = False 2347 self.__textEdit.setText(txt)
2348 2348 QApplication.restoreOverrideCursor()
2349
2350 if filetype is None:
2351 self.filetype = ""
2352 else:
2353 self.filetype = filetype
2354 self.__setCurrentFile(fileName)
2355
2356 self.__textEdit.setModified(False)
2357 self.setWindowModified(False)
2358
2359 self.__convertTabs()
2360
2361 eolMode = self.__getEditorConfig("EOLMode", nodefault=True)
2362 if eolMode is None:
2363 fileEol = self.__textEdit.detectEolString(txt)
2364 self.__textEdit.setEolModeByEolString(fileEol)
2365 else:
2366 self.__textEdit.convertEols(eolMode)
2367
2368 self.__statusBar.showMessage(self.tr("File loaded"), 2000)
2369
2370 def __convertTabs(self):
2371 """
2372 Private slot to convert tabulators to spaces.
2373 """
2349 if ( 2374 if (
2350 not self.__getEditorConfig("TabForIndentation") and 2375 (not self.__getEditorConfig("TabForIndentation")) and
2351 Preferences.getEditor("ConvertTabsOnLoad") and 2376 Preferences.getEditor("ConvertTabsOnLoad") and
2352 not (self.lexer_ and 2377 not (self.lexer_ and
2353 self.lexer_.alwaysKeepTabs()) 2378 self.lexer_.alwaysKeepTabs())
2354 ): 2379 ):
2380 txt = self.__textEdit.text()
2355 txtExpanded = txt.expandtabs(self.__getEditorConfig("TabWidth")) 2381 txtExpanded = txt.expandtabs(self.__getEditorConfig("TabWidth"))
2356 if txtExpanded != txt: 2382 if txtExpanded != txt:
2357 modified = True 2383 self.__textEdit.beginUndoAction
2358 txt = txtExpanded 2384 self.__textEdit.setText(txt)
2359 2385 self.__textEdit.endUndoAction()
2360 self.__textEdit.setText(txt) 2386
2361 QApplication.restoreOverrideCursor() 2387 self.__textEdit.setModified(True)
2362 2388 self.setWindowModified(True)
2363 if filetype is None:
2364 self.filetype = ""
2365 else:
2366 self.filetype = filetype
2367 self.__setCurrentFile(fileName)
2368
2369 self.__textEdit.setModified(modified)
2370 self.setWindowModified(modified)
2371
2372 eolMode = self.__getEditorConfig("EOLMode", nodefault=True)
2373 if eolMode is None:
2374 fileEol = self.__textEdit.detectEolString(txt)
2375 self.__textEdit.setEolModeByEolString(fileEol)
2376 else:
2377 self.__textEdit.convertEols(eolMode)
2378
2379 self.__statusBar.showMessage(self.tr("File loaded"), 2000)
2380 2389
2381 def __saveFile(self, fileName): 2390 def __saveFile(self, fileName):
2382 """ 2391 """
2383 Private method to save to the given file. 2392 Private method to save to the given file.
2384 2393
2628 self.__textEdit.setIndentationGuidesForegroundColor( 2637 self.__textEdit.setIndentationGuidesForegroundColor(
2629 Preferences.getEditorColour("IndentationGuidesForeground")) 2638 Preferences.getEditorColour("IndentationGuidesForeground"))
2630 if Preferences.getEditor("ShowWhitespace"): 2639 if Preferences.getEditor("ShowWhitespace"):
2631 self.__textEdit.setWhitespaceVisibility(QsciScintilla.WsVisible) 2640 self.__textEdit.setWhitespaceVisibility(QsciScintilla.WsVisible)
2632 try: 2641 try:
2633 self.setWhitespaceForegroundColor( 2642 self.__textEdit.setWhitespaceForegroundColor(
2634 Preferences.getEditorColour("WhitespaceForeground")) 2643 Preferences.getEditorColour("WhitespaceForeground"))
2635 self.setWhitespaceBackgroundColor( 2644 self.__textEdit.setWhitespaceBackgroundColor(
2636 Preferences.getEditorColour("WhitespaceBackground")) 2645 Preferences.getEditorColour("WhitespaceBackground"))
2637 self.setWhitespaceSize( 2646 self.__textEdit.setWhitespaceSize(
2638 Preferences.getEditor("WhitespaceSize")) 2647 Preferences.getEditor("WhitespaceSize"))
2639 except AttributeError: 2648 except AttributeError:
2649 # TODO: is this still needed?
2640 # QScintilla before 2.5 doesn't support this 2650 # QScintilla before 2.5 doesn't support this
2641 pass 2651 pass
2642 else: 2652 else:
2643 self.__textEdit.setWhitespaceVisibility(QsciScintilla.WsInvisible) 2653 self.__textEdit.setWhitespaceVisibility(QsciScintilla.WsInvisible)
2644 self.__textEdit.setEolVisibility(Preferences.getEditor("ShowEOL")) 2654 self.__textEdit.setEolVisibility(Preferences.getEditor("ShowEOL"))
3035 language = "Python3" 3045 language = "Python3"
3036 if language.startswith("Pygments|"): 3046 if language.startswith("Pygments|"):
3037 pyname = language.split("|", 1)[1] 3047 pyname = language.split("|", 1)[1]
3038 language = "" 3048 language = ""
3039 3049
3050 if not self.filetype:
3051 if not language and pyname:
3052 self.filetype = pyname
3053 else:
3054 self.filetype = language
3055
3040 from . import Lexers 3056 from . import Lexers
3041 self.lexer_ = Lexers.getLexer(language, self.__textEdit, pyname=pyname) 3057 self.lexer_ = Lexers.getLexer(language, self.__textEdit, pyname=pyname)
3042 if self.lexer_ is None: 3058 if self.lexer_ is None:
3043 self.__textEdit.setLexer() 3059 self.__textEdit.setLexer()
3044 self.apiLanguage = "" 3060 self.apiLanguage = ""
3461 3477
3462 if not config: 3478 if not config:
3463 if nodefault: 3479 if nodefault:
3464 return None 3480 return None
3465 else: 3481 else:
3466 return Preferences.getEditor(option) 3482 value = self.__getOverrideValue(option)
3483 if value is None:
3484 # no override
3485 value = Preferences.getEditor(option)
3486 return value
3467 3487
3468 try: 3488 try:
3469 if option == "EOLMode": 3489 if option == "EOLMode":
3470 value = config["end_of_line"] 3490 value = config["end_of_line"]
3471 if value == "lf": 3491 if value == "lf":
3495 except KeyError: 3515 except KeyError:
3496 value = None 3516 value = None
3497 3517
3498 if value is None and not nodefault: 3518 if value is None and not nodefault:
3499 # use Preferences as default in case of error 3519 # use Preferences as default in case of error
3500 value = Preferences.getEditor(option) 3520 value = self.__getOverrideValue(option)
3521 if value is None:
3522 # no override
3523 value = Preferences.getEditor(option)
3501 3524
3502 return value 3525 return value
3526
3527 def __getOverrideValue(self, option):
3528 """
3529 Private method to get an override value for the current file type.
3530
3531 @param option Preferences option key
3532 @type str
3533 @return override value; None in case nothing is defined
3534 @rtype any
3535 """
3536 if option in ("TabWidth", "IndentWidth"):
3537 overrides = Preferences.getEditor("TabIndentOverride")
3538 if self.filetype in overrides:
3539 if option == "TabWidth":
3540 return overrides[self.filetype][0]
3541 elif option == "IndentWidth":
3542 return overrides[self.filetype][1]
3543
3544 return None

eric ide

mercurial