I broke up with neovim....vim is my best friend now
This commit is contained in:
95
dot_vim/plugged/vim-orgmode/ftplugin/orgmode/settings.py
Normal file
95
dot_vim/plugged/vim-orgmode/ftplugin/orgmode/settings.py
Normal file
@@ -0,0 +1,95 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import vim
|
||||
|
||||
import sys
|
||||
from orgmode.py3compat.encode_compatibility import *
|
||||
from orgmode.py3compat.unicode_compatibility import *
|
||||
|
||||
SCOPE_ALL = 1
|
||||
|
||||
# for all vim-orgmode buffers
|
||||
SCOPE_GLOBAL = 2
|
||||
|
||||
# just for the current buffer - has priority before the global settings
|
||||
SCOPE_BUFFER = 4
|
||||
|
||||
VARIABLE_LEADER = {SCOPE_GLOBAL: u'g', SCOPE_BUFFER: u'b'}
|
||||
|
||||
u""" Evaluate and store settings """
|
||||
|
||||
|
||||
def get(setting, default=None, scope=SCOPE_ALL):
|
||||
u""" Evaluate setting in scope of the current buffer,
|
||||
globally and also from the contents of the current buffer
|
||||
|
||||
WARNING: Only string values are converted to unicode. If a different value
|
||||
is received, e.g. a list or dict, no conversion is done.
|
||||
|
||||
:setting: name of the variable to evaluate
|
||||
:default: default value in case the variable is empty
|
||||
|
||||
:returns: variable value
|
||||
"""
|
||||
# TODO first read setting from org file which take precedence over vim
|
||||
# variable settings
|
||||
if (scope & SCOPE_ALL | SCOPE_BUFFER) and \
|
||||
int(vim.eval(u_encode(u'exists("b:%s")' % setting))):
|
||||
res = vim.eval(u_encode(u"b:%s" % setting))
|
||||
if type(res) in (unicode, str):
|
||||
return u_decode(res)
|
||||
return res
|
||||
|
||||
elif (scope & SCOPE_ALL | SCOPE_GLOBAL) and \
|
||||
int(vim.eval(u_encode(u'exists("g:%s")' % setting))):
|
||||
res = vim.eval(u_encode(u"g:%s" % setting))
|
||||
if type(res) in (unicode, str):
|
||||
return u_decode(res)
|
||||
return res
|
||||
return default
|
||||
|
||||
|
||||
def set(setting, value, scope=SCOPE_GLOBAL, overwrite=False):
|
||||
u""" Store setting in the defined scope
|
||||
|
||||
WARNING: For the return value, only string are converted to unicode. If a
|
||||
different value is received by vim.eval, e.g. a list or dict, no conversion
|
||||
is done.
|
||||
|
||||
:setting: name of the setting
|
||||
:value: the actual value, repr is called on the value to create a string
|
||||
representation
|
||||
:scope: the scope o the setting/variable
|
||||
:overwrite: overwrite existing settings (probably user defined settings)
|
||||
|
||||
:returns: the new value in case of overwrite==False the current value
|
||||
"""
|
||||
if (not overwrite) and (
|
||||
int(vim.eval(u_encode(u'exists("%s:%s")' % \
|
||||
(VARIABLE_LEADER[scope], setting))))):
|
||||
res = vim.eval(
|
||||
u_encode(u'%s:%s' % (VARIABLE_LEADER[scope], setting)))
|
||||
if type(res) in (unicode, str):
|
||||
return u_decode(res)
|
||||
return res
|
||||
v = repr(value)
|
||||
if type(value) == unicode and sys.version_info < (3,):
|
||||
# strip leading u of unicode string representations
|
||||
v = v[1:]
|
||||
|
||||
cmd = u'let %s:%s = %s' % (VARIABLE_LEADER[scope], setting, v)
|
||||
vim.command(u_encode(cmd))
|
||||
return value
|
||||
|
||||
|
||||
def unset(setting, scope=SCOPE_GLOBAL):
|
||||
u""" Unset setting in the defined scope
|
||||
:setting: name of the setting
|
||||
:scope: the scope o the setting/variable
|
||||
|
||||
:returns: last value of setting
|
||||
"""
|
||||
value = get(setting, scope=scope)
|
||||
cmd = u'unlet! %s:%s' % (VARIABLE_LEADER[scope], setting)
|
||||
vim.command(u_encode(cmd))
|
||||
return value
|
||||
Reference in New Issue
Block a user