Load config files and modules in core
This commit is contained in:
parent
157fff0834
commit
3e949adb39
|
@ -1,5 +1,10 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
class Colorscheme(object):
|
||||
def __init__(self, colorscheme):
|
||||
pass
|
||||
|
||||
cterm_to_hex = {
|
||||
16: 0x000000, 17: 0x00005f, 18: 0x000087, 19: 0x0000af, 20: 0x0000d7, 21: 0x0000ff,
|
||||
22: 0x005f00, 23: 0x005f5f, 24: 0x005f87, 25: 0x005faf, 26: 0x005fd7, 27: 0x005fff,
|
||||
|
|
|
@ -1,17 +1,50 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import importlib
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
|
||||
from colorscheme import Colorscheme
|
||||
from theme import Theme
|
||||
|
||||
|
||||
class Powerline(object):
|
||||
def __init__(self, segments):
|
||||
'''Create a new Powerline.
|
||||
def __init__(self, ext):
|
||||
try:
|
||||
config_home = os.environ['XDG_CONFIG_HOME']
|
||||
except KeyError:
|
||||
config_home = os.path.expanduser('~/.config')
|
||||
|
||||
Segments that aren't filler segments and whose contents aren't None are
|
||||
dropped from the segment array.
|
||||
'''
|
||||
self.renderer = None # FIXME This should be assigned here based on the current configuration
|
||||
self.segments = [segment for segment in segments if segment['contents'] is not None or segment['filler']]
|
||||
config_path = os.path.join(config_home, 'powerline')
|
||||
plugin_path = os.path.realpath(os.path.dirname(__file__))
|
||||
self.search_paths = [config_path, plugin_path]
|
||||
|
||||
def render(self, renderer, width=None):
|
||||
self.renderer = renderer(self.segments)
|
||||
sys.path[:0] = self.search_paths
|
||||
|
||||
return self.renderer.render(width)
|
||||
# Load main config file, limited to the current extension
|
||||
self.config = self._load_json_config('config')[ext]
|
||||
|
||||
# Load and initialize colorscheme
|
||||
colorscheme_config = self._load_json_config(os.path.join('colorschemes', self.config['colorscheme']))
|
||||
self.colorscheme = Colorscheme(colorscheme_config)
|
||||
|
||||
# Load and initialize extension theme
|
||||
theme_config = self._load_json_config(os.path.join('themes', ext, self.config['theme']))
|
||||
self.theme = Theme(ext, theme_config)
|
||||
|
||||
# Load and initialize extension renderer
|
||||
renderer_module_name = 'powerline.ext.{0}.renderer'.format(ext)
|
||||
renderer_class_name = '{0}Renderer'.format(ext.capitalize())
|
||||
renderer_class = getattr(importlib.import_module(renderer_module_name), renderer_class_name)
|
||||
self.renderer = renderer_class(self.colorscheme, self.theme)
|
||||
|
||||
def _load_json_config(self, config_file):
|
||||
config_file += '.json'
|
||||
for path in self.search_paths:
|
||||
config_file_path = os.path.join(path, config_file)
|
||||
if os.path.isfile(config_file_path):
|
||||
with open(config_file_path, 'rb') as config_file_fp:
|
||||
return json.load(config_file_fp)
|
||||
|
||||
raise IOError('Config file not found in search path: {0}'.format(config_file))
|
||||
|
|
|
@ -6,8 +6,8 @@ from powerline.renderer import Renderer
|
|||
class VimRenderer(Renderer):
|
||||
'''Powerline vim segment renderer.
|
||||
'''
|
||||
def __init__(self, segments):
|
||||
super(VimRenderer, self).__init__(segments)
|
||||
def __init__(self, colorscheme, theme):
|
||||
super(VimRenderer, self).__init__(colorscheme, theme)
|
||||
self.hl_groups = {}
|
||||
|
||||
def hl(self, fg=None, bg=None, attr=None):
|
||||
|
|
|
@ -19,11 +19,11 @@ class Renderer(object):
|
|||
},
|
||||
}
|
||||
|
||||
def __init__(self, segments):
|
||||
self.segments = segments
|
||||
self._hl = {}
|
||||
|
||||
def render(self, width=None):
|
||||
def __init__(self, colorscheme, theme):
|
||||
pass
|
||||
|
||||
def render(self, mode, width=None):
|
||||
'''Render all the segments with the specified renderer.
|
||||
|
||||
This method loops through the segment array and compares the
|
||||
|
|
|
@ -1 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
class Theme(object):
|
||||
def __init__(self, ext, theme):
|
||||
pass
|
||||
|
|
Loading…
Reference in New Issue