def on_query_completions(self, view, prefix, locations):
"""
ST API method: gets called when autocompletion triggers
"""
completions = []
scope_name = view.scope_name(view.sel()[0].b)
filename = view.file_name()
if not filename or not INFOS.addon:
return []
folder = filename.split(os.sep)[-2]
if folder not in INFOS.addon.includes:
return []
if "text.xml" in scope_name:
for dir_, _, files in os.walk(INFOS.addon.media_path):
for filename in files:
rel_dir = os.path.relpath(dir_, INFOS.addon.media_path)
rel_file = os.path.join(rel_dir, filename).lstrip("./").lstrip("\\")
rel_file = rel_file.replace("\\", "/")
completions.append([rel_file, rel_file])
colors = []
for node in INFOS.get_colors():
if node["name"] not in colors:
colors.append(node["name"])
completions.append(["%s (%s)" % (node["name"], node["content"]), node["name"]])
for node in chain(INFOS.addon.includes[folder], INFOS.addon.fonts[folder]):
completions.append([node["name"], node["name"]])
for node in chain(INFOS.builtins, INFOS.conditions):
completions.append([node[0], node[0]])
for item in INFOS.WINDOW_NAMES:
completions.append([item, item])
for item in completions:
for i, match in enumerate(re.findall(r"\([a-z,\]\[]+\)", item[1])):
item[1] = item[1].replace(match, "($%i)" % (i + 1))
return completions
# return (completions, sublime.INHIBIT_WORD_COMPLETIONS | sublime.INHIBIT_EXPLICIT_COMPLETIONS)
评论列表
文章目录