1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-12 09:19:40 +01:00

allow dynamically changing configuration without restarting

This commit is contained in:
Andrew Nagy 2023-01-26 09:40:07 +00:00
parent 468e7e7d45
commit 3c38e02b62
3 changed files with 39 additions and 3 deletions

View File

@ -45,7 +45,7 @@ class ClientConfiguration
/** /**
* Provide Hover Requests or not * Provide Hover Requests or not
*/ */
public ?bool $provideHover= null; public ?bool $provideHover = null;
/** /**
* Provide Signature Help or not * Provide Signature Help or not

View File

@ -11,6 +11,8 @@ use Psalm\Internal\LanguageServer\Client\TextDocument as ClientTextDocument;
use Psalm\Internal\LanguageServer\Client\Workspace as ClientWorkspace; use Psalm\Internal\LanguageServer\Client\Workspace as ClientWorkspace;
use function is_null; use function is_null;
use function json_decode;
use function json_encode;
/** /**
* @internal * @internal
@ -144,8 +146,39 @@ class LanguageClient
return; return;
} }
if (!is_null($this->clientConfiguration->provideCompletion)) { /** @var array */
//$this->server->project_analyzer->provide_completion = $this->clientConfiguration->provideCompletion; $array = json_decode(json_encode($config), true);
if (isset($array['hideWarnings'])) {
$this->clientConfiguration->hideWarnings = (bool) $array['hideWarnings'];
}
if (isset($array['provideCompletion'])) {
$this->clientConfiguration->provideCompletion = (bool) $array['provideCompletion'];
}
if (isset($array['provideDefinition'])) {
$this->clientConfiguration->provideDefinition = (bool) $array['provideDefinition'];
}
if (isset($array['provideHover'])) {
$this->clientConfiguration->provideHover = (bool) $array['provideHover'];
}
if (isset($array['provideSignatureHelp'])) {
$this->clientConfiguration->provideSignatureHelp = (bool) $array['provideSignatureHelp'];
}
if (isset($array['provideCodeActions'])) {
$this->clientConfiguration->provideCodeActions = (bool) $array['provideCodeActions'];
}
if (isset($array['provideDiagnostics'])) {
$this->clientConfiguration->provideDiagnostics = (bool) $array['provideDiagnostics'];
}
if (isset($array['findUnusedVariables'])) {
$this->clientConfiguration->findUnusedVariables = (bool) $array['findUnusedVariables'];
} }
} }
} }

View File

@ -109,6 +109,8 @@ class LanguageServer extends Dispatcher
*/ */
public ?ServerWorkspace $workspace = null; public ?ServerWorkspace $workspace = null;
public ?ClientInfo $clientInfo = null;
protected ProtocolReader $protocolReader; protected ProtocolReader $protocolReader;
protected ProtocolWriter $protocolWriter; protected ProtocolWriter $protocolWriter;
@ -426,6 +428,7 @@ class LanguageServer extends Dispatcher
?string $trace = null ?string $trace = null
//?array $workspaceFolders = null //error in json-dispatcher //?array $workspaceFolders = null //error in json-dispatcher
): Promise { ): Promise {
$this->clientInfo = $clientInfo;
$this->clientCapabilities = $capabilities; $this->clientCapabilities = $capabilities;
$this->trace = $trace; $this->trace = $trace;
return call( return call(