feat: handle workspace config event (#91)

* feat: handle workspace config event

* Fix linter errors

---------

Co-authored-by: Regen <regen100@users.noreply.github.com>
This commit is contained in:
atanda rasheed
2024-04-20 13:43:26 +01:00
committed by GitHub
parent 9529df5d68
commit 890bb77f8a
3 changed files with 290 additions and 311 deletions

View File

@@ -1,3 +1,4 @@
import time
from concurrent import futures
from pathlib import Path
from typing import Optional, Tuple
@@ -9,11 +10,13 @@ from lsprotocol.types import (
TEXT_DOCUMENT_DID_OPEN,
TEXT_DOCUMENT_FORMATTING,
TEXT_DOCUMENT_HOVER,
WORKSPACE_DID_CHANGE_CONFIGURATION,
ClientCapabilities,
CompletionContext,
CompletionList,
CompletionParams,
CompletionTriggerKind,
DidChangeConfigurationParams,
DidOpenTextDocumentParams,
DocumentFormattingParams,
FormattingOptions,
@@ -95,6 +98,30 @@ def test_initialize(
assert server._api is not None
def test_workspace_did_change_configuration(
client_server: Tuple[LanguageServer, CMakeLanguageServer], datadir: Path
) -> None:
client, server = client_server
_init(client, datadir)
old_api = server._api
client.lsp.notify(
WORKSPACE_DID_CHANGE_CONFIGURATION,
DidChangeConfigurationParams(
settings={"initialization_options": {"buildDirectory": "c_build"}}
),
)
start = time.monotonic()
while server._api is old_api and (time.monotonic() - start) < CALL_TIMEOUT:
time.sleep(0.1)
assert server._api is not None
assert server._api._build.as_posix() == "c_build"
@pytest.mark.parametrize(
"context", [CompletionContext(trigger_kind=CompletionTriggerKind.Invoked), None]
)