1 /* 2 *Copyright (C) 2018 Laurent Tréguier 3 * 4 *This file is part of DLS. 5 * 6 *DLS is free software: you can redistribute it and/or modify 7 *it under the terms of the GNU General Public License as published by 8 *the Free Software Foundation, either version 3 of the License, or 9 *(at your option) any later version. 10 * 11 *DLS is distributed in the hope that it will be useful, 12 *but WITHOUT ANY WARRANTY; without even the implied warranty of 13 *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 *GNU General Public License for more details. 15 * 16 *You should have received a copy of the GNU General Public License 17 *along with DLS. If not, see <http://www.gnu.org/licenses/>. 18 * 19 */ 20 21 module dls.protocol.messages.text_document; 22 23 import dls.protocol.definitions; 24 import dls.protocol.interfaces.text_document; 25 import std.json : JSONValue; 26 import std.typecons : Nullable; 27 28 void didOpen(DidOpenTextDocumentParams params) 29 { 30 import dls.protocol.logger : logger; 31 import dls.util.document : Document; 32 import dls.util.uri : Uri; 33 34 auto uri = new Uri(params.textDocument.uri); 35 logger.info("Document opened: %s", uri.path); 36 37 if (!Document.open(params.textDocument)) 38 { 39 logger.warning("Document %s is already open", uri.path); 40 } 41 } 42 43 void didChange(DidChangeTextDocumentParams params) 44 { 45 import dls.protocol.logger : logger; 46 import dls.util.document : Document; 47 import dls.util.uri : Uri; 48 49 auto uri = new Uri(params.textDocument.uri); 50 logger.info("Document changed: %s", uri.path); 51 52 if (!Document.change(params.textDocument, params.contentChanges)) 53 { 54 logger.warning("Document %s is not open", uri.path); 55 } 56 } 57 58 void willSave(WillSaveTextDocumentParams params) 59 { 60 } 61 62 TextEdit[] willSaveWaitUntil(WillSaveTextDocumentParams params) 63 { 64 return []; 65 } 66 67 void didSave(DidSaveTextDocumentParams params) 68 { 69 import dls.protocol.logger : logger; 70 import dls.util.uri : Uri; 71 72 auto uri = new Uri(params.textDocument.uri); 73 logger.info("Document saved: %s", uri.path); 74 } 75 76 void didClose(DidCloseTextDocumentParams params) 77 { 78 import dls.protocol.logger : logger; 79 import dls.util.document : Document; 80 import dls.util.uri : Uri; 81 82 auto uri = new Uri(params.textDocument.uri); 83 logger.info("Document closed: %s", uri.path); 84 85 if (!Document.close(params.textDocument)) 86 { 87 logger.warning("Document %s is not open", uri.path); 88 } 89 } 90 91 CompletionItem[] completion(CompletionParams params) 92 { 93 return []; 94 } 95 96 @("completionItem", "resolve") 97 CompletionItem completionItem_resolve(CompletionItem item) 98 { 99 return null; 100 } 101 102 Hover hover(TextDocumentPositionParams params) 103 { 104 return null; 105 } 106 107 SignatureHelp signatureHelp(TextDocumentPositionParams params) 108 { 109 return null; 110 } 111 112 Location[] declaration(TextDocumentPositionParams params) 113 { 114 return []; 115 } 116 117 Location[] definition(TextDocumentPositionParams params) 118 { 119 return []; 120 } 121 122 Location[] typeDefinition(TextDocumentPositionParams params) 123 { 124 return []; 125 } 126 127 Location implementation(TextDocumentPositionParams params) 128 { 129 return null; 130 } 131 132 Location[] references(ReferenceParams params) 133 { 134 return []; 135 } 136 137 DocumentHighlight[] documentHighlight(TextDocumentPositionParams params) 138 { 139 return []; 140 } 141 142 JSONValue documentSymbol(DocumentSymbolParams params) // (DocumentSymbol | SymbolInformation)[] 143 { 144 return JSONValue(); 145 } 146 147 JSONValue codeAction(CodeActionParams params) // (Command | CodeAction)[] 148 { 149 return JSONValue(); 150 } 151 152 CodeLens[] codeLens(CodeLensParams params) 153 { 154 return []; 155 } 156 157 @("codeLens", "resolve") 158 CodeLens codeLens_resolve(CodeLens codeLens) 159 { 160 return codeLens; 161 } 162 163 DocumentLink[] documentLink(DocumentLinkParams params) 164 { 165 return []; 166 } 167 168 @("documentLink", "resolve") 169 DocumentLink documentLink_resolve(DocumentLink link) 170 { 171 return link; 172 } 173 174 ColorInformation[] documentColor(DocumentColorParams params) 175 { 176 return []; 177 } 178 179 ColorPresentation[] colorPresentation(ColorPresentationParams params) 180 { 181 return []; 182 } 183 184 TextEdit[] formatting(DocumentFormattingParams params) 185 { 186 return []; 187 } 188 189 TextEdit[] rangeFormatting(DocumentRangeFormattingParams params) 190 { 191 return []; 192 } 193 194 TextEdit[] onTypeFormatting(DocumentOnTypeFormattingParams params) 195 { 196 return []; 197 } 198 199 WorkspaceEdit rename(RenameParams params) 200 { 201 return null; 202 } 203 204 Range prepareRename(TextDocumentPositionParams params) 205 { 206 return null; 207 } 208 209 FoldingRange[] foldingRange(FoldingRangeParams params) 210 { 211 return []; 212 }