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")