summaryrefslogtreecommitdiff
path: root/source/slang/slang-language-server.h
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2022-06-27 15:36:00 -0700
committerGitHub <noreply@github.com>2022-06-27 15:36:00 -0700
commitb7638b8fffe78ade657f361cadc08dffc8c10acf (patch)
treee27a141cfc6a9cc77356b8cba27b41c495d4ee27 /source/slang/slang-language-server.h
parent62d16a23b0ecd72dc624abd7e10b373c40adaa90 (diff)
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 <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-language-server.h')
-rw-r--r--source/slang/slang-language-server.h18
1 files changed, 18 insertions, 0 deletions
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<LanguageServerProtocol::CompletionParams> completionArgs;
Optional<LanguageServerProtocol::CompletionItem> completionResolveArgs;
Optional<LanguageServerProtocol::DocumentSymbolParams> documentSymbolArgs;
+ Optional<LanguageServerProtocol::InlayHintParams> inlayHintArgs;
+ Optional<LanguageServerProtocol::DocumentFormattingParams> formattingArgs;
+ Optional<LanguageServerProtocol::DocumentRangeFormattingParams> rangeFormattingArgs;
+ Optional<LanguageServerProtocol::DocumentOnTypeFormattingParams> onTypeFormattingArgs;
Optional<LanguageServerProtocol::DidChangeConfigurationParams> changeConfigArgs;
Optional<LanguageServerProtocol::SignatureHelpParams> signatureHelpArgs;
Optional<LanguageServerProtocol::DefinitionParams> definitionArgs;
@@ -82,6 +88,8 @@ public:
RefPtr<Workspace> m_workspace;
Dictionary<String, String> m_lastPublishedDiagnostics;
time_t m_lastDiagnosticUpdateTime = 0;
+ FormatOptions m_formatOptions;
+ Slang::InlayHintOptions m_inlayHintOptions;
bool m_quit = false;
List<LanguageServerProtocol::WorkspaceFolder> 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);