64 lines
1.7 KiB
Python
64 lines
1.7 KiB
Python
# Python imports
|
|
from os import path
|
|
|
|
# Lib imports
|
|
import gi
|
|
gi.require_version('GtkSource', '4')
|
|
|
|
from gi.repository import GLib
|
|
from gi.repository import GtkSource
|
|
|
|
# Application imports
|
|
from libs.event_factory import Code_Event_Types
|
|
|
|
from core.widgets.code.completion_providers.provider_response_cache_base import ProviderResponseCacheBase
|
|
|
|
from . import cson
|
|
|
|
|
|
|
|
class ProviderResponseCache(ProviderResponseCacheBase):
|
|
def __init__(self):
|
|
super(ProviderResponseCache, self).__init__()
|
|
|
|
self.matchers: dict = {}
|
|
|
|
self.load_snippets()
|
|
|
|
|
|
def load_snippets(self):
|
|
fpath = path.join(path.dirname(path.realpath(__file__)), "snippets.cson")
|
|
with open(fpath, 'rb') as f:
|
|
self.snippets = cson.load(f)
|
|
for group in self.snippets:
|
|
self.snippets[group]
|
|
for entry in self.snippets[group]:
|
|
data = self.snippets[group][entry]
|
|
self.matchers[ data["prefix"] ] = {
|
|
"label": entry,
|
|
"text": data["body"],
|
|
"info": GLib.markup_escape_text( data["body"] )
|
|
}
|
|
|
|
def process_file_load(self, event: Code_Event_Types.AddedNewFileEvent):
|
|
...
|
|
|
|
def process_file_close(self, event: Code_Event_Types.RemovedFileEvent):
|
|
...
|
|
|
|
def process_file_save(self, event: Code_Event_Types.SavedFileEvent):
|
|
...
|
|
|
|
def process_file_change(self, event: Code_Event_Types.TextChangedEvent):
|
|
...
|
|
|
|
def filter(self, word: str):
|
|
response: list = []
|
|
|
|
for entry in self.matchers:
|
|
if not word in entry: continue
|
|
data = self.matchers[entry]
|
|
response.append(data)
|
|
|
|
return response
|