Actually, a little better is to push and pop options, using an option backup system to save off old values. When you leave distractionfree, you pop off the most recent values for the old values.
import sublime, sublimeplugin
def pushOption(view, name, value):
backupKey = "%s.backup" % name
oldValue = view.options().get(name)
print "saving %s=%s" % (backupKey, oldValue)
view.options().set(backupKey, oldValue)
view.options().set(name, value)
def popOption(view, name):
backupKey = "%s.backup" % name
oldValue = view.options().get(backupKey)
print "restoring %s=%s" % (name, oldValue)
view.options().set(name, oldValue)
view.options().erase(backupKey)
class DistractionFreeCommand(sublimeplugin.TextCommand):
def run(self, view, args):
if not view.options().get('distractionfree'):
view.options().set('distractionfree', True)
pushOption(view, 'drawCentered', True)
pushOption(view, 'lineNumbers', False)
pushOption(view, 'highlightLine', False)
pushOption(view, 'wrapWidth', 80)
pushOption(view, 'wordWrap', True)
pushOption(view, 'wantScrollBars', False)
pushOption(view, 'rulers', '')
window = view.window()
if not window.isFullScreen():
window.runCommand('toggleFullScreen')
pass
else:
# Drop the explicit options previously set, letting the defaults
# show through.
view.options().erase('distractionfree')
popOption(view, 'drawCentered')
popOption(view, 'lineNumbers')
popOption(view, 'highlightLine')
popOption(view, 'wrapWidth')
popOption(view, 'wordWrap')
popOption(view, 'wantScrollBars')
popOption(view, 'rulers')
window = view.window()
if window.isFullScreen():
window.runCommand('toggleFullScreen')