#!/usr/bin/env python3 # ollie:parallel read # args_json: {"type":"object","required":["path","line","col"],"properties":{"path":{"type":"string","description":"Absolute file path"},"line":{"type":"string","description":"Line number (1-indexed)"},"col":{"type":"string","description":"Column number (1-indexed)"}}} # ollie:prompt # ## lsp_hover # # Type signature and documentation for symbol at position. # # **Args**: `[path, line, col]` # # ``` # lsp_hover(path="/abs/path.go", line="42", col="10") # ``` # ollie:end import os import sys sys.path.insert(0, os.environ.get('OLLIE_TOOLS_PATH', os.path.dirname(os.path.abspath(__file__)))) from _lib.args import parse_args from _lib.lsp.client import request args = parse_args() filepath = os.path.abspath(args.require("path")) line = int(args.require("line")) - 1 col = int(args.require("col")) - 1 result = request("hover", file=filepath, line=line, col=col) if not result: print("(no hover info)") sys.exit(0) contents = result.get("contents", "") if isinstance(contents, dict): print(contents.get("value", str(contents))) elif isinstance(contents, list): for item in contents: if isinstance(item, dict): print(item.get("value", str(item))) else: print(item) else: print(contents)