1
0
Fork 0
pull/759/merge
villainy 2019-10-06 07:33:21 +00:00 committed by GitHub
commit 8b02bb342b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 26 additions and 8 deletions

View File

@ -190,6 +190,13 @@ Example:
php bin/php-language-server.php --memory-limit=256M
#### `--log-level=integer` (optional)
Limit client log messages by severity. Severities are defined in [LanuageServerProtocol\MessageType](https://github.com/felixfbecker/php-language-server-protocol/blob/master/src/MessageType.php).
Example (Limit logging to ERROR and WARNING only):
php bin/php-language-server.php --log-level=2
## Used by
- [VS Code PHP IntelliSense](https://github.com/felixfbecker/vscode-php-intellisense)
- [Eclipse Che](https://eclipse.org/che/)

View File

@ -4,7 +4,7 @@ use LanguageServer\{LanguageServer, ProtocolStreamReader, ProtocolStreamWriter,
use Sabre\Event\Loop;
use Composer\XdebugHandler\XdebugHandler;
$options = getopt('', ['tcp::', 'tcp-server::', 'memory-limit::']);
$options = getopt('', ['tcp::', 'tcp-server::', 'memory-limit::', 'log-level::']);
ini_set('memory_limit', $options['memory-limit'] ?? '4G');
@ -69,6 +69,7 @@ if (!empty($options['tcp'])) {
while ($socket = stream_socket_accept($tcpServer, -1)) {
$logger->debug('Connection accepted');
stream_set_blocking($socket, false);
$logLevel = empty($options['log-level']) ? 4 : $options['log-level'];
if ($pcntlAvailable) {
// If PCNTL is available, fork a child process for the connection
// An exit notification will only terminate the child process
@ -83,7 +84,7 @@ if (!empty($options['tcp'])) {
$reader->on('close', function () use ($logger) {
$logger->debug('Connection closed');
});
$ls = new LanguageServer($reader, $writer);
$ls = new LanguageServer($reader, $writer, $logLevel);
Loop\run();
// Just for safety
exit(0);
@ -93,7 +94,8 @@ if (!empty($options['tcp'])) {
// An exit notification will terminate the server
$ls = new LanguageServer(
new ProtocolStreamReader($socket),
new ProtocolStreamWriter($socket)
new ProtocolStreamWriter($socket),
$logLevel
);
Loop\run();
}

View File

@ -15,10 +15,15 @@ class Window
* @var ClientHandler
*/
private $handler;
/**
* @var int
*/
private $logLevel;
public function __construct(ClientHandler $handler)
public function __construct(ClientHandler $handler, $logLevel=4)
{
$this->handler = $handler;
$this->logLevel = $logLevel;
}
/**
@ -43,6 +48,9 @@ class Window
*/
public function logMessage(int $type, string $message): Promise
{
if ($type > $this->logLevel) {
return new Promise();
}
return $this->handler->notify('window/logMessage', ['type' => $type, 'message' => $message]);
}
}

View File

@ -35,13 +35,13 @@ class LanguageClient
*/
public $xcache;
public function __construct(ProtocolReader $reader, ProtocolWriter $writer)
public function __construct(ProtocolReader $reader, ProtocolWriter $writer, $logLevel=4)
{
$handler = new ClientHandler($reader, $writer);
$mapper = new JsonMapper;
$this->textDocument = new Client\TextDocument($handler, $mapper);
$this->window = new Client\Window($handler);
$this->window = new Client\Window($handler, $logLevel);
$this->workspace = new Client\Workspace($handler, $mapper);
$this->xcache = new Client\XCache($handler);
}

View File

@ -109,8 +109,9 @@ class LanguageServer extends AdvancedJsonRpc\Dispatcher
/**
* @param ProtocolReader $reader
* @param ProtocolWriter $writer
* @param int $logLevel
*/
public function __construct(ProtocolReader $reader, ProtocolWriter $writer)
public function __construct(ProtocolReader $reader, ProtocolWriter $writer, $logLevel=4)
{
parent::__construct($this, '/');
$this->protocolReader = $reader;
@ -154,7 +155,7 @@ class LanguageServer extends AdvancedJsonRpc\Dispatcher
})->otherwise('\\LanguageServer\\crash');
});
$this->protocolWriter = $writer;
$this->client = new LanguageClient($reader, $writer);
$this->client = new LanguageClient($reader, $writer, $logLevel);
}
/**