From 3b020100972b67ba3fd58f98bc7d48c198d07264 Mon Sep 17 00:00:00 2001 From: Felix Becker Date: Mon, 22 Aug 2016 22:40:16 +0200 Subject: [PATCH] Update --- README.md | 5 ++ src/{Protocol => }/LanguageServer.php | 0 src/Protocol/CodeActionContext.php | 17 +++++++ src/Protocol/CodeLens.php | 35 ++++++++++++++ .../CodeLensOptions.php | 2 +- src/Protocol/Command.php | 32 +++++++++++++ src/Protocol/CompletionItem.php | 4 +- src/Protocol/CompletionKind.php | 6 +-- src/Protocol/CompletionList.php | 4 +- .../CompletionOptions.php | 2 +- src/Protocol/ContentChangeEvent.php | 3 +- src/Protocol/Diagnostic.php | 47 +++++++++++++++++++ src/Protocol/DiagnosticSeverity.php | 26 ++++++++++ src/Protocol/DocumentHighlight.php | 25 ++++++++++ src/Protocol/DocumentHighlightKind.php | 24 ++++++++++ .../DocumentOnTypeFormattingOptions.php | 2 +- src/Protocol/ErrorCode.php | 2 + src/Protocol/FileEvent.php | 2 +- src/Protocol/FormattingOptions.php | 25 ++++++++++ src/Protocol/Location.php | 19 ++++++++ src/Protocol/Message.php | 38 +++++++++++++++ .../Window => }/MessageActionItem.php | 4 +- .../{Methods/Window => }/MessageType.php | 2 + .../Methods/$/CancelRequestNotification.php | 13 +++++ .../Methods/$/CancelRequestParams.php | 15 ++++++ .../Methods/CodeLens/ResolveRequest.php | 17 +++++++ .../Methods/CodeLens/ResolveResponse.php | 13 +++++ .../Methods/CompletionItem/ResolveRequest.php | 8 ++-- .../CompletionItem/ResolveResponse.php | 13 +++++ src/Protocol/Methods/ExitNotification.php | 16 +++++++ .../Methods/Initialize/InitializeParams.php | 2 +- .../Methods/Initialize/InitializeRequest.php | 8 ++-- .../Methods/Initialize/InitializeResponse.php | 2 +- src/Protocol/Methods/ShutdownRequest.php | 18 +++++++ src/Protocol/Methods/ShutdownResponse.php | 18 +++++++ .../{Event.php => EventNotification.php} | 9 +++- .../Methods/TextDocument/CodeActionParams.php | 32 +++++++++++++ .../TextDocument/CodeActionRequest.php | 18 +++++++ .../TextDocument/CodeActionResponse.php | 13 +++++ .../Methods/TextDocument/CodeLensParams.php | 15 ++++++ .../Methods/TextDocument/CodeLensRequest.php | 16 +++++++ .../Methods/TextDocument/CodeLensResponse.php | 13 +++++ .../TextDocument/CompletionResponse.php | 10 ++-- .../TextDocument/DefinitionRequest.php | 17 +++++++ .../TextDocument/DefinitionResponse.php | 13 +++++ .../TextDocument/DidChangeNotification.php | 16 +++++++ .../Methods/TextDocument/DidChangeParams.php | 16 +++---- .../DidChangeWatchedFilesNotification.php | 17 +++++++ .../DidChangeWatchedFilesParams.php | 8 +--- .../TextDocument/DidCloseNotification.php | 18 +++++++ .../Methods/TextDocument/DidCloseParams.php | 10 +--- .../TextDocument/DidOpenNotification.php | 18 +++++++ .../Methods/TextDocument/DidOpenParams.php | 15 ++++++ .../Methods/TextDocument/DidSaveParams.php | 4 +- .../TextDocument/DocumentHighlightRequest.php | 20 ++++++++ .../DocumentHighlightResponse.php | 13 +++++ .../TextDocument/DocumentSymbolParams.php | 15 ++++++ .../TextDocument/DocumentSymbolRequest.php | 16 +++++++ .../TextDocument/DocumentSymbolResponse.php | 13 +++++ .../Methods/TextDocument/FormattingParams.php | 22 +++++++++ .../TextDocument/FormattingRequest.php | 16 +++++++ .../TextDocument/FormattingResponse.php | 13 +++++ .../Methods/TextDocument/HoverResponse.php | 4 +- .../TextDocument/OnTypeFormattingParams.php | 36 ++++++++++++++ .../TextDocument/OnTypeFormattingRequest.php | 17 +++++++ .../TextDocument/OnTypeFormattingResponse.php | 13 +++++ .../Methods/TextDocument/PositionParams.php | 12 ++--- .../PublishDiagnosticsNotification.php | 16 +++++++ .../TextDocument/PublishDiagnosticsParams.php | 22 +++++++++ .../TextDocument/RangeFormattingParams.php | 29 ++++++++++++ .../TextDocument/RangeFormattingRequest.php | 16 +++++++ .../TextDocument/RangeFormattingResponse.php | 13 +++++ .../Methods/TextDocument/ReferencesParams.php | 13 +++++ .../TextDocument/ReferencesRequest.php | 17 +++++++ .../TextDocument/ReferencesResponse.php | 13 +++++ .../Methods/TextDocument/RenameParams.php | 31 ++++++++++++ .../Methods/TextDocument/RenameRequest.php | 16 +++++++ .../Methods/TextDocument/RenameResponse.php | 13 +++++ .../TextDocument/SignatureHelpRequest.php | 13 +++++ .../TextDocument/SignatureHelpResponse.php | 13 +++++ .../Methods/Window/LogMessageNotification.php | 17 +++++++ .../Methods/Window/LogMessageParams.php | 12 ++--- .../Window/ShowMessageNotification.php | 17 +++++++ .../Methods/Window/ShowMessageParams.php | 6 ++- .../Methods/Window/ShowMessageRequest.php | 18 +++++++ .../Window/ShowMessageRequestParams.php | 2 +- .../Methods/Workspace/SymbolRequest.php | 13 +++++ .../Methods/Workspace/SymbolResponse.php | 13 +++++ src/Protocol/ParameterInformation.php | 26 ++++++++++ src/Protocol/Params.php | 2 +- src/Protocol/Position.php | 23 +++++++++ src/Protocol/ProtocolServer.php | 2 +- src/Protocol/PublishDiagnosticParams.php | 4 +- src/Protocol/Range.php | 23 +++++++++ src/Protocol/ReferenceContext.php | 13 +++++ src/Protocol/Request.php | 28 ++--------- src/Protocol/ResponseError.php | 2 + src/Protocol/SignatureHelp.php | 32 +++++++++++++ .../SignatureHelpOptions.php | 2 +- src/Protocol/SignatureInformation.php | 34 ++++++++++++++ src/Protocol/SymbolInformation.php | 38 +++++++++++++++ src/Protocol/SymbolKind.php | 28 +++++++++++ .../TextDocumentContentChangeEvent.php | 31 ++++++++++++ src/Protocol/TextDocumentIdentifier.php | 13 +++++ src/Protocol/TextDocumentItem.php | 38 +++++++++++++++ .../TextDocumentSyncKind.php | 2 +- src/Protocol/TextEdit.php | 25 ++++++++++ .../VersionedTextDocumentIdentifier.php | 13 +++++ src/Protocol/WorkspaceEdit.php | 16 +++++++ 109 files changed, 1569 insertions(+), 106 deletions(-) create mode 100644 README.md rename src/{Protocol => }/LanguageServer.php (100%) create mode 100644 src/Protocol/CodeActionContext.php create mode 100644 src/Protocol/CodeLens.php rename src/Protocol/{ServerCapabilities => }/CodeLensOptions.php (71%) create mode 100644 src/Protocol/Command.php rename src/Protocol/{ServerCapabilities => }/CompletionOptions.php (83%) create mode 100644 src/Protocol/Diagnostic.php create mode 100644 src/Protocol/DiagnosticSeverity.php create mode 100644 src/Protocol/DocumentHighlight.php create mode 100644 src/Protocol/DocumentHighlightKind.php rename src/Protocol/{ServerCapabilities => }/DocumentOnTypeFormattingOptions.php (82%) create mode 100644 src/Protocol/FormattingOptions.php create mode 100644 src/Protocol/Location.php rename src/Protocol/{Methods/Window => }/MessageActionItem.php (65%) rename src/Protocol/{Methods/Window => }/MessageType.php (89%) create mode 100644 src/Protocol/Methods/$/CancelRequestNotification.php create mode 100644 src/Protocol/Methods/$/CancelRequestParams.php create mode 100644 src/Protocol/Methods/CodeLens/ResolveRequest.php create mode 100644 src/Protocol/Methods/CodeLens/ResolveResponse.php create mode 100644 src/Protocol/Methods/CompletionItem/ResolveResponse.php create mode 100644 src/Protocol/Methods/ExitNotification.php create mode 100644 src/Protocol/Methods/ShutdownRequest.php create mode 100644 src/Protocol/Methods/ShutdownResponse.php rename src/Protocol/Methods/Telemetry/{Event.php => EventNotification.php} (56%) create mode 100644 src/Protocol/Methods/TextDocument/CodeActionParams.php create mode 100644 src/Protocol/Methods/TextDocument/CodeActionRequest.php create mode 100644 src/Protocol/Methods/TextDocument/CodeActionResponse.php create mode 100644 src/Protocol/Methods/TextDocument/CodeLensParams.php create mode 100644 src/Protocol/Methods/TextDocument/CodeLensRequest.php create mode 100644 src/Protocol/Methods/TextDocument/CodeLensResponse.php create mode 100644 src/Protocol/Methods/TextDocument/DefinitionRequest.php create mode 100644 src/Protocol/Methods/TextDocument/DefinitionResponse.php create mode 100644 src/Protocol/Methods/TextDocument/DidChangeNotification.php create mode 100644 src/Protocol/Methods/TextDocument/DidChangeWatchedFilesNotification.php create mode 100644 src/Protocol/Methods/TextDocument/DidCloseNotification.php create mode 100644 src/Protocol/Methods/TextDocument/DidOpenNotification.php create mode 100644 src/Protocol/Methods/TextDocument/DidOpenParams.php create mode 100644 src/Protocol/Methods/TextDocument/DocumentHighlightRequest.php create mode 100644 src/Protocol/Methods/TextDocument/DocumentHighlightResponse.php create mode 100644 src/Protocol/Methods/TextDocument/DocumentSymbolParams.php create mode 100644 src/Protocol/Methods/TextDocument/DocumentSymbolRequest.php create mode 100644 src/Protocol/Methods/TextDocument/DocumentSymbolResponse.php create mode 100644 src/Protocol/Methods/TextDocument/FormattingParams.php create mode 100644 src/Protocol/Methods/TextDocument/FormattingRequest.php create mode 100644 src/Protocol/Methods/TextDocument/FormattingResponse.php create mode 100644 src/Protocol/Methods/TextDocument/OnTypeFormattingParams.php create mode 100644 src/Protocol/Methods/TextDocument/OnTypeFormattingRequest.php create mode 100644 src/Protocol/Methods/TextDocument/OnTypeFormattingResponse.php create mode 100644 src/Protocol/Methods/TextDocument/PublishDiagnosticsNotification.php create mode 100644 src/Protocol/Methods/TextDocument/PublishDiagnosticsParams.php create mode 100644 src/Protocol/Methods/TextDocument/RangeFormattingParams.php create mode 100644 src/Protocol/Methods/TextDocument/RangeFormattingRequest.php create mode 100644 src/Protocol/Methods/TextDocument/RangeFormattingResponse.php create mode 100644 src/Protocol/Methods/TextDocument/ReferencesParams.php create mode 100644 src/Protocol/Methods/TextDocument/ReferencesRequest.php create mode 100644 src/Protocol/Methods/TextDocument/ReferencesResponse.php create mode 100644 src/Protocol/Methods/TextDocument/RenameParams.php create mode 100644 src/Protocol/Methods/TextDocument/RenameRequest.php create mode 100644 src/Protocol/Methods/TextDocument/RenameResponse.php create mode 100644 src/Protocol/Methods/TextDocument/SignatureHelpRequest.php create mode 100644 src/Protocol/Methods/TextDocument/SignatureHelpResponse.php create mode 100644 src/Protocol/Methods/Window/LogMessageNotification.php create mode 100644 src/Protocol/Methods/Window/ShowMessageNotification.php create mode 100644 src/Protocol/Methods/Window/ShowMessageRequest.php create mode 100644 src/Protocol/Methods/Workspace/SymbolRequest.php create mode 100644 src/Protocol/Methods/Workspace/SymbolResponse.php create mode 100644 src/Protocol/ParameterInformation.php create mode 100644 src/Protocol/Position.php create mode 100644 src/Protocol/Range.php create mode 100644 src/Protocol/ReferenceContext.php create mode 100644 src/Protocol/SignatureHelp.php rename src/Protocol/{ServerCapabilities => }/SignatureHelpOptions.php (75%) create mode 100644 src/Protocol/SignatureInformation.php create mode 100644 src/Protocol/SymbolInformation.php create mode 100644 src/Protocol/SymbolKind.php create mode 100644 src/Protocol/TextDocumentContentChangeEvent.php create mode 100644 src/Protocol/TextDocumentIdentifier.php create mode 100644 src/Protocol/TextDocumentItem.php rename src/Protocol/{ServerCapabilities => }/TextDocumentSyncKind.php (87%) create mode 100644 src/Protocol/TextEdit.php create mode 100644 src/Protocol/VersionedTextDocumentIdentifier.php create mode 100644 src/Protocol/WorkspaceEdit.php diff --git a/README.md b/README.md new file mode 100644 index 0000000..8544ca8 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# PHP Language Server +> A pure PHP implementation of the [Language Server Protocol](https://github.com/Microsoft/language-server-protocol). + +[![Version](https://img.shields.io/packagist/v/felixfbecker/language-server.svg)]() [![License](https://img.shields.io/packagist/l/felixfbecker/language-server.svg)]() + diff --git a/src/Protocol/LanguageServer.php b/src/LanguageServer.php similarity index 100% rename from src/Protocol/LanguageServer.php rename to src/LanguageServer.php diff --git a/src/Protocol/CodeActionContext.php b/src/Protocol/CodeActionContext.php new file mode 100644 index 0000000..88e2e04 --- /dev/null +++ b/src/Protocol/CodeActionContext.php @@ -0,0 +1,17 @@ + LanguageServer\Protocol\Methods\TextDocument\DidOpenNotification + $class = __NAMESPACE__ . '\\Methods\\' . implode('\\', array_map('ucfirst', explode('/', $decoded->method))) . (isset($decoded->id) ? 'Request' : 'Notification'); + + // If the Request/Notification type is unknown, instantiate a basic Request or Notification class + // (this is the reason Request and Notification are not abstract) + if (!class_exists($class)) { + fwrite(STDERR, "Unknown method {$decoded->method}\n"); + if (!isset($decoded->id)) { + $class = Notification::class; + } else { + $class = $fallbackClass; + } + } + + // JsonMapper will take care of recursively using the right classes for $params etc. + $mapper = new JsonMapper(); + $message = $mapper->map($decoded, new $class); + + return $message; + } } diff --git a/src/Protocol/Methods/Window/MessageActionItem.php b/src/Protocol/MessageActionItem.php similarity index 65% rename from src/Protocol/Methods/Window/MessageActionItem.php rename to src/Protocol/MessageActionItem.php index 3dd276a..59dafe5 100644 --- a/src/Protocol/Methods/Window/MessageActionItem.php +++ b/src/Protocol/MessageActionItem.php @@ -1,8 +1,8 @@ emit($body->method, [$req]); $this->parsingMode = ParsingMode::HEADERS; $this->buffer = ''; diff --git a/src/Protocol/PublishDiagnosticParams.php b/src/Protocol/PublishDiagnosticParams.php index d81382c..c1180c7 100644 --- a/src/Protocol/PublishDiagnosticParams.php +++ b/src/Protocol/PublishDiagnosticParams.php @@ -1,8 +1,6 @@ id = $decoded->id; - $request->method = $decoded->method; - $pascalCasedMethod = ucfirst($decoded->method); - $namespace = __NAMESPACE__ . '\\' . str_replace('/', '\\', $pascalCasedMethod); - $className = end(explode('\\', $request->method)) . 'Params'; - $fullyQualifiedName = $namespace . $className; - $mapper->classMap['RequestParams'] = $fullyQualifiedName; - $request = $mapper->map(json_decode($body), new self()); - if (class_exists($fullyQualifiedName)) { - $request->params = new $fullyQualifiedName(); - } - foreach ($request->params as $key => $value) { - $request->{$key} = $value; - } - return $request; - } } diff --git a/src/Protocol/ResponseError.php b/src/Protocol/ResponseError.php index 134d955..3d0bd9e 100644 --- a/src/Protocol/ResponseError.php +++ b/src/Protocol/ResponseError.php @@ -1,5 +1,7 @@