1 module dls.protocol.messages.text_document;
2 
3 import logger = std.experimental.logger;
4 import dls.protocol.interfaces;
5 import dls.tools.tools : Tools;
6 import dls.util.document : Document;
7 import dls.util.uri : Uri;
8 
9 void didOpen(DidOpenTextDocumentParams params)
10 {
11     if (params.textDocument.languageId == "d")
12     {
13         logger.logf("Opening %s", new Uri(params.textDocument.uri).path);
14         Document.open(params.textDocument);
15     }
16 }
17 
18 void didChange(DidChangeTextDocumentParams params)
19 {
20     Document.change(params.textDocument, params.contentChanges);
21 }
22 
23 void willSave(WillSaveTextDocumentParams params)
24 {
25 }
26 
27 auto willSaveWaitUntil(WillSaveTextDocumentParams params)
28 {
29     TextEdit[] result;
30     return result;
31 }
32 
33 void didSave(DidSaveTextDocumentParams params)
34 {
35 }
36 
37 void didClose(DidCloseTextDocumentParams params)
38 {
39     Document.close(params.textDocument);
40 }
41 
42 auto completion(CompletionParams params)
43 {
44     auto uri = new Uri(params.textDocument.uri);
45     logger.logf("Getting completions for %s at position %s,%s", uri.path,
46             params.position.line, params.position.character);
47     return Tools.codeCompleter.complete(uri, params.position);
48 }
49 
50 @("completionItem", "resolve")
51 auto completionItem_resolve(CompletionItem item)
52 {
53     return item;
54 }
55 
56 auto hover(TextDocumentPositionParams params)
57 {
58     auto result = new Hover();
59     return result;
60 }
61 
62 auto signatureHelp(TextDocumentPositionParams params)
63 {
64     auto result = new SignatureHelp();
65     return result;
66 }
67 
68 auto definition(TextDocumentPositionParams params)
69 {
70     auto result = new Location();
71     return result.nullable;
72 }
73 
74 auto typeDefinition(TextDocumentPositionParams params)
75 {
76     auto result = new Location();
77     return result.nullable;
78 }
79 
80 auto implementation(TextDocumentPositionParams params)
81 {
82     auto result = new Location();
83     return result.nullable;
84 }
85 
86 auto references(ReferenceParams params)
87 {
88     Location[] result;
89     return result;
90 }
91 
92 auto documentHighlight(TextDocumentPositionParams params)
93 {
94     DocumentHighlight[] result;
95     return result;
96 }
97 
98 auto documentSymbol(DocumentSymbolParams params)
99 {
100     SymbolInformation[] result;
101     return result;
102 }
103 
104 auto codeAction(CodeActionParams params)
105 {
106     Command[] result;
107     return result;
108 }
109 
110 auto codeLens(CodeLensParams params)
111 {
112     CodeLens[] result;
113     return result;
114 }
115 
116 @("codeLens", "resolve")
117 auto codeLens_resolve(CodeLens codeLens)
118 {
119     return codeLens;
120 }
121 
122 auto documentLink(DocumentLinkParams params)
123 {
124     DocumentLink[] result;
125     return result;
126 }
127 
128 @("documentLink", "resolve")
129 auto documentLink_resolve(DocumentLink link)
130 {
131     return link;
132 }
133 
134 auto documentColor(DocumentColorParams params)
135 {
136     ColorInformation[] result;
137     return result;
138 }
139 
140 auto colorPresentation(ColorPresentationParams params)
141 {
142     ColorPresentation[] result;
143     return result;
144 }
145 
146 auto formatting(DocumentFormattingParams params)
147 {
148     auto uri = new Uri(params.textDocument.uri);
149     logger.logf("Formatting %s", uri.path);
150     return Tools.formatter.format(uri, params.options);
151 }
152 
153 auto rangeFormatting(DocumentRangeFormattingParams params)
154 {
155     TextEdit[] result;
156     return result;
157 }
158 
159 auto onTypeFormatting(DocumentOnTypeFormattingParams params)
160 {
161     TextEdit[] result;
162     return result;
163 }
164 
165 auto rename(RenameParams params)
166 {
167     WorkspaceEdit[] result;
168     return result;
169 }