#include "initialize.h" namespace lsp_handlers { std::optional 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