Skip to main content

monaco/sys/
languages.rs

1//! Bindings for the `monaco.languages` namespace.
2use super::{
3    editor::ITextModel,
4    CancellationToken,
5    IDisposable,
6    IPosition,
7    IRange,
8    Position,
9    Range,
10    Uri,
11};
12use js_sys::{Array, Function, Object, RegExp, Uint32Array};
13use wasm_bindgen::prelude::*;
14
15#[cfg_attr(debug_assertions, wasm_bindgen(module = "/js/debug/editor.js"))]
16#[cfg_attr(not(debug_assertions), wasm_bindgen(module = "/js/release/editor.js"))]
17extern "C" {
18    /// Register information about a new language.
19    #[wasm_bindgen(js_name = "register", js_namespace = languages)]
20    pub fn register(language: &ILanguageExtensionPoint);
21
22    /// Get the information of all the registered languages.
23    ///
24    /// # Returns
25    ///
26    /// `ILanguageExtensionPoint[]`
27    #[wasm_bindgen(js_name = "getLanguages", js_namespace = languages)]
28    pub fn get_languages() -> Array;
29
30    #[wasm_bindgen(js_name = "getEncodedLanguageId", js_namespace = languages)]
31    pub fn get_encoded_language_id(language_id: &str) -> f64;
32
33    /// An event emitted when a language is needed for the first time (e.g. a
34    /// model has it set). @event
35    ///
36    /// # Arguments
37    ///
38    /// * `callback` - `() => void`
39    #[wasm_bindgen(js_name = "onLanguage", js_namespace = languages)]
40    pub fn on_language(language_id: &str, callback: &Function) -> IDisposable;
41
42    /// Set the editing configuration for a language.
43    #[wasm_bindgen(js_name = "setLanguageConfiguration", js_namespace = languages)]
44    pub fn set_language_configuration(
45        language_id: &str,
46        configuration: &LanguageConfiguration,
47    ) -> IDisposable;
48
49    /// Change the color map that is used for token colors.
50    /// Supported formats (hex): #RRGGBB, $RRGGBBAA, #RGB, #RGBA
51    ///
52    /// # Arguments
53    ///
54    /// * `color_map` - `string[]`
55    #[wasm_bindgen(js_name = "setColorMap", js_namespace = languages)]
56    pub fn set_color_map(color_map: Option<&Array>);
57
58    /// Register a tokens provider factory for a language. This tokenizer will
59    /// be exclusive with a tokenizer set using `setTokensProvider` or one
60    /// created using `setMonarchTokensProvider`, but will work together
61    /// with a tokens provider set using
62    /// `registerDocumentSemanticTokensProvider` or
63    /// `registerDocumentRangeSemanticTokensProvider`.
64    #[wasm_bindgen(js_name = "registerTokensProviderFactory", js_namespace = languages)]
65    pub fn register_tokens_provider_factory(
66        language_id: &str,
67        factory: &TokensProviderFactory,
68    ) -> IDisposable;
69
70    /// Set the tokens provider for a language (manual implementation). This
71    /// tokenizer will be exclusive with a tokenizer created using
72    /// `setMonarchTokensProvider`, or with `registerTokensProviderFactory`,
73    /// but will work together with a tokens provider set using
74    /// `registerDocumentSemanticTokensProvider`
75    /// or `registerDocumentRangeSemanticTokensProvider`.
76    #[wasm_bindgen(js_name = "setTokensProvider", js_namespace = languages)]
77    pub fn set_tokens_provider(language_id: &str, provider: &JsValue) -> IDisposable;
78
79    /// Set the tokens provider for a language (monarch implementation). This
80    /// tokenizer will be exclusive with a tokenizer set using
81    /// `setTokensProvider`, or with `registerTokensProviderFactory`, but will
82    /// work together with a tokens provider set using
83    /// `registerDocumentSemanticTokensProvider` or
84    /// `registerDocumentRangeSemanticTokensProvider`.
85    #[wasm_bindgen(js_name = "setMonarchTokensProvider", js_namespace = languages)]
86    pub fn set_monarch_tokens_provider(language_id: &str, language_def: &JsValue) -> IDisposable;
87
88    /// Register a reference provider (used by e.g. reference search).
89    #[wasm_bindgen(js_name = "registerReferenceProvider", js_namespace = languages)]
90    pub fn register_reference_provider(
91        language_id: &str,
92        provider: &ReferenceProvider,
93    ) -> IDisposable;
94
95    /// Register a rename provider (used by e.g. rename symbol).
96    #[wasm_bindgen(js_name = "registerRenameProvider", js_namespace = languages)]
97    pub fn register_rename_provider(language_id: &str, provider: &RenameProvider) -> IDisposable;
98
99    /// Register a signature help provider (used by e.g. parameter hints).
100    #[wasm_bindgen(js_name = "registerSignatureHelpProvider", js_namespace = languages)]
101    pub fn register_signature_help_provider(
102        language_id: &str,
103        provider: &SignatureHelpProvider,
104    ) -> IDisposable;
105
106    /// Register a hover provider (used by e.g. editor hover).
107    #[wasm_bindgen(js_name = "registerHoverProvider", js_namespace = languages)]
108    pub fn register_hover_provider(language_id: &str, provider: &HoverProvider) -> IDisposable;
109
110    /// Register a document symbol provider (used by e.g. outline).
111    #[wasm_bindgen(js_name = "registerDocumentSymbolProvider", js_namespace = languages)]
112    pub fn register_document_symbol_provider(
113        language_id: &str,
114        provider: &DocumentSymbolProvider,
115    ) -> IDisposable;
116
117    /// Register a document highlight provider (used by e.g. highlight
118    /// occurrences).
119    #[wasm_bindgen(js_name = "registerDocumentHighlightProvider", js_namespace = languages)]
120    pub fn register_document_highlight_provider(
121        language_id: &str,
122        provider: &DocumentHighlightProvider,
123    ) -> IDisposable;
124
125    /// Register an linked editing range provider.
126    #[wasm_bindgen(js_name = "registerLinkedEditingRangeProvider", js_namespace = languages)]
127    pub fn register_linked_editing_range_provider(
128        language_id: &str,
129        provider: &LinkedEditingRangeProvider,
130    ) -> IDisposable;
131
132    /// Register a definition provider (used by e.g. go to definition).
133    #[wasm_bindgen(js_name = "registerDefinitionProvider", js_namespace = languages)]
134    pub fn register_definition_provider(
135        language_id: &str,
136        provider: &DefinitionProvider,
137    ) -> IDisposable;
138
139    /// Register a implementation provider (used by e.g. go to implementation).
140    #[wasm_bindgen(js_name = "registerImplementationProvider", js_namespace = languages)]
141    pub fn register_implementation_provider(
142        language_id: &str,
143        provider: &ImplementationProvider,
144    ) -> IDisposable;
145
146    /// Register a type definition provider (used by e.g. go to type
147    /// definition).
148    #[wasm_bindgen(js_name = "registerTypeDefinitionProvider", js_namespace = languages)]
149    pub fn register_type_definition_provider(
150        language_id: &str,
151        provider: &TypeDefinitionProvider,
152    ) -> IDisposable;
153
154    /// Register a code lens provider (used by e.g. inline code lenses).
155    #[wasm_bindgen(js_name = "registerCodeLensProvider", js_namespace = languages)]
156    pub fn register_code_lens_provider(
157        language_id: &str,
158        provider: &CodeLensProvider,
159    ) -> IDisposable;
160
161    /// Register a code action provider (used by e.g. quick fix).
162    #[wasm_bindgen(js_name = "registerCodeActionProvider", js_namespace = languages)]
163    pub fn register_code_action_provider(
164        language_id: &str,
165        provider: &CodeActionProvider,
166        metadata: Option<&CodeActionProviderMetadata>,
167    ) -> IDisposable;
168
169    /// Register a formatter that can handle only entire models.
170    #[wasm_bindgen(js_name = "registerDocumentFormattingEditProvider", js_namespace = languages)]
171    pub fn register_document_formatting_edit_provider(
172        language_id: &str,
173        provider: &DocumentFormattingEditProvider,
174    ) -> IDisposable;
175
176    /// Register a formatter that can handle a range inside a model.
177    #[wasm_bindgen(js_name = "registerDocumentRangeFormattingEditProvider", js_namespace = languages)]
178    pub fn register_document_range_formatting_edit_provider(
179        language_id: &str,
180        provider: &DocumentRangeFormattingEditProvider,
181    ) -> IDisposable;
182
183    /// Register a formatter than can do formatting as the user types.
184    #[wasm_bindgen(js_name = "registerOnTypeFormattingEditProvider", js_namespace = languages)]
185    pub fn register_on_type_formatting_edit_provider(
186        language_id: &str,
187        provider: &OnTypeFormattingEditProvider,
188    ) -> IDisposable;
189
190    /// Register a link provider that can find links in text.
191    #[wasm_bindgen(js_name = "registerLinkProvider", js_namespace = languages)]
192    pub fn register_link_provider(language_id: &str, provider: &LinkProvider) -> IDisposable;
193
194    /// Register a completion item provider (use by e.g. suggestions).
195    #[wasm_bindgen(js_name = "registerCompletionItemProvider", js_namespace = languages)]
196    pub fn register_completion_item_provider(
197        language_id: &str,
198        provider: &CompletionItemProvider,
199    ) -> IDisposable;
200
201    /// Register a document color provider (used by Color Picker, Color
202    /// Decorator).
203    #[wasm_bindgen(js_name = "registerColorProvider", js_namespace = languages)]
204    pub fn register_color_provider(
205        language_id: &str,
206        provider: &DocumentColorProvider,
207    ) -> IDisposable;
208
209    /// Register a folding range provider
210    #[wasm_bindgen(js_name = "registerFoldingRangeProvider", js_namespace = languages)]
211    pub fn register_folding_range_provider(
212        language_id: &str,
213        provider: &FoldingRangeProvider,
214    ) -> IDisposable;
215
216    /// Register a declaration provider
217    #[wasm_bindgen(js_name = "registerDeclarationProvider", js_namespace = languages)]
218    pub fn register_declaration_provider(
219        language_id: &str,
220        provider: &DeclarationProvider,
221    ) -> IDisposable;
222
223    /// Register a selection range provider
224    #[wasm_bindgen(js_name = "registerSelectionRangeProvider", js_namespace = languages)]
225    pub fn register_selection_range_provider(
226        language_id: &str,
227        provider: &SelectionRangeProvider,
228    ) -> IDisposable;
229
230    /// Register a document semantic tokens provider. A semantic tokens provider
231    /// will complement and enhance a simple top-down tokenizer. Simple
232    /// top-down tokenizers can be set either via `setMonarchTokensProvider`
233    /// or `setTokensProvider`.
234    ///
235    /// For the best user experience, register both a semantic tokens provider
236    /// and a top-down tokenizer.
237    #[wasm_bindgen(js_name = "registerDocumentSemanticTokensProvider", js_namespace = languages)]
238    pub fn register_document_semantic_tokens_provider(
239        language_id: &str,
240        provider: &DocumentSemanticTokensProvider,
241    ) -> IDisposable;
242
243    /// Register a document range semantic tokens provider. A semantic tokens
244    /// provider will complement and enhance a simple top-down tokenizer.
245    /// Simple top-down tokenizers can be set either via
246    /// `setMonarchTokensProvider` or `setTokensProvider`.
247    ///
248    /// For the best user experience, register both a semantic tokens provider
249    /// and a top-down tokenizer.
250    #[wasm_bindgen(js_name = "registerDocumentRangeSemanticTokensProvider", js_namespace = languages)]
251    pub fn register_document_range_semantic_tokens_provider(
252        language_id: &str,
253        provider: &DocumentRangeSemanticTokensProvider,
254    ) -> IDisposable;
255
256    /// Register an inline completions provider.
257    #[wasm_bindgen(js_name = "registerInlineCompletionsProvider", js_namespace = languages)]
258    pub fn register_inline_completions_provider(
259        language_id: &str,
260        provider: &InlineCompletionsProvider,
261    ) -> IDisposable;
262
263    /// Register an inlay hints provider.
264    #[wasm_bindgen(js_name = "registerInlayHintsProvider", js_namespace = languages)]
265    pub fn register_inlay_hints_provider(
266        language_id: &str,
267        provider: &InlayHintsProvider,
268    ) -> IDisposable;
269
270    #[derive(Debug)]
271    pub type FoldingRangeKind;
272    #[wasm_bindgen(method, js_class = "FoldingRangeKind", js_name = "value", js_namespace = languages, getter = value)]
273    pub fn value(this: &FoldingRangeKind) -> String;
274    /// Set the `value` property.
275    #[wasm_bindgen(method, js_class = "FoldingRangeKind", js_name = "value", js_namespace = languages, setter = value)]
276    pub fn set_value(this: &FoldingRangeKind, val: &str);
277    /// Kind for folding range representing a comment. The value of the kind is
278    /// 'comment'.
279    #[wasm_bindgen(static_method_of = FoldingRangeKind, js_class = "FoldingRangeKind", js_name = "Comment", js_namespace = languages, getter = Comment)]
280    pub fn comment() -> FoldingRangeKind;
281    /// Kind for folding range representing a import. The value of the kind is
282    /// 'imports'.
283    #[wasm_bindgen(static_method_of = FoldingRangeKind, js_class = "FoldingRangeKind", js_name = "Imports", js_namespace = languages, getter = Imports)]
284    pub fn imports() -> FoldingRangeKind;
285    /// Kind for folding range representing regions (for example marked by
286    /// `#region`, `#endregion`). The value of the kind is 'region'.
287    #[wasm_bindgen(static_method_of = FoldingRangeKind, js_class = "FoldingRangeKind", js_name = "Region", js_namespace = languages, getter = Region)]
288    pub fn region() -> FoldingRangeKind;
289    /// Creates a new {@link FoldingRangeKind}.
290    ///
291    /// @param value of the kind.
292    #[wasm_bindgen(method, js_class = "FoldingRangeKind", js_name = "constructor", js_namespace = languages)]
293    pub fn constructor(this: &FoldingRangeKind, value: &str);
294}
295int_enum! {
296    pub enum IndentAction {
297        /// Insert new line and copy the previous line's indentation.
298        None = 0,
299        /// Insert new line and indent once (relative to the previous line's indentation).
300        Indent = 1,
301        /// Insert two new lines:
302        ///  - the first one indented which will hold the cursor
303        ///  - the second one at the same indentation level
304        Indentoutdent = 2,
305        /// Insert new line and outdent once (relative to the previous line's indentation).
306        Outdent = 3,
307    }
308}
309
310int_enum! {
311    pub enum CompletionItemKind {
312        Method = 0,
313        Function = 1,
314        Constructor = 2,
315        Field = 3,
316        Variable = 4,
317        Class = 5,
318        Struct = 6,
319        Interface = 7,
320        Module = 8,
321        Property = 9,
322        Event = 10,
323        Operator = 11,
324        Unit = 12,
325        Value = 13,
326        Constant = 14,
327        Enum = 15,
328        Enummember = 16,
329        Keyword = 17,
330        Text = 18,
331        Color = 19,
332        File = 20,
333        Reference = 21,
334        Customcolor = 22,
335        Folder = 23,
336        Typeparameter = 24,
337        User = 25,
338        Issue = 26,
339        Snippet = 27,
340    }
341}
342
343int_enum! {
344    pub enum CompletionItemTag {
345        Deprecated = 1,
346    }
347}
348
349int_enum! {
350    pub enum CompletionItemInsertTextRule {
351        /// Adjust whitespace/indentation of multiline insert texts to
352        /// match the current line indentation.
353        Keepwhitespace = 1,
354        /// `insertText` is a snippet.
355        Insertassnippet = 4,
356    }
357}
358
359int_enum! {
360    pub enum CompletionTriggerKind {
361        Invoke = 0,
362        Triggercharacter = 1,
363        Triggerforincompletecompletions = 2,
364    }
365}
366
367int_enum! {
368    pub enum InlineCompletionTriggerKind {
369        /// Completion was triggered automatically while editing.
370        /// It is sufficient to return a single completion item in this case.
371        Automatic = 0,
372        /// Completion was triggered explicitly by a user gesture.
373        /// Return multiple completion items to enable cycling through them.
374        Explicit = 1,
375    }
376}
377
378int_enum! {
379    pub enum SignatureHelpTriggerKind {
380        Invoke = 1,
381        Triggercharacter = 2,
382        Contentchange = 3,
383    }
384}
385
386int_enum! {
387    pub enum DocumentHighlightKind {
388        /// A textual occurrence.
389        Text = 0,
390        /// Read-access of a symbol, like reading a variable.
391        Read = 1,
392        /// Write-access of a symbol, like writing to a variable.
393        Write = 2,
394    }
395}
396
397int_enum! {
398    pub enum SymbolKind {
399        File = 0,
400        Module = 1,
401        Namespace = 2,
402        Package = 3,
403        Class = 4,
404        Method = 5,
405        Property = 6,
406        Field = 7,
407        Constructor = 8,
408        Enum = 9,
409        Interface = 10,
410        Function = 11,
411        Variable = 12,
412        Constant = 13,
413        String = 14,
414        Number = 15,
415        Boolean = 16,
416        Array = 17,
417        Object = 18,
418        Key = 19,
419        Null = 20,
420        Enummember = 21,
421        Struct = 22,
422        Event = 23,
423        Operator = 24,
424        Typeparameter = 25,
425    }
426}
427
428int_enum! {
429    pub enum SymbolTag {
430        Deprecated = 1,
431    }
432}
433
434int_enum! {
435    pub enum InlayHintKind {
436        Other = 0,
437        Type = 1,
438        Parameter = 2,
439    }
440}
441
442#[wasm_bindgen]
443extern "C" {
444    /// A token.
445    #[derive(Debug)]
446    #[wasm_bindgen(extends = Object)]
447    pub type IToken;
448    #[wasm_bindgen(method, js_class = "IToken", js_name = "startIndex", js_namespace = languages, getter = startIndex)]
449    pub fn start_index(this: &IToken) -> f64;
450    /// Set the `startIndex` property.
451    #[wasm_bindgen(method, js_class = "IToken", js_name = "startIndex", js_namespace = languages, setter = startIndex)]
452    pub fn set_start_index(this: &IToken, val: f64);
453    #[wasm_bindgen(method, js_class = "IToken", js_name = "scopes", js_namespace = languages, getter = scopes)]
454    pub fn scopes(this: &IToken) -> String;
455    /// Set the `scopes` property.
456    #[wasm_bindgen(method, js_class = "IToken", js_name = "scopes", js_namespace = languages, setter = scopes)]
457    pub fn set_scopes(this: &IToken, val: &str);
458}
459
460#[wasm_bindgen]
461extern "C" {
462    /// The result of a line tokenization.
463    #[derive(Debug)]
464    #[wasm_bindgen(extends = Object)]
465    pub type ILineTokens;
466    /// The list of tokens on the line.
467    ///
468    /// Type: `IToken[]`
469    #[wasm_bindgen(method, js_class = "ILineTokens", js_name = "tokens", js_namespace = languages, getter = tokens)]
470    pub fn tokens(this: &ILineTokens) -> Array;
471    /// Set the `tokens` property.
472    #[wasm_bindgen(method, js_class = "ILineTokens", js_name = "tokens", js_namespace = languages, setter = tokens)]
473    pub fn set_tokens(this: &ILineTokens, val: &Array);
474    /// The tokenization end state.
475    /// A pointer will be held to this and the object should not be modified by
476    /// the tokenizer after the pointer is returned.
477    #[wasm_bindgen(method, js_class = "ILineTokens", js_name = "endState", js_namespace = languages, getter = endState)]
478    pub fn end_state(this: &ILineTokens) -> IState;
479    /// Set the `endState` property.
480    #[wasm_bindgen(method, js_class = "ILineTokens", js_name = "endState", js_namespace = languages, setter = endState)]
481    pub fn set_end_state(this: &ILineTokens, val: &IState);
482}
483
484#[wasm_bindgen]
485extern "C" {
486    /// The result of a line tokenization.
487    #[derive(Debug)]
488    #[wasm_bindgen(extends = Object)]
489    pub type IEncodedLineTokens;
490    /// The tokens on the line in a binary, encoded format. Each token occupies
491    /// two array indices. For token i:
492    ///  - at offset 2*i => startIndex
493    ///  - at offset 2*i + 1 => metadata
494    /// Meta data is in binary format:
495    /// - ------------------------------------------- 3322 2222 2222 1111 1111
496    ///   1100 0000 0000 1098 7654 3210 9876 5432 1098 7654 3210
497    /// - ------------------------------------------- bbbb bbbb bfff ffff ffFF
498    ///   FFTT LLLL LLLL
499    /// - -------------------------------------------
500    ///  - L = EncodedLanguageId (8 bits): Use `getEncodedLanguageId` to get the
501    ///    encoded ID of a language.
502    ///  - T = StandardTokenType (2 bits): Other = 0, Comment = 1, String = 2,
503    ///    RegEx = 3.
504    ///  - F = FontStyle (4 bits): None = 0, Italic = 1, Bold = 2, Underline =
505    ///    4, Strikethrough = 8.
506    ///  - f = foreground ColorId (9 bits)
507    ///  - b = background ColorId (9 bits)
508    ///  - The color value for each colorId is defined in
509    ///    IStandaloneThemeData.customTokenColors:
510    /// e.g. colorId = 1 is stored in IStandaloneThemeData.customTokenColors[1].
511    /// Color id = 0 means no color, id = 1 is for the default foreground
512    /// color, id = 2 for the default background.
513    #[wasm_bindgen(method, js_class = "IEncodedLineTokens", js_name = "tokens", js_namespace = languages, getter = tokens)]
514    pub fn tokens(this: &IEncodedLineTokens) -> Uint32Array;
515    /// Set the `tokens` property.
516    #[wasm_bindgen(method, js_class = "IEncodedLineTokens", js_name = "tokens", js_namespace = languages, setter = tokens)]
517    pub fn set_tokens(this: &IEncodedLineTokens, val: &Uint32Array);
518    /// The tokenization end state.
519    /// A pointer will be held to this and the object should not be modified by
520    /// the tokenizer after the pointer is returned.
521    #[wasm_bindgen(method, js_class = "IEncodedLineTokens", js_name = "endState", js_namespace = languages, getter = endState)]
522    pub fn end_state(this: &IEncodedLineTokens) -> IState;
523    /// Set the `endState` property.
524    #[wasm_bindgen(method, js_class = "IEncodedLineTokens", js_name = "endState", js_namespace = languages, setter = endState)]
525    pub fn set_end_state(this: &IEncodedLineTokens, val: &IState);
526}
527
528#[wasm_bindgen]
529extern "C" {
530    /// A factory for token providers.
531    #[derive(Debug)]
532    #[wasm_bindgen(extends = Object)]
533    pub type TokensProviderFactory;
534    #[wasm_bindgen(method, js_class = "TokensProviderFactory", js_name = "create", js_namespace = languages)]
535    pub fn create(this: &TokensProviderFactory) -> JsValue;
536}
537
538#[wasm_bindgen]
539extern "C" {
540    /// A "manual" provider of tokens.
541    #[derive(Debug)]
542    #[wasm_bindgen(extends = Object)]
543    pub type TokensProvider;
544    /// The initial state of a language. Will be the state passed in to tokenize
545    /// the first line.
546    #[wasm_bindgen(method, js_class = "TokensProvider", js_name = "getInitialState", js_namespace = languages)]
547    pub fn get_initial_state(this: &TokensProvider) -> IState;
548    /// Tokenize a line given the state at the beginning of the line.
549    #[wasm_bindgen(method, js_class = "TokensProvider", js_name = "tokenize", js_namespace = languages)]
550    pub fn tokenize(this: &TokensProvider, line: &str, state: &IState) -> ILineTokens;
551}
552
553#[wasm_bindgen]
554extern "C" {
555    /// A "manual" provider of tokens, returning tokens in a binary form.
556    #[derive(Debug)]
557    #[wasm_bindgen(extends = Object)]
558    pub type EncodedTokensProvider;
559    /// The initial state of a language. Will be the state passed in to tokenize
560    /// the first line.
561    #[wasm_bindgen(
562        method,
563        js_class = "EncodedTokensProvider",
564        js_name = "getInitialState", js_namespace = languages
565    )]
566    pub fn get_initial_state(this: &EncodedTokensProvider) -> IState;
567    /// Tokenize a line given the state at the beginning of the line.
568    #[wasm_bindgen(
569        method,
570        js_class = "EncodedTokensProvider",
571        js_name = "tokenizeEncoded", js_namespace = languages
572    )]
573    pub fn tokenize_encoded(
574        this: &EncodedTokensProvider,
575        line: &str,
576        state: &IState,
577    ) -> IEncodedLineTokens;
578    /// Tokenize a line given the state at the beginning of the line.
579    ///
580    /// Type: `((line: string, state: IState) => ILineTokens)`
581    #[wasm_bindgen(method, js_class = "EncodedTokensProvider", js_name = "tokenize", js_namespace = languages, getter = tokenize)]
582    pub fn tokenize(this: &EncodedTokensProvider) -> Option<Function>;
583    /// Set the `tokenize` property.
584    #[wasm_bindgen(method, js_class = "EncodedTokensProvider", js_name = "tokenize", js_namespace = languages, setter = tokenize)]
585    pub fn set_tokenize(this: &EncodedTokensProvider, val: Option<&Function>);
586}
587
588#[wasm_bindgen]
589extern "C" {
590    /// Contains additional diagnostic information about the context in which
591    /// a [code action](#CodeActionProvider.provideCodeActions) is run.
592    #[derive(Debug)]
593    #[wasm_bindgen(extends = Object)]
594    pub type CodeActionContext;
595    /// An array of diagnostics.
596    ///
597    /// Type: `editor.IMarkerData[]`
598    #[wasm_bindgen(method, js_class = "CodeActionContext", js_name = "markers", js_namespace = languages, getter = markers)]
599    pub fn markers(this: &CodeActionContext) -> Array;
600    /// Requested kind of actions to return.
601    #[wasm_bindgen(method, js_class = "CodeActionContext", js_name = "only", js_namespace = languages, getter = only)]
602    pub fn only(this: &CodeActionContext) -> Option<String>;
603}
604
605#[wasm_bindgen]
606extern "C" {
607    /// The code action interface defines the contract between extensions and
608    /// the [light bulb](https://code.visualstudio.com/docs/editor/editingevolved#_code-action) feature.
609    #[derive(Debug)]
610    #[wasm_bindgen(extends = Object)]
611    pub type CodeActionProvider;
612    /// Provide commands for the given document and range.
613    #[wasm_bindgen(
614        method,
615        js_class = "CodeActionProvider",
616        js_name = "provideCodeActions", js_namespace = languages
617    )]
618    pub fn provide_code_actions(
619        this: &CodeActionProvider,
620        model: &ITextModel,
621        range: &Range,
622        context: &CodeActionContext,
623        token: &CancellationToken,
624    ) -> JsValue;
625    /// Given a code action fill in the edit. Will only invoked when missing.
626    ///
627    /// Type: `((codeAction: CodeAction, token: CancellationToken) => JsValue)`
628    #[wasm_bindgen(method, js_class = "CodeActionProvider", js_name = "resolveCodeAction", js_namespace = languages, getter = resolveCodeAction)]
629    pub fn resolve_code_action(this: &CodeActionProvider) -> Option<Function>;
630    /// Set the `resolveCodeAction` property.
631    #[wasm_bindgen(method, js_class = "CodeActionProvider", js_name = "resolveCodeAction", js_namespace = languages, setter = resolveCodeAction)]
632    pub fn set_resolve_code_action(this: &CodeActionProvider, val: Option<&Function>);
633}
634
635#[wasm_bindgen]
636extern "C" {
637    /// Metadata about the type of code actions that a {@link
638    /// CodeActionProvider} provides.
639    #[derive(Debug)]
640    #[wasm_bindgen(extends = Object)]
641    pub type CodeActionProviderMetadata;
642    /// List of code action kinds that a {@link CodeActionProvider} may return.
643    ///
644    /// This list is used to determine if a given `CodeActionProvider` should be
645    /// invoked or not. To avoid unnecessary computation, every
646    /// `CodeActionProvider` should list use `providedCodeActionKinds`. The
647    /// list of kinds may either be generic, such as `["quickfix", "refactor",
648    /// "source"]`, or list out every kind provided, such as `["quickfix.
649    /// removeLine", "source.fixAll" ...]`.
650    ///
651    /// Type: `readonly string[]`
652    #[wasm_bindgen(method, js_class = "CodeActionProviderMetadata", js_name = "providedCodeActionKinds", js_namespace = languages, getter = providedCodeActionKinds)]
653    pub fn provided_code_action_kinds(this: &CodeActionProviderMetadata) -> Option<Array>;
654}
655
656#[wasm_bindgen]
657extern "C" {
658    /// Describes how comments for a language work.
659    #[derive(Debug)]
660    #[wasm_bindgen(extends = Object)]
661    pub type CommentRule;
662    /// The line comment token, like `// this is a comment`
663    #[wasm_bindgen(method, js_class = "CommentRule", js_name = "lineComment", js_namespace = languages, getter = lineComment)]
664    pub fn line_comment(this: &CommentRule) -> Option<String>;
665    /// Set the `lineComment` property.
666    #[wasm_bindgen(method, js_class = "CommentRule", js_name = "lineComment", js_namespace = languages, setter = lineComment)]
667    pub fn set_line_comment(this: &CommentRule, val: Option<&str>);
668    /// The block comment character pair, like `/* block comment *&#47;`
669    #[wasm_bindgen(method, js_class = "CommentRule", js_name = "blockComment", js_namespace = languages, getter = blockComment)]
670    pub fn block_comment(this: &CommentRule) -> Option<Array>;
671    /// Set the `blockComment` property.
672    #[wasm_bindgen(method, js_class = "CommentRule", js_name = "blockComment", js_namespace = languages, setter = blockComment)]
673    pub fn set_block_comment(this: &CommentRule, val: Option<&Array>);
674}
675
676#[wasm_bindgen]
677extern "C" {
678    /// The language configuration interface defines the contract between
679    /// extensions and various editor features, like automatic bracket
680    /// insertion, automatic indentation etc.
681    #[derive(Debug)]
682    #[wasm_bindgen(extends = Object)]
683    pub type LanguageConfiguration;
684    /// The language's comment settings.
685    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "comments", js_namespace = languages, getter = comments)]
686    pub fn comments(this: &LanguageConfiguration) -> Option<CommentRule>;
687    /// Set the `comments` property.
688    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "comments", js_namespace = languages, setter = comments)]
689    pub fn set_comments(this: &LanguageConfiguration, val: Option<&CommentRule>);
690    /// The language's brackets.
691    /// This configuration implicitly affects pressing Enter around these
692    /// brackets.
693    ///
694    /// Type: `CharacterPair[]`
695    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "brackets", js_namespace = languages, getter = brackets)]
696    pub fn brackets(this: &LanguageConfiguration) -> Option<Array>;
697    /// Set the `brackets` property.
698    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "brackets", js_namespace = languages, setter = brackets)]
699    pub fn set_brackets(this: &LanguageConfiguration, val: Option<&Array>);
700    /// The language's word definition.
701    /// If the language supports Unicode identifiers (e.g. JavaScript), it is
702    /// preferable to provide a word definition that uses exclusion of known
703    /// separators. e.g.: A regex that matches anything except known
704    /// separators (and dot is allowed to occur in a floating point number):
705    ///   /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\
706    /// .\<\>\/\?\s]+)/g
707    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "wordPattern", js_namespace = languages, getter = wordPattern)]
708    pub fn word_pattern(this: &LanguageConfiguration) -> Option<RegExp>;
709    /// Set the `wordPattern` property.
710    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "wordPattern", js_namespace = languages, setter = wordPattern)]
711    pub fn set_word_pattern(this: &LanguageConfiguration, val: Option<&RegExp>);
712    /// The language's indentation settings.
713    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "indentationRules", js_namespace = languages, getter = indentationRules)]
714    pub fn indentation_rules(this: &LanguageConfiguration) -> Option<IndentationRule>;
715    /// Set the `indentationRules` property.
716    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "indentationRules", js_namespace = languages, setter = indentationRules)]
717    pub fn set_indentation_rules(this: &LanguageConfiguration, val: Option<&IndentationRule>);
718    /// The language's rules to be evaluated when pressing Enter.
719    ///
720    /// Type: `OnEnterRule[]`
721    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "onEnterRules", js_namespace = languages, getter = onEnterRules)]
722    pub fn on_enter_rules(this: &LanguageConfiguration) -> Option<Array>;
723    /// Set the `onEnterRules` property.
724    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "onEnterRules", js_namespace = languages, setter = onEnterRules)]
725    pub fn set_on_enter_rules(this: &LanguageConfiguration, val: Option<&Array>);
726    /// The language's auto closing pairs. The 'close' character is
727    /// automatically inserted with the 'open' character is typed. If not
728    /// set, the configured brackets will be used.
729    ///
730    /// Type: `IAutoClosingPairConditional[]`
731    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "autoClosingPairs", js_namespace = languages, getter = autoClosingPairs)]
732    pub fn auto_closing_pairs(this: &LanguageConfiguration) -> Option<Array>;
733    /// Set the `autoClosingPairs` property.
734    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "autoClosingPairs", js_namespace = languages, setter = autoClosingPairs)]
735    pub fn set_auto_closing_pairs(this: &LanguageConfiguration, val: Option<&Array>);
736    /// The language's surrounding pairs. When the 'open' character is typed on
737    /// a selection, the selected string is surrounded by the open and close
738    /// characters. If not set, the autoclosing pairs settings will be used.
739    ///
740    /// Type: `IAutoClosingPair[]`
741    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "surroundingPairs", js_namespace = languages, getter = surroundingPairs)]
742    pub fn surrounding_pairs(this: &LanguageConfiguration) -> Option<Array>;
743    /// Set the `surroundingPairs` property.
744    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "surroundingPairs", js_namespace = languages, setter = surroundingPairs)]
745    pub fn set_surrounding_pairs(this: &LanguageConfiguration, val: Option<&Array>);
746    /// Defines a list of bracket pairs that are colorized depending on their
747    /// nesting level. If not set, the configured brackets will be used.
748    ///
749    /// Type: `CharacterPair[]`
750    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "colorizedBracketPairs", js_namespace = languages, getter = colorizedBracketPairs)]
751    pub fn colorized_bracket_pairs(this: &LanguageConfiguration) -> Option<Array>;
752    /// Set the `colorizedBracketPairs` property.
753    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "colorizedBracketPairs", js_namespace = languages, setter = colorizedBracketPairs)]
754    pub fn set_colorized_bracket_pairs(this: &LanguageConfiguration, val: Option<&Array>);
755    /// Defines what characters must be after the cursor for bracket or quote
756    /// autoclosing to occur when using the \'languageDefined\' autoclosing
757    /// setting.
758    ///
759    /// This is typically the set of characters which can not start an
760    /// expression, such as whitespace, closing brackets, non-unary operators,
761    /// etc.
762    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "autoCloseBefore", js_namespace = languages, getter = autoCloseBefore)]
763    pub fn auto_close_before(this: &LanguageConfiguration) -> Option<String>;
764    /// Set the `autoCloseBefore` property.
765    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "autoCloseBefore", js_namespace = languages, setter = autoCloseBefore)]
766    pub fn set_auto_close_before(this: &LanguageConfiguration, val: Option<&str>);
767    /// The language's folding rules.
768    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "folding", js_namespace = languages, getter = folding)]
769    pub fn folding(this: &LanguageConfiguration) -> Option<FoldingRules>;
770    /// Set the `folding` property.
771    #[wasm_bindgen(method, js_class = "LanguageConfiguration", js_name = "folding", js_namespace = languages, setter = folding)]
772    pub fn set_folding(this: &LanguageConfiguration, val: Option<&FoldingRules>);
773}
774
775#[wasm_bindgen]
776extern "C" {
777    /// Describes indentation rules for a language.
778    #[derive(Debug)]
779    #[wasm_bindgen(extends = Object)]
780    pub type IndentationRule;
781    /// If a line matches this pattern, then all the lines after it should be
782    /// unindented once (until another rule matches).
783    #[wasm_bindgen(method, js_class = "IndentationRule", js_name = "decreaseIndentPattern", js_namespace = languages, getter = decreaseIndentPattern)]
784    pub fn decrease_indent_pattern(this: &IndentationRule) -> RegExp;
785    /// Set the `decreaseIndentPattern` property.
786    #[wasm_bindgen(method, js_class = "IndentationRule", js_name = "decreaseIndentPattern", js_namespace = languages, setter = decreaseIndentPattern)]
787    pub fn set_decrease_indent_pattern(this: &IndentationRule, val: &RegExp);
788    /// If a line matches this pattern, then all the lines after it should be
789    /// indented once (until another rule matches).
790    #[wasm_bindgen(method, js_class = "IndentationRule", js_name = "increaseIndentPattern", js_namespace = languages, getter = increaseIndentPattern)]
791    pub fn increase_indent_pattern(this: &IndentationRule) -> RegExp;
792    /// Set the `increaseIndentPattern` property.
793    #[wasm_bindgen(method, js_class = "IndentationRule", js_name = "increaseIndentPattern", js_namespace = languages, setter = increaseIndentPattern)]
794    pub fn set_increase_indent_pattern(this: &IndentationRule, val: &RegExp);
795    /// If a line matches this pattern, then **only the next line** after it
796    /// should be indented once.
797    #[wasm_bindgen(method, js_class = "IndentationRule", js_name = "indentNextLinePattern", js_namespace = languages, getter = indentNextLinePattern)]
798    pub fn indent_next_line_pattern(this: &IndentationRule) -> Option<RegExp>;
799    /// Set the `indentNextLinePattern` property.
800    #[wasm_bindgen(method, js_class = "IndentationRule", js_name = "indentNextLinePattern", js_namespace = languages, setter = indentNextLinePattern)]
801    pub fn set_indent_next_line_pattern(this: &IndentationRule, val: Option<&RegExp>);
802    /// If a line matches this pattern, then its indentation should not be
803    /// changed and it should not be evaluated against the other rules.
804    #[wasm_bindgen(method, js_class = "IndentationRule", js_name = "unIndentedLinePattern", js_namespace = languages, getter = unIndentedLinePattern)]
805    pub fn un_indented_line_pattern(this: &IndentationRule) -> Option<RegExp>;
806    /// Set the `unIndentedLinePattern` property.
807    #[wasm_bindgen(method, js_class = "IndentationRule", js_name = "unIndentedLinePattern", js_namespace = languages, setter = unIndentedLinePattern)]
808    pub fn set_un_indented_line_pattern(this: &IndentationRule, val: Option<&RegExp>);
809}
810
811#[wasm_bindgen]
812extern "C" {
813    /// Describes language specific folding markers such as '#region' and
814    /// '#endregion'. The start and end regexes will be tested against the
815    /// contents of all lines and must be designed efficiently:
816    /// - the regex should start with '^'
817    /// - regexp flags (i, g) are ignored
818    #[derive(Debug)]
819    #[wasm_bindgen(extends = Object)]
820    pub type FoldingMarkers;
821    #[wasm_bindgen(method, js_class = "FoldingMarkers", js_name = "start", js_namespace = languages, getter = start)]
822    pub fn start(this: &FoldingMarkers) -> RegExp;
823    /// Set the `start` property.
824    #[wasm_bindgen(method, js_class = "FoldingMarkers", js_name = "start", js_namespace = languages, setter = start)]
825    pub fn set_start(this: &FoldingMarkers, val: &RegExp);
826    #[wasm_bindgen(method, js_class = "FoldingMarkers", js_name = "end", js_namespace = languages, getter = end)]
827    pub fn end(this: &FoldingMarkers) -> RegExp;
828    /// Set the `end` property.
829    #[wasm_bindgen(method, js_class = "FoldingMarkers", js_name = "end", js_namespace = languages, setter = end)]
830    pub fn set_end(this: &FoldingMarkers, val: &RegExp);
831}
832
833#[wasm_bindgen]
834extern "C" {
835    /// Describes folding rules for a language.
836    #[derive(Debug)]
837    #[wasm_bindgen(extends = Object)]
838    pub type FoldingRules;
839    /// Used by the indentation based strategy to decide whether empty lines
840    /// belong to the previous or the next block. A language adheres to the
841    /// off-side rule if blocks in that language are expressed by their
842    /// indentation. See [wikipedia](https://en.wikipedia.org/wiki/Off-side_rule) for more information.
843    /// If not set, `false` is used and empty lines belong to the previous
844    /// block.
845    #[wasm_bindgen(method, js_class = "FoldingRules", js_name = "offSide", js_namespace = languages, getter = offSide)]
846    pub fn off_side(this: &FoldingRules) -> Option<bool>;
847    /// Set the `offSide` property.
848    #[wasm_bindgen(method, js_class = "FoldingRules", js_name = "offSide", js_namespace = languages, setter = offSide)]
849    pub fn set_off_side(this: &FoldingRules, val: Option<bool>);
850    /// Region markers used by the language.
851    #[wasm_bindgen(method, js_class = "FoldingRules", js_name = "markers", js_namespace = languages, getter = markers)]
852    pub fn markers(this: &FoldingRules) -> Option<FoldingMarkers>;
853    /// Set the `markers` property.
854    #[wasm_bindgen(method, js_class = "FoldingRules", js_name = "markers", js_namespace = languages, setter = markers)]
855    pub fn set_markers(this: &FoldingRules, val: Option<&FoldingMarkers>);
856}
857
858#[wasm_bindgen]
859extern "C" {
860    /// Describes a rule to be evaluated when pressing Enter.
861    #[derive(Debug)]
862    #[wasm_bindgen(extends = Object)]
863    pub type OnEnterRule;
864    /// This rule will only execute if the text before the cursor matches this
865    /// regular expression.
866    #[wasm_bindgen(method, js_class = "OnEnterRule", js_name = "beforeText", js_namespace = languages, getter = beforeText)]
867    pub fn before_text(this: &OnEnterRule) -> RegExp;
868    /// Set the `beforeText` property.
869    #[wasm_bindgen(method, js_class = "OnEnterRule", js_name = "beforeText", js_namespace = languages, setter = beforeText)]
870    pub fn set_before_text(this: &OnEnterRule, val: &RegExp);
871    /// This rule will only execute if the text after the cursor matches this
872    /// regular expression.
873    #[wasm_bindgen(method, js_class = "OnEnterRule", js_name = "afterText", js_namespace = languages, getter = afterText)]
874    pub fn after_text(this: &OnEnterRule) -> Option<RegExp>;
875    /// Set the `afterText` property.
876    #[wasm_bindgen(method, js_class = "OnEnterRule", js_name = "afterText", js_namespace = languages, setter = afterText)]
877    pub fn set_after_text(this: &OnEnterRule, val: Option<&RegExp>);
878    /// This rule will only execute if the text above the this line matches this
879    /// regular expression.
880    #[wasm_bindgen(method, js_class = "OnEnterRule", js_name = "previousLineText", js_namespace = languages, getter = previousLineText)]
881    pub fn previous_line_text(this: &OnEnterRule) -> Option<RegExp>;
882    /// Set the `previousLineText` property.
883    #[wasm_bindgen(method, js_class = "OnEnterRule", js_name = "previousLineText", js_namespace = languages, setter = previousLineText)]
884    pub fn set_previous_line_text(this: &OnEnterRule, val: Option<&RegExp>);
885    /// The action to execute.
886    #[wasm_bindgen(method, js_class = "OnEnterRule", js_name = "action", js_namespace = languages, getter = action)]
887    pub fn action(this: &OnEnterRule) -> EnterAction;
888    /// Set the `action` property.
889    #[wasm_bindgen(method, js_class = "OnEnterRule", js_name = "action", js_namespace = languages, setter = action)]
890    pub fn set_action(this: &OnEnterRule, val: &EnterAction);
891}
892
893#[wasm_bindgen]
894extern "C" {
895    /// Definition of documentation comments (e.g. Javadoc/JSdoc)
896    #[derive(Debug)]
897    #[wasm_bindgen(extends = Object)]
898    pub type IDocComment;
899    /// The string that starts a doc comment (e.g. '/**')
900    #[wasm_bindgen(method, js_class = "IDocComment", js_name = "open", js_namespace = languages, getter = open)]
901    pub fn open(this: &IDocComment) -> String;
902    /// Set the `open` property.
903    #[wasm_bindgen(method, js_class = "IDocComment", js_name = "open", js_namespace = languages, setter = open)]
904    pub fn set_open(this: &IDocComment, val: &str);
905    /// The string that appears on the last line and closes the doc comment
906    /// (e.g. ' * /').
907    #[wasm_bindgen(method, js_class = "IDocComment", js_name = "close", js_namespace = languages, getter = close)]
908    pub fn close(this: &IDocComment) -> Option<String>;
909    /// Set the `close` property.
910    #[wasm_bindgen(method, js_class = "IDocComment", js_name = "close", js_namespace = languages, setter = close)]
911    pub fn set_close(this: &IDocComment, val: Option<&str>);
912}
913
914#[wasm_bindgen]
915extern "C" {
916    #[derive(Debug)]
917    #[wasm_bindgen(extends = Object)]
918    pub type IAutoClosingPair;
919    #[wasm_bindgen(method, js_class = "IAutoClosingPair", js_name = "open", js_namespace = languages, getter = open)]
920    pub fn open(this: &IAutoClosingPair) -> String;
921    /// Set the `open` property.
922    #[wasm_bindgen(method, js_class = "IAutoClosingPair", js_name = "open", js_namespace = languages, setter = open)]
923    pub fn set_open(this: &IAutoClosingPair, val: &str);
924    #[wasm_bindgen(method, js_class = "IAutoClosingPair", js_name = "close", js_namespace = languages, getter = close)]
925    pub fn close(this: &IAutoClosingPair) -> String;
926    /// Set the `close` property.
927    #[wasm_bindgen(method, js_class = "IAutoClosingPair", js_name = "close", js_namespace = languages, setter = close)]
928    pub fn set_close(this: &IAutoClosingPair, val: &str);
929}
930
931#[wasm_bindgen]
932extern "C" {
933    #[derive(Debug)]
934    #[wasm_bindgen(extends = Object, extends = IAutoClosingPair)]
935    pub type IAutoClosingPairConditional;
936    /// Type: `string[]`
937    #[wasm_bindgen(method, js_class = "IAutoClosingPairConditional", js_name = "notIn", js_namespace = languages, getter = notIn)]
938    pub fn not_in(this: &IAutoClosingPairConditional) -> Option<Array>;
939    /// Set the `notIn` property.
940    #[wasm_bindgen(method, js_class = "IAutoClosingPairConditional", js_name = "notIn", js_namespace = languages, setter = notIn)]
941    pub fn set_not_in(this: &IAutoClosingPairConditional, val: Option<&Array>);
942}
943
944#[wasm_bindgen]
945extern "C" {
946    /// Describes what to do when pressing Enter.
947    #[derive(Debug)]
948    #[wasm_bindgen(extends = Object)]
949    pub type EnterAction;
950    /// Describe what to do with the indentation.
951    #[wasm_bindgen(method, js_class = "EnterAction", js_name = "indentAction", js_namespace = languages, getter = indentAction)]
952    pub fn indent_action(this: &EnterAction) -> IndentAction;
953    /// Set the `indentAction` property.
954    #[wasm_bindgen(method, js_class = "EnterAction", js_name = "indentAction", js_namespace = languages, setter = indentAction)]
955    pub fn set_indent_action(this: &EnterAction, val: IndentAction);
956    /// Describes text to be appended after the new line and after the
957    /// indentation.
958    #[wasm_bindgen(method, js_class = "EnterAction", js_name = "appendText", js_namespace = languages, getter = appendText)]
959    pub fn append_text(this: &EnterAction) -> Option<String>;
960    /// Set the `appendText` property.
961    #[wasm_bindgen(method, js_class = "EnterAction", js_name = "appendText", js_namespace = languages, setter = appendText)]
962    pub fn set_append_text(this: &EnterAction, val: Option<&str>);
963    /// Describes the number of characters to remove from the new line's
964    /// indentation.
965    #[wasm_bindgen(method, js_class = "EnterAction", js_name = "removeText", js_namespace = languages, getter = removeText)]
966    pub fn remove_text(this: &EnterAction) -> Option<f64>;
967    /// Set the `removeText` property.
968    #[wasm_bindgen(method, js_class = "EnterAction", js_name = "removeText", js_namespace = languages, setter = removeText)]
969    pub fn set_remove_text(this: &EnterAction, val: Option<f64>);
970}
971
972#[wasm_bindgen]
973extern "C" {
974    /// The state of the tokenizer between two lines.
975    /// It is useful to store flags such as in multiline comment, etc.
976    /// The model will clone the previous line's state and pass it in to
977    /// tokenize the next line.
978    #[derive(Debug)]
979    #[wasm_bindgen(extends = Object)]
980    pub type IState;
981    #[wasm_bindgen(method, js_class = "IState", js_name = "clone", js_namespace = languages)]
982    pub fn clone(this: &IState) -> IState;
983    #[wasm_bindgen(method, js_class = "IState", js_name = "equals", js_namespace = languages)]
984    pub fn equals(this: &IState, other: &IState) -> bool;
985}
986
987#[wasm_bindgen]
988extern "C" {
989    /// A hover represents additional information for a symbol or word. Hovers
990    /// are rendered in a tooltip-like widget.
991    #[derive(Debug)]
992    #[wasm_bindgen(extends = Object)]
993    pub type Hover;
994    /// The contents of this hover.
995    ///
996    /// Type: `IMarkdownString[]`
997    #[wasm_bindgen(method, js_class = "Hover", js_name = "contents", js_namespace = languages, getter = contents)]
998    pub fn contents(this: &Hover) -> Array;
999    /// Set the `contents` property.
1000    #[wasm_bindgen(method, js_class = "Hover", js_name = "contents", js_namespace = languages, setter = contents)]
1001    pub fn set_contents(this: &Hover, val: &Array);
1002    /// The range to which this hover applies. When missing, the
1003    /// editor will use the range at the current position or the
1004    /// current position itself.
1005    #[wasm_bindgen(method, js_class = "Hover", js_name = "range", js_namespace = languages, getter = range)]
1006    pub fn range(this: &Hover) -> Option<IRange>;
1007    /// Set the `range` property.
1008    #[wasm_bindgen(method, js_class = "Hover", js_name = "range", js_namespace = languages, setter = range)]
1009    pub fn set_range(this: &Hover, val: Option<&IRange>);
1010}
1011
1012#[wasm_bindgen]
1013extern "C" {
1014    /// The hover provider interface defines the contract between extensions and
1015    /// the [hover](https://code.visualstudio.com/docs/editor/intellisense)-feature.
1016    #[derive(Debug)]
1017    #[wasm_bindgen(extends = Object)]
1018    pub type HoverProvider;
1019    /// Provide a hover for the given position and document. Multiple hovers at
1020    /// the same position will be merged by the editor. A hover can have a
1021    /// range which defaults to the word range at the position when omitted.
1022    #[wasm_bindgen(method, js_class = "HoverProvider", js_name = "provideHover", js_namespace = languages)]
1023    pub fn provide_hover(
1024        this: &HoverProvider,
1025        model: &ITextModel,
1026        position: &Position,
1027        token: &CancellationToken,
1028    ) -> JsValue;
1029}
1030
1031#[wasm_bindgen]
1032extern "C" {
1033    #[derive(Debug)]
1034    #[wasm_bindgen(extends = Object)]
1035    pub type CompletionItemLabel;
1036    #[wasm_bindgen(method, js_class = "CompletionItemLabel", js_name = "label", js_namespace = languages, getter = label)]
1037    pub fn label(this: &CompletionItemLabel) -> String;
1038    /// Set the `label` property.
1039    #[wasm_bindgen(method, js_class = "CompletionItemLabel", js_name = "label", js_namespace = languages, setter = label)]
1040    pub fn set_label(this: &CompletionItemLabel, val: &str);
1041    #[wasm_bindgen(method, js_class = "CompletionItemLabel", js_name = "detail", js_namespace = languages, getter = detail)]
1042    pub fn detail(this: &CompletionItemLabel) -> Option<String>;
1043    /// Set the `detail` property.
1044    #[wasm_bindgen(method, js_class = "CompletionItemLabel", js_name = "detail", js_namespace = languages, setter = detail)]
1045    pub fn set_detail(this: &CompletionItemLabel, val: Option<&str>);
1046    #[wasm_bindgen(method, js_class = "CompletionItemLabel", js_name = "description", js_namespace = languages, getter = description)]
1047    pub fn description(this: &CompletionItemLabel) -> Option<String>;
1048    /// Set the `description` property.
1049    #[wasm_bindgen(method, js_class = "CompletionItemLabel", js_name = "description", js_namespace = languages, setter = description)]
1050    pub fn set_description(this: &CompletionItemLabel, val: Option<&str>);
1051}
1052
1053#[wasm_bindgen]
1054extern "C" {
1055    #[derive(Debug)]
1056    #[wasm_bindgen(extends = Object)]
1057    pub type CompletionItemRanges;
1058    #[wasm_bindgen(method, js_class = "CompletionItemRanges", js_name = "insert", js_namespace = languages, getter = insert)]
1059    pub fn insert(this: &CompletionItemRanges) -> IRange;
1060    /// Set the `insert` property.
1061    #[wasm_bindgen(method, js_class = "CompletionItemRanges", js_name = "insert", js_namespace = languages, setter = insert)]
1062    pub fn set_insert(this: &CompletionItemRanges, val: &IRange);
1063    #[wasm_bindgen(method, js_class = "CompletionItemRanges", js_name = "replace", js_namespace = languages, getter = replace)]
1064    pub fn replace(this: &CompletionItemRanges) -> IRange;
1065    /// Set the `replace` property.
1066    #[wasm_bindgen(method, js_class = "CompletionItemRanges", js_name = "replace", js_namespace = languages, setter = replace)]
1067    pub fn set_replace(this: &CompletionItemRanges, val: &IRange);
1068}
1069
1070#[wasm_bindgen]
1071extern "C" {
1072    /// A completion item represents a text snippet that is
1073    /// proposed to complete text that is being typed.
1074    #[derive(Debug)]
1075    #[wasm_bindgen(extends = Object)]
1076    pub type CompletionItem;
1077    /// The label of this completion item. By default
1078    /// this is also the text that is inserted when selecting
1079    /// this completion.
1080    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "label", js_namespace = languages, getter = label)]
1081    pub fn label(this: &CompletionItem) -> JsValue;
1082    /// Set the `label` property.
1083    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "label", js_namespace = languages, setter = label)]
1084    pub fn set_label(this: &CompletionItem, val: &JsValue);
1085    /// The kind of this completion item. Based on the kind
1086    /// an icon is chosen by the editor.
1087    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "kind", js_namespace = languages, getter = kind)]
1088    pub fn kind(this: &CompletionItem) -> CompletionItemKind;
1089    /// Set the `kind` property.
1090    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "kind", js_namespace = languages, setter = kind)]
1091    pub fn set_kind(this: &CompletionItem, val: CompletionItemKind);
1092    /// A modifier to the `kind` which affect how the item
1093    /// is rendered, e.g. Deprecated is rendered with a strikeout
1094    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "tags", js_namespace = languages, getter = tags)]
1095    pub fn tags(this: &CompletionItem) -> Option<Array>;
1096    /// Set the `tags` property.
1097    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "tags", js_namespace = languages, setter = tags)]
1098    pub fn set_tags(this: &CompletionItem, val: Option<&Array>);
1099    /// A human-readable string with additional information
1100    /// about this item, like type or symbol information.
1101    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "detail", js_namespace = languages, getter = detail)]
1102    pub fn detail(this: &CompletionItem) -> Option<String>;
1103    /// Set the `detail` property.
1104    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "detail", js_namespace = languages, setter = detail)]
1105    pub fn set_detail(this: &CompletionItem, val: Option<&str>);
1106    /// A human-readable string that represents a doc-comment.
1107    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "documentation", js_namespace = languages, getter = documentation)]
1108    pub fn documentation(this: &CompletionItem) -> JsValue;
1109    /// Set the `documentation` property.
1110    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "documentation", js_namespace = languages, setter = documentation)]
1111    pub fn set_documentation(this: &CompletionItem, val: &JsValue);
1112    /// A string that should be used when comparing this item
1113    /// with other items. When `falsy` the {@link CompletionItem.label label}
1114    /// is used.
1115    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "sortText", js_namespace = languages, getter = sortText)]
1116    pub fn sort_text(this: &CompletionItem) -> Option<String>;
1117    /// Set the `sortText` property.
1118    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "sortText", js_namespace = languages, setter = sortText)]
1119    pub fn set_sort_text(this: &CompletionItem, val: Option<&str>);
1120    /// A string that should be used when filtering a set of
1121    /// completion items. When `falsy` the {@link CompletionItem.label label}
1122    /// is used.
1123    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "filterText", js_namespace = languages, getter = filterText)]
1124    pub fn filter_text(this: &CompletionItem) -> Option<String>;
1125    /// Set the `filterText` property.
1126    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "filterText", js_namespace = languages, setter = filterText)]
1127    pub fn set_filter_text(this: &CompletionItem, val: Option<&str>);
1128    /// Select this item when showing. *Note* that only one completion item can
1129    /// be selected and that the editor decides which item that is. The rule
1130    /// is that the *first* item of those that match best is selected.
1131    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "preselect", js_namespace = languages, getter = preselect)]
1132    pub fn preselect(this: &CompletionItem) -> Option<bool>;
1133    /// Set the `preselect` property.
1134    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "preselect", js_namespace = languages, setter = preselect)]
1135    pub fn set_preselect(this: &CompletionItem, val: Option<bool>);
1136    /// A string or snippet that should be inserted in a document when selecting
1137    /// this completion.
1138    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "insertText", js_namespace = languages, getter = insertText)]
1139    pub fn insert_text(this: &CompletionItem) -> String;
1140    /// Set the `insertText` property.
1141    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "insertText", js_namespace = languages, setter = insertText)]
1142    pub fn set_insert_text(this: &CompletionItem, val: &str);
1143    /// Additional rules (as bitmask) that should be applied when inserting
1144    /// this completion.
1145    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "insertTextRules", js_namespace = languages, getter = insertTextRules)]
1146    pub fn insert_text_rules(this: &CompletionItem) -> Option<CompletionItemInsertTextRule>;
1147    /// Set the `insertTextRules` property.
1148    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "insertTextRules", js_namespace = languages, setter = insertTextRules)]
1149    pub fn set_insert_text_rules(this: &CompletionItem, val: Option<CompletionItemInsertTextRule>);
1150    /// A range of text that should be replaced by this completion item.
1151    ///
1152    /// Defaults to a range from the start of the {@link
1153    /// TextDocument.getWordRangeAtPosition current word} to the
1154    /// current position.
1155    ///
1156    /// *Note:* The range must be a {@link Range.isSingleLine single line} and
1157    /// it must {@link Range.contains contain} the position at which
1158    /// completion has been {@link CompletionItemProvider.provideCompletionItems
1159    /// requested}.
1160    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "range", js_namespace = languages, getter = range)]
1161    pub fn range(this: &CompletionItem) -> JsValue;
1162    /// Set the `range` property.
1163    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "range", js_namespace = languages, setter = range)]
1164    pub fn set_range(this: &CompletionItem, val: &JsValue);
1165    /// An optional set of characters that when pressed while this completion is
1166    /// active will accept it first and then type that character. *Note*
1167    /// that all commit characters should have `length=1` and that superfluous
1168    /// characters will be ignored.
1169    ///
1170    /// Type: `string[]`
1171    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "commitCharacters", js_namespace = languages, getter = commitCharacters)]
1172    pub fn commit_characters(this: &CompletionItem) -> Option<Array>;
1173    /// Set the `commitCharacters` property.
1174    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "commitCharacters", js_namespace = languages, setter = commitCharacters)]
1175    pub fn set_commit_characters(this: &CompletionItem, val: Option<&Array>);
1176    /// An optional array of additional text edits that are applied when
1177    /// selecting this completion. Edits must not overlap with the main edit
1178    /// nor with themselves.
1179    ///
1180    /// Type: `editor.ISingleEditOperation[]`
1181    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "additionalTextEdits", js_namespace = languages, getter = additionalTextEdits)]
1182    pub fn additional_text_edits(this: &CompletionItem) -> Option<Array>;
1183    /// Set the `additionalTextEdits` property.
1184    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "additionalTextEdits", js_namespace = languages, setter = additionalTextEdits)]
1185    pub fn set_additional_text_edits(this: &CompletionItem, val: Option<&Array>);
1186    /// A command that should be run upon acceptance of this item.
1187    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "command", js_namespace = languages, getter = command)]
1188    pub fn command(this: &CompletionItem) -> Option<Command>;
1189    /// Set the `command` property.
1190    #[wasm_bindgen(method, js_class = "CompletionItem", js_name = "command", js_namespace = languages, setter = command)]
1191    pub fn set_command(this: &CompletionItem, val: Option<&Command>);
1192}
1193
1194#[wasm_bindgen]
1195extern "C" {
1196    #[derive(Debug)]
1197    #[wasm_bindgen(extends = Object)]
1198    pub type CompletionList;
1199    /// Type: `CompletionItem[]`
1200    #[wasm_bindgen(method, js_class = "CompletionList", js_name = "suggestions", js_namespace = languages, getter = suggestions)]
1201    pub fn suggestions(this: &CompletionList) -> Array;
1202    /// Set the `suggestions` property.
1203    #[wasm_bindgen(method, js_class = "CompletionList", js_name = "suggestions", js_namespace = languages, setter = suggestions)]
1204    pub fn set_suggestions(this: &CompletionList, val: &Array);
1205    #[wasm_bindgen(method, js_class = "CompletionList", js_name = "incomplete", js_namespace = languages, getter = incomplete)]
1206    pub fn incomplete(this: &CompletionList) -> Option<bool>;
1207    /// Set the `incomplete` property.
1208    #[wasm_bindgen(method, js_class = "CompletionList", js_name = "incomplete", js_namespace = languages, setter = incomplete)]
1209    pub fn set_incomplete(this: &CompletionList, val: Option<bool>);
1210    /// Type: `(() => void)`
1211    #[wasm_bindgen(method, js_class = "CompletionList", js_name = "dispose", js_namespace = languages, getter = dispose)]
1212    pub fn dispose(this: &CompletionList) -> Option<Function>;
1213    /// Set the `dispose` property.
1214    #[wasm_bindgen(method, js_class = "CompletionList", js_name = "dispose", js_namespace = languages, setter = dispose)]
1215    pub fn set_dispose(this: &CompletionList, val: Option<&Function>);
1216}
1217
1218#[wasm_bindgen]
1219extern "C" {
1220    /// Contains additional information about the context in which
1221    /// {@link CompletionItemProvider.provideCompletionItems completion
1222    /// provider} is triggered.
1223    #[derive(Debug)]
1224    #[wasm_bindgen(extends = Object)]
1225    pub type CompletionContext;
1226    /// How the completion was triggered.
1227    #[wasm_bindgen(method, js_class = "CompletionContext", js_name = "triggerKind", js_namespace = languages, getter = triggerKind)]
1228    pub fn trigger_kind(this: &CompletionContext) -> CompletionTriggerKind;
1229    /// Set the `triggerKind` property.
1230    #[wasm_bindgen(method, js_class = "CompletionContext", js_name = "triggerKind", js_namespace = languages, setter = triggerKind)]
1231    pub fn set_trigger_kind(this: &CompletionContext, val: CompletionTriggerKind);
1232    /// Character that triggered the completion item provider.
1233    ///
1234    /// `undefined` if provider was not triggered by a character.
1235    #[wasm_bindgen(method, js_class = "CompletionContext", js_name = "triggerCharacter", js_namespace = languages, getter = triggerCharacter)]
1236    pub fn trigger_character(this: &CompletionContext) -> Option<String>;
1237    /// Set the `triggerCharacter` property.
1238    #[wasm_bindgen(method, js_class = "CompletionContext", js_name = "triggerCharacter", js_namespace = languages, setter = triggerCharacter)]
1239    pub fn set_trigger_character(this: &CompletionContext, val: Option<&str>);
1240}
1241
1242#[wasm_bindgen]
1243extern "C" {
1244    /// The completion item provider interface defines the contract between
1245    /// extensions and the [IntelliSense](https://code.visualstudio.com/docs/editor/intellisense).
1246    ///
1247    /// When computing *complete* completion items is expensive, providers can
1248    /// optionally implement the `resolveCompletionItem`-function. In that
1249    /// case it is enough to return completion items with a {@link
1250    /// CompletionItem.label label} from the {@link CompletionItemProvider.
1251    /// provideCompletionItems provideCompletionItems}-function. Subsequently,
1252    /// when a completion item is shown in the UI and gains focus this provider
1253    /// is asked to resolve the item, like adding {@link
1254    /// CompletionItem.documentation doc-comment} or {@link
1255    /// CompletionItem.detail details}.
1256    #[derive(Debug)]
1257    #[wasm_bindgen(extends = Object)]
1258    pub type CompletionItemProvider;
1259    /// Type: `string[]`
1260    #[wasm_bindgen(method, js_class = "CompletionItemProvider", js_name = "triggerCharacters", js_namespace = languages, getter = triggerCharacters)]
1261    pub fn trigger_characters(this: &CompletionItemProvider) -> Option<Array>;
1262    /// Set the `triggerCharacters` property.
1263    #[wasm_bindgen(method, js_class = "CompletionItemProvider", js_name = "triggerCharacters", js_namespace = languages, setter = triggerCharacters)]
1264    pub fn set_trigger_characters(this: &CompletionItemProvider, val: Option<&Array>);
1265    /// Provide completion items for the given position and document.
1266    #[wasm_bindgen(
1267        method,
1268        js_class = "CompletionItemProvider",
1269        js_name = "provideCompletionItems", js_namespace = languages
1270    )]
1271    pub fn provide_completion_items(
1272        this: &CompletionItemProvider,
1273        model: &ITextModel,
1274        position: &Position,
1275        context: &CompletionContext,
1276        token: &CancellationToken,
1277    ) -> JsValue;
1278    /// Given a completion item fill in more data, like {@link
1279    /// CompletionItem.documentation doc-comment} or {@link CompletionItem.
1280    /// detail details}.
1281    ///
1282    /// The editor will only resolve a completion item once.
1283    ///
1284    /// Type: `((item: CompletionItem, token: CancellationToken) => JsValue)`
1285    #[wasm_bindgen(method, js_class = "CompletionItemProvider", js_name = "resolveCompletionItem", js_namespace = languages, getter = resolveCompletionItem)]
1286    pub fn resolve_completion_item(this: &CompletionItemProvider) -> Option<Function>;
1287    /// Set the `resolveCompletionItem` property.
1288    #[wasm_bindgen(method, js_class = "CompletionItemProvider", js_name = "resolveCompletionItem", js_namespace = languages, setter = resolveCompletionItem)]
1289    pub fn set_resolve_completion_item(this: &CompletionItemProvider, val: Option<&Function>);
1290}
1291
1292#[wasm_bindgen]
1293extern "C" {
1294    #[derive(Debug)]
1295    #[wasm_bindgen(extends = Object)]
1296    pub type InlineCompletionContext;
1297    /// How the completion was triggered.
1298    #[wasm_bindgen(method, js_class = "InlineCompletionContext", js_name = "triggerKind", js_namespace = languages, getter = triggerKind)]
1299    pub fn trigger_kind(this: &InlineCompletionContext) -> InlineCompletionTriggerKind;
1300    #[wasm_bindgen(method, js_class = "InlineCompletionContext", js_name = "selectedSuggestionInfo", js_namespace = languages, getter = selectedSuggestionInfo)]
1301    pub fn selected_suggestion_info(
1302        this: &InlineCompletionContext,
1303    ) -> Option<SelectedSuggestionInfo>;
1304}
1305
1306#[wasm_bindgen]
1307extern "C" {
1308    #[derive(Debug)]
1309    #[wasm_bindgen(extends = Object)]
1310    pub type SelectedSuggestionInfo;
1311    #[wasm_bindgen(method, js_class = "SelectedSuggestionInfo", js_name = "range", js_namespace = languages, getter = range)]
1312    pub fn range(this: &SelectedSuggestionInfo) -> IRange;
1313    /// Set the `range` property.
1314    #[wasm_bindgen(method, js_class = "SelectedSuggestionInfo", js_name = "range", js_namespace = languages, setter = range)]
1315    pub fn set_range(this: &SelectedSuggestionInfo, val: &IRange);
1316    #[wasm_bindgen(method, js_class = "SelectedSuggestionInfo", js_name = "text", js_namespace = languages, getter = text)]
1317    pub fn text(this: &SelectedSuggestionInfo) -> String;
1318    /// Set the `text` property.
1319    #[wasm_bindgen(method, js_class = "SelectedSuggestionInfo", js_name = "text", js_namespace = languages, setter = text)]
1320    pub fn set_text(this: &SelectedSuggestionInfo, val: &str);
1321    #[wasm_bindgen(method, js_class = "SelectedSuggestionInfo", js_name = "isSnippetText", js_namespace = languages, getter = isSnippetText)]
1322    pub fn is_snippet_text(this: &SelectedSuggestionInfo) -> bool;
1323    /// Set the `isSnippetText` property.
1324    #[wasm_bindgen(method, js_class = "SelectedSuggestionInfo", js_name = "isSnippetText", js_namespace = languages, setter = isSnippetText)]
1325    pub fn set_is_snippet_text(this: &SelectedSuggestionInfo, val: bool);
1326    #[wasm_bindgen(method, js_class = "SelectedSuggestionInfo", js_name = "completionKind", js_namespace = languages, getter = completionKind)]
1327    pub fn completion_kind(this: &SelectedSuggestionInfo) -> CompletionItemKind;
1328    /// Set the `completionKind` property.
1329    #[wasm_bindgen(method, js_class = "SelectedSuggestionInfo", js_name = "completionKind", js_namespace = languages, setter = completionKind)]
1330    pub fn set_completion_kind(this: &SelectedSuggestionInfo, val: CompletionItemKind);
1331}
1332
1333#[wasm_bindgen]
1334extern "C" {
1335    #[derive(Debug)]
1336    #[wasm_bindgen(extends = Object)]
1337    pub type InlineCompletion;
1338    /// The text to insert.
1339    /// If the text contains a line break, the range must end at the end of a
1340    /// line. If existing text should be replaced, the existing text must be
1341    /// a prefix of the text to insert.
1342    #[wasm_bindgen(method, js_class = "InlineCompletion", js_name = "text", js_namespace = languages, getter = text)]
1343    pub fn text(this: &InlineCompletion) -> String;
1344    /// The range to replace.
1345    /// Must begin and end on the same line.
1346    #[wasm_bindgen(method, js_class = "InlineCompletion", js_name = "range", js_namespace = languages, getter = range)]
1347    pub fn range(this: &InlineCompletion) -> Option<IRange>;
1348    #[wasm_bindgen(method, js_class = "InlineCompletion", js_name = "command", js_namespace = languages, getter = command)]
1349    pub fn command(this: &InlineCompletion) -> Option<Command>;
1350    /// If set to `true`, unopened closing brackets are removed and unclosed
1351    /// opening brackets are closed. Defaults to `false`.
1352    #[wasm_bindgen(method, js_class = "InlineCompletion", js_name = "completeBracketPairs", js_namespace = languages, getter = completeBracketPairs)]
1353    pub fn complete_bracket_pairs(this: &InlineCompletion) -> Option<bool>;
1354}
1355
1356#[wasm_bindgen]
1357extern "C" {
1358    #[derive(Debug)]
1359    #[wasm_bindgen(extends = Object)]
1360    pub type InlineCompletions;
1361    /// Type: `readonly TItem[]`
1362    #[wasm_bindgen(method, js_class = "InlineCompletions", js_name = "items", js_namespace = languages, getter = items)]
1363    pub fn items(this: &InlineCompletions) -> Array;
1364}
1365
1366#[wasm_bindgen]
1367extern "C" {
1368    #[derive(Debug)]
1369    #[wasm_bindgen(extends = Object)]
1370    pub type InlineCompletionsProvider;
1371    #[wasm_bindgen(
1372        method,
1373        js_class = "InlineCompletionsProvider",
1374        js_name = "provideInlineCompletions", js_namespace = languages
1375    )]
1376    pub fn provide_inline_completions(
1377        this: &InlineCompletionsProvider,
1378        model: &ITextModel,
1379        position: &Position,
1380        context: &InlineCompletionContext,
1381        token: &CancellationToken,
1382    ) -> JsValue;
1383    /// Will be called when an item is shown.
1384    ///
1385    /// Type: `((completions: T, item: T['items'][number]) => void)`
1386    #[wasm_bindgen(method, js_class = "InlineCompletionsProvider", js_name = "handleItemDidShow", js_namespace = languages, getter = handleItemDidShow)]
1387    pub fn handle_item_did_show(this: &InlineCompletionsProvider) -> Option<Function>;
1388    /// Set the `handleItemDidShow` property.
1389    #[wasm_bindgen(method, js_class = "InlineCompletionsProvider", js_name = "handleItemDidShow", js_namespace = languages, setter = handleItemDidShow)]
1390    pub fn set_handle_item_did_show(this: &InlineCompletionsProvider, val: Option<&Function>);
1391    /// Will be called when a completions list is no longer in use and can be
1392    /// garbage-collected.
1393    #[wasm_bindgen(
1394        method,
1395        js_class = "InlineCompletionsProvider",
1396        js_name = "freeInlineCompletions", js_namespace = languages
1397    )]
1398    pub fn free_inline_completions(this: &InlineCompletionsProvider, completions: &JsValue);
1399}
1400
1401#[wasm_bindgen]
1402extern "C" {
1403    #[derive(Debug)]
1404    #[wasm_bindgen(extends = Object)]
1405    pub type CodeAction;
1406    #[wasm_bindgen(method, js_class = "CodeAction", js_name = "title", js_namespace = languages, getter = title)]
1407    pub fn title(this: &CodeAction) -> String;
1408    /// Set the `title` property.
1409    #[wasm_bindgen(method, js_class = "CodeAction", js_name = "title", js_namespace = languages, setter = title)]
1410    pub fn set_title(this: &CodeAction, val: &str);
1411    #[wasm_bindgen(method, js_class = "CodeAction", js_name = "command", js_namespace = languages, getter = command)]
1412    pub fn command(this: &CodeAction) -> Option<Command>;
1413    /// Set the `command` property.
1414    #[wasm_bindgen(method, js_class = "CodeAction", js_name = "command", js_namespace = languages, setter = command)]
1415    pub fn set_command(this: &CodeAction, val: Option<&Command>);
1416    #[wasm_bindgen(method, js_class = "CodeAction", js_name = "edit", js_namespace = languages, getter = edit)]
1417    pub fn edit(this: &CodeAction) -> Option<WorkspaceEdit>;
1418    /// Set the `edit` property.
1419    #[wasm_bindgen(method, js_class = "CodeAction", js_name = "edit", js_namespace = languages, setter = edit)]
1420    pub fn set_edit(this: &CodeAction, val: Option<&WorkspaceEdit>);
1421    /// Type: `editor.IMarkerData[]`
1422    #[wasm_bindgen(method, js_class = "CodeAction", js_name = "diagnostics", js_namespace = languages, getter = diagnostics)]
1423    pub fn diagnostics(this: &CodeAction) -> Option<Array>;
1424    /// Set the `diagnostics` property.
1425    #[wasm_bindgen(method, js_class = "CodeAction", js_name = "diagnostics", js_namespace = languages, setter = diagnostics)]
1426    pub fn set_diagnostics(this: &CodeAction, val: Option<&Array>);
1427    #[wasm_bindgen(method, js_class = "CodeAction", js_name = "kind", js_namespace = languages, getter = kind)]
1428    pub fn kind(this: &CodeAction) -> Option<String>;
1429    /// Set the `kind` property.
1430    #[wasm_bindgen(method, js_class = "CodeAction", js_name = "kind", js_namespace = languages, setter = kind)]
1431    pub fn set_kind(this: &CodeAction, val: Option<&str>);
1432    #[wasm_bindgen(method, js_class = "CodeAction", js_name = "isPreferred", js_namespace = languages, getter = isPreferred)]
1433    pub fn is_preferred(this: &CodeAction) -> Option<bool>;
1434    /// Set the `isPreferred` property.
1435    #[wasm_bindgen(method, js_class = "CodeAction", js_name = "isPreferred", js_namespace = languages, setter = isPreferred)]
1436    pub fn set_is_preferred(this: &CodeAction, val: Option<bool>);
1437    #[wasm_bindgen(method, js_class = "CodeAction", js_name = "disabled", js_namespace = languages, getter = disabled)]
1438    pub fn disabled(this: &CodeAction) -> Option<String>;
1439    /// Set the `disabled` property.
1440    #[wasm_bindgen(method, js_class = "CodeAction", js_name = "disabled", js_namespace = languages, setter = disabled)]
1441    pub fn set_disabled(this: &CodeAction, val: Option<&str>);
1442}
1443
1444#[wasm_bindgen]
1445extern "C" {
1446    #[derive(Debug)]
1447    #[wasm_bindgen(extends = Object, extends = IDisposable)]
1448    pub type CodeActionList;
1449    #[wasm_bindgen(method, js_class = "CodeActionList", js_name = "actions", js_namespace = languages, getter = actions)]
1450    pub fn actions(this: &CodeActionList) -> Array;
1451}
1452
1453#[wasm_bindgen]
1454extern "C" {
1455    /// Represents a parameter of a callable-signature. A parameter can
1456    /// have a label and a doc-comment.
1457    #[derive(Debug)]
1458    #[wasm_bindgen(extends = Object)]
1459    pub type ParameterInformation;
1460    /// The label of this signature. Will be shown in
1461    /// the UI.
1462    #[wasm_bindgen(method, js_class = "ParameterInformation", js_name = "label", js_namespace = languages, getter = label)]
1463    pub fn label(this: &ParameterInformation) -> JsValue;
1464    /// Set the `label` property.
1465    #[wasm_bindgen(method, js_class = "ParameterInformation", js_name = "label", js_namespace = languages, setter = label)]
1466    pub fn set_label(this: &ParameterInformation, val: &JsValue);
1467    /// The human-readable doc-comment of this signature. Will be shown
1468    /// in the UI but can be omitted.
1469    #[wasm_bindgen(method, js_class = "ParameterInformation", js_name = "documentation", js_namespace = languages, getter = documentation)]
1470    pub fn documentation(this: &ParameterInformation) -> JsValue;
1471    /// Set the `documentation` property.
1472    #[wasm_bindgen(method, js_class = "ParameterInformation", js_name = "documentation", js_namespace = languages, setter = documentation)]
1473    pub fn set_documentation(this: &ParameterInformation, val: &JsValue);
1474}
1475
1476#[wasm_bindgen]
1477extern "C" {
1478    /// Represents the signature of something callable. A signature
1479    /// can have a label, like a function-name, a doc-comment, and
1480    /// a set of parameters.
1481    #[derive(Debug)]
1482    #[wasm_bindgen(extends = Object)]
1483    pub type SignatureInformation;
1484    /// The label of this signature. Will be shown in
1485    /// the UI.
1486    #[wasm_bindgen(method, js_class = "SignatureInformation", js_name = "label", js_namespace = languages, getter = label)]
1487    pub fn label(this: &SignatureInformation) -> String;
1488    /// Set the `label` property.
1489    #[wasm_bindgen(method, js_class = "SignatureInformation", js_name = "label", js_namespace = languages, setter = label)]
1490    pub fn set_label(this: &SignatureInformation, val: &str);
1491    /// The human-readable doc-comment of this signature. Will be shown
1492    /// in the UI but can be omitted.
1493    #[wasm_bindgen(method, js_class = "SignatureInformation", js_name = "documentation", js_namespace = languages, getter = documentation)]
1494    pub fn documentation(this: &SignatureInformation) -> JsValue;
1495    /// Set the `documentation` property.
1496    #[wasm_bindgen(method, js_class = "SignatureInformation", js_name = "documentation", js_namespace = languages, setter = documentation)]
1497    pub fn set_documentation(this: &SignatureInformation, val: &JsValue);
1498    /// The parameters of this signature.
1499    ///
1500    /// Type: `ParameterInformation[]`
1501    #[wasm_bindgen(method, js_class = "SignatureInformation", js_name = "parameters", js_namespace = languages, getter = parameters)]
1502    pub fn parameters(this: &SignatureInformation) -> Array;
1503    /// Set the `parameters` property.
1504    #[wasm_bindgen(method, js_class = "SignatureInformation", js_name = "parameters", js_namespace = languages, setter = parameters)]
1505    pub fn set_parameters(this: &SignatureInformation, val: &Array);
1506    /// Index of the active parameter.
1507    ///
1508    /// If provided, this is used in place of `SignatureHelp.activeSignature`.
1509    #[wasm_bindgen(method, js_class = "SignatureInformation", js_name = "activeParameter", js_namespace = languages, getter = activeParameter)]
1510    pub fn active_parameter(this: &SignatureInformation) -> Option<f64>;
1511    /// Set the `activeParameter` property.
1512    #[wasm_bindgen(method, js_class = "SignatureInformation", js_name = "activeParameter", js_namespace = languages, setter = activeParameter)]
1513    pub fn set_active_parameter(this: &SignatureInformation, val: Option<f64>);
1514}
1515
1516#[wasm_bindgen]
1517extern "C" {
1518    /// Signature help represents the signature of something
1519    /// callable. There can be multiple signatures but only one
1520    /// active and only one active parameter.
1521    #[derive(Debug)]
1522    #[wasm_bindgen(extends = Object)]
1523    pub type SignatureHelp;
1524    /// One or more signatures.
1525    ///
1526    /// Type: `SignatureInformation[]`
1527    #[wasm_bindgen(method, js_class = "SignatureHelp", js_name = "signatures", js_namespace = languages, getter = signatures)]
1528    pub fn signatures(this: &SignatureHelp) -> Array;
1529    /// Set the `signatures` property.
1530    #[wasm_bindgen(method, js_class = "SignatureHelp", js_name = "signatures", js_namespace = languages, setter = signatures)]
1531    pub fn set_signatures(this: &SignatureHelp, val: &Array);
1532    /// The active signature.
1533    #[wasm_bindgen(method, js_class = "SignatureHelp", js_name = "activeSignature", js_namespace = languages, getter = activeSignature)]
1534    pub fn active_signature(this: &SignatureHelp) -> f64;
1535    /// Set the `activeSignature` property.
1536    #[wasm_bindgen(method, js_class = "SignatureHelp", js_name = "activeSignature", js_namespace = languages, setter = activeSignature)]
1537    pub fn set_active_signature(this: &SignatureHelp, val: f64);
1538    /// The active parameter of the active signature.
1539    #[wasm_bindgen(method, js_class = "SignatureHelp", js_name = "activeParameter", js_namespace = languages, getter = activeParameter)]
1540    pub fn active_parameter(this: &SignatureHelp) -> f64;
1541    /// Set the `activeParameter` property.
1542    #[wasm_bindgen(method, js_class = "SignatureHelp", js_name = "activeParameter", js_namespace = languages, setter = activeParameter)]
1543    pub fn set_active_parameter(this: &SignatureHelp, val: f64);
1544}
1545
1546#[wasm_bindgen]
1547extern "C" {
1548    #[derive(Debug)]
1549    #[wasm_bindgen(extends = Object, extends = IDisposable)]
1550    pub type SignatureHelpResult;
1551    #[wasm_bindgen(method, js_class = "SignatureHelpResult", js_name = "value", js_namespace = languages, getter = value)]
1552    pub fn value(this: &SignatureHelpResult) -> SignatureHelp;
1553    /// Set the `value` property.
1554    #[wasm_bindgen(method, js_class = "SignatureHelpResult", js_name = "value", js_namespace = languages, setter = value)]
1555    pub fn set_value(this: &SignatureHelpResult, val: &SignatureHelp);
1556}
1557
1558#[wasm_bindgen]
1559extern "C" {
1560    #[derive(Debug)]
1561    #[wasm_bindgen(extends = Object)]
1562    pub type SignatureHelpContext;
1563    #[wasm_bindgen(method, js_class = "SignatureHelpContext", js_name = "triggerKind", js_namespace = languages, getter = triggerKind)]
1564    pub fn trigger_kind(this: &SignatureHelpContext) -> SignatureHelpTriggerKind;
1565    #[wasm_bindgen(method, js_class = "SignatureHelpContext", js_name = "triggerCharacter", js_namespace = languages, getter = triggerCharacter)]
1566    pub fn trigger_character(this: &SignatureHelpContext) -> Option<String>;
1567    #[wasm_bindgen(method, js_class = "SignatureHelpContext", js_name = "isRetrigger", js_namespace = languages, getter = isRetrigger)]
1568    pub fn is_retrigger(this: &SignatureHelpContext) -> bool;
1569    #[wasm_bindgen(method, js_class = "SignatureHelpContext", js_name = "activeSignatureHelp", js_namespace = languages, getter = activeSignatureHelp)]
1570    pub fn active_signature_help(this: &SignatureHelpContext) -> Option<SignatureHelp>;
1571}
1572
1573#[wasm_bindgen]
1574extern "C" {
1575    /// The signature help provider interface defines the contract between
1576    /// extensions and the [parameter hints](https://code.visualstudio.com/docs/editor/intellisense)-feature.
1577    #[derive(Debug)]
1578    #[wasm_bindgen(extends = Object)]
1579    pub type SignatureHelpProvider;
1580    #[wasm_bindgen(method, js_class = "SignatureHelpProvider", js_name = "signatureHelpTriggerCharacters", js_namespace = languages, getter = signatureHelpTriggerCharacters)]
1581    pub fn signature_help_trigger_characters(this: &SignatureHelpProvider) -> Option<Array>;
1582    #[wasm_bindgen(method, js_class = "SignatureHelpProvider", js_name = "signatureHelpRetriggerCharacters", js_namespace = languages, getter = signatureHelpRetriggerCharacters)]
1583    pub fn signature_help_retrigger_characters(this: &SignatureHelpProvider) -> Option<Array>;
1584    /// Provide help for the signature at the given position and document.
1585    #[wasm_bindgen(
1586        method,
1587        js_class = "SignatureHelpProvider",
1588        js_name = "provideSignatureHelp", js_namespace = languages
1589    )]
1590    pub fn provide_signature_help(
1591        this: &SignatureHelpProvider,
1592        model: &ITextModel,
1593        position: &Position,
1594        token: &CancellationToken,
1595        context: &SignatureHelpContext,
1596    ) -> JsValue;
1597}
1598
1599#[wasm_bindgen]
1600extern "C" {
1601    /// A document highlight is a range inside a text document which deserves
1602    /// special attention. Usually a document highlight is visualized by
1603    /// changing the background color of its range.
1604    #[derive(Debug)]
1605    #[wasm_bindgen(extends = Object)]
1606    pub type DocumentHighlight;
1607    /// The range this highlight applies to.
1608    #[wasm_bindgen(method, js_class = "DocumentHighlight", js_name = "range", js_namespace = languages, getter = range)]
1609    pub fn range(this: &DocumentHighlight) -> IRange;
1610    /// Set the `range` property.
1611    #[wasm_bindgen(method, js_class = "DocumentHighlight", js_name = "range", js_namespace = languages, setter = range)]
1612    pub fn set_range(this: &DocumentHighlight, val: &IRange);
1613    /// The highlight kind, default is {@link DocumentHighlightKind.Text text}.
1614    #[wasm_bindgen(method, js_class = "DocumentHighlight", js_name = "kind", js_namespace = languages, getter = kind)]
1615    pub fn kind(this: &DocumentHighlight) -> Option<DocumentHighlightKind>;
1616    /// Set the `kind` property.
1617    #[wasm_bindgen(method, js_class = "DocumentHighlight", js_name = "kind", js_namespace = languages, setter = kind)]
1618    pub fn set_kind(this: &DocumentHighlight, val: Option<DocumentHighlightKind>);
1619}
1620
1621#[wasm_bindgen]
1622extern "C" {
1623    /// The document highlight provider interface defines the contract between
1624    /// extensions and the word-highlight-feature.
1625    #[derive(Debug)]
1626    #[wasm_bindgen(extends = Object)]
1627    pub type DocumentHighlightProvider;
1628    /// Provide a set of document highlights, like all occurrences of a variable
1629    /// or all exit-points of a function.
1630    #[wasm_bindgen(
1631        method,
1632        js_class = "DocumentHighlightProvider",
1633        js_name = "provideDocumentHighlights", js_namespace = languages
1634    )]
1635    pub fn provide_document_highlights(
1636        this: &DocumentHighlightProvider,
1637        model: &ITextModel,
1638        position: &Position,
1639        token: &CancellationToken,
1640    ) -> JsValue;
1641}
1642
1643#[wasm_bindgen]
1644extern "C" {
1645    /// The linked editing range provider interface defines the contract between
1646    /// extensions and the linked editing feature.
1647    #[derive(Debug)]
1648    #[wasm_bindgen(extends = Object)]
1649    pub type LinkedEditingRangeProvider;
1650    /// Provide a list of ranges that can be edited together.
1651    #[wasm_bindgen(
1652        method,
1653        js_class = "LinkedEditingRangeProvider",
1654        js_name = "provideLinkedEditingRanges", js_namespace = languages
1655    )]
1656    pub fn provide_linked_editing_ranges(
1657        this: &LinkedEditingRangeProvider,
1658        model: &ITextModel,
1659        position: &Position,
1660        token: &CancellationToken,
1661    ) -> JsValue;
1662}
1663
1664#[wasm_bindgen]
1665extern "C" {
1666    /// Represents a list of ranges that can be edited together along with a
1667    /// word pattern to describe valid contents.
1668    #[derive(Debug)]
1669    #[wasm_bindgen(extends = Object)]
1670    pub type LinkedEditingRanges;
1671    /// A list of ranges that can be edited together. The ranges must have
1672    /// identical length and text content. The ranges cannot overlap
1673    ///
1674    /// Type: `IRange[]`
1675    #[wasm_bindgen(method, js_class = "LinkedEditingRanges", js_name = "ranges", js_namespace = languages, getter = ranges)]
1676    pub fn ranges(this: &LinkedEditingRanges) -> Array;
1677    /// Set the `ranges` property.
1678    #[wasm_bindgen(method, js_class = "LinkedEditingRanges", js_name = "ranges", js_namespace = languages, setter = ranges)]
1679    pub fn set_ranges(this: &LinkedEditingRanges, val: &Array);
1680    /// An optional word pattern that describes valid contents for the given
1681    /// ranges. If no pattern is provided, the language configuration's word
1682    /// pattern will be used.
1683    #[wasm_bindgen(method, js_class = "LinkedEditingRanges", js_name = "wordPattern", js_namespace = languages, getter = wordPattern)]
1684    pub fn word_pattern(this: &LinkedEditingRanges) -> Option<RegExp>;
1685    /// Set the `wordPattern` property.
1686    #[wasm_bindgen(method, js_class = "LinkedEditingRanges", js_name = "wordPattern", js_namespace = languages, setter = wordPattern)]
1687    pub fn set_word_pattern(this: &LinkedEditingRanges, val: Option<&RegExp>);
1688}
1689
1690#[wasm_bindgen]
1691extern "C" {
1692    /// Value-object that contains additional information when
1693    /// requesting references.
1694    #[derive(Debug)]
1695    #[wasm_bindgen(extends = Object)]
1696    pub type ReferenceContext;
1697    /// Include the declaration of the current symbol.
1698    #[wasm_bindgen(method, js_class = "ReferenceContext", js_name = "includeDeclaration", js_namespace = languages, getter = includeDeclaration)]
1699    pub fn include_declaration(this: &ReferenceContext) -> bool;
1700    /// Set the `includeDeclaration` property.
1701    #[wasm_bindgen(method, js_class = "ReferenceContext", js_name = "includeDeclaration", js_namespace = languages, setter = includeDeclaration)]
1702    pub fn set_include_declaration(this: &ReferenceContext, val: bool);
1703}
1704
1705#[wasm_bindgen]
1706extern "C" {
1707    /// The reference provider interface defines the contract between extensions
1708    /// and the [find references](https://code.visualstudio.com/docs/editor/editingevolved#_peek)-feature.
1709    #[derive(Debug)]
1710    #[wasm_bindgen(extends = Object)]
1711    pub type ReferenceProvider;
1712    /// Provide a set of project-wide references for the given position and
1713    /// document.
1714    #[wasm_bindgen(method, js_class = "ReferenceProvider", js_name = "provideReferences", js_namespace = languages)]
1715    pub fn provide_references(
1716        this: &ReferenceProvider,
1717        model: &ITextModel,
1718        position: &Position,
1719        context: &ReferenceContext,
1720        token: &CancellationToken,
1721    ) -> JsValue;
1722}
1723
1724#[wasm_bindgen]
1725extern "C" {
1726    /// Represents a location inside a resource, such as a line
1727    /// inside a text file.
1728    #[derive(Debug)]
1729    #[wasm_bindgen(extends = Object)]
1730    pub type Location;
1731    /// The resource identifier of this location.
1732    #[wasm_bindgen(method, js_class = "Location", js_name = "uri", js_namespace = languages, getter = uri)]
1733    pub fn uri(this: &Location) -> Uri;
1734    /// Set the `uri` property.
1735    #[wasm_bindgen(method, js_class = "Location", js_name = "uri", js_namespace = languages, setter = uri)]
1736    pub fn set_uri(this: &Location, val: &Uri);
1737    /// The document range of this locations.
1738    #[wasm_bindgen(method, js_class = "Location", js_name = "range", js_namespace = languages, getter = range)]
1739    pub fn range(this: &Location) -> IRange;
1740    /// Set the `range` property.
1741    #[wasm_bindgen(method, js_class = "Location", js_name = "range", js_namespace = languages, setter = range)]
1742    pub fn set_range(this: &Location, val: &IRange);
1743}
1744
1745#[wasm_bindgen]
1746extern "C" {
1747    #[derive(Debug)]
1748    #[wasm_bindgen(extends = Object)]
1749    pub type LocationLink;
1750    /// A range to select where this link originates from.
1751    #[wasm_bindgen(method, js_class = "LocationLink", js_name = "originSelectionRange", js_namespace = languages, getter = originSelectionRange)]
1752    pub fn origin_selection_range(this: &LocationLink) -> Option<IRange>;
1753    /// Set the `originSelectionRange` property.
1754    #[wasm_bindgen(method, js_class = "LocationLink", js_name = "originSelectionRange", js_namespace = languages, setter = originSelectionRange)]
1755    pub fn set_origin_selection_range(this: &LocationLink, val: Option<&IRange>);
1756    /// The target uri this link points to.
1757    #[wasm_bindgen(method, js_class = "LocationLink", js_name = "uri", js_namespace = languages, getter = uri)]
1758    pub fn uri(this: &LocationLink) -> Uri;
1759    /// Set the `uri` property.
1760    #[wasm_bindgen(method, js_class = "LocationLink", js_name = "uri", js_namespace = languages, setter = uri)]
1761    pub fn set_uri(this: &LocationLink, val: &Uri);
1762    /// The full range this link points to.
1763    #[wasm_bindgen(method, js_class = "LocationLink", js_name = "range", js_namespace = languages, getter = range)]
1764    pub fn range(this: &LocationLink) -> IRange;
1765    /// Set the `range` property.
1766    #[wasm_bindgen(method, js_class = "LocationLink", js_name = "range", js_namespace = languages, setter = range)]
1767    pub fn set_range(this: &LocationLink, val: &IRange);
1768    /// A range to select this link points to. Must be contained
1769    /// in `LocationLink.range`.
1770    #[wasm_bindgen(method, js_class = "LocationLink", js_name = "targetSelectionRange", js_namespace = languages, getter = targetSelectionRange)]
1771    pub fn target_selection_range(this: &LocationLink) -> Option<IRange>;
1772    /// Set the `targetSelectionRange` property.
1773    #[wasm_bindgen(method, js_class = "LocationLink", js_name = "targetSelectionRange", js_namespace = languages, setter = targetSelectionRange)]
1774    pub fn set_target_selection_range(this: &LocationLink, val: Option<&IRange>);
1775}
1776
1777#[wasm_bindgen]
1778extern "C" {
1779    /// The definition provider interface defines the contract between
1780    /// extensions and the [go to definition](https://code.visualstudio.com/docs/editor/editingevolved#_go-to-definition)
1781    /// and peek definition features.
1782    #[derive(Debug)]
1783    #[wasm_bindgen(extends = Object)]
1784    pub type DefinitionProvider;
1785    /// Provide the definition of the symbol at the given position and document.
1786    #[wasm_bindgen(method, js_class = "DefinitionProvider", js_name = "provideDefinition", js_namespace = languages)]
1787    pub fn provide_definition(
1788        this: &DefinitionProvider,
1789        model: &ITextModel,
1790        position: &Position,
1791        token: &CancellationToken,
1792    ) -> JsValue;
1793}
1794
1795#[wasm_bindgen]
1796extern "C" {
1797    /// The definition provider interface defines the contract between
1798    /// extensions and the [go to definition](https://code.visualstudio.com/docs/editor/editingevolved#_go-to-definition)
1799    /// and peek definition features.
1800    #[derive(Debug)]
1801    #[wasm_bindgen(extends = Object)]
1802    pub type DeclarationProvider;
1803    /// Provide the declaration of the symbol at the given position and
1804    /// document.
1805    #[wasm_bindgen(
1806        method,
1807        js_class = "DeclarationProvider",
1808        js_name = "provideDeclaration", js_namespace = languages
1809    )]
1810    pub fn provide_declaration(
1811        this: &DeclarationProvider,
1812        model: &ITextModel,
1813        position: &Position,
1814        token: &CancellationToken,
1815    ) -> JsValue;
1816}
1817
1818#[wasm_bindgen]
1819extern "C" {
1820    /// The implementation provider interface defines the contract between
1821    /// extensions and the go to implementation feature.
1822    #[derive(Debug)]
1823    #[wasm_bindgen(extends = Object)]
1824    pub type ImplementationProvider;
1825    /// Provide the implementation of the symbol at the given position and
1826    /// document.
1827    #[wasm_bindgen(
1828        method,
1829        js_class = "ImplementationProvider",
1830        js_name = "provideImplementation", js_namespace = languages
1831    )]
1832    pub fn provide_implementation(
1833        this: &ImplementationProvider,
1834        model: &ITextModel,
1835        position: &Position,
1836        token: &CancellationToken,
1837    ) -> JsValue;
1838}
1839
1840#[wasm_bindgen]
1841extern "C" {
1842    /// The type definition provider interface defines the contract between
1843    /// extensions and the go to type definition feature.
1844    #[derive(Debug)]
1845    #[wasm_bindgen(extends = Object)]
1846    pub type TypeDefinitionProvider;
1847    /// Provide the type definition of the symbol at the given position and
1848    /// document.
1849    #[wasm_bindgen(
1850        method,
1851        js_class = "TypeDefinitionProvider",
1852        js_name = "provideTypeDefinition", js_namespace = languages
1853    )]
1854    pub fn provide_type_definition(
1855        this: &TypeDefinitionProvider,
1856        model: &ITextModel,
1857        position: &Position,
1858        token: &CancellationToken,
1859    ) -> JsValue;
1860}
1861
1862#[wasm_bindgen]
1863extern "C" {
1864    #[derive(Debug)]
1865    #[wasm_bindgen(extends = Object)]
1866    pub type DocumentSymbol;
1867    #[wasm_bindgen(method, js_class = "DocumentSymbol", js_name = "name", js_namespace = languages, getter = name)]
1868    pub fn name(this: &DocumentSymbol) -> String;
1869    /// Set the `name` property.
1870    #[wasm_bindgen(method, js_class = "DocumentSymbol", js_name = "name", js_namespace = languages, setter = name)]
1871    pub fn set_name(this: &DocumentSymbol, val: &str);
1872    #[wasm_bindgen(method, js_class = "DocumentSymbol", js_name = "detail", js_namespace = languages, getter = detail)]
1873    pub fn detail(this: &DocumentSymbol) -> String;
1874    /// Set the `detail` property.
1875    #[wasm_bindgen(method, js_class = "DocumentSymbol", js_name = "detail", js_namespace = languages, setter = detail)]
1876    pub fn set_detail(this: &DocumentSymbol, val: &str);
1877    #[wasm_bindgen(method, js_class = "DocumentSymbol", js_name = "kind", js_namespace = languages, getter = kind)]
1878    pub fn kind(this: &DocumentSymbol) -> SymbolKind;
1879    /// Set the `kind` property.
1880    #[wasm_bindgen(method, js_class = "DocumentSymbol", js_name = "kind", js_namespace = languages, setter = kind)]
1881    pub fn set_kind(this: &DocumentSymbol, val: SymbolKind);
1882    #[wasm_bindgen(method, js_class = "DocumentSymbol", js_name = "tags", js_namespace = languages, getter = tags)]
1883    pub fn tags(this: &DocumentSymbol) -> Array;
1884    /// Set the `tags` property.
1885    #[wasm_bindgen(method, js_class = "DocumentSymbol", js_name = "tags", js_namespace = languages, setter = tags)]
1886    pub fn set_tags(this: &DocumentSymbol, val: &Array);
1887    #[wasm_bindgen(method, js_class = "DocumentSymbol", js_name = "containerName", js_namespace = languages, getter = containerName)]
1888    pub fn container_name(this: &DocumentSymbol) -> Option<String>;
1889    /// Set the `containerName` property.
1890    #[wasm_bindgen(method, js_class = "DocumentSymbol", js_name = "containerName", js_namespace = languages, setter = containerName)]
1891    pub fn set_container_name(this: &DocumentSymbol, val: Option<&str>);
1892    #[wasm_bindgen(method, js_class = "DocumentSymbol", js_name = "range", js_namespace = languages, getter = range)]
1893    pub fn range(this: &DocumentSymbol) -> IRange;
1894    /// Set the `range` property.
1895    #[wasm_bindgen(method, js_class = "DocumentSymbol", js_name = "range", js_namespace = languages, setter = range)]
1896    pub fn set_range(this: &DocumentSymbol, val: &IRange);
1897    #[wasm_bindgen(method, js_class = "DocumentSymbol", js_name = "selectionRange", js_namespace = languages, getter = selectionRange)]
1898    pub fn selection_range(this: &DocumentSymbol) -> IRange;
1899    /// Set the `selectionRange` property.
1900    #[wasm_bindgen(method, js_class = "DocumentSymbol", js_name = "selectionRange", js_namespace = languages, setter = selectionRange)]
1901    pub fn set_selection_range(this: &DocumentSymbol, val: &IRange);
1902    /// Type: `DocumentSymbol[]`
1903    #[wasm_bindgen(method, js_class = "DocumentSymbol", js_name = "children", js_namespace = languages, getter = children)]
1904    pub fn children(this: &DocumentSymbol) -> Option<Array>;
1905    /// Set the `children` property.
1906    #[wasm_bindgen(method, js_class = "DocumentSymbol", js_name = "children", js_namespace = languages, setter = children)]
1907    pub fn set_children(this: &DocumentSymbol, val: Option<&Array>);
1908}
1909
1910#[wasm_bindgen]
1911extern "C" {
1912    /// The document symbol provider interface defines the contract between
1913    /// extensions and the [go to symbol](https://code.visualstudio.com/docs/editor/editingevolved#_go-to-symbol)-feature.
1914    #[derive(Debug)]
1915    #[wasm_bindgen(extends = Object)]
1916    pub type DocumentSymbolProvider;
1917    #[wasm_bindgen(method, js_class = "DocumentSymbolProvider", js_name = "displayName", js_namespace = languages, getter = displayName)]
1918    pub fn display_name(this: &DocumentSymbolProvider) -> Option<String>;
1919    /// Set the `displayName` property.
1920    #[wasm_bindgen(method, js_class = "DocumentSymbolProvider", js_name = "displayName", js_namespace = languages, setter = displayName)]
1921    pub fn set_display_name(this: &DocumentSymbolProvider, val: Option<&str>);
1922    /// Provide symbol information for the given document.
1923    #[wasm_bindgen(
1924        method,
1925        js_class = "DocumentSymbolProvider",
1926        js_name = "provideDocumentSymbols", js_namespace = languages
1927    )]
1928    pub fn provide_document_symbols(
1929        this: &DocumentSymbolProvider,
1930        model: &ITextModel,
1931        token: &CancellationToken,
1932    ) -> JsValue;
1933}
1934
1935#[wasm_bindgen]
1936extern "C" {
1937    /// Interface used to format a model
1938    #[derive(Debug)]
1939    #[wasm_bindgen(extends = Object)]
1940    pub type FormattingOptions;
1941    /// Size of a tab in spaces.
1942    #[wasm_bindgen(method, js_class = "FormattingOptions", js_name = "tabSize", js_namespace = languages, getter = tabSize)]
1943    pub fn tab_size(this: &FormattingOptions) -> f64;
1944    /// Set the `tabSize` property.
1945    #[wasm_bindgen(method, js_class = "FormattingOptions", js_name = "tabSize", js_namespace = languages, setter = tabSize)]
1946    pub fn set_tab_size(this: &FormattingOptions, val: f64);
1947    /// Prefer spaces over tabs.
1948    #[wasm_bindgen(method, js_class = "FormattingOptions", js_name = "insertSpaces", js_namespace = languages, getter = insertSpaces)]
1949    pub fn insert_spaces(this: &FormattingOptions) -> bool;
1950    /// Set the `insertSpaces` property.
1951    #[wasm_bindgen(method, js_class = "FormattingOptions", js_name = "insertSpaces", js_namespace = languages, setter = insertSpaces)]
1952    pub fn set_insert_spaces(this: &FormattingOptions, val: bool);
1953}
1954
1955#[wasm_bindgen]
1956extern "C" {
1957    /// The document formatting provider interface defines the contract between
1958    /// extensions and the formatting-feature.
1959    #[derive(Debug)]
1960    #[wasm_bindgen(extends = Object)]
1961    pub type DocumentFormattingEditProvider;
1962    #[wasm_bindgen(method, js_class = "DocumentFormattingEditProvider", js_name = "displayName", js_namespace = languages, getter = displayName)]
1963    pub fn display_name(this: &DocumentFormattingEditProvider) -> Option<String>;
1964    /// Provide formatting edits for a whole document.
1965    #[wasm_bindgen(
1966        method,
1967        js_class = "DocumentFormattingEditProvider",
1968        js_name = "provideDocumentFormattingEdits", js_namespace = languages
1969    )]
1970    pub fn provide_document_formatting_edits(
1971        this: &DocumentFormattingEditProvider,
1972        model: &ITextModel,
1973        options: &FormattingOptions,
1974        token: &CancellationToken,
1975    ) -> JsValue;
1976}
1977
1978#[wasm_bindgen]
1979extern "C" {
1980    /// The document formatting provider interface defines the contract between
1981    /// extensions and the formatting-feature.
1982    #[derive(Debug)]
1983    #[wasm_bindgen(extends = Object)]
1984    pub type DocumentRangeFormattingEditProvider;
1985    #[wasm_bindgen(method, js_class = "DocumentRangeFormattingEditProvider", js_name = "displayName", js_namespace = languages, getter = displayName)]
1986    pub fn display_name(this: &DocumentRangeFormattingEditProvider) -> Option<String>;
1987    /// Provide formatting edits for a range in a document.
1988    ///
1989    /// The given range is a hint and providers can decide to format a smaller
1990    /// or larger range. Often this is done by adjusting the start and end
1991    /// of the range to full syntax nodes.
1992    #[wasm_bindgen(
1993        method,
1994        js_class = "DocumentRangeFormattingEditProvider",
1995        js_name = "provideDocumentRangeFormattingEdits", js_namespace = languages
1996    )]
1997    pub fn provide_document_range_formatting_edits(
1998        this: &DocumentRangeFormattingEditProvider,
1999        model: &ITextModel,
2000        range: &Range,
2001        options: &FormattingOptions,
2002        token: &CancellationToken,
2003    ) -> JsValue;
2004}
2005
2006#[wasm_bindgen]
2007extern "C" {
2008    /// The document formatting provider interface defines the contract between
2009    /// extensions and the formatting-feature.
2010    #[derive(Debug)]
2011    #[wasm_bindgen(extends = Object)]
2012    pub type OnTypeFormattingEditProvider;
2013    /// Type: `string[]`
2014    #[wasm_bindgen(method, js_class = "OnTypeFormattingEditProvider", js_name = "autoFormatTriggerCharacters", js_namespace = languages, getter = autoFormatTriggerCharacters)]
2015    pub fn auto_format_trigger_characters(this: &OnTypeFormattingEditProvider) -> Array;
2016    /// Set the `autoFormatTriggerCharacters` property.
2017    #[wasm_bindgen(method, js_class = "OnTypeFormattingEditProvider", js_name = "autoFormatTriggerCharacters", js_namespace = languages, setter = autoFormatTriggerCharacters)]
2018    pub fn set_auto_format_trigger_characters(this: &OnTypeFormattingEditProvider, val: &Array);
2019    /// Provide formatting edits after a character has been typed.
2020    ///
2021    /// The given position and character should hint to the provider
2022    /// what range the position to expand to, like find the matching `{`
2023    /// when `}` has been entered.
2024    #[wasm_bindgen(
2025        method,
2026        js_class = "OnTypeFormattingEditProvider",
2027        js_name = "provideOnTypeFormattingEdits", js_namespace = languages
2028    )]
2029    pub fn provide_on_type_formatting_edits(
2030        this: &OnTypeFormattingEditProvider,
2031        model: &ITextModel,
2032        position: &Position,
2033        ch: &str,
2034        options: &FormattingOptions,
2035        token: &CancellationToken,
2036    ) -> JsValue;
2037}
2038
2039#[wasm_bindgen]
2040extern "C" {
2041    /// A link inside the editor.
2042    #[derive(Debug)]
2043    #[wasm_bindgen(extends = Object)]
2044    pub type ILink;
2045    #[wasm_bindgen(method, js_class = "ILink", js_name = "range", js_namespace = languages, getter = range)]
2046    pub fn range(this: &ILink) -> IRange;
2047    /// Set the `range` property.
2048    #[wasm_bindgen(method, js_class = "ILink", js_name = "range", js_namespace = languages, setter = range)]
2049    pub fn set_range(this: &ILink, val: &IRange);
2050    #[wasm_bindgen(method, js_class = "ILink", js_name = "url", js_namespace = languages, getter = url)]
2051    pub fn url(this: &ILink) -> JsValue;
2052    /// Set the `url` property.
2053    #[wasm_bindgen(method, js_class = "ILink", js_name = "url", js_namespace = languages, setter = url)]
2054    pub fn set_url(this: &ILink, val: &JsValue);
2055    #[wasm_bindgen(method, js_class = "ILink", js_name = "tooltip", js_namespace = languages, getter = tooltip)]
2056    pub fn tooltip(this: &ILink) -> Option<String>;
2057    /// Set the `tooltip` property.
2058    #[wasm_bindgen(method, js_class = "ILink", js_name = "tooltip", js_namespace = languages, setter = tooltip)]
2059    pub fn set_tooltip(this: &ILink, val: Option<&str>);
2060}
2061
2062#[wasm_bindgen]
2063extern "C" {
2064    #[derive(Debug)]
2065    #[wasm_bindgen(extends = Object)]
2066    pub type ILinksList;
2067    /// Type: `ILink[]`
2068    #[wasm_bindgen(method, js_class = "ILinksList", js_name = "links", js_namespace = languages, getter = links)]
2069    pub fn links(this: &ILinksList) -> Array;
2070    /// Set the `links` property.
2071    #[wasm_bindgen(method, js_class = "ILinksList", js_name = "links", js_namespace = languages, setter = links)]
2072    pub fn set_links(this: &ILinksList, val: &Array);
2073    /// Type: `(() => void)`
2074    #[wasm_bindgen(method, js_class = "ILinksList", js_name = "dispose", js_namespace = languages, getter = dispose)]
2075    pub fn dispose(this: &ILinksList) -> Option<Function>;
2076    /// Set the `dispose` property.
2077    #[wasm_bindgen(method, js_class = "ILinksList", js_name = "dispose", js_namespace = languages, setter = dispose)]
2078    pub fn set_dispose(this: &ILinksList, val: Option<&Function>);
2079}
2080
2081#[wasm_bindgen]
2082extern "C" {
2083    /// A provider of links.
2084    #[derive(Debug)]
2085    #[wasm_bindgen(extends = Object)]
2086    pub type LinkProvider;
2087    #[wasm_bindgen(method, js_class = "LinkProvider", js_name = "provideLinks", js_namespace = languages)]
2088    pub fn provide_links(
2089        this: &LinkProvider,
2090        model: &ITextModel,
2091        token: &CancellationToken,
2092    ) -> JsValue;
2093    /// Type: `(link: ILink, token: CancellationToken) => JsValue`
2094    #[wasm_bindgen(method, js_class = "LinkProvider", js_name = "resolveLink", js_namespace = languages, getter = resolveLink)]
2095    pub fn resolve_link(this: &LinkProvider) -> Option<Function>;
2096    /// Set the `resolveLink` property.
2097    #[wasm_bindgen(method, js_class = "LinkProvider", js_name = "resolveLink", js_namespace = languages, setter = resolveLink)]
2098    pub fn set_resolve_link(this: &LinkProvider, val: Option<&Function>);
2099}
2100
2101#[wasm_bindgen]
2102extern "C" {
2103    /// A color in RGBA format.
2104    #[derive(Debug)]
2105    #[wasm_bindgen(extends = Object)]
2106    pub type IColor;
2107    /// The red component in the range [0-1].
2108    #[wasm_bindgen(method, js_class = "IColor", js_name = "red", js_namespace = languages, getter = red)]
2109    pub fn red(this: &IColor) -> f64;
2110    /// The green component in the range [0-1].
2111    #[wasm_bindgen(method, js_class = "IColor", js_name = "green", js_namespace = languages, getter = green)]
2112    pub fn green(this: &IColor) -> f64;
2113    /// The blue component in the range [0-1].
2114    #[wasm_bindgen(method, js_class = "IColor", js_name = "blue", js_namespace = languages, getter = blue)]
2115    pub fn blue(this: &IColor) -> f64;
2116    /// The alpha component in the range [0-1].
2117    #[wasm_bindgen(method, js_class = "IColor", js_name = "alpha", js_namespace = languages, getter = alpha)]
2118    pub fn alpha(this: &IColor) -> f64;
2119}
2120
2121#[wasm_bindgen]
2122extern "C" {
2123    /// String representations for a color
2124    #[derive(Debug)]
2125    #[wasm_bindgen(extends = Object)]
2126    pub type IColorPresentation;
2127    /// The label of this color presentation. It will be shown on the color
2128    /// picker header. By default this is also the text that is inserted when
2129    /// selecting this color presentation.
2130    #[wasm_bindgen(method, js_class = "IColorPresentation", js_name = "label", js_namespace = languages, getter = label)]
2131    pub fn label(this: &IColorPresentation) -> String;
2132    /// Set the `label` property.
2133    #[wasm_bindgen(method, js_class = "IColorPresentation", js_name = "label", js_namespace = languages, setter = label)]
2134    pub fn set_label(this: &IColorPresentation, val: &str);
2135    /// An {@link TextEdit edit} which is applied to a document when selecting
2136    /// this presentation for the color.
2137    #[wasm_bindgen(method, js_class = "IColorPresentation", js_name = "textEdit", js_namespace = languages, getter = textEdit)]
2138    pub fn text_edit(this: &IColorPresentation) -> JsValue;
2139    /// Set the `textEdit` property.
2140    #[wasm_bindgen(method, js_class = "IColorPresentation", js_name = "textEdit", js_namespace = languages, setter = textEdit)]
2141    pub fn set_text_edit(this: &IColorPresentation, val: &JsValue);
2142    /// An optional array of additional {@link TextEdit text edits} that are
2143    /// applied when selecting this color presentation.
2144    ///
2145    /// Type: `TextEdit[]`
2146    #[wasm_bindgen(method, js_class = "IColorPresentation", js_name = "additionalTextEdits", js_namespace = languages, getter = additionalTextEdits)]
2147    pub fn additional_text_edits(this: &IColorPresentation) -> Option<Array>;
2148    /// Set the `additionalTextEdits` property.
2149    #[wasm_bindgen(method, js_class = "IColorPresentation", js_name = "additionalTextEdits", js_namespace = languages, setter = additionalTextEdits)]
2150    pub fn set_additional_text_edits(this: &IColorPresentation, val: Option<&Array>);
2151}
2152
2153#[wasm_bindgen]
2154extern "C" {
2155    /// A color range is a range in a text model which represents a color.
2156    #[derive(Debug)]
2157    #[wasm_bindgen(extends = Object)]
2158    pub type IColorInformation;
2159    /// The range within the model.
2160    #[wasm_bindgen(method, js_class = "IColorInformation", js_name = "range", js_namespace = languages, getter = range)]
2161    pub fn range(this: &IColorInformation) -> IRange;
2162    /// Set the `range` property.
2163    #[wasm_bindgen(method, js_class = "IColorInformation", js_name = "range", js_namespace = languages, setter = range)]
2164    pub fn set_range(this: &IColorInformation, val: &IRange);
2165    /// The color represented in this range.
2166    #[wasm_bindgen(method, js_class = "IColorInformation", js_name = "color", js_namespace = languages, getter = color)]
2167    pub fn color(this: &IColorInformation) -> IColor;
2168    /// Set the `color` property.
2169    #[wasm_bindgen(method, js_class = "IColorInformation", js_name = "color", js_namespace = languages, setter = color)]
2170    pub fn set_color(this: &IColorInformation, val: &IColor);
2171}
2172
2173#[wasm_bindgen]
2174extern "C" {
2175    /// A provider of colors for editor models.
2176    #[derive(Debug)]
2177    #[wasm_bindgen(extends = Object)]
2178    pub type DocumentColorProvider;
2179    /// Provides the color ranges for a specific model.
2180    #[wasm_bindgen(
2181        method,
2182        js_class = "DocumentColorProvider",
2183        js_name = "provideDocumentColors", js_namespace = languages
2184    )]
2185    pub fn provide_document_colors(
2186        this: &DocumentColorProvider,
2187        model: &ITextModel,
2188        token: &CancellationToken,
2189    ) -> JsValue;
2190    /// Provide the string representations for a color.
2191    #[wasm_bindgen(
2192        method,
2193        js_class = "DocumentColorProvider",
2194        js_name = "provideColorPresentations", js_namespace = languages
2195    )]
2196    pub fn provide_color_presentations(
2197        this: &DocumentColorProvider,
2198        model: &ITextModel,
2199        color_info: &IColorInformation,
2200        token: &CancellationToken,
2201    ) -> JsValue;
2202}
2203
2204#[wasm_bindgen]
2205extern "C" {
2206    #[derive(Debug)]
2207    #[wasm_bindgen(extends = Object)]
2208    pub type SelectionRange;
2209    #[wasm_bindgen(method, js_class = "SelectionRange", js_name = "range", js_namespace = languages, getter = range)]
2210    pub fn range(this: &SelectionRange) -> IRange;
2211    /// Set the `range` property.
2212    #[wasm_bindgen(method, js_class = "SelectionRange", js_name = "range", js_namespace = languages, setter = range)]
2213    pub fn set_range(this: &SelectionRange, val: &IRange);
2214}
2215
2216#[wasm_bindgen]
2217extern "C" {
2218    #[derive(Debug)]
2219    #[wasm_bindgen(extends = Object)]
2220    pub type SelectionRangeProvider;
2221    /// Provide ranges that should be selected from the given position.
2222    ///
2223    /// # Arguments
2224    ///
2225    /// * `positions` - `Position[]`
2226    #[wasm_bindgen(
2227        method,
2228        js_class = "SelectionRangeProvider",
2229        js_name = "provideSelectionRanges", js_namespace = languages
2230    )]
2231    pub fn provide_selection_ranges(
2232        this: &SelectionRangeProvider,
2233        model: &ITextModel,
2234        positions: &Array,
2235        token: &CancellationToken,
2236    ) -> JsValue;
2237}
2238
2239#[wasm_bindgen]
2240extern "C" {
2241    /// A provider of folding ranges for editor models.
2242    #[derive(Debug)]
2243    #[wasm_bindgen(extends = Object)]
2244    pub type FoldingRangeProvider;
2245    /// An optional event to signal that the folding ranges from this provider
2246    /// have changed.
2247    #[wasm_bindgen(method, js_class = "FoldingRangeProvider", js_name = "onDidChange", js_namespace = languages, getter = onDidChange)]
2248    pub fn on_did_change(this: &FoldingRangeProvider) -> Option<Function>;
2249    /// Set the `onDidChange` property.
2250    #[wasm_bindgen(method, js_class = "FoldingRangeProvider", js_name = "onDidChange", js_namespace = languages, setter = onDidChange)]
2251    pub fn set_on_did_change(this: &FoldingRangeProvider, val: Option<&Function>);
2252    /// Provides the folding ranges for a specific model.
2253    ///
2254    /// Type: `(model: editor.ITextModel, context: FoldingContext, token:
2255    /// CancellationToken) => JsValue`
2256    #[wasm_bindgen(method, js_class = "FoldingRangeProvider", js_name = "provideFoldingRanges", js_namespace = languages, getter = provideFoldingRanges)]
2257    pub fn provide_folding_ranges(this: &FoldingRangeProvider) -> Function;
2258    /// Set the `provideFoldingRanges` property.
2259    #[wasm_bindgen(method, js_class = "FoldingRangeProvider", js_name = "provideFoldingRanges", js_namespace = languages, setter = provideFoldingRanges)]
2260    pub fn set_provide_folding_ranges(this: &FoldingRangeProvider, val: &Function);
2261}
2262
2263#[wasm_bindgen]
2264extern "C" {
2265    #[derive(Debug)]
2266    #[wasm_bindgen(extends = Object)]
2267    pub type FoldingRange;
2268    /// The one-based start line of the range to fold. The folded area starts
2269    /// after the line's last character.
2270    #[wasm_bindgen(method, js_class = "FoldingRange", js_name = "start", js_namespace = languages, getter = start)]
2271    pub fn start(this: &FoldingRange) -> f64;
2272    /// Set the `start` property.
2273    #[wasm_bindgen(method, js_class = "FoldingRange", js_name = "start", js_namespace = languages, setter = start)]
2274    pub fn set_start(this: &FoldingRange, val: f64);
2275    /// The one-based end line of the range to fold. The folded area ends with
2276    /// the line's last character.
2277    #[wasm_bindgen(method, js_class = "FoldingRange", js_name = "end", js_namespace = languages, getter = end)]
2278    pub fn end(this: &FoldingRange) -> f64;
2279    /// Set the `end` property.
2280    #[wasm_bindgen(method, js_class = "FoldingRange", js_name = "end", js_namespace = languages, setter = end)]
2281    pub fn set_end(this: &FoldingRange, val: f64);
2282    /// Describes the {@link FoldingRangeKind Kind} of the folding range such as
2283    /// {@link FoldingRangeKind.Comment Comment} or {@link FoldingRangeKind.
2284    /// Region Region}. The kind is used to categorize folding ranges and used
2285    /// by commands like 'Fold all comments'. See
2286    /// {@link FoldingRangeKind} for an enumeration of standardized kinds.
2287    #[wasm_bindgen(method, js_class = "FoldingRange", js_name = "kind", js_namespace = languages, getter = kind)]
2288    pub fn kind(this: &FoldingRange) -> Option<FoldingRangeKind>;
2289    /// Set the `kind` property.
2290    #[wasm_bindgen(method, js_class = "FoldingRange", js_name = "kind", js_namespace = languages, setter = kind)]
2291    pub fn set_kind(this: &FoldingRange, val: Option<&FoldingRangeKind>);
2292}
2293
2294#[wasm_bindgen]
2295extern "C" {
2296    #[derive(Debug)]
2297    #[wasm_bindgen(extends = Object)]
2298    pub type WorkspaceEditMetadata;
2299    #[wasm_bindgen(method, js_class = "WorkspaceEditMetadata", js_name = "needsConfirmation", js_namespace = languages, getter = needsConfirmation)]
2300    pub fn needs_confirmation(this: &WorkspaceEditMetadata) -> bool;
2301    /// Set the `needsConfirmation` property.
2302    #[wasm_bindgen(method, js_class = "WorkspaceEditMetadata", js_name = "needsConfirmation", js_namespace = languages, setter = needsConfirmation)]
2303    pub fn set_needs_confirmation(this: &WorkspaceEditMetadata, val: bool);
2304    #[wasm_bindgen(method, js_class = "WorkspaceEditMetadata", js_name = "label", js_namespace = languages, getter = label)]
2305    pub fn label(this: &WorkspaceEditMetadata) -> String;
2306    /// Set the `label` property.
2307    #[wasm_bindgen(method, js_class = "WorkspaceEditMetadata", js_name = "label", js_namespace = languages, setter = label)]
2308    pub fn set_label(this: &WorkspaceEditMetadata, val: &str);
2309    #[wasm_bindgen(method, js_class = "WorkspaceEditMetadata", js_name = "description", js_namespace = languages, getter = description)]
2310    pub fn description(this: &WorkspaceEditMetadata) -> Option<String>;
2311    /// Set the `description` property.
2312    #[wasm_bindgen(method, js_class = "WorkspaceEditMetadata", js_name = "description", js_namespace = languages, setter = description)]
2313    pub fn set_description(this: &WorkspaceEditMetadata, val: Option<&str>);
2314}
2315
2316#[wasm_bindgen]
2317extern "C" {
2318    #[derive(Debug)]
2319    #[wasm_bindgen(extends = Object)]
2320    pub type WorkspaceFileEditOptions;
2321    #[wasm_bindgen(method, js_class = "WorkspaceFileEditOptions", js_name = "overwrite", js_namespace = languages, getter = overwrite)]
2322    pub fn overwrite(this: &WorkspaceFileEditOptions) -> Option<bool>;
2323    /// Set the `overwrite` property.
2324    #[wasm_bindgen(method, js_class = "WorkspaceFileEditOptions", js_name = "overwrite", js_namespace = languages, setter = overwrite)]
2325    pub fn set_overwrite(this: &WorkspaceFileEditOptions, val: Option<bool>);
2326    #[wasm_bindgen(method, js_class = "WorkspaceFileEditOptions", js_name = "ignoreIfNotExists", js_namespace = languages, getter = ignoreIfNotExists)]
2327    pub fn ignore_if_not_exists(this: &WorkspaceFileEditOptions) -> Option<bool>;
2328    /// Set the `ignoreIfNotExists` property.
2329    #[wasm_bindgen(method, js_class = "WorkspaceFileEditOptions", js_name = "ignoreIfNotExists", js_namespace = languages, setter = ignoreIfNotExists)]
2330    pub fn set_ignore_if_not_exists(this: &WorkspaceFileEditOptions, val: Option<bool>);
2331    #[wasm_bindgen(method, js_class = "WorkspaceFileEditOptions", js_name = "ignoreIfExists", js_namespace = languages, getter = ignoreIfExists)]
2332    pub fn ignore_if_exists(this: &WorkspaceFileEditOptions) -> Option<bool>;
2333    /// Set the `ignoreIfExists` property.
2334    #[wasm_bindgen(method, js_class = "WorkspaceFileEditOptions", js_name = "ignoreIfExists", js_namespace = languages, setter = ignoreIfExists)]
2335    pub fn set_ignore_if_exists(this: &WorkspaceFileEditOptions, val: Option<bool>);
2336    #[wasm_bindgen(method, js_class = "WorkspaceFileEditOptions", js_name = "recursive", js_namespace = languages, getter = recursive)]
2337    pub fn recursive(this: &WorkspaceFileEditOptions) -> Option<bool>;
2338    /// Set the `recursive` property.
2339    #[wasm_bindgen(method, js_class = "WorkspaceFileEditOptions", js_name = "recursive", js_namespace = languages, setter = recursive)]
2340    pub fn set_recursive(this: &WorkspaceFileEditOptions, val: Option<bool>);
2341    #[wasm_bindgen(method, js_class = "WorkspaceFileEditOptions", js_name = "copy", js_namespace = languages, getter = copy)]
2342    pub fn copy(this: &WorkspaceFileEditOptions) -> Option<bool>;
2343    /// Set the `copy` property.
2344    #[wasm_bindgen(method, js_class = "WorkspaceFileEditOptions", js_name = "copy", js_namespace = languages, setter = copy)]
2345    pub fn set_copy(this: &WorkspaceFileEditOptions, val: Option<bool>);
2346    #[wasm_bindgen(method, js_class = "WorkspaceFileEditOptions", js_name = "folder", js_namespace = languages, getter = folder)]
2347    pub fn folder(this: &WorkspaceFileEditOptions) -> Option<bool>;
2348    /// Set the `folder` property.
2349    #[wasm_bindgen(method, js_class = "WorkspaceFileEditOptions", js_name = "folder", js_namespace = languages, setter = folder)]
2350    pub fn set_folder(this: &WorkspaceFileEditOptions, val: Option<bool>);
2351    #[wasm_bindgen(method, js_class = "WorkspaceFileEditOptions", js_name = "skipTrashBin", js_namespace = languages, getter = skipTrashBin)]
2352    pub fn skip_trash_bin(this: &WorkspaceFileEditOptions) -> Option<bool>;
2353    /// Set the `skipTrashBin` property.
2354    #[wasm_bindgen(method, js_class = "WorkspaceFileEditOptions", js_name = "skipTrashBin", js_namespace = languages, setter = skipTrashBin)]
2355    pub fn set_skip_trash_bin(this: &WorkspaceFileEditOptions, val: Option<bool>);
2356    #[wasm_bindgen(method, js_class = "WorkspaceFileEditOptions", js_name = "maxSize", js_namespace = languages, getter = maxSize)]
2357    pub fn max_size(this: &WorkspaceFileEditOptions) -> Option<f64>;
2358    /// Set the `maxSize` property.
2359    #[wasm_bindgen(method, js_class = "WorkspaceFileEditOptions", js_name = "maxSize", js_namespace = languages, setter = maxSize)]
2360    pub fn set_max_size(this: &WorkspaceFileEditOptions, val: Option<f64>);
2361}
2362
2363#[wasm_bindgen]
2364extern "C" {
2365    #[derive(Debug)]
2366    #[wasm_bindgen(extends = Object)]
2367    pub type WorkspaceFileEdit;
2368    #[wasm_bindgen(method, js_class = "WorkspaceFileEdit", js_name = "oldUri", js_namespace = languages, getter = oldUri)]
2369    pub fn old_uri(this: &WorkspaceFileEdit) -> Option<Uri>;
2370    /// Set the `oldUri` property.
2371    #[wasm_bindgen(method, js_class = "WorkspaceFileEdit", js_name = "oldUri", js_namespace = languages, setter = oldUri)]
2372    pub fn set_old_uri(this: &WorkspaceFileEdit, val: Option<&Uri>);
2373    #[wasm_bindgen(method, js_class = "WorkspaceFileEdit", js_name = "newUri", js_namespace = languages, getter = newUri)]
2374    pub fn new_uri(this: &WorkspaceFileEdit) -> Option<Uri>;
2375    /// Set the `newUri` property.
2376    #[wasm_bindgen(method, js_class = "WorkspaceFileEdit", js_name = "newUri", js_namespace = languages, setter = newUri)]
2377    pub fn set_new_uri(this: &WorkspaceFileEdit, val: Option<&Uri>);
2378    #[wasm_bindgen(method, js_class = "WorkspaceFileEdit", js_name = "options", js_namespace = languages, getter = options)]
2379    pub fn options(this: &WorkspaceFileEdit) -> Option<WorkspaceFileEditOptions>;
2380    /// Set the `options` property.
2381    #[wasm_bindgen(method, js_class = "WorkspaceFileEdit", js_name = "options", js_namespace = languages, setter = options)]
2382    pub fn set_options(this: &WorkspaceFileEdit, val: Option<&WorkspaceFileEditOptions>);
2383    #[wasm_bindgen(method, js_class = "WorkspaceFileEdit", js_name = "metadata", js_namespace = languages, getter = metadata)]
2384    pub fn metadata(this: &WorkspaceFileEdit) -> Option<WorkspaceEditMetadata>;
2385    /// Set the `metadata` property.
2386    #[wasm_bindgen(method, js_class = "WorkspaceFileEdit", js_name = "metadata", js_namespace = languages, setter = metadata)]
2387    pub fn set_metadata(this: &WorkspaceFileEdit, val: Option<&WorkspaceEditMetadata>);
2388}
2389
2390#[wasm_bindgen]
2391extern "C" {
2392    #[derive(Debug)]
2393    #[wasm_bindgen(extends = Object)]
2394    pub type WorkspaceTextEdit;
2395    #[wasm_bindgen(method, js_class = "WorkspaceTextEdit", js_name = "resource", js_namespace = languages, getter = resource)]
2396    pub fn resource(this: &WorkspaceTextEdit) -> Uri;
2397    /// Set the `resource` property.
2398    #[wasm_bindgen(method, js_class = "WorkspaceTextEdit", js_name = "resource", js_namespace = languages, setter = resource)]
2399    pub fn set_resource(this: &WorkspaceTextEdit, val: &Uri);
2400    #[wasm_bindgen(method, js_class = "WorkspaceTextEdit", js_name = "edit", js_namespace = languages, getter = edit)]
2401    pub fn edit(this: &WorkspaceTextEdit) -> JsValue;
2402    /// Set the `edit` property.
2403    #[wasm_bindgen(method, js_class = "WorkspaceTextEdit", js_name = "edit", js_namespace = languages, setter = edit)]
2404    pub fn set_edit(this: &WorkspaceTextEdit, val: &JsValue);
2405    #[wasm_bindgen(method, js_class = "WorkspaceTextEdit", js_name = "modelVersionId", js_namespace = languages, getter = modelVersionId)]
2406    pub fn model_version_id(this: &WorkspaceTextEdit) -> Option<f64>;
2407    /// Set the `modelVersionId` property.
2408    #[wasm_bindgen(method, js_class = "WorkspaceTextEdit", js_name = "modelVersionId", js_namespace = languages, setter = modelVersionId)]
2409    pub fn set_model_version_id(this: &WorkspaceTextEdit, val: Option<f64>);
2410    #[wasm_bindgen(method, js_class = "WorkspaceTextEdit", js_name = "metadata", js_namespace = languages, getter = metadata)]
2411    pub fn metadata(this: &WorkspaceTextEdit) -> Option<WorkspaceEditMetadata>;
2412    /// Set the `metadata` property.
2413    #[wasm_bindgen(method, js_class = "WorkspaceTextEdit", js_name = "metadata", js_namespace = languages, setter = metadata)]
2414    pub fn set_metadata(this: &WorkspaceTextEdit, val: Option<&WorkspaceEditMetadata>);
2415}
2416
2417#[wasm_bindgen]
2418extern "C" {
2419    #[derive(Debug)]
2420    #[wasm_bindgen(extends = Object)]
2421    pub type WorkspaceEdit;
2422    #[wasm_bindgen(method, js_class = "WorkspaceEdit", js_name = "edits", js_namespace = languages, getter = edits)]
2423    pub fn edits(this: &WorkspaceEdit) -> Array;
2424    /// Set the `edits` property.
2425    #[wasm_bindgen(method, js_class = "WorkspaceEdit", js_name = "edits", js_namespace = languages, setter = edits)]
2426    pub fn set_edits(this: &WorkspaceEdit, val: &Array);
2427}
2428
2429#[wasm_bindgen]
2430extern "C" {
2431    #[derive(Debug)]
2432    #[wasm_bindgen(extends = Object)]
2433    pub type Rejection;
2434    #[wasm_bindgen(method, js_class = "Rejection", js_name = "rejectReason", js_namespace = languages, getter = rejectReason)]
2435    pub fn reject_reason(this: &Rejection) -> Option<String>;
2436    /// Set the `rejectReason` property.
2437    #[wasm_bindgen(method, js_class = "Rejection", js_name = "rejectReason", js_namespace = languages, setter = rejectReason)]
2438    pub fn set_reject_reason(this: &Rejection, val: Option<&str>);
2439}
2440
2441#[wasm_bindgen]
2442extern "C" {
2443    #[derive(Debug)]
2444    #[wasm_bindgen(extends = Object)]
2445    pub type RenameLocation;
2446    #[wasm_bindgen(method, js_class = "RenameLocation", js_name = "range", js_namespace = languages, getter = range)]
2447    pub fn range(this: &RenameLocation) -> IRange;
2448    /// Set the `range` property.
2449    #[wasm_bindgen(method, js_class = "RenameLocation", js_name = "range", js_namespace = languages, setter = range)]
2450    pub fn set_range(this: &RenameLocation, val: &IRange);
2451    #[wasm_bindgen(method, js_class = "RenameLocation", js_name = "text", js_namespace = languages, getter = text)]
2452    pub fn text(this: &RenameLocation) -> String;
2453    /// Set the `text` property.
2454    #[wasm_bindgen(method, js_class = "RenameLocation", js_name = "text", js_namespace = languages, setter = text)]
2455    pub fn set_text(this: &RenameLocation, val: &str);
2456}
2457
2458#[wasm_bindgen]
2459extern "C" {
2460    #[derive(Debug)]
2461    #[wasm_bindgen(extends = Object)]
2462    pub type RenameProvider;
2463    #[wasm_bindgen(method, js_class = "RenameProvider", js_name = "provideRenameEdits", js_namespace = languages)]
2464    pub fn provide_rename_edits(
2465        this: &RenameProvider,
2466        model: &ITextModel,
2467        position: &Position,
2468        new_name: &str,
2469        token: &CancellationToken,
2470    ) -> JsValue;
2471    /// Type: `((model: editor.ITextModel, position: Position, token:
2472    /// CancellationToken) => JsValue)`
2473    #[wasm_bindgen(method, js_class = "RenameProvider", js_name = "resolveRenameLocation", js_namespace = languages, getter = resolveRenameLocation)]
2474    pub fn resolve_rename_location(this: &RenameProvider) -> Option<Function>;
2475    /// Set the `resolveRenameLocation` property.
2476    #[wasm_bindgen(method, js_class = "RenameProvider", js_name = "resolveRenameLocation", js_namespace = languages, setter = resolveRenameLocation)]
2477    pub fn set_resolve_rename_location(this: &RenameProvider, val: Option<&Function>);
2478}
2479
2480#[wasm_bindgen]
2481extern "C" {
2482    #[derive(Debug)]
2483    #[wasm_bindgen(extends = Object)]
2484    pub type Command;
2485    #[wasm_bindgen(method, js_class = "Command", js_name = "id", js_namespace = languages, getter = id)]
2486    pub fn id(this: &Command) -> String;
2487    /// Set the `id` property.
2488    #[wasm_bindgen(method, js_class = "Command", js_name = "id", js_namespace = languages, setter = id)]
2489    pub fn set_id(this: &Command, val: &str);
2490    #[wasm_bindgen(method, js_class = "Command", js_name = "title", js_namespace = languages, getter = title)]
2491    pub fn title(this: &Command) -> String;
2492    /// Set the `title` property.
2493    #[wasm_bindgen(method, js_class = "Command", js_name = "title", js_namespace = languages, setter = title)]
2494    pub fn set_title(this: &Command, val: &str);
2495    #[wasm_bindgen(method, js_class = "Command", js_name = "tooltip", js_namespace = languages, getter = tooltip)]
2496    pub fn tooltip(this: &Command) -> Option<String>;
2497    /// Set the `tooltip` property.
2498    #[wasm_bindgen(method, js_class = "Command", js_name = "tooltip", js_namespace = languages, setter = tooltip)]
2499    pub fn set_tooltip(this: &Command, val: Option<&str>);
2500    #[wasm_bindgen(method, js_class = "Command", js_name = "arguments", js_namespace = languages, getter = arguments)]
2501    pub fn arguments(this: &Command) -> Option<Array>;
2502    /// Set the `arguments` property.
2503    #[wasm_bindgen(method, js_class = "Command", js_name = "arguments", js_namespace = languages, setter = arguments)]
2504    pub fn set_arguments(this: &Command, val: &Array);
2505}
2506
2507#[wasm_bindgen]
2508extern "C" {
2509    #[derive(Debug)]
2510    #[wasm_bindgen(extends = Object)]
2511    pub type CodeLens;
2512    #[wasm_bindgen(method, js_class = "CodeLens", js_name = "range", js_namespace = languages, getter = range)]
2513    pub fn range(this: &CodeLens) -> IRange;
2514    /// Set the `range` property.
2515    #[wasm_bindgen(method, js_class = "CodeLens", js_name = "range", js_namespace = languages, setter = range)]
2516    pub fn set_range(this: &CodeLens, val: &IRange);
2517    #[wasm_bindgen(method, js_class = "CodeLens", js_name = "id", js_namespace = languages, getter = id)]
2518    pub fn id(this: &CodeLens) -> Option<String>;
2519    /// Set the `id` property.
2520    #[wasm_bindgen(method, js_class = "CodeLens", js_name = "id", js_namespace = languages, setter = id)]
2521    pub fn set_id(this: &CodeLens, val: Option<&str>);
2522    #[wasm_bindgen(method, js_class = "CodeLens", js_name = "command", js_namespace = languages, getter = command)]
2523    pub fn command(this: &CodeLens) -> Option<Command>;
2524    /// Set the `command` property.
2525    #[wasm_bindgen(method, js_class = "CodeLens", js_name = "command", js_namespace = languages, setter = command)]
2526    pub fn set_command(this: &CodeLens, val: Option<&Command>);
2527}
2528
2529#[wasm_bindgen]
2530extern "C" {
2531    #[derive(Debug)]
2532    #[wasm_bindgen(extends = Object)]
2533    pub type CodeLensList;
2534    /// Type: `CodeLens[]`
2535    #[wasm_bindgen(method, js_class = "CodeLensList", js_name = "lenses", js_namespace = languages, getter = lenses)]
2536    pub fn lenses(this: &CodeLensList) -> Array;
2537    /// Set the `lenses` property.
2538    #[wasm_bindgen(method, js_class = "CodeLensList", js_name = "lenses", js_namespace = languages, setter = lenses)]
2539    pub fn set_lenses(this: &CodeLensList, val: &Array);
2540    #[wasm_bindgen(method, js_class = "CodeLensList", js_name = "dispose", js_namespace = languages)]
2541    pub fn dispose(this: &CodeLensList);
2542}
2543
2544#[wasm_bindgen]
2545extern "C" {
2546    #[derive(Debug)]
2547    #[wasm_bindgen(extends = Object)]
2548    pub type CodeLensProvider;
2549    #[wasm_bindgen(method, js_class = "CodeLensProvider", js_name = "onDidChange", js_namespace = languages, getter = onDidChange)]
2550    pub fn on_did_change(this: &CodeLensProvider) -> Option<Function>;
2551    /// Set the `onDidChange` property.
2552    #[wasm_bindgen(method, js_class = "CodeLensProvider", js_name = "onDidChange", js_namespace = languages, setter = onDidChange)]
2553    pub fn set_on_did_change(this: &CodeLensProvider, val: Option<&Function>);
2554    #[wasm_bindgen(method, js_class = "CodeLensProvider", js_name = "provideCodeLenses", js_namespace = languages)]
2555    pub fn provide_code_lenses(
2556        this: &CodeLensProvider,
2557        model: &ITextModel,
2558        token: &CancellationToken,
2559    ) -> JsValue;
2560    /// Type: `((model: editor.ITextModel, codeLens: CodeLens, token:
2561    /// CancellationToken) => JsValue)`
2562    #[wasm_bindgen(method, js_class = "CodeLensProvider", js_name = "resolveCodeLens", js_namespace = languages, getter = resolveCodeLens)]
2563    pub fn resolve_code_lens(this: &CodeLensProvider) -> Option<Function>;
2564    /// Set the `resolveCodeLens` property.
2565    #[wasm_bindgen(method, js_class = "CodeLensProvider", js_name = "resolveCodeLens", js_namespace = languages, setter = resolveCodeLens)]
2566    pub fn set_resolve_code_lens(this: &CodeLensProvider, val: Option<&Function>);
2567}
2568
2569#[wasm_bindgen]
2570extern "C" {
2571    #[derive(Debug)]
2572    #[wasm_bindgen(extends = Object)]
2573    pub type InlayHintLabelPart;
2574    #[wasm_bindgen(method, js_class = "InlayHintLabelPart", js_name = "label", js_namespace = languages, getter = label)]
2575    pub fn label(this: &InlayHintLabelPart) -> String;
2576    /// Set the `label` property.
2577    #[wasm_bindgen(method, js_class = "InlayHintLabelPart", js_name = "label", js_namespace = languages, setter = label)]
2578    pub fn set_label(this: &InlayHintLabelPart, val: &str);
2579    #[wasm_bindgen(method, js_class = "InlayHintLabelPart", js_name = "tooltip", js_namespace = languages, getter = tooltip)]
2580    pub fn tooltip(this: &InlayHintLabelPart) -> JsValue;
2581    /// Set the `tooltip` property.
2582    #[wasm_bindgen(method, js_class = "InlayHintLabelPart", js_name = "tooltip", js_namespace = languages, setter = tooltip)]
2583    pub fn set_tooltip(this: &InlayHintLabelPart, val: &JsValue);
2584    #[wasm_bindgen(method, js_class = "InlayHintLabelPart", js_name = "command", js_namespace = languages, getter = command)]
2585    pub fn command(this: &InlayHintLabelPart) -> Option<Command>;
2586    /// Set the `command` property.
2587    #[wasm_bindgen(method, js_class = "InlayHintLabelPart", js_name = "command", js_namespace = languages, setter = command)]
2588    pub fn set_command(this: &InlayHintLabelPart, val: Option<&Command>);
2589    #[wasm_bindgen(method, js_class = "InlayHintLabelPart", js_name = "location", js_namespace = languages, getter = location)]
2590    pub fn location(this: &InlayHintLabelPart) -> Option<Location>;
2591    /// Set the `location` property.
2592    #[wasm_bindgen(method, js_class = "InlayHintLabelPart", js_name = "location", js_namespace = languages, setter = location)]
2593    pub fn set_location(this: &InlayHintLabelPart, val: Option<&Location>);
2594}
2595
2596#[wasm_bindgen]
2597extern "C" {
2598    #[derive(Debug)]
2599    #[wasm_bindgen(extends = Object)]
2600    pub type InlayHint;
2601    /// Type: `string | InlayHintLabelPart[]`
2602    #[wasm_bindgen(method, js_class = "InlayHint", js_name = "label", js_namespace = languages, getter = label)]
2603    pub fn label(this: &InlayHint) -> JsValue;
2604    /// Set the `label` property.
2605    #[wasm_bindgen(method, js_class = "InlayHint", js_name = "label", js_namespace = languages, setter = label)]
2606    pub fn set_label(this: &InlayHint, val: &JsValue);
2607    #[wasm_bindgen(method, js_class = "InlayHint", js_name = "tooltip", js_namespace = languages, getter = tooltip)]
2608    pub fn tooltip(this: &InlayHint) -> JsValue;
2609    /// Set the `tooltip` property.
2610    #[wasm_bindgen(method, js_class = "InlayHint", js_name = "tooltip", js_namespace = languages, setter = tooltip)]
2611    pub fn set_tooltip(this: &InlayHint, val: &JsValue);
2612    #[wasm_bindgen(method, js_class = "InlayHint", js_name = "position", js_namespace = languages, getter = position)]
2613    pub fn position(this: &InlayHint) -> IPosition;
2614    /// Set the `position` property.
2615    #[wasm_bindgen(method, js_class = "InlayHint", js_name = "position", js_namespace = languages, setter = position)]
2616    pub fn set_position(this: &InlayHint, val: &IPosition);
2617    #[wasm_bindgen(method, js_class = "InlayHint", js_name = "kind", js_namespace = languages, getter = kind)]
2618    pub fn kind(this: &InlayHint) -> InlayHintKind;
2619    /// Set the `kind` property.
2620    #[wasm_bindgen(method, js_class = "InlayHint", js_name = "kind", js_namespace = languages, setter = kind)]
2621    pub fn set_kind(this: &InlayHint, val: InlayHintKind);
2622    #[wasm_bindgen(method, js_class = "InlayHint", js_name = "paddingLeft", js_namespace = languages, getter = paddingLeft)]
2623    pub fn padding_left(this: &InlayHint) -> Option<bool>;
2624    /// Set the `paddingLeft` property.
2625    #[wasm_bindgen(method, js_class = "InlayHint", js_name = "paddingLeft", js_namespace = languages, setter = paddingLeft)]
2626    pub fn set_padding_left(this: &InlayHint, val: Option<bool>);
2627    #[wasm_bindgen(method, js_class = "InlayHint", js_name = "paddingRight", js_namespace = languages, getter = paddingRight)]
2628    pub fn padding_right(this: &InlayHint) -> Option<bool>;
2629    /// Set the `paddingRight` property.
2630    #[wasm_bindgen(method, js_class = "InlayHint", js_name = "paddingRight", js_namespace = languages, setter = paddingRight)]
2631    pub fn set_padding_right(this: &InlayHint, val: Option<bool>);
2632}
2633
2634#[wasm_bindgen]
2635extern "C" {
2636    #[derive(Debug)]
2637    #[wasm_bindgen(extends = Object)]
2638    pub type InlayHintList;
2639    /// Type: `InlayHint[]`
2640    #[wasm_bindgen(method, js_class = "InlayHintList", js_name = "hints", js_namespace = languages, getter = hints)]
2641    pub fn hints(this: &InlayHintList) -> Array;
2642    /// Set the `hints` property.
2643    #[wasm_bindgen(method, js_class = "InlayHintList", js_name = "hints", js_namespace = languages, setter = hints)]
2644    pub fn set_hints(this: &InlayHintList, val: &Array);
2645    #[wasm_bindgen(method, js_class = "InlayHintList", js_name = "dispose", js_namespace = languages)]
2646    pub fn dispose(this: &InlayHintList);
2647}
2648
2649#[wasm_bindgen]
2650extern "C" {
2651    #[derive(Debug)]
2652    #[wasm_bindgen(extends = Object)]
2653    pub type InlayHintsProvider;
2654    #[wasm_bindgen(method, js_class = "InlayHintsProvider", js_name = "onDidChangeInlayHints", js_namespace = languages, getter = onDidChangeInlayHints)]
2655    pub fn on_did_change_inlay_hints(this: &InlayHintsProvider) -> Option<Function>;
2656    /// Set the `onDidChangeInlayHints` property.
2657    #[wasm_bindgen(method, js_class = "InlayHintsProvider", js_name = "onDidChangeInlayHints", js_namespace = languages, setter = onDidChangeInlayHints)]
2658    pub fn set_on_did_change_inlay_hints(this: &InlayHintsProvider, val: Option<&Function>);
2659    #[wasm_bindgen(method, js_class = "InlayHintsProvider", js_name = "provideInlayHints", js_namespace = languages)]
2660    pub fn provide_inlay_hints(
2661        this: &InlayHintsProvider,
2662        model: &ITextModel,
2663        range: &Range,
2664        token: &CancellationToken,
2665    ) -> JsValue;
2666    /// Type: `((hint: InlayHint, token: CancellationToken) => JsValue)`
2667    #[wasm_bindgen(method, js_class = "InlayHintsProvider", js_name = "resolveInlayHintL", js_namespace = languages, getter = resolveInlayHintL)]
2668    pub fn resolve_inlay_hint_l(this: &InlayHintsProvider) -> Option<Function>;
2669    /// Set the `resolveInlayHintL` property.
2670    #[wasm_bindgen(method, js_class = "InlayHintsProvider", js_name = "resolveInlayHintL", js_namespace = languages, setter = resolveInlayHintL)]
2671    pub fn set_resolve_inlay_hint_l(this: &InlayHintsProvider, val: Option<&Function>);
2672}
2673
2674#[wasm_bindgen]
2675extern "C" {
2676    #[derive(Debug)]
2677    #[wasm_bindgen(extends = Object)]
2678    pub type SemanticTokensLegend;
2679    /// Type: `string[]`
2680    #[wasm_bindgen(method, js_class = "SemanticTokensLegend", js_name = "tokenTypes", js_namespace = languages, getter = tokenTypes)]
2681    pub fn token_types(this: &SemanticTokensLegend) -> Array;
2682    /// Type: `string[]`
2683    #[wasm_bindgen(method, js_class = "SemanticTokensLegend", js_name = "tokenModifiers", js_namespace = languages, getter = tokenModifiers)]
2684    pub fn token_modifiers(this: &SemanticTokensLegend) -> Array;
2685}
2686
2687#[wasm_bindgen]
2688extern "C" {
2689    #[derive(Debug)]
2690    #[wasm_bindgen(extends = Object)]
2691    pub type SemanticTokens;
2692    #[wasm_bindgen(method, js_class = "SemanticTokens", js_name = "resultId", js_namespace = languages, getter = resultId)]
2693    pub fn result_id(this: &SemanticTokens) -> Option<String>;
2694    #[wasm_bindgen(method, js_class = "SemanticTokens", js_name = "data", js_namespace = languages, getter = data)]
2695    pub fn data(this: &SemanticTokens) -> Uint32Array;
2696}
2697
2698#[wasm_bindgen]
2699extern "C" {
2700    #[derive(Debug)]
2701    #[wasm_bindgen(extends = Object)]
2702    pub type SemanticTokensEdit;
2703    #[wasm_bindgen(method, js_class = "SemanticTokensEdit", js_name = "start", js_namespace = languages, getter = start)]
2704    pub fn start(this: &SemanticTokensEdit) -> f64;
2705    #[wasm_bindgen(method, js_class = "SemanticTokensEdit", js_name = "deleteCount", js_namespace = languages, getter = deleteCount)]
2706    pub fn delete_count(this: &SemanticTokensEdit) -> f64;
2707    #[wasm_bindgen(method, js_class = "SemanticTokensEdit", js_name = "data", js_namespace = languages, getter = data)]
2708    pub fn data(this: &SemanticTokensEdit) -> Option<Uint32Array>;
2709}
2710
2711#[wasm_bindgen]
2712extern "C" {
2713    #[derive(Debug)]
2714    #[wasm_bindgen(extends = Object)]
2715    pub type SemanticTokensEdits;
2716    #[wasm_bindgen(method, js_class = "SemanticTokensEdits", js_name = "resultId", js_namespace = languages, getter = resultId)]
2717    pub fn result_id(this: &SemanticTokensEdits) -> Option<String>;
2718    /// Type: `SemanticTokensEdit[]`
2719    #[wasm_bindgen(method, js_class = "SemanticTokensEdits", js_name = "edits", js_namespace = languages, getter = edits)]
2720    pub fn edits(this: &SemanticTokensEdits) -> Array;
2721}
2722
2723#[wasm_bindgen]
2724extern "C" {
2725    #[derive(Debug)]
2726    #[wasm_bindgen(extends = Object)]
2727    pub type DocumentSemanticTokensProvider;
2728    #[wasm_bindgen(method, js_class = "DocumentSemanticTokensProvider", js_name = "onDidChange", js_namespace = languages, getter = onDidChange)]
2729    pub fn on_did_change(this: &DocumentSemanticTokensProvider) -> Option<Function>;
2730    /// Set the `onDidChange` property.
2731    #[wasm_bindgen(method, js_class = "DocumentSemanticTokensProvider", js_name = "onDidChange", js_namespace = languages, setter = onDidChange)]
2732    pub fn set_on_did_change(this: &DocumentSemanticTokensProvider, val: Option<&Function>);
2733    #[wasm_bindgen(
2734        method,
2735        js_class = "DocumentSemanticTokensProvider",
2736        js_name = "getLegend", js_namespace = languages
2737    )]
2738    pub fn get_legend(this: &DocumentSemanticTokensProvider) -> SemanticTokensLegend;
2739    #[wasm_bindgen(
2740        method,
2741        js_class = "DocumentSemanticTokensProvider",
2742        js_name = "provideDocumentSemanticTokens", js_namespace = languages
2743    )]
2744    pub fn provide_document_semantic_tokens(
2745        this: &DocumentSemanticTokensProvider,
2746        model: &ITextModel,
2747        last_result_id: Option<&str>,
2748        token: &CancellationToken,
2749    ) -> JsValue;
2750    #[wasm_bindgen(
2751        method,
2752        js_class = "DocumentSemanticTokensProvider",
2753        js_name = "releaseDocumentSemanticTokens", js_namespace = languages
2754    )]
2755    pub fn release_document_semantic_tokens(
2756        this: &DocumentSemanticTokensProvider,
2757        result_id: Option<&str>,
2758    );
2759}
2760
2761#[wasm_bindgen]
2762extern "C" {
2763    #[derive(Debug)]
2764    #[wasm_bindgen(extends = Object)]
2765    pub type DocumentRangeSemanticTokensProvider;
2766    #[wasm_bindgen(
2767        method,
2768        js_class = "DocumentRangeSemanticTokensProvider",
2769        js_name = "getLegend", js_namespace = languages
2770    )]
2771    pub fn get_legend(this: &DocumentRangeSemanticTokensProvider) -> SemanticTokensLegend;
2772    #[wasm_bindgen(
2773        method,
2774        js_class = "DocumentRangeSemanticTokensProvider",
2775        js_name = "provideDocumentRangeSemanticTokens", js_namespace = languages
2776    )]
2777    pub fn provide_document_range_semantic_tokens(
2778        this: &DocumentRangeSemanticTokensProvider,
2779        model: &ITextModel,
2780        range: &Range,
2781        token: &CancellationToken,
2782    ) -> JsValue;
2783}
2784
2785#[wasm_bindgen]
2786extern "C" {
2787    #[derive(Debug)]
2788    #[wasm_bindgen(extends = Object)]
2789    pub type ILanguageExtensionPoint;
2790    #[wasm_bindgen(method, js_class = "ILanguageExtensionPoint", js_name = "id", js_namespace = languages, getter = id)]
2791    pub fn id(this: &ILanguageExtensionPoint) -> String;
2792    /// Set the `id` property.
2793    #[wasm_bindgen(method, js_class = "ILanguageExtensionPoint", js_name = "id", js_namespace = languages, setter = id)]
2794    pub fn set_id(this: &ILanguageExtensionPoint, val: &str);
2795    /// Type: `string[]`
2796    #[wasm_bindgen(method, js_class = "ILanguageExtensionPoint", js_name = "extensions", js_namespace = languages, getter = extensions)]
2797    pub fn extensions(this: &ILanguageExtensionPoint) -> Option<Array>;
2798    /// Set the `extensions` property.
2799    #[wasm_bindgen(method, js_class = "ILanguageExtensionPoint", js_name = "extensions", js_namespace = languages, setter = extensions)]
2800    pub fn set_extensions(this: &ILanguageExtensionPoint, val: Option<&Array>);
2801    /// Type: `string[]`
2802    #[wasm_bindgen(method, js_class = "ILanguageExtensionPoint", js_name = "filenames", js_namespace = languages, getter = filenames)]
2803    pub fn filenames(this: &ILanguageExtensionPoint) -> Option<Array>;
2804    /// Set the `filenames` property.
2805    #[wasm_bindgen(method, js_class = "ILanguageExtensionPoint", js_name = "filenames", js_namespace = languages, setter = filenames)]
2806    pub fn set_filenames(this: &ILanguageExtensionPoint, val: Option<&Array>);
2807    /// Type: `string[]`
2808    #[wasm_bindgen(method, js_class = "ILanguageExtensionPoint", js_name = "filenamePatterns", js_namespace = languages, getter = filenamePatterns)]
2809    pub fn filename_patterns(this: &ILanguageExtensionPoint) -> Option<Array>;
2810    /// Set the `filenamePatterns` property.
2811    #[wasm_bindgen(method, js_class = "ILanguageExtensionPoint", js_name = "filenamePatterns", js_namespace = languages, setter = filenamePatterns)]
2812    pub fn set_filename_patterns(this: &ILanguageExtensionPoint, val: Option<&Array>);
2813    #[wasm_bindgen(method, js_class = "ILanguageExtensionPoint", js_name = "firstLine", js_namespace = languages, getter = firstLine)]
2814    pub fn first_line(this: &ILanguageExtensionPoint) -> Option<String>;
2815    /// Set the `firstLine` property.
2816    #[wasm_bindgen(method, js_class = "ILanguageExtensionPoint", js_name = "firstLine", js_namespace = languages, setter = firstLine)]
2817    pub fn set_first_line(this: &ILanguageExtensionPoint, val: Option<&str>);
2818    /// Type: `string[]`
2819    #[wasm_bindgen(method, js_class = "ILanguageExtensionPoint", js_name = "aliases", js_namespace = languages, getter = aliases)]
2820    pub fn aliases(this: &ILanguageExtensionPoint) -> Option<Array>;
2821    /// Set the `aliases` property.
2822    #[wasm_bindgen(method, js_class = "ILanguageExtensionPoint", js_name = "aliases", js_namespace = languages, setter = aliases)]
2823    pub fn set_aliases(this: &ILanguageExtensionPoint, val: Option<&Array>);
2824    /// Type: `string[]`
2825    #[wasm_bindgen(method, js_class = "ILanguageExtensionPoint", js_name = "mimetypes", js_namespace = languages, getter = mimetypes)]
2826    pub fn mimetypes(this: &ILanguageExtensionPoint) -> Option<Array>;
2827    /// Set the `mimetypes` property.
2828    #[wasm_bindgen(method, js_class = "ILanguageExtensionPoint", js_name = "mimetypes", js_namespace = languages, setter = mimetypes)]
2829    pub fn set_mimetypes(this: &ILanguageExtensionPoint, val: Option<&Array>);
2830    #[wasm_bindgen(method, js_class = "ILanguageExtensionPoint", js_name = "configuration", js_namespace = languages, getter = configuration)]
2831    pub fn configuration(this: &ILanguageExtensionPoint) -> Option<Uri>;
2832    /// Set the `configuration` property.
2833    #[wasm_bindgen(method, js_class = "ILanguageExtensionPoint", js_name = "configuration", js_namespace = languages, setter = configuration)]
2834    pub fn set_configuration(this: &ILanguageExtensionPoint, val: Option<&Uri>);
2835}
2836
2837#[wasm_bindgen]
2838extern "C" {
2839    /// A Monarch language definition
2840    #[derive(Debug)]
2841    #[wasm_bindgen(extends = Object)]
2842    pub type IMonarchLanguage;
2843    /// map from string to ILanguageRule[]
2844    ///
2845    /// Type: `{}`
2846    #[wasm_bindgen(method, js_class = "IMonarchLanguage", js_name = "tokenizer", js_namespace = languages, getter = tokenizer)]
2847    pub fn tokenizer(this: &IMonarchLanguage) -> Object;
2848    /// Set the `tokenizer` property.
2849    #[wasm_bindgen(method, js_class = "IMonarchLanguage", js_name = "tokenizer", js_namespace = languages, setter = tokenizer)]
2850    pub fn set_tokenizer(this: &IMonarchLanguage, val: &Object);
2851    /// is the language case insensitive?
2852    #[wasm_bindgen(method, js_class = "IMonarchLanguage", js_name = "ignoreCase", js_namespace = languages, getter = ignoreCase)]
2853    pub fn ignore_case(this: &IMonarchLanguage) -> Option<bool>;
2854    /// Set the `ignoreCase` property.
2855    #[wasm_bindgen(method, js_class = "IMonarchLanguage", js_name = "ignoreCase", js_namespace = languages, setter = ignoreCase)]
2856    pub fn set_ignore_case(this: &IMonarchLanguage, val: Option<bool>);
2857    /// is the language unicode-aware? (i.e., /\u{1D306}/)
2858    #[wasm_bindgen(method, js_class = "IMonarchLanguage", js_name = "unicode", js_namespace = languages, getter = unicode)]
2859    pub fn unicode(this: &IMonarchLanguage) -> Option<bool>;
2860    /// Set the `unicode` property.
2861    #[wasm_bindgen(method, js_class = "IMonarchLanguage", js_name = "unicode", js_namespace = languages, setter = unicode)]
2862    pub fn set_unicode(this: &IMonarchLanguage, val: Option<bool>);
2863    /// if no match in the tokenizer assign this token class (default 'source')
2864    #[wasm_bindgen(method, js_class = "IMonarchLanguage", js_name = "defaultToken", js_namespace = languages, getter = defaultToken)]
2865    pub fn default_token(this: &IMonarchLanguage) -> Option<String>;
2866    /// Set the `defaultToken` property.
2867    #[wasm_bindgen(method, js_class = "IMonarchLanguage", js_name = "defaultToken", js_namespace = languages, setter = defaultToken)]
2868    pub fn set_default_token(this: &IMonarchLanguage, val: Option<&str>);
2869    /// for example [['{','}','delimiter.curly']]
2870    ///
2871    /// Type: `IMonarchLanguageBracket[]`
2872    #[wasm_bindgen(method, js_class = "IMonarchLanguage", js_name = "brackets", js_namespace = languages, getter = brackets)]
2873    pub fn brackets(this: &IMonarchLanguage) -> Option<Array>;
2874    /// Set the `brackets` property.
2875    #[wasm_bindgen(method, js_class = "IMonarchLanguage", js_name = "brackets", js_namespace = languages, setter = brackets)]
2876    pub fn set_brackets(this: &IMonarchLanguage, val: Option<&Array>);
2877    /// start symbol in the tokenizer (by default the first entry is used)
2878    #[wasm_bindgen(method, js_class = "IMonarchLanguage", js_name = "start", js_namespace = languages, getter = start)]
2879    pub fn start(this: &IMonarchLanguage) -> Option<String>;
2880    /// Set the `start` property.
2881    #[wasm_bindgen(method, js_class = "IMonarchLanguage", js_name = "start", js_namespace = languages, setter = start)]
2882    pub fn set_start(this: &IMonarchLanguage, val: Option<&str>);
2883    /// attach this to every token class (by default '.' + name)
2884    #[wasm_bindgen(method, js_class = "IMonarchLanguage", js_name = "tokenPostfix", js_namespace = languages, getter = tokenPostfix)]
2885    pub fn token_postfix(this: &IMonarchLanguage) -> Option<String>;
2886    /// Set the `tokenPostfix` property.
2887    #[wasm_bindgen(method, js_class = "IMonarchLanguage", js_name = "tokenPostfix", js_namespace = languages, setter = tokenPostfix)]
2888    pub fn set_token_postfix(this: &IMonarchLanguage, val: Option<&str>);
2889    /// include line feeds (in the form of a \n character) at the end of lines
2890    /// Defaults to false
2891    #[wasm_bindgen(method, js_class = "IMonarchLanguage", js_name = "includeLF", js_namespace = languages, getter = includeLF)]
2892    pub fn include_lf(this: &IMonarchLanguage) -> Option<bool>;
2893    /// Set the `includeLF` property.
2894    #[wasm_bindgen(method, js_class = "IMonarchLanguage", js_name = "includeLF", js_namespace = languages, setter = includeLF)]
2895    pub fn set_include_lf(this: &IMonarchLanguage, val: Option<bool>);
2896}
2897
2898#[wasm_bindgen]
2899extern "C" {
2900    #[derive(Debug)]
2901    #[wasm_bindgen(extends = Object)]
2902    pub type IExpandedMonarchLanguageRule;
2903    /// match tokens
2904    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageRule", js_name = "regex", js_namespace = languages, getter = regex)]
2905    pub fn regex(this: &IExpandedMonarchLanguageRule) -> JsValue;
2906    /// Set the `regex` property.
2907    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageRule", js_name = "regex", js_namespace = languages, setter = regex)]
2908    pub fn set_regex(this: &IExpandedMonarchLanguageRule, val: &JsValue);
2909    /// action to take on match
2910    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageRule", js_name = "action", js_namespace = languages, getter = action)]
2911    pub fn action(this: &IExpandedMonarchLanguageRule) -> JsValue;
2912    /// Set the `action` property.
2913    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageRule", js_name = "action", js_namespace = languages, setter = action)]
2914    pub fn set_action(this: &IExpandedMonarchLanguageRule, val: &JsValue);
2915    /// or an include rule. include all rules from the included state
2916    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageRule", js_name = "include", js_namespace = languages, getter = include)]
2917    pub fn include(this: &IExpandedMonarchLanguageRule) -> Option<String>;
2918    /// Set the `include` property.
2919    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageRule", js_name = "include", js_namespace = languages, setter = include)]
2920    pub fn set_include(this: &IExpandedMonarchLanguageRule, val: Option<&str>);
2921}
2922
2923#[wasm_bindgen]
2924extern "C" {
2925    #[derive(Debug)]
2926    #[wasm_bindgen(extends = Object)]
2927    pub type IExpandedMonarchLanguageAction;
2928    /// array of actions for each parenthesized match group
2929    ///
2930    /// Type: `IMonarchLanguageAction[]`
2931    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageAction", js_name = "group", js_namespace = languages, getter = group)]
2932    pub fn group(this: &IExpandedMonarchLanguageAction) -> Option<Array>;
2933    /// Set the `group` property.
2934    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageAction", js_name = "group", js_namespace = languages, setter = group)]
2935    pub fn set_group(this: &IExpandedMonarchLanguageAction, val: Option<&Array>);
2936    /// map from string to ILanguageAction
2937    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageAction", js_name = "cases", js_namespace = languages, getter = cases)]
2938    pub fn cases(this: &IExpandedMonarchLanguageAction) -> Option<Object>;
2939    /// Set the `cases` property.
2940    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageAction", js_name = "cases", js_namespace = languages, setter = cases)]
2941    pub fn set_cases(this: &IExpandedMonarchLanguageAction, val: Option<&Object>);
2942    /// token class (ie. css class) (or "@brackets" or "@rematch")
2943    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageAction", js_name = "token", js_namespace = languages, getter = token)]
2944    pub fn token(this: &IExpandedMonarchLanguageAction) -> Option<String>;
2945    /// Set the `token` property.
2946    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageAction", js_name = "token", js_namespace = languages, setter = token)]
2947    pub fn set_token(this: &IExpandedMonarchLanguageAction, val: Option<&str>);
2948    /// the next state to push, or "@push", "@pop", "@popall"
2949    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageAction", js_name = "next", js_namespace = languages, getter = next)]
2950    pub fn next(this: &IExpandedMonarchLanguageAction) -> Option<String>;
2951    /// Set the `next` property.
2952    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageAction", js_name = "next", js_namespace = languages, setter = next)]
2953    pub fn set_next(this: &IExpandedMonarchLanguageAction, val: Option<&str>);
2954    /// switch to this state
2955    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageAction", js_name = "switchTo", js_namespace = languages, getter = switchTo)]
2956    pub fn switch_to(this: &IExpandedMonarchLanguageAction) -> Option<String>;
2957    /// Set the `switchTo` property.
2958    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageAction", js_name = "switchTo", js_namespace = languages, setter = switchTo)]
2959    pub fn set_switch_to(this: &IExpandedMonarchLanguageAction, val: Option<&str>);
2960    /// go back n characters in the stream
2961    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageAction", js_name = "goBack", js_namespace = languages, getter = goBack)]
2962    pub fn go_back(this: &IExpandedMonarchLanguageAction) -> Option<f64>;
2963    /// Set the `goBack` property.
2964    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageAction", js_name = "goBack", js_namespace = languages, setter = goBack)]
2965    pub fn set_go_back(this: &IExpandedMonarchLanguageAction, val: Option<f64>);
2966    /// @open or @close
2967    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageAction", js_name = "bracket", js_namespace = languages, getter = bracket)]
2968    pub fn bracket(this: &IExpandedMonarchLanguageAction) -> Option<String>;
2969    /// Set the `bracket` property.
2970    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageAction", js_name = "bracket", js_namespace = languages, setter = bracket)]
2971    pub fn set_bracket(this: &IExpandedMonarchLanguageAction, val: Option<&str>);
2972    /// switch to embedded language (using the mimetype) or get out using "@pop"
2973    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageAction", js_name = "nextEmbedded", js_namespace = languages, getter = nextEmbedded)]
2974    pub fn next_embedded(this: &IExpandedMonarchLanguageAction) -> Option<String>;
2975    /// Set the `nextEmbedded` property.
2976    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageAction", js_name = "nextEmbedded", js_namespace = languages, setter = nextEmbedded)]
2977    pub fn set_next_embedded(this: &IExpandedMonarchLanguageAction, val: Option<&str>);
2978    /// log a message to the browser console window
2979    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageAction", js_name = "log", js_namespace = languages, getter = log)]
2980    pub fn log(this: &IExpandedMonarchLanguageAction) -> Option<String>;
2981    /// Set the `log` property.
2982    #[wasm_bindgen(method, js_class = "IExpandedMonarchLanguageAction", js_name = "log", js_namespace = languages, setter = log)]
2983    pub fn set_log(this: &IExpandedMonarchLanguageAction, val: Option<&str>);
2984}
2985
2986#[wasm_bindgen]
2987extern "C" {
2988    /// This interface can be shortened as an array, ie.
2989    /// ['{','}','delimiter.curly']
2990    #[derive(Debug)]
2991    #[wasm_bindgen(extends = Object)]
2992    pub type IMonarchLanguageBracket;
2993    /// open bracket
2994    #[wasm_bindgen(method, js_class = "IMonarchLanguageBracket", js_name = "open", js_namespace = languages, getter = open)]
2995    pub fn open(this: &IMonarchLanguageBracket) -> String;
2996    /// Set the `open` property.
2997    #[wasm_bindgen(method, js_class = "IMonarchLanguageBracket", js_name = "open", js_namespace = languages, setter = open)]
2998    pub fn set_open(this: &IMonarchLanguageBracket, val: &str);
2999    /// closing bracket
3000    #[wasm_bindgen(method, js_class = "IMonarchLanguageBracket", js_name = "close", js_namespace = languages, getter = close)]
3001    pub fn close(this: &IMonarchLanguageBracket) -> String;
3002    /// Set the `close` property.
3003    #[wasm_bindgen(method, js_class = "IMonarchLanguageBracket", js_name = "close", js_namespace = languages, setter = close)]
3004    pub fn set_close(this: &IMonarchLanguageBracket, val: &str);
3005    /// token class
3006    #[wasm_bindgen(method, js_class = "IMonarchLanguageBracket", js_name = "token", js_namespace = languages, getter = token)]
3007    pub fn token(this: &IMonarchLanguageBracket) -> String;
3008    /// Set the `token` property.
3009    #[wasm_bindgen(method, js_class = "IMonarchLanguageBracket", js_name = "token", js_namespace = languages, setter = token)]
3010    pub fn set_token(this: &IMonarchLanguageBracket, val: &str);
3011}