jak-project/lsp/handlers/initialize.cpp

56 lines
2.3 KiB
C++

#include "initialize.h"
namespace lsp_handlers {
std::optional<json> initialize(Workspace& /*workspace*/, int /*id*/, json /*params*/) {
json text_document_sync{
{"openClose", true},
{"change", 1}, // Full sync
{"willSave", true},
{"willSaveWaitUntil", false},
{"save", {{"includeText", false}}},
};
json completion_provider{
{"resolveProvider", false},
{"triggerCharacters", {}},
};
json signature_help_provider{{"triggerCharacters", ""}};
json code_lens_provider{{"resolveProvider", false}};
json document_on_type_formatting_provider{
{"firstTriggerCharacter", ""},
{"moreTriggerCharacter", ""},
};
json document_link_provider{{"resolveProvider", false}};
json execute_command_provider{{"commands", {}}};
json document_symbol_provder{{"label", "OpenGOAL"}};
json result{{"capabilities",
{
{"textDocumentSync", text_document_sync},
{"hoverProvider", true},
{"completionProvider", completion_provider},
{"signatureHelpProvider", signature_help_provider},
{"definitionProvider", true},
{"colorProvider", true},
{"referencesProvider", false},
{"documentHighlightProvider", false},
{"documentSymbolProvider",
document_symbol_provder}, // TODO - there is another selectionRangeProvider i
// think i need, or word boundaries need to change!
{"workspaceSymbolProvider", false},
{"codeActionProvider", false},
// {"codeLensProvider", code_lens_provider},
{"documentFormattingProvider", true},
{"documentRangeFormattingProvider", false},
{"documentOnTypeFormattingProvider", document_on_type_formatting_provider},
{"renameProvider", false},
{"documentLinkProvider", document_link_provider},
{"executeCommandProvider", execute_command_provider},
{"typeHierarchyProvider", true},
{"experimental", {}},
}}};
return result;
}
} // namespace lsp_handlers