1 module dls.protocol.interfaces.general; 2 3 public import dls.protocol.definitions; 4 import dls.protocol.interfaces.text_document : CompletionItemKind; 5 import dls.protocol.interfaces.workspace : WorkspaceFolder; 6 7 private class WithDynamicRegistration 8 { 9 Nullable!bool dynamicRegistration; 10 } 11 12 class InitializeParams 13 { 14 static enum Trace : string 15 { 16 off = "off", 17 messages = "messages", 18 verbose = "verbose" 19 } 20 21 Nullable!ulong processId; 22 // deprecated Nullable!string rootPath; // TODO: add compatibility 23 Nullable!DocumentUri rootUri; 24 Nullable!JSONValue initializationOptions; 25 ClientCapabilities capabilities = new ClientCapabilities(); 26 Nullable!Trace trace; 27 Nullable!(WorkspaceFolder[]) workspaceFolders; 28 } 29 30 class WorkspaceClientCapabilities 31 { 32 static class WorkspaceEdit 33 { 34 Nullable!bool documentChanges; 35 } 36 37 Nullable!bool applyEdit; 38 Nullable!WorkspaceEdit workspaceEdit; 39 Nullable!WithDynamicRegistration didChangeConfiguration; 40 Nullable!WithDynamicRegistration didChangeWatchedFiles; 41 Nullable!WithDynamicRegistration symbol; 42 Nullable!WithDynamicRegistration executeCommand; 43 Nullable!bool workspaceFolders; 44 Nullable!bool configuration; 45 } 46 47 class TextDocumentClientCapabilities 48 { 49 static class Synchronisation 50 { 51 Nullable!bool dynamicRegistration; 52 Nullable!bool willSave; 53 Nullable!bool willSaveWaitUntil; 54 Nullable!bool didSave; 55 } 56 57 static class Completion 58 { 59 static class CompletionItem 60 { 61 Nullable!bool snippetSupport; 62 Nullable!bool commitCharactersSupport; 63 Nullable!(MarkupKind[]) documentationFormat; 64 } 65 66 static class CompletionItemKind 67 { 68 Nullable!(dls.protocol.interfaces.text_document.CompletionItemKind[]) valueSet; 69 } 70 71 Nullable!bool dynamicRegistration; 72 Nullable!CompletionItem completionItem; 73 Nullable!CompletionItemKind completionItemKind; 74 Nullable!bool contextSupport; 75 } 76 77 Nullable!Synchronisation synchronisation; 78 Nullable!Completion completion; 79 Nullable!WithDynamicRegistration hover; 80 Nullable!WithDynamicRegistration signatureHelp; 81 Nullable!WithDynamicRegistration references; 82 Nullable!WithDynamicRegistration documentHighlight; 83 Nullable!WithDynamicRegistration documentSymbol; 84 Nullable!WithDynamicRegistration formatting; 85 Nullable!WithDynamicRegistration rangeFormatting; 86 Nullable!WithDynamicRegistration onTypeFormatting; 87 Nullable!WithDynamicRegistration definition; 88 Nullable!WithDynamicRegistration typeDefinition; 89 Nullable!WithDynamicRegistration implementation; 90 Nullable!WithDynamicRegistration codeAction; 91 Nullable!WithDynamicRegistration codeLens; 92 Nullable!WithDynamicRegistration documentLink; 93 Nullable!WithDynamicRegistration colorProvider; 94 Nullable!WithDynamicRegistration rename; 95 } 96 97 class ClientCapabilities 98 { 99 Nullable!WorkspaceClientCapabilities workspace; 100 Nullable!TextDocumentClientCapabilities textDocument; 101 Nullable!JSONValue experimental; 102 } 103 104 class InitializeResult 105 { 106 ServerCapabilities capabilities = new ServerCapabilities(); 107 } 108 109 // deprecated enum InitializeErrorCode // TODO: add compatibility 110 // { 111 // unknownProtocolVersion = 1 112 // } 113 114 class InitializeErrorData 115 { 116 bool retry; 117 } 118 119 enum TextDocumentSyncKind 120 { 121 none = 0, 122 full = 1, 123 incremental = 2 124 } 125 126 private class OptionsBase 127 { 128 Nullable!bool resolveProvider; 129 } 130 131 class CompletionOptions : OptionsBase 132 { 133 Nullable!(string[]) triggerCharacters; 134 } 135 136 class SignatureHelpOptions 137 { 138 Nullable!(string[]) triggerCharacters; 139 } 140 141 alias CodeLensOptions = OptionsBase; 142 143 class DocumentOnTypeFormattingOptions 144 { 145 string firstTriggerCharacter; 146 Nullable!(string[]) moreTriggerCharacter; 147 } 148 149 alias DocumentLinkOptions = OptionsBase; 150 151 class ExecuteCommandOptions 152 { 153 string[] commands; 154 } 155 156 class SaveOptions 157 { 158 Nullable!bool includeText; 159 } 160 161 class ColorProviderOptions 162 { 163 } 164 165 class TextDocumentSyncOptions 166 { 167 Nullable!bool openClose; 168 Nullable!TextDocumentSyncKind change; 169 Nullable!bool willSave; 170 Nullable!bool willSaveWaitUntil; 171 Nullable!SaveOptions save; 172 } 173 174 class StaticRegistrationOptions 175 { 176 Nullable!string id; 177 } 178 179 class ServerCapabilities 180 { 181 static class Workspace 182 { 183 static class WorkspaceFolders 184 { 185 Nullable!bool supported; 186 Nullable!JSONValue changeNotifications; 187 } 188 189 Nullable!WorkspaceFolders workspaceFolders; 190 } 191 192 Nullable!TextDocumentSyncOptions textDocumentSync; // TODO: add TextDocumentSyncKind compatibility 193 Nullable!bool hoverProvider; 194 Nullable!CompletionOptions completionProvider; 195 Nullable!SignatureHelpOptions signatureHelpProvider; 196 Nullable!bool definitionProvider; 197 Nullable!JSONValue typeDefinitionProvider; 198 Nullable!JSONValue implementationProvider; 199 Nullable!bool referencesProvider; 200 Nullable!bool documentHighlightProvider; 201 Nullable!bool documentSymbolProvider; 202 Nullable!bool workspaceSymbolProvider; 203 Nullable!bool codeActionProvider; 204 Nullable!CodeLensOptions codeLensProvider; 205 Nullable!bool documentFormattingProvider; 206 Nullable!bool documentRangeFormattingProvider; 207 Nullable!DocumentOnTypeFormattingOptions documentOnTypeFormattingProvider; 208 Nullable!bool renameProvider; 209 Nullable!DocumentLinkOptions documentLinkProvider; 210 Nullable!JSONValue colorProvider; 211 Nullable!ExecuteCommandOptions executeCommandProvider; 212 Nullable!Workspace workspace; 213 Nullable!JSONValue experimental; 214 } 215 216 class CancelParams 217 { 218 JSONValue id; 219 }