diff options
Diffstat (limited to 'src/debputy/lsp/lsp_dispatch.py')
-rw-r--r-- | src/debputy/lsp/lsp_dispatch.py | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/src/debputy/lsp/lsp_dispatch.py b/src/debputy/lsp/lsp_dispatch.py index b63f30c..5d09a44 100644 --- a/src/debputy/lsp/lsp_dispatch.py +++ b/src/debputy/lsp/lsp_dispatch.py @@ -10,6 +10,7 @@ from typing import ( Mapping, List, Tuple, + Literal, ) from lsprotocol.types import ( @@ -75,21 +76,22 @@ def is_doc_at_version(uri: str, version: int) -> bool: return dv == version -def determine_language_id(doc: "TextDocument") -> Tuple[str, str]: - lang_id = doc.language_id - if lang_id and not lang_id.isspace(): - return "declared", lang_id - path = doc.path - try: - last_idx = path.rindex("debian/") - except ValueError: - return "filename", os.path.basename(path) - guess_language_id = path[last_idx:] - return "filename", guess_language_id +@DEBPUTY_LANGUAGE_SERVER.feature(TEXT_DOCUMENT_DID_OPEN) +async def _open_document( + ls: "DebputyLanguageServer", + params: DidChangeTextDocumentParams, +) -> None: + await _open_or_changed_document(ls, params) -@DEBPUTY_LANGUAGE_SERVER.feature(TEXT_DOCUMENT_DID_OPEN) @DEBPUTY_LANGUAGE_SERVER.feature(TEXT_DOCUMENT_DID_CHANGE) +async def _changed_document( + ls: "DebputyLanguageServer", + params: DidChangeTextDocumentParams, +) -> None: + await _open_or_changed_document(ls, params) + + async def _open_or_changed_document( ls: "DebputyLanguageServer", params: Union[DidOpenTextDocumentParams, DidChangeTextDocumentParams], @@ -99,7 +101,7 @@ async def _open_or_changed_document( doc = ls.workspace.get_text_document(doc_uri) _DOCUMENT_VERSION_TABLE[doc_uri] = version - id_source, language_id = determine_language_id(doc) + id_source, language_id = ls.determine_language_id(doc) handler = DIAGNOSTIC_HANDLERS.get(language_id) if handler is None: _info( @@ -214,7 +216,7 @@ def _dispatch_standard_handler( ) -> R: doc = ls.workspace.get_text_document(doc_uri) - id_source, language_id = determine_language_id(doc) + id_source, language_id = ls.determine_language_id(doc) handler = handler_table.get(language_id) if handler is None: _info( |