def run(self, edit):
"""
"""
view = self.view
sel = view.sel()
if len(sel) == 0:
return
a,b = sel[0]
query = view.substr(view.word(a)) if a == b else view.substr(sel[0])
if query == "":
return
# run docsetutil command
docset = SwiftKittenEventListener.get_settings(view, "docset")
cmd = self.get_docsetutil_cmd(view, docset, query)
results = check_output(cmd, stderr=STDOUT)
results = str(results, 'utf-8')
if len(results) == 0:
print("No documentation found.")
return
lines = results.splitlines()
# split each line into two paths
pairs = map(lambda line: line.strip().split(" "), lines)
get_lang = lambda a: a.split('/')[0]
get_path = lambda a,b: os.path.join(os.path.dirname(a),
os.path.basename(b))
#
docs = {get_lang(a) : get_path(a,b) for a,b in pairs}
# prefer Swift, Objective-C, C
lang = sorted(docs.keys())[-1]
# construct path to documentation token
path = os.path.join(self.get_tokens_path(docset), docs[lang] + ".xml")
# read documentation file
with open(path, "rb") as f:
xml = f.read()
# convert xml to html
html = str(self.convert_docs_to_html(xml), "utf-8")
#
# TO DO:
# add on_navigate handler
#
# display documentation
view.show_popup(html, max_width=400, max_height=600)
评论列表
文章目录