diff options
| author | Yong He <yonghe@outlook.com> | 2022-09-26 12:58:48 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-26 12:58:48 -0700 |
| commit | e449446d540b6cc3d5fcd70a8f05886ef2be7547 (patch) | |
| tree | a8060d5ea497a5289fa5410ab8f489bca3d59e10 /source/slang/slang-language-server.cpp | |
| parent | fcc1a0973f91f0daff9c5c2d0a00208ecb7b91c2 (diff) | |
Support clang-format `file` and `--fallback-style` in slangd. (#2412)
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-language-server.cpp')
| -rw-r--r-- | source/slang/slang-language-server.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/source/slang/slang-language-server.cpp b/source/slang/slang-language-server.cpp index e2469a88a..bb662db91 100644 --- a/source/slang/slang-language-server.cpp +++ b/source/slang/slang-language-server.cpp @@ -167,15 +167,15 @@ SlangResult LanguageServer::parseNextMessage() if (response.result.getKind() == JSONValue::Kind::Array) { auto arr = m_connection->getContainer()->getArray(response.result); - if (arr.getCount() == 11) + if (arr.getCount() == 12) { updatePredefinedMacros(arr[0]); updateSearchPaths(arr[1]); updateSearchInWorkspace(arr[2]); updateCommitCharacters(arr[3]); - updateFormattingOptions(arr[4], arr[5], arr[6], arr[7]); - updateInlayHintOptions(arr[8], arr[9]); - updateTraceOptions(arr[10]); + updateFormattingOptions(arr[4], arr[5], arr[6], arr[7], arr[8]); + updateInlayHintOptions(arr[9], arr[10]); + updateTraceOptions(arr[11]); } } break; @@ -1149,6 +1149,7 @@ SlangResult LanguageServer::formatting(const LanguageServerProtocol::DocumentFor } if (m_formatOptions.clangFormatLocation.getLength() == 0) m_formatOptions.clangFormatLocation = findClangFormatTool(); + m_formatOptions.fileName = canonicalPath; auto edits = formatSource(doc->getText().getUnownedSlice(), -1, -1, -1, m_formatOptions); auto textEdits = translateTextEdits(doc, edits); m_connection->sendResult(&textEdits, responseId); @@ -1332,12 +1333,13 @@ void LanguageServer::updateCommitCharacters(const JSONValue& jsonValue) } } -void LanguageServer::updateFormattingOptions(const JSONValue& clangFormatLoc, const JSONValue& clangFormatStyle, const JSONValue& allowLineBreakOnType, const JSONValue& allowLineBreakInRange) +void LanguageServer::updateFormattingOptions(const JSONValue& clangFormatLoc, const JSONValue& clangFormatStyle, const JSONValue& clangFormatFallbackStyle, const JSONValue& allowLineBreakOnType, const JSONValue& allowLineBreakInRange) { auto container = m_connection->getContainer(); JSONToNativeConverter converter(container, m_connection->getSink()); converter.convert(clangFormatLoc, &m_formatOptions.clangFormatLocation); converter.convert(clangFormatStyle, &m_formatOptions.style); + converter.convert(clangFormatFallbackStyle, &m_formatOptions.fallbackStyle); converter.convert(allowLineBreakOnType, &m_formatOptions.allowLineBreakInOnTypeFormatting); converter.convert(allowLineBreakInRange, &m_formatOptions.allowLineBreakInRangeFormatting); if (m_formatOptions.style.getLength() == 0) @@ -1396,6 +1398,8 @@ void LanguageServer::sendConfigRequest() args.items.add(item); item.section = "slang.format.clangFormatStyle"; args.items.add(item); + item.section = "slang.format.clangFormatFallbackStyle"; + args.items.add(item); item.section = "slang.format.allowLineBreakChangesInOnTypeFormatting"; args.items.add(item); item.section = "slang.format.allowLineBreakChangesInRangeFormatting"; |
