monaco-editor
Version:
A browser based code editor
3 lines (2 loc) • 10.2 kB
JavaScript
define("vs/lspLanguageFeatures-BIkJOWLw",["exports","./main-DsK8pnKg","./editor-KLE6jdfb"],(function(l,i,u){"use strict";class b{constructor(e,s,a){this._languageId=e,this._worker=s,this._disposables=[],this._listener=Object.create(null);const o=n=>{let c=n.getLanguageId();if(c!==this._languageId)return;let m;this._listener[n.uri.toString()]=n.onDidChangeContent(()=>{window.clearTimeout(m),m=window.setTimeout(()=>this._doValidate(n.uri,c),500)}),this._doValidate(n.uri,c)},r=n=>{u.editor.setModelMarkers(n,this._languageId,[]);let c=n.uri.toString(),m=this._listener[c];m&&(m.dispose(),delete this._listener[c])};this._disposables.push(u.editor.onDidCreateModel(o)),this._disposables.push(u.editor.onWillDisposeModel(r)),this._disposables.push(u.editor.onDidChangeModelLanguage(n=>{r(n.model),o(n.model)})),this._disposables.push(a(n=>{u.editor.getModels().forEach(c=>{c.getLanguageId()===this._languageId&&(r(c),o(c))})})),this._disposables.push({dispose:()=>{u.editor.getModels().forEach(r);for(let n in this._listener)this._listener[n].dispose()}}),u.editor.getModels().forEach(o)}dispose(){this._disposables.forEach(e=>e&&e.dispose()),this._disposables.length=0}_doValidate(e,s){this._worker(e).then(a=>a.doValidation(e.toString())).then(a=>{const o=a.map(n=>I(e,n));let r=u.editor.getModel(e);r&&r.getLanguageId()===s&&u.editor.setModelMarkers(r,s,o)}).then(void 0,a=>{console.error(a)})}}function w(t){switch(t){case i.DiagnosticSeverity.Error:return u.MarkerSeverity.Error;case i.DiagnosticSeverity.Warning:return u.MarkerSeverity.Warning;case i.DiagnosticSeverity.Information:return u.MarkerSeverity.Info;case i.DiagnosticSeverity.Hint:return u.MarkerSeverity.Hint;default:return u.MarkerSeverity.Info}}function I(t,e){let s=typeof e.code=="number"?String(e.code):e.code;return{severity:w(e.severity),startLineNumber:e.range.start.line+1,startColumn:e.range.start.character+1,endLineNumber:e.range.end.line+1,endColumn:e.range.end.character+1,message:e.message,code:s,source:e.source}}class D{constructor(e,s){this._worker=e,this._triggerCharacters=s}get triggerCharacters(){return this._triggerCharacters}provideCompletionItems(e,s,a,o){const r=e.uri;return this._worker(r).then(n=>n.doComplete(r.toString(),h(s))).then(n=>{if(!n)return;const c=e.getWordUntilPosition(s),m=new u.Range(s.lineNumber,c.startColumn,s.lineNumber,c.endColumn),G=n.items.map(d=>{const f={label:d.label,insertText:d.insertText||d.label,sortText:d.sortText,filterText:d.filterText,documentation:d.documentation,detail:d.detail,command:F(d.command),range:m,kind:E(d.kind)};return d.textEdit&&(R(d.textEdit)?f.range={insert:g(d.textEdit.insert),replace:g(d.textEdit.replace)}:f.range=g(d.textEdit.range),f.insertText=d.textEdit.newText),d.additionalTextEdits&&(f.additionalTextEdits=d.additionalTextEdits.map(p)),d.insertTextFormat===i.InsertTextFormat.Snippet&&(f.insertTextRules=u.languages.CompletionItemInsertTextRule.InsertAsSnippet),f});return{isIncomplete:n.isIncomplete,suggestions:G}})}}function h(t){if(t)return{character:t.column-1,line:t.lineNumber-1}}function k(t){if(t)return{start:{line:t.startLineNumber-1,character:t.startColumn-1},end:{line:t.endLineNumber-1,character:t.endColumn-1}}}function g(t){if(t)return new u.Range(t.start.line+1,t.start.character+1,t.end.line+1,t.end.character+1)}function R(t){return typeof t.insert<"u"&&typeof t.replace<"u"}function E(t){const e=u.languages.CompletionItemKind;switch(t){case i.CompletionItemKind.Text:return e.Text;case i.CompletionItemKind.Method:return e.Method;case i.CompletionItemKind.Function:return e.Function;case i.CompletionItemKind.Constructor:return e.Constructor;case i.CompletionItemKind.Field:return e.Field;case i.CompletionItemKind.Variable:return e.Variable;case i.CompletionItemKind.Class:return e.Class;case i.CompletionItemKind.Interface:return e.Interface;case i.CompletionItemKind.Module:return e.Module;case i.CompletionItemKind.Property:return e.Property;case i.CompletionItemKind.Unit:return e.Unit;case i.CompletionItemKind.Value:return e.Value;case i.CompletionItemKind.Enum:return e.Enum;case i.CompletionItemKind.Keyword:return e.Keyword;case i.CompletionItemKind.Snippet:return e.Snippet;case i.CompletionItemKind.Color:return e.Color;case i.CompletionItemKind.File:return e.File;case i.CompletionItemKind.Reference:return e.Reference}return e.Property}function p(t){if(t)return{range:g(t.range),text:t.newText}}function F(t){return t&&t.command==="editor.action.triggerSuggest"?{id:t.command,title:t.title,arguments:t.arguments}:void 0}class A{constructor(e){this._worker=e}provideHover(e,s,a){let o=e.uri;return this._worker(o).then(r=>r.doHover(o.toString(),h(s))).then(r=>{if(r)return{range:g(r.range),contents:T(r.contents)}})}}function M(t){return t&&typeof t=="object"&&typeof t.kind=="string"}function S(t){return typeof t=="string"?{value:t}:M(t)?t.kind==="plaintext"?{value:t.value.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}:{value:t.value}:{value:"```"+t.language+`
`+t.value+"\n```\n"}}function T(t){if(t)return Array.isArray(t)?t.map(S):[S(t)]}class y{constructor(e){this._worker=e}provideDocumentHighlights(e,s,a){const o=e.uri;return this._worker(o).then(r=>r.findDocumentHighlights(o.toString(),h(s))).then(r=>{if(r)return r.map(n=>({range:g(n.range),kind:x(n.kind)}))})}}function x(t){switch(t){case i.DocumentHighlightKind.Read:return u.languages.DocumentHighlightKind.Read;case i.DocumentHighlightKind.Write:return u.languages.DocumentHighlightKind.Write;case i.DocumentHighlightKind.Text:return u.languages.DocumentHighlightKind.Text}return u.languages.DocumentHighlightKind.Text}class H{constructor(e){this._worker=e}provideDefinition(e,s,a){const o=e.uri;return this._worker(o).then(r=>r.findDefinition(o.toString(),h(s))).then(r=>{if(r)return[C(r)]})}}function C(t){return{uri:u.Uri.parse(t.uri),range:g(t.range)}}class L{constructor(e){this._worker=e}provideReferences(e,s,a,o){const r=e.uri;return this._worker(r).then(n=>n.findReferences(r.toString(),h(s))).then(n=>{if(n)return n.map(C)})}}class P{constructor(e){this._worker=e}provideRenameEdits(e,s,a,o){const r=e.uri;return this._worker(r).then(n=>n.doRename(r.toString(),h(s),a)).then(n=>N(n))}}function N(t){if(!t||!t.changes)return;let e=[];for(let s in t.changes){const a=u.Uri.parse(s);for(let o of t.changes[s])e.push({resource:a,versionId:void 0,textEdit:{range:g(o.range),text:o.newText}})}return{edits:e}}class V{constructor(e){this._worker=e}provideDocumentSymbols(e,s){const a=e.uri;return this._worker(a).then(o=>o.findDocumentSymbols(a.toString())).then(o=>{if(o)return o.map(r=>W(r)?K(r):{name:r.name,detail:"",containerName:r.containerName,kind:_(r.kind),range:g(r.location.range),selectionRange:g(r.location.range),tags:[]})})}}function W(t){return"children"in t}function K(t){return{name:t.name,detail:t.detail??"",kind:_(t.kind),range:g(t.range),selectionRange:g(t.selectionRange),tags:t.tags??[],children:(t.children??[]).map(e=>K(e))}}function _(t){let e=u.languages.SymbolKind;switch(t){case i.SymbolKind.File:return e.File;case i.SymbolKind.Module:return e.Module;case i.SymbolKind.Namespace:return e.Namespace;case i.SymbolKind.Package:return e.Package;case i.SymbolKind.Class:return e.Class;case i.SymbolKind.Method:return e.Method;case i.SymbolKind.Property:return e.Property;case i.SymbolKind.Field:return e.Field;case i.SymbolKind.Constructor:return e.Constructor;case i.SymbolKind.Enum:return e.Enum;case i.SymbolKind.Interface:return e.Interface;case i.SymbolKind.Function:return e.Function;case i.SymbolKind.Variable:return e.Variable;case i.SymbolKind.Constant:return e.Constant;case i.SymbolKind.String:return e.String;case i.SymbolKind.Number:return e.Number;case i.SymbolKind.Boolean:return e.Boolean;case i.SymbolKind.Array:return e.Array}return e.Function}class U{constructor(e){this._worker=e}provideLinks(e,s){const a=e.uri;return this._worker(a).then(o=>o.findDocumentLinks(a.toString())).then(o=>{if(o)return{links:o.map(r=>({range:g(r.range),url:r.target}))}})}}class j{constructor(e){this._worker=e}provideDocumentFormattingEdits(e,s,a){const o=e.uri;return this._worker(o).then(r=>r.format(o.toString(),null,v(s)).then(n=>{if(!(!n||n.length===0))return n.map(p)}))}}class z{constructor(e){this._worker=e,this.canFormatMultipleRanges=!1}provideDocumentRangeFormattingEdits(e,s,a,o){const r=e.uri;return this._worker(r).then(n=>n.format(r.toString(),k(s),v(a)).then(c=>{if(!(!c||c.length===0))return c.map(p)}))}}function v(t){return{tabSize:t.tabSize,insertSpaces:t.insertSpaces}}class B{constructor(e){this._worker=e}provideDocumentColors(e,s){const a=e.uri;return this._worker(a).then(o=>o.findDocumentColors(a.toString())).then(o=>{if(o)return o.map(r=>({color:r.color,range:g(r.range)}))})}provideColorPresentations(e,s,a){const o=e.uri;return this._worker(o).then(r=>r.getColorPresentations(o.toString(),s.color,k(s.range))).then(r=>{if(r)return r.map(n=>{let c={label:n.label};return n.textEdit&&(c.textEdit=p(n.textEdit)),n.additionalTextEdits&&(c.additionalTextEdits=n.additionalTextEdits.map(p)),c})})}}class O{constructor(e){this._worker=e}provideFoldingRanges(e,s,a){const o=e.uri;return this._worker(o).then(r=>r.getFoldingRanges(o.toString(),s)).then(r=>{if(r)return r.map(n=>{const c={start:n.startLine+1,end:n.endLine+1};return typeof n.kind<"u"&&(c.kind=$(n.kind)),c})})}}function $(t){switch(t){case i.FoldingRangeKind.Comment:return u.languages.FoldingRangeKind.Comment;case i.FoldingRangeKind.Imports:return u.languages.FoldingRangeKind.Imports;case i.FoldingRangeKind.Region:return u.languages.FoldingRangeKind.Region}}class q{constructor(e){this._worker=e}provideSelectionRanges(e,s,a){const o=e.uri;return this._worker(o).then(r=>r.getSelectionRanges(o.toString(),s.map(h))).then(r=>{if(r)return r.map(n=>{const c=[];for(;n;)c.push({range:g(n.range)}),n=n.parent;return c})})}}l.CompletionAdapter=D,l.DefinitionAdapter=H,l.DiagnosticsAdapter=b,l.DocumentColorAdapter=B,l.DocumentFormattingEditProvider=j,l.DocumentHighlightAdapter=y,l.DocumentLinkAdapter=U,l.DocumentRangeFormattingEditProvider=z,l.DocumentSymbolAdapter=V,l.FoldingRangeAdapter=O,l.HoverAdapter=A,l.ReferenceAdapter=L,l.RenameAdapter=P,l.SelectionRangeAdapter=q,l.fromPosition=h,l.fromRange=k,l.toRange=g,l.toTextEdit=p}));