summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-language-server.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2022-09-26 12:58:48 -0700
committerGitHub <noreply@github.com>2022-09-26 12:58:48 -0700
commite449446d540b6cc3d5fcd70a8f05886ef2be7547 (patch)
treea8060d5ea497a5289fa5410ab8f489bca3d59e10 /source/slang/slang-language-server.cpp
parentfcc1a0973f91f0daff9c5c2d0a00208ecb7b91c2 (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.cpp14
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";