usse/scrape/venv/lib/python3.10/site-packages/esbonio/lsp/sphinx/autodoc.py
2023-12-22 15:26:01 +01:00

36 lines
1.2 KiB
Python

from typing import Iterable
from typing import Optional
from esbonio.lsp import CompletionContext
from esbonio.lsp.directives import DirectiveLanguageFeature
from esbonio.lsp.directives import Directives
from esbonio.lsp.sphinx import SphinxLanguageServer
class AutoDoc(DirectiveLanguageFeature):
def __init__(self, rst: SphinxLanguageServer):
self.rst = rst
def suggest_options(
self, context: CompletionContext, directive: str, domain: Optional[str]
) -> Iterable[str]:
if self.rst.app is None or not directive.startswith("auto"):
return []
# The autoxxxx set of directives need special support as their options are
# stored on "documenters" instead of the directive implementation itself.
name = directive.replace("auto", "")
documenter = self.rst.app.registry.documenters.get(name, None)
if documenter is None:
self.rst.logger.debug(
"Unable to find documenter for directive: '%s'", directive
)
return []
return documenter.option_spec.keys()
def esbonio_setup(rst: SphinxLanguageServer, directives: Directives):
directives.add_feature(AutoDoc(rst))