def applyViewSettingsToDocument(self, scintilla): prefs = self.koDoc.prefs try: # Unwrap prefs, as it will be faster to work outside of XPCOM. prefs = UnwrapObject(prefs) except: pass # these should all be conditional on not being the # default prefs. scimoz = scintilla.scimoz prefs.setLongPref('anchor', scimoz.anchor) prefs.setLongPref('currentPos', scimoz.currentPos) # scrollWidth is disabled on OS X - see bug 88586. if sys.platform != "darwin": prefs.setLongPref("scrollWidth", scimoz.scrollWidth) prefs.setBooleanPref("scrollWidthTracking", scimoz.scrollWidthTracking) prefs.setLongPref('xOffset', scimoz.xOffset) prefs.setLongPref('firstVisibleLine', scimoz.firstVisibleLine) prefs.setBooleanPref('showWhitespace', scimoz.viewWS) prefs.setBooleanPref('showLineNumbers', scimoz.getMarginWidthN(scimoz.MARGIN_LINENUMBERS) != 0) prefs.setBooleanPref('showIndentationGuides', scimoz.indentationGuides) prefs.setBooleanPref('showEOL', scimoz.viewEOL) prefs.setBooleanPref('editFoldLines', self._foldFlags) #prefs.setStringPref('editFoldStyle', ... ) #prefs.setStringPref('editUseFixedFont', ... ) prefs.setLongPref('editWrapType', scimoz.wrapMode) # these should be saved only if they were explicitely # set, not if they were just computed if prefs.hasPrefHere('useTabs'): prefs.setBooleanPref('useTabs', scimoz.useTabs) if prefs.hasPrefHere('indentWidth'): prefs.setLongPref('indentWidth', scimoz.indent) if prefs.hasPrefHere('tabWidth'): prefs.setLongPref('tabWidth', scimoz.tabWidth) if prefs.getBooleanPref("editRestoreFoldPoints"): i = scimoz.contractedFoldNext(0) if i >= 0: foldPoints = components.classes[ '@activestate.com/koOrderedPreference;1'].createInstance() foldPoints.id = "foldPoints" while i != -1: foldPoints.appendLongPref(i) i = scimoz.contractedFoldNext(i+1) prefs.setPref("foldPoints", foldPoints) else: # we don't want to store foldpoints if there are none # reloading them is expensive. if prefs.hasPref('foldPoints'): prefs.deletePref('foldPoints') # Get the bookmarks. bookmarks = None marker_mask = 1 << MARKNUM_BOOKMARK lineNo = scimoz.markerNext(0, marker_mask) while lineNo >= 0: if bookmarks is None: bookmarks = components.classes['@activestate.com/koOrderedPreference;1'] \ .createInstance() bookmarks.id = "bookmarks" prefs.setPref("bookmarks", bookmarks) bookmarks.appendLongPref(lineNo) lineNo = scimoz.markerNext(lineNo+1, marker_mask) if bookmarks is None and prefs.hasPrefHere("bookmarks"): # Remove old bookmarks. prefs.deletePref("bookmarks")
def applyViewSettingsToDocument(self, scintilla): prefs = self.koDoc.prefs try: # Unwrap prefs, as it will be faster to work outside of XPCOM. prefs = UnwrapObject(prefs) except: pass # these should all be conditional on not being the # default prefs. scimoz = scintilla.scimoz prefs.setLongPref('anchor', scimoz.anchor) prefs.setLongPref('currentPos', scimoz.currentPos) prefs.setLongPref("scrollWidth", scimoz.scrollWidth) prefs.setBooleanPref("scrollWidthTracking", scimoz.scrollWidthTracking) prefs.setLongPref('xOffset', scimoz.xOffset) prefs.setLongPref('firstVisibleLine', scimoz.firstVisibleLine) prefs.setBooleanPref('showWhitespace', scimoz.viewWS) prefs.setBooleanPref('showLineNumbers', scimoz.getMarginWidthN(0) != 0) prefs.setBooleanPref('showIndentationGuides', scimoz.indentationGuides) prefs.setBooleanPref('showEOL', scimoz.viewEOL) prefs.setBooleanPref('editFoldLines', self._foldFlags) #prefs.setStringPref('editFoldStyle', ... ) #prefs.setStringPref('editUseFixedFont', ... ) prefs.setLongPref('editWrapType', scimoz.wrapMode) # these should be saved only if they were explicitely # set, not if they were just computed if prefs.hasPrefHere('useTabs'): prefs.setBooleanPref('useTabs', scimoz.useTabs) if prefs.hasPrefHere('indentWidth'): prefs.setLongPref('indentWidth', scimoz.indent) if prefs.hasPrefHere('tabWidth'): prefs.setLongPref('tabWidth', scimoz.tabWidth) if prefs.getBooleanPref("editRestoreFoldPoints"): i = scimoz.contractedFoldNext(0) if i >= 0: foldPoints = components.classes[ '@activestate.com/koOrderedPreference;1'].createInstance() foldPoints.id = "foldPoints" while i != -1: foldPoints.appendLongPref(i) i = scimoz.contractedFoldNext(i+1) prefs.setPref("foldPoints", foldPoints) else: # we don't want to store foldpoints if there are none # reloading them is expensive. if prefs.hasPref('foldPoints'): prefs.deletePref('foldPoints') # Get the bookmarks. bookmarks = None marker_mask = 1 << MARKNUM_BOOKMARK lineNo = scimoz.markerNext(0, marker_mask) while lineNo >= 0: if bookmarks is None: bookmarks = components.classes['@activestate.com/koOrderedPreference;1'] \ .createInstance() bookmarks.id = "bookmarks" prefs.setPref("bookmarks", bookmarks) bookmarks.appendLongPref(lineNo) lineNo = scimoz.markerNext(lineNo+1, marker_mask) if bookmarks is None and prefs.hasPrefHere("bookmarks"): # Remove old bookmarks. prefs.deletePref("bookmarks")
def applyDocumentSettingsToView(self, scintilla): scimoz = scintilla.scimoz # assumption: we are given a 'virgin' view, and a fully # capable document -- if it doesn't know something, it can figure it out. languageOb = self.koDoc.languageObj koDoc = self.koDoc prefs = koDoc.prefs try: # Unwrap prefs, as it will be faster to work outside of XPCOM. prefs = UnwrapObject(prefs) except: pass lexer = koDoc.lexer if lexer is None: lexer = languageOb.getLanguageService(components.interfaces.koILexerLanguageService) lexer.setCurrent(scimoz) self._applyPrefs(prefs, scimoz) if prefs.hasLongPref('anchor'): scimoz.currentPos = scimoz.anchor = prefs.getLongPref('anchor') if prefs.hasLongPref('currentPos'): scimoz.currentPos = prefs.getLongPref('currentPos') if prefs.hasPrefHere('indentWidth'): scimoz.indent = prefs.getLongPref('indentWidth') else: scimoz.indent = koDoc.indentWidth if prefs.hasPrefHere('editUseAlternateFaceType'): useAlternate = prefs.getBooleanPref('editUseAlternateFaceType') else: useAlternate = 0 scintilla.alternateFaceType = useAlternate self._updateEdge(prefs) if prefs.hasPrefHere('useTabs'): scimoz.useTabs = prefs.getBooleanPref('useTabs') else: scimoz.useTabs = koDoc.useTabs if prefs.hasPrefHere('tabWidth'): scimoz.tabWidth = prefs.getLongPref('tabWidth') else: scimoz.tabWidth = koDoc.tabWidth slop = prefs.getLongPref('ySlop') scimoz.setYCaretPolicy(scimoz.CARET_SLOP | scimoz.CARET_STRICT | scimoz.CARET_EVEN, slop) scimoz.setVisiblePolicy(scimoz.VISIBLE_SLOP | scimoz.VISIBLE_STRICT, slop) if prefs.hasLongPref('firstVisibleLine'): scimoz.lineScroll(0, prefs.getLongPref('firstVisibleLine')) # scrollWidth is disabled on OS X - see bug 88586. if sys.platform != "darwin": if prefs.hasLongPref('scrollWidth'): scimoz.scrollWidth = prefs.getLongPref("scrollWidth") else: log.warn('should set default scroll width?') if prefs.getBooleanPref('scrollWidthTracking'): scimoz.scrollWidthTracking = prefs.getBooleanPref("scrollWidthTracking") if prefs.hasLongPref('xOffset'): scimoz.xOffset = prefs.getLongPref('xOffset') else: scimoz.xOffset = 0 if languageOb.variableIndicators: scimoz.wordChars = _letters + languageOb.variableIndicators else: # Do this for cases where we change languages. scimoz.setCharsDefault() # restore fold points if the user has checked that pref off. # We don't do it by default because the colourise(.., -1) call below # can be quite slow. # Bug 93190: prefs are boolean for foldPoints, # but get the actual foldPoints off the document prefs if prefs.getBooleanPref("editRestoreFoldPoints") and \ prefs.hasPref('foldPoints') and \ scimoz.getPropertyInt("fold"): foldPoints = prefs.getPref("foldPoints") if foldPoints.length: # restyle the whole document to get folding right # Fixes bug 45621 scimoz.colourise(0, -1) for i in range(foldPoints.length): scimoz.toggleFold(foldPoints.getLongPref(i)); # restore the bookmarks # Bug 93190: use doc prefs, stay away from project prefs here if prefs.hasPref("bookmarks"): bookmarks = prefs.getPref("bookmarks") for i in range(bookmarks.length): scimoz.markerAdd(bookmarks.getLongPref(i), MARKNUM_BOOKMARK)
def applyDocumentSettingsToView(self, scintilla): scimoz = scintilla.scimoz # assumption: we are given a 'virgin' view, and a fully # capable document -- if it doesn't know something, it can figure it out. languageOb = self.koDoc.languageObj koDoc = self.koDoc prefs = koDoc.prefs try: # Unwrap prefs, as it will be faster to work outside of XPCOM. prefs = UnwrapObject(prefs) except: pass lexer = koDoc.lexer if lexer is None: lexer = languageOb.getLanguageService(components.interfaces.koILexerLanguageService) lexer.setCurrent(scimoz) self._setIndicators(languageOb, scimoz) self._applyPrefs(prefs, scimoz) if prefs.hasLongPref('anchor'): scimoz.currentPos = scimoz.anchor = prefs.getLongPref('anchor') if prefs.hasLongPref('currentPos'): scimoz.currentPos = prefs.getLongPref('currentPos') if prefs.hasPrefHere('indentWidth'): scimoz.indent = prefs.getLongPref('indentWidth') else: scimoz.indent = koDoc.indentWidth if prefs.hasPrefHere('editUseAlternateFaceType'): useAlternate = prefs.getBooleanPref('editUseAlternateFaceType') else: useAlternate = 0 scintilla.alternateFaceType = useAlternate self._updateEdge(prefs) if prefs.hasPrefHere('useTabs'): scimoz.useTabs = prefs.getBooleanPref('useTabs') else: scimoz.useTabs = koDoc.useTabs if prefs.hasPrefHere('tabWidth'): scimoz.tabWidth = prefs.getLongPref('tabWidth') else: scimoz.tabWidth = koDoc.tabWidth slop = prefs.getLongPref('ySlop') scimoz.setYCaretPolicy(scimoz.CARET_SLOP | scimoz.CARET_STRICT | scimoz.CARET_EVEN, slop) scimoz.setVisiblePolicy(scimoz.VISIBLE_SLOP | scimoz.VISIBLE_STRICT, slop) if prefs.hasLongPref('firstVisibleLine'): scimoz.lineScroll(0, prefs.getLongPref('firstVisibleLine')) if prefs.hasLongPref('scrollWidth'): scimoz.scrollWidth = prefs.getLongPref("scrollWidth") else: log.warn('should set default scroll width?') if prefs.getBooleanPref('scrollWidthTracking'): scimoz.scrollWidthTracking = prefs.getBooleanPref("scrollWidthTracking") if prefs.hasLongPref('xOffset'): scimoz.xOffset = prefs.getLongPref('xOffset') else: scimoz.xOffset = 0 if languageOb.variableIndicators: scimoz.wordChars = _letters + languageOb.variableIndicators else: # Do this for cases where we change languages. scimoz.setCharsDefault() # restore fold points if the user has checked that pref off. # We don't do it by default because the colourise(.., -1) call below # can be quite slow. # Bug 93190: prefs are boolean for foldPoints, # but get the actual foldPoints off the document prefs if prefs.getBooleanPref("editRestoreFoldPoints") and \ prefs.hasPref('foldPoints') and \ scimoz.getPropertyInt("fold"): foldPoints = prefs.getPref("foldPoints") if foldPoints.length: # restyle the whole document to get folding right # Fixes bug 45621 scimoz.colourise(0, -1) for i in range(foldPoints.length): scimoz.toggleFold(foldPoints.getLongPref(i)); # restore the bookmarks # Bug 93190: use doc prefs, stay away from project prefs here if prefs.hasPref("bookmarks"): bookmarks = prefs.getPref("bookmarks") for i in range(bookmarks.length): scimoz.markerAdd(bookmarks.getLongPref(i), MARKNUM_BOOKMARK)