summaryrefslogtreecommitdiffstats
path: root/src/debputy/lsp/lsp_dispatch.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/debputy/lsp/lsp_dispatch.py')
-rw-r--r--src/debputy/lsp/lsp_dispatch.py30
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(