From b7638b8fffe78ade657f361cadc08dffc8c10acf Mon Sep 17 00:00:00 2001 From: Yong He Date: Mon, 27 Jun 2022 15:36:00 -0700 Subject: Language server fixes and improvements (#2304) * Language server: Inlay hints. * Signature help for base exprs that is not a declref. * Fix checking of jvp operator. * Fix. * Add clang-format based auto formatting. * Fix clang error. * Fix clang-format discovery logic. * Fine tune auto formatting and completion experience. * Update macos workflow. * Fixes to configurations. * Fix parser recovery to trigger completion for index exprs. * Typo fix. Co-authored-by: Yong He --- source/slang/slang-language-server.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'source/slang/slang-language-server.h') diff --git a/source/slang/slang-language-server.h b/source/slang/slang-language-server.h index 17dfc0f16..963df65f6 100644 --- a/source/slang/slang-language-server.h +++ b/source/slang/slang-language-server.h @@ -6,6 +6,8 @@ #include "slang-workspace-version.h" #include "slang-language-server-completion.h" +#include "slang-language-server-auto-format.h" +#include "slang-language-server-inlay-hints.h" namespace Slang { @@ -58,6 +60,10 @@ struct Command Optional completionArgs; Optional completionResolveArgs; Optional documentSymbolArgs; + Optional inlayHintArgs; + Optional formattingArgs; + Optional rangeFormattingArgs; + Optional onTypeFormattingArgs; Optional changeConfigArgs; Optional signatureHelpArgs; Optional definitionArgs; @@ -82,6 +88,8 @@ public: RefPtr m_workspace; Dictionary m_lastPublishedDiagnostics; time_t m_lastDiagnosticUpdateTime = 0; + FormatOptions m_formatOptions; + Slang::InlayHintOptions m_inlayHintOptions; bool m_quit = false; List m_workspaceFolders; @@ -108,6 +116,14 @@ public: const LanguageServerProtocol::SignatureHelpParams& args, const JSONValue& responseId); SlangResult documentSymbol( const LanguageServerProtocol::DocumentSymbolParams& args, const JSONValue& responseId); + SlangResult inlayHint( + const LanguageServerProtocol::InlayHintParams& args, const JSONValue& responseId); + SlangResult formatting( + const LanguageServerProtocol::DocumentFormattingParams& args, const JSONValue& responseId); + SlangResult rangeFormatting( + const LanguageServerProtocol::DocumentRangeFormattingParams& args, const JSONValue& responseId); + SlangResult onTypeFormatting( + const LanguageServerProtocol::DocumentOnTypeFormattingParams& args, const JSONValue& responseId); private: SlangResult parseNextMessage(); @@ -118,6 +134,8 @@ private: void updateSearchPaths(const JSONValue& value); void updateSearchInWorkspace(const JSONValue& value); void updateCommitCharacters(const JSONValue& value); + void updateFormattingOptions(const JSONValue& clangFormatLoc, const JSONValue& clangFormatStyle); + void updateInlayHintOptions(const JSONValue& deducedTypes, const JSONValue& parameterNames); void sendConfigRequest(); void registerCapability(const char* methodName); -- cgit v1.2.3