0 | module Language.LSP.Message.TextDocument
3 | import Language.LSP.Message.Derive
4 | import Language.LSP.Message.Location
5 | import Language.LSP.Message.URI
6 | import Language.LSP.Message.Utils
7 | import Language.Reflection
9 | %language ElabReflection
14 | record TextDocumentIdentifier where
15 | constructor MkTextDocumentIdentifier
17 | %runElab deriveJSON defaultOpts `{TextDocumentIdentifier
}
21 | record VersionedTextDocumentIdentifier where
22 | constructor MkVersionedTextDocumentIdentifier
25 | %runElab deriveJSON defaultOpts `{VersionedTextDocumentIdentifier
}
29 | record OptionalVersionedTextDocumentIdentifier where
30 | constructor MkOptionalVersionedTextDocumentIdentifier
33 | %runElab deriveJSON defaultOpts `{OptionalVersionedTextDocumentIdentifier
}
37 | record TextDocumentItem where
38 | constructor MkTextDocumentItem
43 | %runElab deriveJSON defaultOpts `{TextDocumentItem
}
47 | record TextDocumentPositionParams where
48 | constructor MkTextDocumentPositionParams
49 | textDocument : TextDocumentIdentifier
51 | %runElab deriveJSON defaultOpts `{TextDocumentPositionParams
}
53 | namespace TextDocumentSyncKind
56 | data TextDocumentSyncKind = None | Full | Incremental
59 | ToJSON TextDocumentSyncKind where
60 | toJSON None = JNumber 0
61 | toJSON Full = JNumber 1
62 | toJSON Incremental = JNumber 2
65 | FromJSON TextDocumentSyncKind where
66 | fromJSON (JNumber 0) = pure None
67 | fromJSON (JNumber 1) = pure Full
68 | fromJSON (JNumber 2) = pure Incremental
69 | fromJSON _ = Nothing
73 | record DidOpenTextDocumentParams where
74 | constructor MkDidOpenTextDocumentParams
75 | textDocument : TextDocumentItem
76 | %runElab deriveJSON defaultOpts `{DidOpenTextDocumentParams
}
80 | record DocumentFilter where
81 | constructor MkDocumentFilter
82 | language : Maybe String
83 | scheme : Maybe String
84 | pattern : Maybe String
85 | %runElab deriveJSON defaultOpts `{DocumentFilter
}
89 | DocumentSelector : Type
90 | DocumentSelector = List DocumentFilter
93 | record TextDocumentRegistrationOptions where
94 | constructor MkTextDocumentRegistrationOptions
95 | documentSelector : OneOf [DocumentSelector, Null]
96 | %runElab deriveJSON defaultOpts `{TextDocumentRegistrationOptions
}
100 | record TextDocumentChangeRegistrationOptions where
101 | constructor MkTextDocumentChangeRegistrationOptions
102 | syncKind : TextDocumentSyncKind
103 | %runElab deriveJSON defaultOpts `{TextDocumentChangeRegistrationOptions
}
105 | namespace DidChangeTextDocumentParams
108 | record TextDocumentContentChangeEvent where
109 | constructor MkTextDocumentContentChangeEvent
111 | %runElab deriveJSON defaultOpts `{TextDocumentContentChangeEvent
}
115 | record TextDocumentContentChangeEventWithRange where
116 | constructor MkTextDocumentContentChangeEventWithRange
118 | rangeLength : Maybe Int
120 | %runElab deriveJSON defaultOpts `{TextDocumentContentChangeEventWithRange
}
124 | record DidChangeTextDocumentParams where
125 | constructor MkDidChangeTextDocumentParams
126 | textDocument : VersionedTextDocumentIdentifier
127 | contentChanges : List (OneOf [TextDocumentContentChangeEvent, TextDocumentContentChangeEventWithRange])
128 | %runElab deriveJSON defaultOpts `{DidChangeTextDocumentParams
}
130 | namespace TextDocumentSaveReason
133 | data TextDocumentSaveReason = Manual | AfterDelay | FocusOut
136 | ToJSON TextDocumentSaveReason where
137 | toJSON Manual = JNumber 1
138 | toJSON AfterDelay = JNumber 2
139 | toJSON FocusOut = JNumber 3
142 | FromJSON TextDocumentSaveReason where
143 | fromJSON (JNumber 1) = pure Manual
144 | fromJSON (JNumber 2) = pure AfterDelay
145 | fromJSON (JNumber 3) = pure FocusOut
146 | fromJSON _ = neutral
150 | record WillSaveTextDocumentParams where
151 | constructor MkWillSaveTextDocumentParams
152 | textDocument : TextDocumentIdentifier
153 | reason : TextDocumentSaveReason
154 | %runElab deriveJSON defaultOpts `{WillSaveTextDocumentParams
}
158 | record SaveOptions where
159 | constructor MkSaveOptions
160 | includeText : Maybe Bool
161 | %runElab deriveJSON defaultOpts `{SaveOptions
}
165 | record TextDocumentSaveRegistrationOptions where
166 | constructor MkTextDocumentSaveRegistrationOptions
167 | documentSelector : OneOf [DocumentSelector, Null]
168 | includeText : Maybe Bool
169 | %runElab deriveJSON defaultOpts `{TextDocumentSaveRegistrationOptions
}
173 | record DidSaveTextDocumentParams where
174 | constructor MkDidSaveTextDocumentParams
175 | textDocument : TextDocumentIdentifier
176 | text : Maybe String
177 | %runElab deriveJSON defaultOpts `{DidSaveTextDocumentParams
}
181 | record DidCloseTextDocumentParams where
182 | constructor MkDidCloseTextDocumentParams
183 | textDocument : TextDocumentIdentifier
184 | %runElab deriveJSON defaultOpts `{DidCloseTextDocumentParams
}
188 | record TextDocumentSyncClientCapabilities where
189 | constructor MkTextDocumentSyncClientCapabilities
190 | dynamicRegistration : Maybe Bool
191 | willSave : Maybe Bool
192 | willSaveWaitUntil : Maybe Bool
193 | didSave : Maybe Bool
194 | %runElab deriveJSON defaultOpts `{TextDocumentSyncClientCapabilities
}
198 | record TextDocumentSyncOptions where
199 | constructor MkTextDocumentSyncOptions
200 | openClose : Maybe Bool
201 | change : Maybe TextDocumentSyncKind
202 | willSave : Maybe Bool
203 | willSaveWaitUntil : Maybe Bool
204 | save : Maybe (OneOf [Bool, SaveOptions])
205 | %runElab deriveJSON defaultOpts `{TextDocumentSyncOptions
}