From a72b0753e6e64cd426603333c5ffedf42e13b1bb Mon Sep 17 00:00:00 2001 From: Qiming Zhao Date: Thu, 15 Jul 2021 20:28:27 +0800 Subject: [PATCH] commit c02be2e34489b39aa2c3de25c3e08993f84526bd c02be2e3 fix(extensions): isActive should not true during activate 76f407d4 refactor(plugin): disable semantic highlights by default a56c2e80 fix(completion): use triggerCharacter for manual invoke fb123ed9 Fix command with complete but no nargs (#3211) --- autoload/coc.vim | 12 ++++++++++++ build/index.js | 4 ++-- doc/coc.txt | 2 +- plugin/coc.vim | 4 ++-- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/autoload/coc.vim b/autoload/coc.vim index 92ed15f8b64..ed560bafd2a 100644 --- a/autoload/coc.vim +++ b/autoload/coc.vim @@ -110,6 +110,10 @@ endfunction function! coc#start(...) let opt = coc#util#get_complete_option() + let char = s:get_trigger_character() + if !empty(char) + let opt['triggerCharacter'] = char + endif call CocActionAsync('startCompletion', extend(opt, get(a:, 1, {}))) return '' endfunction @@ -192,3 +196,11 @@ function! coc#do_notify(id, method, result) call Fn(a:result) endif endfunction + +function! s:get_trigger_character() + if col('.') <= 1 + return '' + endif + let before_cursor = getline('.')[:col('.')-2] + return strcharpart(before_cursor, strchars(before_cursor)-1) +endfunction diff --git a/build/index.js b/build/index.js index b55c41fa145..e621f514ee8 100644 --- a/build/index.js +++ b/build/index.js @@ -227,7 +227,7 @@ ${u}(line ${c+1}): ${l.message}`;let f=o.get(l.location.uri)||[];f.push(E.Diagno `),filetype:"txt"}]:[];await e.show(l,{modes:["n"]})}},500)),global.hasOwnProperty("__TEST__"))return;this.checkExtensions().logError();let t=b.getConfiguration("coc.preferences"),r=t.get("extensionUpdateCheck","never"),n=t.get("silentAutoupdate",!0);if(r!="never"){let o=new Date,s=new Date(o.getFullYear(),o.getMonth(),o.getDate()-(r=="daily"?0:7)),a=this.db.fetch("lastUpdate");if(a&&Number(a)>s.getTime())return;this.outputChannel.appendLine("Start auto update..."),this.updateExtensions(!1,n).logError()}}async updateExtensions(e,t=!1){if(!this.npm)return;let r=await this.getLockedList(),n=await this.globalExtensionStats();n=n.filter(l=>![...r,...this.disabled].includes(l.id)),this.db.push("lastUpdate",Date.now()),t&&T.showMessage("Updating extensions, checkout output:///extensions for details.","more");let o=this.installBuffer=new Wp(!0,e,t?this.outputChannel:void 0);o.setExtensions(n.map(l=>l.id)),await o.show(b.nvim);let s=Eb(this.npm,this.modulesFolder);await qd(n,l=>{let{id:u}=l;o.startProgress([u]);let c=l.exotic?l.uri:null,f=s(u);return f.on("message",(d,p)=>{o.addMessage(u,d,p)}),f.update(c).then(d=>{o.finishProgress(u,!0),d&&this.loadExtension(d).logError()},d=>{o.addMessage(u,d.message),o.finishProgress(u,!1)})},t?1:3)}async checkExtensions(){let{globalExtensions:e}=b.env;if(e&&e.length){let t=this.filterGlobalExtensions(e);this.installExtensions(t).logError()}}get installer(){return Eb(this.npm,this.modulesFolder)}async installExtensions(e=[]){let{npm:t}=this;if(!t||!e.length)return;e=ny(e);let r=this.installBuffer=new Wp;r.setExtensions(e),await r.show(b.nvim);let n=Eb(this.npm,this.modulesFolder);await qd(e,s=>{r.startProgress([s]);let a=n(s);return a.on("message",(l,u)=>{r.addMessage(s,l,u)}),a.install().then(l=>{r.finishProgress(s,!0);let u=We.default.join(this.modulesFolder,l);this.loadExtension(u).logError()},l=>{r.addMessage(s,l.message),r.finishProgress(s,!1),Jr.error(`Error on install ${s}`,l)})})}getMissingExtensions(){let e=this.loadJson()||{dependencies:{}},t=[];for(let r of Object.keys(e.dependencies)){let n=We.default.join(this.modulesFolder,r);if(!Ct.default.existsSync(n)){let o=e.dependencies[r];o.startsWith("http")?t.push(o):t.push(r)}}return t}get npm(){let e=b.getConfiguration("npm").get("binPath","npm");e=b.expand(e);for(let t of[e,"yarnpkg","yarn","npm"])try{return gX.default.sync(t)}catch(r){continue}return T.showMessage("Can't find npm or yarn in your $PATH","error"),null}get all(){return Array.from(this.extensions.values()).map(e=>e.extension).filter(e=>!this.isDisabled(e.id))}getExtension(e){return this.extensions.get(e)}getExtensionState(e){if(this.isDisabled(e))return"disabled";let r=this.extensions.get(e);if(!r)return"unknown";let{extension:n}=r;return n.isActive?"activated":"loaded"}async getExtensionStates(){let e=await this.localExtensionStats([]),t=await this.globalExtensionStats();return e.concat(t.filter(r=>e.find(n=>n.id==r.id)==null))}async getLockedList(){let e=await this.db.fetch("extension");return e=e||{},Object.keys(e).filter(t=>e[t].locked===!0)}async toggleLock(e){let t=`extension.${e}.locked`;await this.db.fetch(t)?this.db.delete(t):this.db.push(t,!0)}async toggleExtension(e){let t=this.getExtensionState(e);if(t==null)return;t=="activated"&&await this.deactivate(e);let r=`extension.${e}.disabled`;if(this.db.push(r,t!="disabled"),t!="disabled")this.disabled.add(e),await this.unloadExtension(e);else{this.disabled.delete(e);let n=We.default.join(this.modulesFolder,e);Ct.default.existsSync(n)&&await this.loadExtension(n)}await ht(200)}async reloadExtension(e){let t=this.extensions.get(e);if(!t){T.showMessage(`Extension ${e} not registered`,"error");return}if(t.type==3){T.showMessage(`Can't reload internal extension "${t.id}"`,"warning");return}t.type==2?await this.loadExtensionFile(t.filepath):t.directory?await this.loadExtension(t.directory):T.showMessage(`Can't reload extension ${t.id}`,"warning")}async cleanExtensions(){let e=this.modulesFolder;if(!Ct.default.existsSync(e))return[];let t=this.globalExtensions,r=[];for(let n of t){let o=We.default.join(e,n),s=await Ct.default.lstat(o);!s||s&&s.isSymbolicLink()||(await this.unloadExtension(n),await Ct.default.remove(o),r.push(n))}return r}async uninstallExtension(e){try{if(!e.length)return;let[t,r]=iy(e,a=>this.globalExtensions.includes(a));r.length&&T.showMessage(`Extensions ${r} not global extensions, can't uninstall!`,"warning");let n=this.loadJson()||{dependencies:{}};for(let a of t){await this.unloadExtension(a),delete n.dependencies[a];let l=We.default.join(this.modulesFolder,a);Ct.default.existsSync(l)&&await Ct.default.remove(l)}let o={dependencies:{}};Object.keys(n.dependencies).sort().forEach(a=>{o.dependencies[a]=n.dependencies[a]});let s=We.default.join(this.root,"package.json");Ct.default.writeFileSync(s,JSON.stringify(o,null,2),{encoding:"utf8"}),T.showMessage(`Removed: ${t.join(" ")}`)}catch(t){T.showMessage(`Uninstall failed: ${t.message}`,"error")}}isDisabled(e){return this.disabled.has(e)}has(e){return this.extensions.has(e)}isActivated(e){let t=this.extensions.get(e);return!!(t&&t.extension.isActive)}async loadExtension(e){try{let t=We.default.dirname(e),r=We.default.normalize(t)!=We.default.normalize(this.modulesFolder),n=We.default.join(e,"package.json"),o=JSON.parse(Ct.default.readFileSync(n,"utf8")),{name:s}=o;return this.isDisabled(s)?!1:(await this.unloadExtension(s),this.createExtension(e,Object.freeze(o),r?1:0),!0)}catch(t){return T.showMessage(`Error on load extension from "${e}": ${t.message}`,"error"),Jr.error(`Error on load extension from ${e}`,t),!1}}async loadFileExtensions(){if(!process.env.COC_VIMCONFIG)return;let e=We.default.join(process.env.COC_VIMCONFIG,"coc-extensions");if(!Ct.default.existsSync(e))return;let t=await Ct.default.readdir(e);t=t.filter(r=>r.endsWith(".js"));for(let r of t)await this.loadExtensionFile(We.default.join(e,r))}loadedExtensions(){return Array.from(this.extensions.keys())}async watchExtension(e){let t=this.extensions.get(e);if(!t){T.showMessage(`extension ${e} not found`,"error");return}if(e.startsWith("single-"))T.showMessage(`watching ${t.filepath}`),this.disposables.push(Mu(t.filepath,async()=>{await this.loadExtensionFile(t.filepath),T.showMessage(`reloaded ${e}`)}));else{let r=b.getWatchmanPath();if(!r){T.showMessage("watchman not found","error");return}let n=await An.createClient(r,t.directory);if(!n){T.showMessage("Can't create watchman client, check output:///watchman");return}T.showMessage(`watching ${t.directory}`),this.disposables.push(n),n.subscribe("**/*.js",async()=>{await this.reloadExtension(e),T.showMessage(`reloaded ${e}`)}).then(o=>{this.disposables.push(o)},o=>{Jr.error(o)})}}async loadExtensionFile(e){let t=We.default.basename(e),r=We.default.basename(e,".js"),n="single-"+r;if(this.isDisabled(n))return;let o=We.default.dirname(e),s={name:n,main:t,engines:{coc:"^0.0.79"}},a=We.default.join(o,r+".json"),l=await Nt(a);if(l&&l.isFile()){let u=await uc(a,"utf8"),c=JSON.parse(u);if(c){let f=["activationEvents","contributes"];for(let d of f)c[d]&&(s[d]=c[d])}}await this.unloadExtension(n),this.createExtension(o,s,2)}async activate(e){if(this.isDisabled(e))throw new Error(`Extension ${e} is disabled!`);let t=this.extensions.get(e);if(!t)throw new Error(`Extension ${e} not registered!`);let{extension:r}=t;return r.isActive?!0:(await Promise.resolve(r.activate()),r.isActive?(this._onDidActiveExtension.fire(r),!0):!1)}async deactivate(e){let t=this.extensions.get(e);return t?(await Promise.resolve(t.deactivate()),!0):!1}async call(e,t,r){let n=this.extensions.get(e);if(!n)throw new Error(`extension ${e} not registered`);let{extension:o}=n;o.isActive||await this.activate(e);let{exports:s}=o;if(!s||!s.hasOwnProperty(t))throw new Error(`method ${t} not found on extension ${e}`);return await Promise.resolve(s[t].apply(null,r))}getExtensionApi(e){let t=this.extensions.get(e);if(!t)return null;let{extension:r}=t;return r.isActive?r.exports:null}registerExtension(e,t){let{id:r,packageJSON:n}=e;this.extensions.set(r,{id:r,type:3,extension:e,deactivate:t,isLocal:!0});let{contributes:o}=n;if(o){let{configuration:s}=o;if(s&&s.properties){let{properties:a}=s,l={};for(let u of Object.keys(a)){let c=a[u].default;c!=null&&(l[u]=c)}b.configurations.extendsDefaults(l)}}this._onDidLoadExtension.fire(e),this.setupActiveEvents(r,n).logError()}get globalExtensions(){let e=this.loadJson();return!e||!e.dependencies?[]:Object.keys(e.dependencies)}async globalExtensionStats(){let e=this.loadJson();if(!e||!e.dependencies)return[];let{modulesFolder:t}=this;return(await Promise.all(Object.keys(e.dependencies).map(n=>new Promise(async o=>{try{let s=e.dependencies[n],a=We.default.join(t,n),l=this.checkDirectory(a);if(l instanceof Error)return T.showMessage(`Unable to load global extension at ${a}: ${l.message}`,"error"),Jr.error(`Error on load ${a}`,l),o(null);let u=await uc(We.default.join(a,"package.json"),"utf8");a=await Ct.default.realpath(a);let c=JSON.parse(u),f=c&&c.version||"",d=c&&c.description||"",p=hX.default.isValid(s)?s:"";o({id:n,isLocal:!1,version:f,description:d,exotic:/^https?:/.test(s),uri:p.replace(/\.git(#master)?$/,""),root:a,state:this.getExtensionState(n),packageJSON:Object.freeze(c)})}catch(s){Jr.error(s),o(null)}})))).filter(n=>n!=null)}async localExtensionStats(e){let r=(await b.nvim.eval("&runtimepath")).split(",");return(await Promise.all(r.map(o=>new Promise(async s=>{try{if(this.checkDirectory(o)!==!0)return s(null);let l=We.default.join(o,"package.json"),u=await uc(l,"utf8"),c=JSON.parse(u),f=this.extensions.get(c.name);if(f&&!f.isLocal)return Jr.info(`Extension "${c.name}" in runtimepath already loaded.`),s(null);if(e.includes(c.name))return Jr.info(`Skipped load vim plugin from "${o}", "${c.name}" already global extension.`),s(null);let d=c&&c.version||"",p=c&&c.description||"";s({id:c.name,isLocal:!0,version:d,description:p,exotic:!1,root:o,state:this.getExtensionState(c.name),packageJSON:Object.freeze(c)})}catch(a){Jr.error(a),s(null)}})))).filter(o=>o!=null)}loadJson(){let{root:e}=this,t=We.default.join(e,"package.json");if(!Ct.default.existsSync(t))return null;let r=[],n=Ct.default.readFileSync(t,"utf8"),o=sc(n,r,{allowTrailingComma:!0});return r&&r.length>0&&(T.showMessage(`Error on parse ${t}`,"error"),b.nvim.call("coc#util#open_file",["edit",t],!0)),o}get schemes(){return this._additionalSchemes}addSchemeProperty(e,t){this._additionalSchemes[e]=t,b.configurations.extendsDefaults({[e]:t.default})}async setupActiveEvents(e,t){let{activationEvents:r}=t;if(!this.canActivate(e))return;if(!r||Array.isArray(r)&&r.includes("*")){await this.activate(e).catch(s=>{T.showMessage(`Error on activate extension ${e}: ${s.message}`),this.outputChannel.appendLine(`Error on activate extension ${e}. ${s.message} ${s.stack}`)});return}let n=[],o=()=>(V(n),new Promise(s=>{if(!this.canActivate(e))return this.outputChannel.appendLine(`Extension ${e} is disabled or not loaded.`),s();let a=setTimeout(()=>{this.outputChannel.appendLine(`Extension ${e} activate cost more than 1s`),s()},1e3);this.activate(e).then(()=>{clearTimeout(a),s()},l=>{clearTimeout(a),T.showMessage(`Error on activate extension ${e}: ${l.message}`),this.outputChannel.appendLine(`Error on activate extension ${e}:${l.message} - ${l.stack}`),s()})}));for(let s of r){let a=s.split(":"),l=a[0];if(l=="onLanguage"){if(b.filetypes.has(a[1])){await o();return}b.onDidOpenTextDocument(u=>{u.languageId==a[1]&&o()},null,n)}else if(l=="onCommand")pe.onCommandList.push(a[1]),M.on("Command",async u=>{u==a[1]&&(await o(),await ht(500))},null,n);else if(l=="workspaceContains"){let u=async()=>{let f=b.workspaceFolders.map(d=>j.parse(d.uri).fsPath);for(let d of f)if(Os(d,a[1].split(/\s+/)))return await o(),!0};if(await u())return;b.onDidChangeWorkspaceFolders(u,null,n)}else if(l=="onFileSystem"){for(let u of b.documents)if(j.parse(u.uri).scheme==a[1]){await o();return}b.onDidOpenTextDocument(u=>{j.parse(u.uri).scheme==a[1]&&o()},null,n)}else T.showMessage(`Unsupported event ${s} of ${e}`,"error")}}createExtension(e,t,r){let n=t.name,o=!1,s=null,a=We.default.join(e,t.main||"index.js"),l,u=[],c={activate:async()=>{if(o)return s;let d={subscriptions:u,extensionPath:e,globalState:this.memos.createMemento(`${n}|global`),workspaceState:this.memos.createMemento(`${n}|${b.rootPath}`),asAbsolutePath:p=>We.default.join(e,p),storagePath:We.default.join(this.root,`${n}-data`),logger:vX(n)};if(o=!0,!l)try{let p=!(t.engines||{}).hasOwnProperty("coc");l=fX(n,a,p)}catch(p){Jr.error(`Error on createExtension ${n} from ${a}`,p);return}try{s=await Promise.resolve(l.activate(d)),Jr.debug("activate:",n)}catch(p){o=!1,Jr.error(`Error on active extension ${n}: ${p.stack}`,p)}return s}};Object.defineProperties(c,{id:{get:()=>n,enumerable:!0},packageJSON:{get:()=>t,enumerable:!0},extensionPath:{get:()=>e,enumerable:!0},isActive:{get:()=>o,enumerable:!0},exports:{get:()=>s,enumerable:!0}}),this.extensions.set(n,{id:n,type:r,isLocal:r==1,extension:c,directory:e,filepath:a,deactivate:()=>{if(!!o&&(o=!1,V(u),u.splice(0,u.length),u=[],l&&l.deactivate))try{return Promise.resolve(l.deactivate()).catch(d=>{Jr.error(`Error on ${n} deactivate: `,d)})}catch(d){Jr.error(`Error on ${n} deactivate: `,d)}}});let{contributes:f}=t;if(f){let{configuration:d,rootPatterns:p,commands:h}=f;if(d&&d.properties){let{properties:m}=d,w={};for(let v of Object.keys(m)){let D=m[v].default;D!=null&&(w[v]=D)}b.configurations.extendsDefaults(w)}if(p&&p.length)for(let m of p)b.addRootPattern(m.filetype,m.patterns);if(h&&h.length)for(let m of h)pe.titles.set(m.command,m.title)}this._onDidLoadExtension.fire(c),this.activated&&this.setupActiveEvents(n,t).logError()}filterGlobalExtensions(e){let t=new Map;e.forEach(s=>{let a=this.getExtensionName(s);a&&t.set(a,s)});let r=this.loadJson(),n=[],o=[];if(r&&r.dependencies)for(let s of Object.keys(r.dependencies)){let a=r.dependencies[s];typeof a=="string"&&Ct.default.existsSync(We.default.join(this.modulesFolder,s,"package.json"))&&(o.push(s),/^https?:/.test(a)&&n.push(a))}for(let s of t.keys()){if(this.disabled.has(s)||this.extensions.has(s)){t.delete(s);continue}(/^https?:/.test(s)&&n.some(a=>a.startsWith(s))||o.includes(s))&&t.delete(s)}return Array.from(t.values())}getExtensionName(e){return/^https?:/.test(e)||!e.includes("@")?e:e.replace(/@[\d.]+$/,"")}get modulesFolder(){return We.default.join(this.root,global.hasOwnProperty("__TEST__")?"":"node_modules")}canActivate(e){return!this.disabled.has(e)&&this.extensions.has(e)}async unloadExtension(e){this.extensions.get(e)&&(await this.deactivate(e),this.extensions.delete(e),this._onDidUnloadExtension.fire(e))}checkDirectory(e){try{let t=We.default.join(e,"package.json");if(!Ct.default.existsSync(t))throw new Error("package.json not found");let r=JSON.parse(Ct.default.readFileSync(t,"utf8")),{name:n,engines:o,main:s}=r;if(!n||!o)throw new Error("can't find name & engines in package.json");if(!o||!Wt(o))throw new Error(`invalid engines in ${t}`);if(s&&!Ct.default.existsSync(We.default.join(e,s)))throw new Error(`main file ${s} not found, you may need to build the project.`);let a=Object.keys(o);if(!a.includes("coc")&&!a.includes("vscode"))throw new Error("Engines in package.json doesn't have coc or vscode");if(a.includes("coc")){let l=o.coc.replace(/^\^/,">=");if(!mX.default.satisfies(b.version,l))throw new Error(`Please update coc.nvim, ${r.name} requires coc.nvim ${o.coc}`)}return!0}catch(t){return t}}dispose(){V(this.disposables)}},xe=new yX});var zJe,hn,uf=I(()=>{en();xt();Z();zJe=W()("model-source"),hn=class{constructor(e){this._disabled=!1;this.nvim=b.nvim,this.name=e.name,this.filepath=e.filepath||"",this.sourceType=e.sourceType||ai.Native,this.isSnippet=!!e.isSnippet,this.defaults=e}get priority(){return this.getConfig("priority",1)}get triggerOnly(){let e=this.defaults.triggerOnly;return typeof e=="boolean"?e:!this.triggerCharacters&&!this.triggerPatterns?!1:Array.isArray(this.triggerPatterns)&&this.triggerPatterns.length!=0}get triggerCharacters(){return this.getConfig("triggerCharacters",null)}get optionalFns(){return this.defaults.optionalFns||[]}get triggerPatterns(){let e=this.getConfig("triggerPatterns",null);return!e||e.length==0?null:e.map(t=>typeof t=="string"?new RegExp(t+"$"):t)}get shortcut(){let e=this.getConfig("shortcut","");return e||this.name.slice(0,3)}get enable(){return this._disabled?!1:this.getConfig("enable",!0)}get filetypes(){return this.getConfig("filetypes",null)}get disableSyntaxes(){return this.getConfig("disableSyntaxes",[])}getConfig(e,t){let r=b.getConfiguration(`coc.source.${this.name}`);return t=this.defaults.hasOwnProperty(e)?this.defaults[e]:t,r.get(e,t)}toggle(){this._disabled=!this._disabled}get firstMatch(){return this.getConfig("firstMatch",!0)}get menu(){let{shortcut:e}=this;return e?`[${e}]`:""}filterWords(e,t){let{firstMatch:r}=this,n=[],{input:o}=t,s=t.word;if(!o.length)return[];let a=o[0];for(let l of e)!l||l.length<3||r&&a!=l[0]||!r&&a.toLowerCase()!=l[0].toLowerCase()||l==s||l==o||n.push(l);return n}fixStartcol(e,t){let{col:r,input:n,line:o,bufnr:s}=e,a=Zt(o,0,r),l=b.getDocument(s);if(!l)return r;let{chars:u}=l;for(let c=a.length-1;c>=0;c--){let f=a[c];if(!u.isKeywordChar(f)&&!t.includes(f))break;n=`${f}${n}`,r=r-1}return e.col=r,e.input=n,r}async shouldComplete(e){let{disableSyntaxes:t}=this;if(e.synname&&t&&t.length){let n=(e.synname||"").toLowerCase();if(t.findIndex(o=>n.includes(o.toLowerCase()))!==-1)return!1}let r=this.defaults.shouldComplete;return r?await Promise.resolve(r.call(this,e)):!0}async refresh(){let e=this.defaults.refresh;e&&await Promise.resolve(e.call(this))}async onCompleteDone(e,t){let r=this.defaults.onCompleteDone;r&&await Promise.resolve(r.call(this,e,t))}async doComplete(e,t){let r=this.defaults.doComplete;return r?await Promise.resolve(r.call(this,e,t)):null}}});var ZJe,Nw,bX=I(()=>{nf();xt();Z();Te();uf();ZJe=W()("model-source-vim"),Nw=class extends hn{async callOptinalFunc(e,t){if(!this.optionalFns.includes(e))return null;let n=`coc#source#${this.name}#${e}`,o;try{o=await this.nvim.call(n,t)}catch(s){return T.showMessage(`Vim error from source ${this.name}: ${s.message}`,"error"),null}return o}async shouldComplete(e){return await super.shouldComplete(e)?this.optionalFns.includes("should_complete")?!!await this.callOptinalFunc("should_complete",[e]):!0:!1}async refresh(){await this.callOptinalFunc("refresh",[])}async onCompleteDone(e,t){await super.onCompleteDone(e,t),!!this.optionalFns.includes("on_complete")&&await this.callOptinalFunc("on_complete",[e])}onEnter(e){if(!this.optionalFns.includes("on_enter"))return;let t=b.getDocument(e);if(!t)return;let{filetypes:r}=this;r&&!r.includes(t.filetype)||this.callOptinalFunc("on_enter",[{bufnr:e,uri:t.uri,languageId:t.filetype}]).logError()}async doComplete(e,t){let{col:r,input:n,line:o,colnr:s}=e,a=await this.callOptinalFunc("get_startcol",[e]);if(t.isCancellationRequested)return;if(a){if(a<0)return null;a=Number(a),(isNaN(a)||a<0)&&(a=r),a!==r&&(n=Zt(o,a,s-1),e=Object.assign({},e,{col:a,changed:r-a,input:n}))}let l=await this.nvim.callAsync("coc#util#do_complete",[this.name,e]);if(!l||l.length==0||t.isCancellationRequested)return null;if(this.firstMatch&&n.length){let c=n[0];l=l.filter(f=>{let d=f.filterText?f.filterText[0]:f.word[0];return Fh(c,d)})}l=l.map(c=>{if(typeof c=="string")return{word:c,menu:this.menu,isSnippet:this.isSnippet};let f=c.menu?c.menu+" ":"";return c.menu=`${f}${this.menu}`,c.isSnippet=this.isSnippet,delete c.user_data,c});let u={items:l};return a&&(u.startcol=a),u}}});var DX={};ns(DX,{default:()=>qw,regist:()=>b_e});function b_e(i){return i.set("around",new qw),wX.Disposable.create(()=>{i.delete("around")})}var wX,rYe,qw,xX=I(()=>{wX=C(G());uf();Z();rYe=W()("source-around"),qw=class extends hn{constructor(){super({name:"around",filepath:__filename})}doComplete(e){let{bufnr:t,input:r}=e;if(r.length===0)return null;let n=b.getDocument(t);if(!n)return null;let o=n.words,s=n.getMoreWords();return o.push(...s),o=this.filterWords(o,e),Promise.resolve({items:o.map(a=>({word:a,menu:this.menu}))})}}});var EX={};ns(EX,{default:()=>$w,regist:()=>w_e});function w_e(i){return i.set("buffer",new $w),SX.Disposable.create(()=>{i.delete("buffer")})}var SX,oYe,$w,CX=I(()=>{SX=C(G());uf();Z();oYe=W()("source-buffer"),$w=class extends hn{constructor(){super({name:"buffer",filepath:__filename})}get ignoreGitignore(){return this.getConfig("ignoreGitignore",!0)}getWords(e){let{ignoreGitignore:t}=this,r=[];return b.documents.forEach(n=>{if(n.bufnr!=e&&!(t&&n.isIgnored))for(let o of n.words)r.includes(o)||r.push(o)}),r}doComplete(e){let{bufnr:t,input:r}=e;if(r.length==0)return null;let n=this.getWords(t);return n=this.filterWords(n,e),Promise.resolve({items:n.map(o=>({word:o,menu:this.menu}))})}}});var RX={};ns(RX,{default:()=>jw,regist:()=>S_e});function S_e(i){return i.set("file",new jw),PX.Disposable.create(()=>{i.delete("file")})}var Bw,_X,Oi,TX,PX,D_e,x_e,jw,kX=I(()=>{Bw=C(require("fs")),_X=C(Fs()),Oi=C(require("path")),TX=C(require("util")),PX=C(G());uf();zt();xt();Z();D_e=W()("source-file"),x_e=/(?:\.{0,2}|~|\$HOME|([\w]+)|[a-zA-Z]:|)(\/|\\)(?:[\w.@()-]+(\/|\\))*(?:[\w.@()-])*$/,jw=class extends hn{constructor(){super({name:"file",filepath:__filename})}resolveEnvVariables(e){let t=e;return t=t.replace(/%([^%]+)%/g,(r,n)=>process.env[n]),t=t.replace(/\$([A-Z_]+[A-Z0-9_]*)|\${([A-Z0-9_]*)}/gi,(r,n,o)=>process.env[n||o]),t}getPathOption(e){let{line:t,colnr:r}=e,n=Zt(t,0,r-1);if(n=this.resolveEnvVariables(n),!n||n.endsWith("//"))return null;let o=n.match(x_e);if(o&&o.length){let s=b.expand(o[0]),a=o[0].match(/[^/\\]*$/)[0];return{pathstr:s,part:o[1],startcol:r-a.length-1,input:a}}return null}async getFileItem(e,t){let r=Oi.default.join(e,t),n=await Nt(r);if(n){let o=n.isDirectory()?t+"/":t;return{word:t,abbr:o}}return null}filterFiles(e){let t=this.getConfig("ignoreHidden",!0),r=this.getConfig("ignorePatterns",[]);return e.filter(n=>{if(n==null||t&&n.startsWith("."))return!1;for(let o of r)if((0,_X.default)(n,o,{dot:!0}))return!1;return!0})}async getItemsFromRoot(e,t){let r=[],n=e.endsWith("/")?e:Oi.default.dirname(e),o=Oi.default.isAbsolute(e)?n:Oi.default.join(t,n);try{let s=await Nt(o);if(s&&s.isDirectory()){let a=await TX.default.promisify(Bw.default.readdir)(o);a=this.filterFiles(a);let l=await Promise.all(a.map(u=>this.getFileItem(o,u)));r=r.concat(l)}return r=r.filter(a=>a!=null),r}catch(s){return D_e.error("Error on list files:",s),r}}get trimSameExts(){return this.getConfig("trimSameExts",[])}async doComplete(e){let{col:t,filepath:r}=e,n=this.getPathOption(e);if(!n)return null;let{pathstr:o,part:s,startcol:a,input:l}=n;if(av.word[0]===w)),{items:h.map(v=>{let D=Oi.default.extname(v.word);return v.word=m&&D===f?v.word.replace(f,""):v.word,{word:`${u}${v.word}`,abbr:`${u}${v.abbr}`,menu:this.menu}})}}}});var IX,FX,Uw,OX,AX,LX,MX,nt,_l=I(()=>{IX=C(nc()),FX=C(require("fs")),Uw=C(require("path")),OX=C(require("util")),AX=C(G());Ne();na();uf();bX();en();be();zt();U_();Z();Te();xt();LX=W()("sources"),MX=class{constructor(){this.sourceMap=new Map;this.disposables=[];this.remoteSourcePaths=[]}get nvim(){return b.nvim}createNativeSources(){try{this.disposables.push((xX(),DX).regist(this.sourceMap)),this.disposables.push((CX(),EX).regist(this.sourceMap)),this.disposables.push((kX(),RX).regist(this.sourceMap))}catch(e){console.error("Create source error:"+e.message)}}async createVimSourceExtension(e,t){let r=Uw.default.basename(t,".vim");try{await e.command(`source ${t}`);let n=await e.call("coc#util#remote_fns",r);for(let c of["init","complete"])if(!n.includes(c))return T.showMessage(`${c} not found for source ${r}`,"error"),null;let o=await e.call(`coc#source#${r}#init`,[]),s={name:`coc-source-${r}`,engines:{coc:">= 0.0.1"},activationEvents:o.filetypes?o.filetypes.map(c=>`onLanguage:${c}`):["*"],contributes:{configuration:{properties:{[`coc.source.${r}.enable`]:{type:"boolean",default:!0},[`coc.source.${r}.firstMatch`]:{type:"boolean",default:!!o.firstMatch},[`coc.source.${r}.triggerCharacters`]:{type:"number",default:o.triggerCharacters||[]},[`coc.source.${r}.priority`]:{type:"number",default:o.priority||9},[`coc.source.${r}.shortcut`]:{type:"string",default:o.shortcut||r.slice(0,3).toUpperCase(),description:"Shortcut text shown in complete menu."},[`coc.source.${r}.disableSyntaxes`]:{type:"array",default:[],items:{type:"string"}},[`coc.source.${r}.filetypes`]:{type:"array",default:o.filetypes||null,description:"Enabled filetypes.",items:{type:"string"}}}}}},a=new Nw({name:r,filepath:t,sourceType:ai.Remote,optionalFns:n.filter(c=>!["init","complete"].includes(c))}),l=!1,u={id:s.name,packageJSON:s,exports:void 0,extensionPath:t,activate:()=>(l=!0,this.addSource(a),Promise.resolve())};Object.defineProperty(u,"isActive",{get:()=>l}),xe.registerExtension(u,()=>{l=!1,this.removeSource(a)})}catch(n){T.showMessage(`Error on create vim source ${r}: ${n.message}`,"error")}}createRemoteSources(){let{runtimepath:e}=b.env,t=e.split(",");for(let r of t)this.createVimSources(r).logError()}async createVimSources(e){if(this.remoteSourcePaths.includes(e))return;this.remoteSourcePaths.push(e);let t=Uw.default.join(e,"autoload/coc/source"),r=await Nt(t);if(r&&r.isDirectory()){let n=await OX.default.promisify(FX.default.readdir)(t);n=n.filter(s=>s.endsWith(".vim"));let o=n.map(s=>Uw.default.join(t,s));if(o.length==0)return;await Promise.all(o.map(s=>this.createVimSourceExtension(this.nvim,s)))}}init(){this.createNativeSources(),this.createRemoteSources(),M.on("BufEnter",this.onDocumentEnter,this,this.disposables),b.watchOption("runtimepath",async(e,t)=>{let r=(0,IX.default)(e,t);for(let[n,o]of r)if(n==1){let s=o.replace(/,$/,"").split(",");for(let a of s)a&&await this.createVimSources(a)}},this.disposables)}get names(){return Array.from(this.sourceMap.keys())}get sources(){return Array.from(this.sourceMap.values())}has(e){return this.names.findIndex(t=>t==e)!=-1}getSource(e){return e&&this.sourceMap.get(e)||null}async doCompleteResolve(e,t){let r=this.getSource(e.source);if(r&&typeof r.onCompleteResolve=="function")try{await Promise.resolve(r.onCompleteResolve(e,t))}catch(n){LX.error("Error on complete resolve:",n.stack)}}async doCompleteDone(e,t){let r=JSON.parse(e.user_data),n=this.getSource(r.source);n&&typeof n.onCompleteDone=="function"&&await Promise.resolve(n.onCompleteDone(e,t))}shouldCommit(e,t){if(!e||!e.source)return!1;let r=this.getSource(e.source);return r&&r.sourceType==ai.Service&&typeof r.shouldCommit=="function"?r.shouldCommit(e,t):!1}getCompleteSources(e){let{filetype:t}=e,r=Zt(e.line,0,e.colnr-1),n=e.input==""&&!!e.triggerCharacter,o=Cg(e.filepath,e.bufnr,"",b.env.isCygwin);return n?this.getTriggerSources(r,t,o):this.getNormalSources(e.filetype,o)}getNormalSources(e,t){return this.sources.filter(r=>{let{filetypes:n,triggerOnly:o,documentSelector:s,enable:a}=r;return!(!a||o||n&&!n.includes(e)||s&&hc(s,t,e)==0||this.disabledByLanguageId(r,e))})}checkTrigger(e,t,r){let{triggerCharacters:n,triggerPatterns:o}=e;return!n&&!o?!1:!!(r&&n&&n.includes(r)||o&&o.findIndex(s=>s.test(t))!==-1)}shouldTrigger(e,t,r){return this.getTriggerSources(e,t,r).length>0}getTriggerSources(e,t,r){let n=e.length?e[e.length-1]:"";return n?this.sources.filter(o=>{let{filetypes:s,enable:a,documentSelector:l}=o;return!a||s&&!s.includes(t)||l&&hc(l,r,t)==0||this.disabledByLanguageId(o,t)?!1:this.checkTrigger(o,e,n)}):[]}addSource(e){let{name:t}=e;return this.names.includes(t)&&LX.warn(`Recreate source ${t}`),this.sourceMap.set(t,e),AX.Disposable.create(()=>{this.sourceMap.delete(t)})}removeSource(e){let t=typeof e=="string"?e:e.name;this.sourceMap.delete(t)}async refresh(e){for(let t of this.sources)(!e||t.name==e)&&typeof t.refresh=="function"&&await Promise.resolve(t.refresh())}toggleSource(e){if(!e)return;let t=this.getSource(e);!t||typeof t.toggle=="function"&&t.toggle()}sourceStats(){let e=[],t=this.sources;for(let r of t)e.push({name:r.name,priority:r.priority,triggerCharacters:r.triggerCharacters||[],shortcut:r.shortcut||"",filetypes:r.filetypes||[],filepath:r.filepath||"",type:r.sourceType==ai.Native?"native":r.sourceType==ai.Remote?"remote":"service",disabled:!r.enable});return e}onDocumentEnter(e){let{sources:t}=this;for(let r of t)!r.enable||typeof r.onEnter=="function"&&r.onEnter(e)}createSource(e){if(!e.name||!e.doComplete){console.error("name and doComplete required for createSource");return}let t=new hn(Object.assign({sourceType:ai.Service},e));return this.addSource(t)}disabledByLanguageId(e,t){let r=b.env.disabledSources,n=r?r[t]:[];return Array.isArray(n)&&n.includes(e.name)}dispose(){V(this.disposables)}},nt=new MX});function NX(i=0,e){for(let t=i;t=65&&i<=90}function $X(i,e){if(i==0)return!0;let t=e[i];if(!Ih(t))return!1;let r=e[i-1];return!!(!Ih(r)||qX(t)&&!qX(r))}function BX(i,e){if(e.length==0||i.length=i.length)return 0;let n=[],o=t[0],s=i.length,a=t.length==1;if(!Ih(o)){for(let c=e;c{nf()});var Ol,Ww,E_e,Hw,UX=I(()=>{Ol=C(G());nf();xt();jX();Ww=W()("completion-complete"),E_e=500,Hw=class{constructor(e,t,r,n,o,s){this.option=e;this.document=t;this.config=n;this.sources=o;this.nvim=s;this.results=[];this.completing=new Set;this._canceled=!1;this.tokenSources=new Map;this._onDidComplete=new Ol.Emitter;this.onDidComplete=this._onDidComplete.event;Object.defineProperty(this,"recentScores",{get:()=>r||{}})}get isCompleting(){return this.completing.size>0}get isCanceled(){return this._canceled}get isEmpty(){return this.results.length==0}get startcol(){return this.option.col||0}get input(){return this.option.input}get isIncomplete(){return this.results.findIndex(e=>e.isIncomplete)!==-1}async completeSource(e){let{col:t}=this.option,r=Object.assign({},this.option),n=this.config.timeout;n=Math.max(Math.min(n,15e3),500);try{if(typeof e.shouldComplete=="function"&&!await Promise.resolve(e.shouldComplete(r)))return null;let o=Date.now(),s=this.tokenSources.get(e.name);s&&s.cancel();let a=new Ol.CancellationTokenSource;this.tokenSources.set(e.name,a),await new Promise((l,u)=>{let{name:c}=e,f=setTimeout(()=>{this.nvim.command(`echohl WarningMsg| echom 'source ${e.name} timeout after ${n}ms'|echohl None`,!0),a.cancel()},n),d=!1,p=!1,h=!1,m=setTimeout(()=>{p||(h=!0,l(void 0))},E_e),w=()=>{p||(p=!0,v.dispose(),clearTimeout(m),clearTimeout(f),this.tokenSources.delete(c))},v=a.token.onCancellationRequested(()=>{v.dispose(),this.completing.delete(c),d=!0,w(),Ww.debug(`Source "${c}" cancelled`),l(void 0)});this.completing.add(c),Promise.resolve(e.doComplete(r,a.token)).then(D=>{if(this.completing.delete(c),d)return;w();let x=Date.now()-o;if(Ww.debug(`Source "${c}" takes ${x}ms`),D&&D.items&&D.items.length){if(D.priority=e.priority,D.source=c,h&&D.startcol&&D.startcol!=t)this.results=[D];else{let{results:S}=this,P=S.findIndex(A=>A.source==c);P!=-1?S.splice(P,1,D):S.push(D)}h&&this._onDidComplete.fire(),l(void 0)}else l(void 0)},D=>{this.completing.delete(c),w(),u(D)})})}catch(o){this.nvim.command(`echoerr 'Complete ${e.name} error: ${o.message.replace(/'/g,"''")}'`,!0),Ww.error("Complete error:",e.name,o)}}async completeInComplete(e){let{results:t,document:r}=this;t.filter(f=>!f.isIncomplete).forEach(f=>{f.items.forEach(d=>delete d.user_data)});let s=t.filter(f=>f.isIncomplete).map(f=>f.source),{input:a,colnr:l,linenr:u}=this.option;Object.assign(this.option,{input:e,line:r.getline(u-1),colnr:l+(e.length-a.length),triggerCharacter:null,triggerForInComplete:!0});let c=this.sources.filter(f=>s.includes(f.name));return await Promise.all(c.map(f=>this.completeSource(f))),this.filterResults(e,Math.floor(Date.now()/1e3))}filterResults(e,t=0){let{results:r}=this;r.sort((h,m)=>h.source=="tabnine"?1:m.source=="tabnine"?-1:m.priority-h.priority);let n=Date.now(),{bufnr:o}=this.option,{snippetIndicator:s,removeDuplicateItems:a,fixInsertedWord:l,asciiCharactersOnly:u}=this.config,c=!l||t==0?"":this.getFollowPart();if(r.length==0)return[];let f=[],d=Xo(e),p=new Set;for(let h=0,m=r.length;h{let w=h.sortText,v=m.sortText,D=h.filterText,x=m.filterText;if(h.score!=m.score)return m.score-h.score;if(h.priority!=m.priority)return m.priority-h.priority;if(w&&v&&w!=v)return w{let{priority:s,source:a}=o,l=s<90,u=n.get(a)||0;return r&&l&&u==r||t&&!l&&u==t?!1:(n.set(a,u+1),!0)})}hasMatch(e){let{results:t}=this;if(!t)return!1;let r=Xo(e);for(let n=0,o=t.length;nrf(r,l.filterText||l.word))!==-1)return!0;return!1}async doComplete(){let e=this.option,{line:t,colnr:r,linenr:n,col:o}=this.option;if(this.config.localityBonus){let l=n-1;this.localBonus=this.document.getLocalifyBonus(Ol.Position.create(l,e.col-1),Ol.Position.create(l,r))}else this.localBonus=new Map;await Promise.all(this.sources.map(l=>this.completeSource(l)));let{results:s}=this;if(s.length==0)return[];let a=s.find(l=>l.startcol!=null&&l.startcol!=o);if(a){let{startcol:l}=a;e.col=l,e.input=Zt(t,l,r-1),this.results=[a]}return Ww.info(`Results from: ${this.results.map(l=>l.source).join(",")}`),this.filterResults(e.input,Math.floor(Date.now()/1e3))}resolveCompletionItem(e){let{results:t}=this;if(!t)return null;try{if(e.user_data){let{source:r}=JSON.parse(e.user_data);return t.find(o=>o.source==r).items.find(o=>o.user_data==e.user_data)}for(let r of t){let n=r.items.find(o=>o.abbr==e.abbr&&o.info==e.info);if(n)return n}return null}catch(r){return null}}getFollowPart(){let{colnr:e,line:t}=this.option,r=el(t,e-1);return r==t.length?"":t.slice(r-t.length).match(/^\S?[\w-]*/)[0]}dispose(){if(!this._canceled){this._onDidComplete.dispose(),this._canceled=!0;for(let e of this.tokenSources.values())e.cancel();this.tokenSources.clear(),this.sources=[],this.results=[]}}}});var NYe,zw,WX=I(()=>{YC();NYe=W()("floating"),zw=class{constructor(e,t){this.nvim=e;this.isVim=t;this.winid=0;this.bufnr=0}async show(e,t,r,n){let{nvim:o}=this;e=e.filter(c=>c.content.trim().length>0);let{lines:s,codes:a,highlights:l}=Fv(e,{excludeImages:r.excludeImages});if(s.length==0){this.close();return}let u=await o.call("coc#float#create_pum_float",[this.winid,this.bufnr,s,{codes:a,highlights:l,maxWidth:r.maxPreviewWidth,pumbounding:t}]);if(this.isVim&&o.command("redraw",!0),!(!u||u.length==0)&&(this.winid=u[0],this.bufnr=u[1],n.isCancellationRequested)){this.close();return}}close(){let{winid:e,nvim:t}=this;this.winid=0,!!e&&(t.call("coc#float#close",[e],!0),this.isVim&&t.command("redraw",!0))}}});var Gw,HX,Al,C_e,zX,sa,NR=I(()=>{Gw=C(G());Ne();_l();be();Vi();Z();UX();WX();HX=C(zr());xt();ni();Al=W()("completion"),C_e=["abbr","menu","info","kind","icase","dup","empty","user_data"],zX=class{constructor(){this.activated=!1;this.disposables=[];this.complete=null;this.recentScores={};this.changedTick=0;this.insertCharTs=0;this.insertLeaveTs=0}init(){this.config=this.getCompleteConfig(),b.onDidChangeConfiguration(t=>{t.affectsConfiguration("suggest")&&(this.config=this.getCompleteConfig())},null,this.disposables),b.watchOption("completeopt",async(t,r)=>{if(b.env.completeOpt=r,!!this.isActivated&&this.config.autoTrigger==="always"){let o=(await this.nvim.call("execute",["verbose set completeopt"])).split(/\r?\n/);console.error(`Some plugin change completeopt during completion: ${o[o.length-1].trim()}!`)}},this.disposables),this.excludeImages=b.getConfiguration("coc.preferences").get("excludeImageLinksInMarkdownDocument"),this.floating=new zw(b.nvim,b.env.isVim),M.on(["InsertCharPre","MenuPopupChanged","TextChangedI","CursorMovedI","InsertLeave"],()=>{this.triggerTimer&&(clearTimeout(this.triggerTimer),this.triggerTimer=null)},this,this.disposables),M.on("InsertCharPre",this.onInsertCharPre,this,this.disposables),M.on("InsertLeave",this.onInsertLeave,this,this.disposables),M.on("InsertEnter",this.onInsertEnter,this,this.disposables),M.on("TextChangedP",this.onTextChangedP,this,this.disposables),M.on("TextChangedI",this.onTextChangedI,this,this.disposables);let e=(0,HX.default)(this.onPumChange.bind(this),20);this.disposables.push({dispose:()=>{e.clear()}}),M.on("CompleteDone",async t=>{this.popupEvent=null,!!this.activated&&(e.clear(),this.cancelResolve(),this.floating.close(),await this.onCompleteDone(t))},this,this.disposables),this.cancelResolve(),M.on("MenuPopupChanged",t=>{!this.activated||this.isCommandLine||ut(this.popupEvent,t)||(this.cancelResolve(),this.popupEvent=t,e())},this,this.disposables)}get nvim(){return b.nvim}get option(){return this.complete?this.complete.option:null}get selectedItem(){if(!this.popupEvent)return null;let{completed_item:e}=this.popupEvent;return _g(e)?e:null}get isCommandLine(){var e;return(e=this.document)==null?void 0:e.uri.endsWith("%5BCommand%20Line%5D")}addRecent(e,t){!e||(this.recentScores[`${t}|${e}`]=Date.now())}get isActivated(){return this.activated}get document(){return this.option?b.getDocument(this.option.bufnr):null}getCompleteConfig(){let e=b.getConfiguration("suggest");function t(a,l){return e.get(a,l)}let r=t("keepCompleteopt",!1),n=t("autoTrigger","always");if(r&&n!="none"){let{completeOpt:a}=b;!a.includes("noinsert")&&!a.includes("noselect")&&(n="none")}let o=b.floatSupported&&t("floatEnable",!0),s=b.env.pumevent&&t("acceptSuggestionOnCommitCharacter",!1);return{autoTrigger:n,floatEnable:o,keepCompleteopt:r,defaultSortMethod:t("defaultSortMethod","length"),removeDuplicateItems:t("removeDuplicateItems",!1),disableMenuShortcut:t("disableMenuShortcut",!1),acceptSuggestionOnCommitCharacter:s,disableKind:t("disableKind",!1),disableMenu:t("disableMenu",!1),previewIsKeyword:t("previewIsKeyword","@,48-57,_192-255"),enablePreview:t("enablePreview",!1),enablePreselect:t("enablePreselect",!1),maxPreviewWidth:t("maxPreviewWidth",80),triggerCompletionWait:t("triggerCompletionWait",100),labelMaxLength:t("labelMaxLength",200),triggerAfterInsertEnter:t("triggerAfterInsertEnter",!1),noselect:t("noselect",!0),numberSelect:t("numberSelect",!1),maxItemCount:t("maxCompleteItemCount",50),timeout:t("timeout",500),minTriggerInputLength:t("minTriggerInputLength",1),snippetIndicator:t("snippetIndicator","~"),fixInsertedWord:t("fixInsertedWord",!0),localityBonus:t("localityBonus",!0),highPrioritySourceLimit:t("highPrioritySourceLimit",null),lowPrioritySourceLimit:t("lowPrioritySourceLimit",null),asciiCharactersOnly:t("asciiCharactersOnly",!1)}}async startCompletion(e){this.pretext=Zt(e.line,0,e.colnr-1);try{await this._doComplete(e)}catch(t){this.stop(),Al.error("Complete error:",t.stack)}}async resumeCompletion(e=!1){let{document:t,complete:r}=this;if(!t||r.isCanceled||!r.results||r.results.length==0)return;let n=this.getResumeInput();if(n==this.input&&!e)return;if(!n||n.endsWith(" ")||!n.startsWith(r.input)){this.stop();return}this.input=n;let o=[];if(r.isIncomplete){await t.patchChange();let{changedtick:s}=t;if(o=await r.completeInComplete(n),r.isCanceled||t.changedtick!=s)return}else o=r.filterResults(n);if(!r.isCompleting&&o.length===0){this.stop();return}await this.showCompletion(r.option.col,o)}hasSelected(){return b.env.pumevent?this.selectedItem!=null:!this.config.noselect}async showCompletion(e,t){let{nvim:r,document:n,option:o}=this,{numberSelect:s,disableKind:a,labelMaxLength:l,disableMenuShortcut:u,disableMenu:c}=this.config,f=this.config.enablePreselect?t.findIndex(h=>h.preselect):-1;s&&o.input.length&&!/^\d/.test(o.input)&&(t=t.map((h,m)=>{let w=m+1;return m<9?Object.assign({},h,{abbr:h.abbr?`${w} ${h.abbr}`:`${w} ${h.word}`}):h}),r.call("coc#_map",[],!0)),this.changedTick=n.changedtick;let d=C_e.slice();a&&(d=d.filter(h=>h!="kind")),c&&(d=d.filter(h=>h!="menu"));let p=t.map(h=>{let m={word:h.word,equal:1};for(let w of d)h.hasOwnProperty(w)&&(u&&w=="menu"?m[w]=h[w].replace(/\[.+\]$/,""):w=="abbr"&&h[w].length>l?m[w]=h[w].slice(0,l):m[w]=h[w]);return m});r.call("coc#_do_complete",[e,p,f],!0)}async _doComplete(e){let{source:t}=e,{nvim:r,config:n}=this,o=b.getDocument(e.bufnr);if(!o||!o.attached)return;e.filetype=o.filetype,this.input=e.input;let s=[];if(t==null)s=nt.getCompleteSources(e);else{let u=nt.getSource(t);u&&s.push(u)}if(!s.length||(await o.patchChange(),o.changedtick!=e.changedtick))return;let a=new Hw(e,o,this.recentScores,n,s,r);this.start(a);let l=await this.complete.doComplete();if(!a.isCanceled){if(l.length==0&&!a.isCompleting){this.stop();return}a.onDidComplete(async()=>{if(this.selectedItem!=null)return;let u=this.getResumeInput();if(a.isCanceled||u==null)return;let{input:c}=this.option;if(u==c){let f=a.filterResults(u,Math.floor(Date.now()/1e3));await this.showCompletion(e.col,f)}else await this.resumeCompletion()}),l.length&&(this.getResumeInput()==e.input?await this.showCompletion(e.col,l):await this.resumeCompletion(!0))}}async onTextChangedP(e,t){let{option:r,document:n}=this,o=this.pretext=t.pre;if(!r||r.bufnr!=e||t.changedtick==this.changedTick)return;let s=this.latestInsert!=null;if(this.lastInsert=null,t.pre.match(/^\s*/)[0]!==r.line.match(/^\s*/)[0]){Al.warn("Complete stopped by indent change."),this.stop(!1);return}!s||!o||(nt.shouldTrigger(o,n.filetype,n.uri)?await this.triggerCompletion(n,o):await this.resumeCompletion())}async onTextChangedI(e,t){let{nvim:r,latestInsertChar:n,option:o}=this,s=this.pretext==t.pre,a=this.pretext=t.pre;this.lastInsert=null;let l=b.getDocument(e);if(!!l){if(!this.activated){if(!n)return;if(nt.getTriggerSources(a,l.filetype,l.uri).length){await this.triggerCompletion(l,this.pretext);return}this.triggerTimer=setTimeout(async()=>{await this.triggerCompletion(l,a)},this.config.triggerCompletionWait);return}if(!(!o||e!=o.bufnr)){if(o.linenr!=t.lnum||o.col>=t.col-1){this.stop();return}if(s&&!n){this.stop(!1);return}if(a&&this.selectedItem&&this.config.acceptSuggestionOnCommitCharacter&&n){let u=this.getCompleteItem(this.selectedItem),c=a[a.length-1];if(nt.shouldCommit(u,c)){let{linenr:f,col:d,line:p,colnr:h}=this.option;this.stop();let{word:m}=u,w=`${p.slice(0,d)}${m}${n}${p.slice(h-1)}`;await r.call("coc#util#setline",[f,w]);let v=d+m.length+2;await r.call("cursor",[f,v]),await l.patchChange();return}}nt.shouldTrigger(a,l.filetype,l.uri)?await this.triggerCompletion(l,a):await this.resumeCompletion()}}}async triggerCompletion(e,t){if(!e||!e.attached){Al.warn("Document not attached, suggest disabled.");return}if(!this.shouldTrigger(e,t))return;if(e.getVar("suggest_disable")){Al.warn("Suggest disabled by b:coc_suggest_disable");return}await e.patchChange();let[n,o]=await this.nvim.eval('[get(b:,"coc_suggest_disable",0),coc#util#get_complete_option()]');if(n==1){Al.warn("Suggest disabled by b:coc_suggest_disable");return}if(o.blacklist&&o.blacklist.includes(o.input)){Al.warn("Suggest disabled by b:coc_suggest_blacklist",o.blacklist);return}t.length&&(o.triggerCharacter=t.slice(-1)),Al.debug("trigger completion with",o),await this.startCompletion(o)}async onCompleteDone(e){let{document:t,isActivated:r}=this;if(!r||!t||!_g(e))return;let n=Object.assign({},this.option),o=this.getCompleteItem(e);if(this.stop(),!o)return;let s=this.insertCharTs,a=this.insertLeaveTs,l=new Gw.CancellationTokenSource;if(await nt.doCompleteResolve(o,l.token),l.dispose(),this.addRecent(o.word,t.bufnr),await ht(50),this.insertCharTs!=s||this.insertLeaveTs!=a)return;let[u,c,f]=await this.nvim.eval("[pumvisible(),line('.'),strpart(getline('.'), 0, col('.') - 1)]");u||c!=n.linenr||this.activated||!f.endsWith(o.word)||(await t.patchChange(),await nt.doCompleteDone(o,n))}async onInsertLeave(){this.insertLeaveTs=Date.now(),this.stop(!1)}async onInsertEnter(e){if(!this.config.triggerAfterInsertEnter||this.config.autoTrigger!=="always")return;let t=b.getDocument(e);if(!t)return;let r=await this.nvim.eval("strpart(getline('.'), 0, col('.') - 1)");!r||await this.triggerCompletion(t,r)}async onInsertCharPre(e){this.lastInsert={character:e,timestamp:Date.now()},this.insertCharTs=this.lastInsert.timestamp}get latestInsert(){let{lastInsert:e}=this;return!e||Date.now()-e.timestamp>500?null:e}get latestInsertChar(){let{latestInsert:e}=this;return e?e.character:""}shouldTrigger(e,t){let r=this.config.autoTrigger;if(r=="none")return!1;if(nt.shouldTrigger(t,e.filetype,e.uri))return!0;if(r!=="always"||this.isActivated)return!1;let n=t.slice(-1);if(n&&(e.isWord(t.slice(-1))||n.codePointAt(0)>255)){let o=this.config.minTriggerInputLength;return o==1?!0:this.getInput(e,t).length>=o}return!1}async onPumChange(){if(!this.popupEvent)return;let{col:e,row:t,height:r,width:n,scrollbar:o}=this.popupEvent,s={col:e,row:t,height:r,width:n,scrollbar:o},a=this.getCompleteItem(this.selectedItem);if(!a){this.floating.close();return}let l=this.resolveTokenSource=new Gw.CancellationTokenSource,{token:u}=l;if(await nt.doCompleteResolve(a,u),this.resolveTokenSource==l&&(this.resolveTokenSource=null),l.dispose(),u.isCancellationRequested)return;let c=a.documentation;if(!c&&a.info){let{info:f}=a;c=[{filetype:/^[\w-\s.,\t]+$/.test(f)?"txt":this.document.filetype,content:f}]}if(!c||c.length==0)this.floating.close();else{if(this.config.floatEnable){let f=new Gw.CancellationTokenSource;await this.floating.show(c,s,{maxPreviewWidth:this.config.maxPreviewWidth,excludeImages:this.excludeImages},f.token)}this.isActivated||this.floating.close()}}start(e){let{activated:t}=this;this.activated=!0,t&&this.complete.dispose(),this.complete=e,this.config.keepCompleteopt||this.nvim.command(`noa set completeopt=${this.completeOpt}`,!0)}cancelResolve(){this.resolveTokenSource&&(this.resolveTokenSource.cancel(),this.resolveTokenSource=null)}stop(e=!0){let{nvim:t}=this;!this.activated||(this.cancelResolve(),this.floating.close(),this.activated=!1,this.complete&&(this.complete.dispose(),this.complete=null),t.pauseNotification(),e&&t.call("coc#_hide",[],!0),this.config.numberSelect&&t.call("coc#_unmap",[],!0),this.config.keepCompleteopt||t.command(`noa set completeopt=${b.completeOpt}`,!0),t.command("let g:coc#_context = {'start': 0, 'preselect': -1,'candidates': []}",!0),t.resumeNotification(!1,!0))}getInput(e,t){let r="";for(let n=t.length-1;n>=0;n--){let o=n==0?null:t[n-1];if(!o||!e.isWord(o)){r=t.slice(n,t.length);break}}return r}getResumeInput(){let{option:e,pretext:t}=this;if(!e)return null;let r=Buffer.from(t,"utf8");if(r.length{Zo=C(G());il();nr();Sy();xt();oXe=W()("snippets-snipet"),qR=class{constructor(e,t,r){this._snippetString=e;this.position=t;this._variableResolver=r;this._parser=new Bs}async init(){let e=this._parser.parse(this._snippetString,!0),{_variableResolver:t}=this;t&&await e.resolveVariables(t),this.tmSnippet=e,this.update()}adjustPosition(e,t){let{line:r,character:n}=this.position;this.position={line:r+t,character:n+e},this.update()}adjustTextEdit(e){let{range:t,newText:r}=e;if(Ue(this.range.start,t.end)<0||!r.includes(` + ${l.stack}`),s()})}));for(let s of r){let a=s.split(":"),l=a[0];if(l=="onLanguage"){if(b.filetypes.has(a[1])){await o();return}b.onDidOpenTextDocument(u=>{u.languageId==a[1]&&o()},null,n)}else if(l=="onCommand")pe.onCommandList.push(a[1]),M.on("Command",async u=>{u==a[1]&&(await o(),await ht(500))},null,n);else if(l=="workspaceContains"){let u=async()=>{let f=b.workspaceFolders.map(d=>j.parse(d.uri).fsPath);for(let d of f)if(Os(d,a[1].split(/\s+/)))return await o(),!0};if(await u())return;b.onDidChangeWorkspaceFolders(u,null,n)}else if(l=="onFileSystem"){for(let u of b.documents)if(j.parse(u.uri).scheme==a[1]){await o();return}b.onDidOpenTextDocument(u=>{j.parse(u.uri).scheme==a[1]&&o()},null,n)}else T.showMessage(`Unsupported event ${s} of ${e}`,"error")}}createExtension(e,t,r){let n=t.name,o=!1,s,a=We.default.join(e,t.main||"index.js"),l,u=[],c={activate:()=>{if(s)return s;let d={subscriptions:u,extensionPath:e,globalState:this.memos.createMemento(`${n}|global`),workspaceState:this.memos.createMemento(`${n}|${b.rootPath}`),asAbsolutePath:p=>We.default.join(e,p),storagePath:We.default.join(this.root,`${n}-data`),logger:vX(n)};if(!l)try{let p=!(t.engines||{}).hasOwnProperty("coc");l=fX(n,a,p)}catch(p){Jr.error(`Error on createExtension ${n} from ${a}`,p);return}return s=new Promise((p,h)=>{try{Promise.resolve(l.activate(d)).then(m=>{o=!0,p(m)},m=>{Jr.error(`Error on active extension ${n}: ${m.message}`,m),h(m)})}catch(m){Jr.error(`Error on active extension ${n}: ${m.stack}`,m),h(m)}}),s}};Object.defineProperties(c,{id:{get:()=>n,enumerable:!0},packageJSON:{get:()=>t,enumerable:!0},extensionPath:{get:()=>e,enumerable:!0},isActive:{get:()=>o,enumerable:!0},exports:{get:()=>exports,enumerable:!0}}),this.extensions.set(n,{id:n,type:r,isLocal:r==1,extension:c,directory:e,filepath:a,deactivate:()=>{if(!!o&&(s=void 0,o=!1,V(u),u.splice(0,u.length),u=[],l&&l.deactivate))try{return Promise.resolve(l.deactivate()).catch(d=>{Jr.error(`Error on ${n} deactivate: `,d)})}catch(d){Jr.error(`Error on ${n} deactivate: `,d)}}});let{contributes:f}=t;if(f){let{configuration:d,rootPatterns:p,commands:h}=f;if(d&&d.properties){let{properties:m}=d,w={};for(let v of Object.keys(m)){let D=m[v].default;D!=null&&(w[v]=D)}b.configurations.extendsDefaults(w)}if(p&&p.length)for(let m of p)b.addRootPattern(m.filetype,m.patterns);if(h&&h.length)for(let m of h)pe.titles.set(m.command,m.title)}this._onDidLoadExtension.fire(c),this.activated&&this.setupActiveEvents(n,t).logError()}filterGlobalExtensions(e){let t=new Map;e.forEach(s=>{let a=this.getExtensionName(s);a&&t.set(a,s)});let r=this.loadJson(),n=[],o=[];if(r&&r.dependencies)for(let s of Object.keys(r.dependencies)){let a=r.dependencies[s];typeof a=="string"&&Ct.default.existsSync(We.default.join(this.modulesFolder,s,"package.json"))&&(o.push(s),/^https?:/.test(a)&&n.push(a))}for(let s of t.keys()){if(this.disabled.has(s)||this.extensions.has(s)){t.delete(s);continue}(/^https?:/.test(s)&&n.some(a=>a.startsWith(s))||o.includes(s))&&t.delete(s)}return Array.from(t.values())}getExtensionName(e){return/^https?:/.test(e)||!e.includes("@")?e:e.replace(/@[\d.]+$/,"")}get modulesFolder(){return We.default.join(this.root,global.hasOwnProperty("__TEST__")?"":"node_modules")}canActivate(e){return!this.disabled.has(e)&&this.extensions.has(e)}async unloadExtension(e){this.extensions.get(e)&&(await this.deactivate(e),this.extensions.delete(e),this._onDidUnloadExtension.fire(e))}checkDirectory(e){try{let t=We.default.join(e,"package.json");if(!Ct.default.existsSync(t))throw new Error("package.json not found");let r=JSON.parse(Ct.default.readFileSync(t,"utf8")),{name:n,engines:o,main:s}=r;if(!n||!o)throw new Error("can't find name & engines in package.json");if(!o||!Wt(o))throw new Error(`invalid engines in ${t}`);if(s&&!Ct.default.existsSync(We.default.join(e,s)))throw new Error(`main file ${s} not found, you may need to build the project.`);let a=Object.keys(o);if(!a.includes("coc")&&!a.includes("vscode"))throw new Error("Engines in package.json doesn't have coc or vscode");if(a.includes("coc")){let l=o.coc.replace(/^\^/,">=");if(!mX.default.satisfies(b.version,l))throw new Error(`Please update coc.nvim, ${r.name} requires coc.nvim ${o.coc}`)}return!0}catch(t){return t}}dispose(){V(this.disposables)}},xe=new yX});var zJe,hn,uf=I(()=>{en();xt();Z();zJe=W()("model-source"),hn=class{constructor(e){this._disabled=!1;this.nvim=b.nvim,this.name=e.name,this.filepath=e.filepath||"",this.sourceType=e.sourceType||ai.Native,this.isSnippet=!!e.isSnippet,this.defaults=e}get priority(){return this.getConfig("priority",1)}get triggerOnly(){let e=this.defaults.triggerOnly;return typeof e=="boolean"?e:!this.triggerCharacters&&!this.triggerPatterns?!1:Array.isArray(this.triggerPatterns)&&this.triggerPatterns.length!=0}get triggerCharacters(){return this.getConfig("triggerCharacters",null)}get optionalFns(){return this.defaults.optionalFns||[]}get triggerPatterns(){let e=this.getConfig("triggerPatterns",null);return!e||e.length==0?null:e.map(t=>typeof t=="string"?new RegExp(t+"$"):t)}get shortcut(){let e=this.getConfig("shortcut","");return e||this.name.slice(0,3)}get enable(){return this._disabled?!1:this.getConfig("enable",!0)}get filetypes(){return this.getConfig("filetypes",null)}get disableSyntaxes(){return this.getConfig("disableSyntaxes",[])}getConfig(e,t){let r=b.getConfiguration(`coc.source.${this.name}`);return t=this.defaults.hasOwnProperty(e)?this.defaults[e]:t,r.get(e,t)}toggle(){this._disabled=!this._disabled}get firstMatch(){return this.getConfig("firstMatch",!0)}get menu(){let{shortcut:e}=this;return e?`[${e}]`:""}filterWords(e,t){let{firstMatch:r}=this,n=[],{input:o}=t,s=t.word;if(!o.length)return[];let a=o[0];for(let l of e)!l||l.length<3||r&&a!=l[0]||!r&&a.toLowerCase()!=l[0].toLowerCase()||l==s||l==o||n.push(l);return n}fixStartcol(e,t){let{col:r,input:n,line:o,bufnr:s}=e,a=Zt(o,0,r),l=b.getDocument(s);if(!l)return r;let{chars:u}=l;for(let c=a.length-1;c>=0;c--){let f=a[c];if(!u.isKeywordChar(f)&&!t.includes(f))break;n=`${f}${n}`,r=r-1}return e.col=r,e.input=n,r}async shouldComplete(e){let{disableSyntaxes:t}=this;if(e.synname&&t&&t.length){let n=(e.synname||"").toLowerCase();if(t.findIndex(o=>n.includes(o.toLowerCase()))!==-1)return!1}let r=this.defaults.shouldComplete;return r?await Promise.resolve(r.call(this,e)):!0}async refresh(){let e=this.defaults.refresh;e&&await Promise.resolve(e.call(this))}async onCompleteDone(e,t){let r=this.defaults.onCompleteDone;r&&await Promise.resolve(r.call(this,e,t))}async doComplete(e,t){let r=this.defaults.doComplete;return r?await Promise.resolve(r.call(this,e,t)):null}}});var ZJe,Nw,bX=I(()=>{nf();xt();Z();Te();uf();ZJe=W()("model-source-vim"),Nw=class extends hn{async callOptinalFunc(e,t){if(!this.optionalFns.includes(e))return null;let n=`coc#source#${this.name}#${e}`,o;try{o=await this.nvim.call(n,t)}catch(s){return T.showMessage(`Vim error from source ${this.name}: ${s.message}`,"error"),null}return o}async shouldComplete(e){return await super.shouldComplete(e)?this.optionalFns.includes("should_complete")?!!await this.callOptinalFunc("should_complete",[e]):!0:!1}async refresh(){await this.callOptinalFunc("refresh",[])}async onCompleteDone(e,t){await super.onCompleteDone(e,t),!!this.optionalFns.includes("on_complete")&&await this.callOptinalFunc("on_complete",[e])}onEnter(e){if(!this.optionalFns.includes("on_enter"))return;let t=b.getDocument(e);if(!t)return;let{filetypes:r}=this;r&&!r.includes(t.filetype)||this.callOptinalFunc("on_enter",[{bufnr:e,uri:t.uri,languageId:t.filetype}]).logError()}async doComplete(e,t){let{col:r,input:n,line:o,colnr:s}=e,a=await this.callOptinalFunc("get_startcol",[e]);if(t.isCancellationRequested)return;if(a){if(a<0)return null;a=Number(a),(isNaN(a)||a<0)&&(a=r),a!==r&&(n=Zt(o,a,s-1),e=Object.assign({},e,{col:a,changed:r-a,input:n}))}let l=await this.nvim.callAsync("coc#util#do_complete",[this.name,e]);if(!l||l.length==0||t.isCancellationRequested)return null;if(this.firstMatch&&n.length){let c=n[0];l=l.filter(f=>{let d=f.filterText?f.filterText[0]:f.word[0];return Fh(c,d)})}l=l.map(c=>{if(typeof c=="string")return{word:c,menu:this.menu,isSnippet:this.isSnippet};let f=c.menu?c.menu+" ":"";return c.menu=`${f}${this.menu}`,c.isSnippet=this.isSnippet,delete c.user_data,c});let u={items:l};return a&&(u.startcol=a),u}}});var DX={};ns(DX,{default:()=>qw,regist:()=>b_e});function b_e(i){return i.set("around",new qw),wX.Disposable.create(()=>{i.delete("around")})}var wX,rYe,qw,xX=I(()=>{wX=C(G());uf();Z();rYe=W()("source-around"),qw=class extends hn{constructor(){super({name:"around",filepath:__filename})}doComplete(e){let{bufnr:t,input:r}=e;if(r.length===0)return null;let n=b.getDocument(t);if(!n)return null;let o=n.words,s=n.getMoreWords();return o.push(...s),o=this.filterWords(o,e),Promise.resolve({items:o.map(a=>({word:a,menu:this.menu}))})}}});var EX={};ns(EX,{default:()=>$w,regist:()=>w_e});function w_e(i){return i.set("buffer",new $w),SX.Disposable.create(()=>{i.delete("buffer")})}var SX,oYe,$w,CX=I(()=>{SX=C(G());uf();Z();oYe=W()("source-buffer"),$w=class extends hn{constructor(){super({name:"buffer",filepath:__filename})}get ignoreGitignore(){return this.getConfig("ignoreGitignore",!0)}getWords(e){let{ignoreGitignore:t}=this,r=[];return b.documents.forEach(n=>{if(n.bufnr!=e&&!(t&&n.isIgnored))for(let o of n.words)r.includes(o)||r.push(o)}),r}doComplete(e){let{bufnr:t,input:r}=e;if(r.length==0)return null;let n=this.getWords(t);return n=this.filterWords(n,e),Promise.resolve({items:n.map(o=>({word:o,menu:this.menu}))})}}});var RX={};ns(RX,{default:()=>jw,regist:()=>S_e});function S_e(i){return i.set("file",new jw),PX.Disposable.create(()=>{i.delete("file")})}var Bw,_X,Oi,TX,PX,D_e,x_e,jw,kX=I(()=>{Bw=C(require("fs")),_X=C(Fs()),Oi=C(require("path")),TX=C(require("util")),PX=C(G());uf();zt();xt();Z();D_e=W()("source-file"),x_e=/(?:\.{0,2}|~|\$HOME|([\w]+)|[a-zA-Z]:|)(\/|\\)(?:[\w.@()-]+(\/|\\))*(?:[\w.@()-])*$/,jw=class extends hn{constructor(){super({name:"file",filepath:__filename})}resolveEnvVariables(e){let t=e;return t=t.replace(/%([^%]+)%/g,(r,n)=>process.env[n]),t=t.replace(/\$([A-Z_]+[A-Z0-9_]*)|\${([A-Z0-9_]*)}/gi,(r,n,o)=>process.env[n||o]),t}getPathOption(e){let{line:t,colnr:r}=e,n=Zt(t,0,r-1);if(n=this.resolveEnvVariables(n),!n||n.endsWith("//"))return null;let o=n.match(x_e);if(o&&o.length){let s=b.expand(o[0]),a=o[0].match(/[^/\\]*$/)[0];return{pathstr:s,part:o[1],startcol:r-a.length-1,input:a}}return null}async getFileItem(e,t){let r=Oi.default.join(e,t),n=await Nt(r);if(n){let o=n.isDirectory()?t+"/":t;return{word:t,abbr:o}}return null}filterFiles(e){let t=this.getConfig("ignoreHidden",!0),r=this.getConfig("ignorePatterns",[]);return e.filter(n=>{if(n==null||t&&n.startsWith("."))return!1;for(let o of r)if((0,_X.default)(n,o,{dot:!0}))return!1;return!0})}async getItemsFromRoot(e,t){let r=[],n=e.endsWith("/")?e:Oi.default.dirname(e),o=Oi.default.isAbsolute(e)?n:Oi.default.join(t,n);try{let s=await Nt(o);if(s&&s.isDirectory()){let a=await TX.default.promisify(Bw.default.readdir)(o);a=this.filterFiles(a);let l=await Promise.all(a.map(u=>this.getFileItem(o,u)));r=r.concat(l)}return r=r.filter(a=>a!=null),r}catch(s){return D_e.error("Error on list files:",s),r}}get trimSameExts(){return this.getConfig("trimSameExts",[])}async doComplete(e){let{col:t,filepath:r}=e,n=this.getPathOption(e);if(!n)return null;let{pathstr:o,part:s,startcol:a,input:l}=n;if(av.word[0]===w)),{items:h.map(v=>{let D=Oi.default.extname(v.word);return v.word=m&&D===f?v.word.replace(f,""):v.word,{word:`${u}${v.word}`,abbr:`${u}${v.abbr}`,menu:this.menu}})}}}});var IX,FX,Uw,OX,AX,LX,MX,nt,_l=I(()=>{IX=C(nc()),FX=C(require("fs")),Uw=C(require("path")),OX=C(require("util")),AX=C(G());Ne();na();uf();bX();en();be();zt();U_();Z();Te();xt();LX=W()("sources"),MX=class{constructor(){this.sourceMap=new Map;this.disposables=[];this.remoteSourcePaths=[]}get nvim(){return b.nvim}createNativeSources(){try{this.disposables.push((xX(),DX).regist(this.sourceMap)),this.disposables.push((CX(),EX).regist(this.sourceMap)),this.disposables.push((kX(),RX).regist(this.sourceMap))}catch(e){console.error("Create source error:"+e.message)}}async createVimSourceExtension(e,t){let r=Uw.default.basename(t,".vim");try{await e.command(`source ${t}`);let n=await e.call("coc#util#remote_fns",r);for(let c of["init","complete"])if(!n.includes(c))return T.showMessage(`${c} not found for source ${r}`,"error"),null;let o=await e.call(`coc#source#${r}#init`,[]),s={name:`coc-source-${r}`,engines:{coc:">= 0.0.1"},activationEvents:o.filetypes?o.filetypes.map(c=>`onLanguage:${c}`):["*"],contributes:{configuration:{properties:{[`coc.source.${r}.enable`]:{type:"boolean",default:!0},[`coc.source.${r}.firstMatch`]:{type:"boolean",default:!!o.firstMatch},[`coc.source.${r}.triggerCharacters`]:{type:"number",default:o.triggerCharacters||[]},[`coc.source.${r}.priority`]:{type:"number",default:o.priority||9},[`coc.source.${r}.shortcut`]:{type:"string",default:o.shortcut||r.slice(0,3).toUpperCase(),description:"Shortcut text shown in complete menu."},[`coc.source.${r}.disableSyntaxes`]:{type:"array",default:[],items:{type:"string"}},[`coc.source.${r}.filetypes`]:{type:"array",default:o.filetypes||null,description:"Enabled filetypes.",items:{type:"string"}}}}}},a=new Nw({name:r,filepath:t,sourceType:ai.Remote,optionalFns:n.filter(c=>!["init","complete"].includes(c))}),l=!1,u={id:s.name,packageJSON:s,exports:void 0,extensionPath:t,activate:()=>(l=!0,this.addSource(a),Promise.resolve())};Object.defineProperty(u,"isActive",{get:()=>l}),xe.registerExtension(u,()=>{l=!1,this.removeSource(a)})}catch(n){T.showMessage(`Error on create vim source ${r}: ${n.message}`,"error")}}createRemoteSources(){let{runtimepath:e}=b.env,t=e.split(",");for(let r of t)this.createVimSources(r).logError()}async createVimSources(e){if(this.remoteSourcePaths.includes(e))return;this.remoteSourcePaths.push(e);let t=Uw.default.join(e,"autoload/coc/source"),r=await Nt(t);if(r&&r.isDirectory()){let n=await OX.default.promisify(FX.default.readdir)(t);n=n.filter(s=>s.endsWith(".vim"));let o=n.map(s=>Uw.default.join(t,s));if(o.length==0)return;await Promise.all(o.map(s=>this.createVimSourceExtension(this.nvim,s)))}}init(){this.createNativeSources(),this.createRemoteSources(),M.on("BufEnter",this.onDocumentEnter,this,this.disposables),b.watchOption("runtimepath",async(e,t)=>{let r=(0,IX.default)(e,t);for(let[n,o]of r)if(n==1){let s=o.replace(/,$/,"").split(",");for(let a of s)a&&await this.createVimSources(a)}},this.disposables)}get names(){return Array.from(this.sourceMap.keys())}get sources(){return Array.from(this.sourceMap.values())}has(e){return this.names.findIndex(t=>t==e)!=-1}getSource(e){return e&&this.sourceMap.get(e)||null}async doCompleteResolve(e,t){let r=this.getSource(e.source);if(r&&typeof r.onCompleteResolve=="function")try{await Promise.resolve(r.onCompleteResolve(e,t))}catch(n){LX.error("Error on complete resolve:",n.stack)}}async doCompleteDone(e,t){let r=JSON.parse(e.user_data),n=this.getSource(r.source);n&&typeof n.onCompleteDone=="function"&&await Promise.resolve(n.onCompleteDone(e,t))}shouldCommit(e,t){if(!e||!e.source)return!1;let r=this.getSource(e.source);return r&&r.sourceType==ai.Service&&typeof r.shouldCommit=="function"?r.shouldCommit(e,t):!1}getCompleteSources(e){let{filetype:t}=e,r=Zt(e.line,0,e.colnr-1),n=e.input==""&&!!e.triggerCharacter,o=Cg(e.filepath,e.bufnr,"",b.env.isCygwin);return n?this.getTriggerSources(r,t,o):this.getNormalSources(e.filetype,o)}getNormalSources(e,t){return this.sources.filter(r=>{let{filetypes:n,triggerOnly:o,documentSelector:s,enable:a}=r;return!(!a||o||n&&!n.includes(e)||s&&hc(s,t,e)==0||this.disabledByLanguageId(r,e))})}checkTrigger(e,t,r){let{triggerCharacters:n,triggerPatterns:o}=e;return!n&&!o?!1:!!(r&&n&&n.includes(r)||o&&o.findIndex(s=>s.test(t))!==-1)}shouldTrigger(e,t,r){return this.getTriggerSources(e,t,r).length>0}getTriggerSources(e,t,r){let n=e.length?e[e.length-1]:"";return n?this.sources.filter(o=>{let{filetypes:s,enable:a,documentSelector:l}=o;return!a||s&&!s.includes(t)||l&&hc(l,r,t)==0||this.disabledByLanguageId(o,t)?!1:this.checkTrigger(o,e,n)}):[]}addSource(e){let{name:t}=e;return this.names.includes(t)&&LX.warn(`Recreate source ${t}`),this.sourceMap.set(t,e),AX.Disposable.create(()=>{this.sourceMap.delete(t)})}removeSource(e){let t=typeof e=="string"?e:e.name;this.sourceMap.delete(t)}async refresh(e){for(let t of this.sources)(!e||t.name==e)&&typeof t.refresh=="function"&&await Promise.resolve(t.refresh())}toggleSource(e){if(!e)return;let t=this.getSource(e);!t||typeof t.toggle=="function"&&t.toggle()}sourceStats(){let e=[],t=this.sources;for(let r of t)e.push({name:r.name,priority:r.priority,triggerCharacters:r.triggerCharacters||[],shortcut:r.shortcut||"",filetypes:r.filetypes||[],filepath:r.filepath||"",type:r.sourceType==ai.Native?"native":r.sourceType==ai.Remote?"remote":"service",disabled:!r.enable});return e}onDocumentEnter(e){let{sources:t}=this;for(let r of t)!r.enable||typeof r.onEnter=="function"&&r.onEnter(e)}createSource(e){if(!e.name||!e.doComplete){console.error("name and doComplete required for createSource");return}let t=new hn(Object.assign({sourceType:ai.Service},e));return this.addSource(t)}disabledByLanguageId(e,t){let r=b.env.disabledSources,n=r?r[t]:[];return Array.isArray(n)&&n.includes(e.name)}dispose(){V(this.disposables)}},nt=new MX});function NX(i=0,e){for(let t=i;t=65&&i<=90}function $X(i,e){if(i==0)return!0;let t=e[i];if(!Ih(t))return!1;let r=e[i-1];return!!(!Ih(r)||qX(t)&&!qX(r))}function BX(i,e){if(e.length==0||i.length=i.length)return 0;let n=[],o=t[0],s=i.length,a=t.length==1;if(!Ih(o)){for(let c=e;c{nf()});var Ol,Ww,E_e,Hw,UX=I(()=>{Ol=C(G());nf();xt();jX();Ww=W()("completion-complete"),E_e=500,Hw=class{constructor(e,t,r,n,o,s){this.option=e;this.document=t;this.config=n;this.sources=o;this.nvim=s;this.results=[];this.completing=new Set;this._canceled=!1;this.tokenSources=new Map;this._onDidComplete=new Ol.Emitter;this.onDidComplete=this._onDidComplete.event;Object.defineProperty(this,"recentScores",{get:()=>r||{}})}get isCompleting(){return this.completing.size>0}get isCanceled(){return this._canceled}get isEmpty(){return this.results.length==0}get startcol(){return this.option.col||0}get input(){return this.option.input}get isIncomplete(){return this.results.findIndex(e=>e.isIncomplete)!==-1}async completeSource(e){let{col:t}=this.option,r=Object.assign({},this.option),n=this.config.timeout;n=Math.max(Math.min(n,15e3),500);try{if(typeof e.shouldComplete=="function"&&!await Promise.resolve(e.shouldComplete(r)))return null;let o=Date.now(),s=this.tokenSources.get(e.name);s&&s.cancel();let a=new Ol.CancellationTokenSource;this.tokenSources.set(e.name,a),await new Promise((l,u)=>{let{name:c}=e,f=setTimeout(()=>{this.nvim.command(`echohl WarningMsg| echom 'source ${e.name} timeout after ${n}ms'|echohl None`,!0),a.cancel()},n),d=!1,p=!1,h=!1,m=setTimeout(()=>{p||(h=!0,l(void 0))},E_e),w=()=>{p||(p=!0,v.dispose(),clearTimeout(m),clearTimeout(f),this.tokenSources.delete(c))},v=a.token.onCancellationRequested(()=>{v.dispose(),this.completing.delete(c),d=!0,w(),Ww.debug(`Source "${c}" cancelled`),l(void 0)});this.completing.add(c),Promise.resolve(e.doComplete(r,a.token)).then(D=>{if(this.completing.delete(c),d)return;w();let x=Date.now()-o;if(Ww.debug(`Source "${c}" takes ${x}ms`),D&&D.items&&D.items.length){if(D.priority=e.priority,D.source=c,h&&D.startcol&&D.startcol!=t)this.results=[D];else{let{results:S}=this,P=S.findIndex(A=>A.source==c);P!=-1?S.splice(P,1,D):S.push(D)}h&&this._onDidComplete.fire(),l(void 0)}else l(void 0)},D=>{this.completing.delete(c),w(),u(D)})})}catch(o){this.nvim.command(`echoerr 'Complete ${e.name} error: ${o.message.replace(/'/g,"''")}'`,!0),Ww.error("Complete error:",e.name,o)}}async completeInComplete(e){let{results:t,document:r}=this;t.filter(f=>!f.isIncomplete).forEach(f=>{f.items.forEach(d=>delete d.user_data)});let s=t.filter(f=>f.isIncomplete).map(f=>f.source),{input:a,colnr:l,linenr:u}=this.option;Object.assign(this.option,{input:e,line:r.getline(u-1),colnr:l+(e.length-a.length),triggerCharacter:null,triggerForInComplete:!0});let c=this.sources.filter(f=>s.includes(f.name));return await Promise.all(c.map(f=>this.completeSource(f))),this.filterResults(e,Math.floor(Date.now()/1e3))}filterResults(e,t=0){let{results:r}=this;r.sort((h,m)=>h.source=="tabnine"?1:m.source=="tabnine"?-1:m.priority-h.priority);let n=Date.now(),{bufnr:o}=this.option,{snippetIndicator:s,removeDuplicateItems:a,fixInsertedWord:l,asciiCharactersOnly:u}=this.config,c=!l||t==0?"":this.getFollowPart();if(r.length==0)return[];let f=[],d=Xo(e),p=new Set;for(let h=0,m=r.length;h{let w=h.sortText,v=m.sortText,D=h.filterText,x=m.filterText;if(h.score!=m.score)return m.score-h.score;if(h.priority!=m.priority)return m.priority-h.priority;if(w&&v&&w!=v)return w{let{priority:s,source:a}=o,l=s<90,u=n.get(a)||0;return r&&l&&u==r||t&&!l&&u==t?!1:(n.set(a,u+1),!0)})}hasMatch(e){let{results:t}=this;if(!t)return!1;let r=Xo(e);for(let n=0,o=t.length;nrf(r,l.filterText||l.word))!==-1)return!0;return!1}async doComplete(){let e=this.option,{line:t,colnr:r,linenr:n,col:o}=this.option;if(this.config.localityBonus){let l=n-1;this.localBonus=this.document.getLocalifyBonus(Ol.Position.create(l,e.col-1),Ol.Position.create(l,r))}else this.localBonus=new Map;await Promise.all(this.sources.map(l=>this.completeSource(l)));let{results:s}=this;if(s.length==0)return[];let a=s.find(l=>l.startcol!=null&&l.startcol!=o);if(a){let{startcol:l}=a;e.col=l,e.input=Zt(t,l,r-1),this.results=[a]}return Ww.info(`Results from: ${this.results.map(l=>l.source).join(",")}`),this.filterResults(e.input,Math.floor(Date.now()/1e3))}resolveCompletionItem(e){let{results:t}=this;if(!t)return null;try{if(e.user_data){let{source:r}=JSON.parse(e.user_data);return t.find(o=>o.source==r).items.find(o=>o.user_data==e.user_data)}for(let r of t){let n=r.items.find(o=>o.abbr==e.abbr&&o.info==e.info);if(n)return n}return null}catch(r){return null}}getFollowPart(){let{colnr:e,line:t}=this.option,r=el(t,e-1);return r==t.length?"":t.slice(r-t.length).match(/^\S?[\w-]*/)[0]}dispose(){if(!this._canceled){this._onDidComplete.dispose(),this._canceled=!0;for(let e of this.tokenSources.values())e.cancel();this.tokenSources.clear(),this.sources=[],this.results=[]}}}});var NYe,zw,WX=I(()=>{YC();NYe=W()("floating"),zw=class{constructor(e,t){this.nvim=e;this.isVim=t;this.winid=0;this.bufnr=0}async show(e,t,r,n){let{nvim:o}=this;e=e.filter(c=>c.content.trim().length>0);let{lines:s,codes:a,highlights:l}=Fv(e,{excludeImages:r.excludeImages});if(s.length==0){this.close();return}let u=await o.call("coc#float#create_pum_float",[this.winid,this.bufnr,s,{codes:a,highlights:l,maxWidth:r.maxPreviewWidth,pumbounding:t}]);if(this.isVim&&o.command("redraw",!0),!(!u||u.length==0)&&(this.winid=u[0],this.bufnr=u[1],n.isCancellationRequested)){this.close();return}}close(){let{winid:e,nvim:t}=this;this.winid=0,!!e&&(t.call("coc#float#close",[e],!0),this.isVim&&t.command("redraw",!0))}}});var Gw,HX,Al,C_e,zX,sa,NR=I(()=>{Gw=C(G());Ne();_l();be();Vi();Z();UX();WX();HX=C(zr());xt();ni();Al=W()("completion"),C_e=["abbr","menu","info","kind","icase","dup","empty","user_data"],zX=class{constructor(){this.activated=!1;this.disposables=[];this.complete=null;this.recentScores={};this.changedTick=0;this.insertCharTs=0;this.insertLeaveTs=0}init(){this.config=this.getCompleteConfig(),b.onDidChangeConfiguration(t=>{t.affectsConfiguration("suggest")&&(this.config=this.getCompleteConfig())},null,this.disposables),b.watchOption("completeopt",async(t,r)=>{if(b.env.completeOpt=r,!!this.isActivated&&this.config.autoTrigger==="always"){let o=(await this.nvim.call("execute",["verbose set completeopt"])).split(/\r?\n/);console.error(`Some plugin change completeopt during completion: ${o[o.length-1].trim()}!`)}},this.disposables),this.excludeImages=b.getConfiguration("coc.preferences").get("excludeImageLinksInMarkdownDocument"),this.floating=new zw(b.nvim,b.env.isVim),M.on(["InsertCharPre","MenuPopupChanged","TextChangedI","CursorMovedI","InsertLeave"],()=>{this.triggerTimer&&(clearTimeout(this.triggerTimer),this.triggerTimer=null)},this,this.disposables),M.on("InsertCharPre",this.onInsertCharPre,this,this.disposables),M.on("InsertLeave",this.onInsertLeave,this,this.disposables),M.on("InsertEnter",this.onInsertEnter,this,this.disposables),M.on("TextChangedP",this.onTextChangedP,this,this.disposables),M.on("TextChangedI",this.onTextChangedI,this,this.disposables);let e=(0,HX.default)(this.onPumChange.bind(this),20);this.disposables.push({dispose:()=>{e.clear()}}),M.on("CompleteDone",async t=>{this.popupEvent=null,!!this.activated&&(e.clear(),this.cancelResolve(),this.floating.close(),await this.onCompleteDone(t))},this,this.disposables),this.cancelResolve(),M.on("MenuPopupChanged",t=>{!this.activated||this.isCommandLine||ut(this.popupEvent,t)||(this.cancelResolve(),this.popupEvent=t,e())},this,this.disposables)}get nvim(){return b.nvim}get option(){return this.complete?this.complete.option:null}get selectedItem(){if(!this.popupEvent)return null;let{completed_item:e}=this.popupEvent;return _g(e)?e:null}get isCommandLine(){var e;return(e=this.document)==null?void 0:e.uri.endsWith("%5BCommand%20Line%5D")}addRecent(e,t){!e||(this.recentScores[`${t}|${e}`]=Date.now())}get isActivated(){return this.activated}get document(){return this.option?b.getDocument(this.option.bufnr):null}getCompleteConfig(){let e=b.getConfiguration("suggest");function t(a,l){return e.get(a,l)}let r=t("keepCompleteopt",!1),n=t("autoTrigger","always");if(r&&n!="none"){let{completeOpt:a}=b;!a.includes("noinsert")&&!a.includes("noselect")&&(n="none")}let o=b.floatSupported&&t("floatEnable",!0),s=b.env.pumevent&&t("acceptSuggestionOnCommitCharacter",!1);return{autoTrigger:n,floatEnable:o,keepCompleteopt:r,defaultSortMethod:t("defaultSortMethod","length"),removeDuplicateItems:t("removeDuplicateItems",!1),disableMenuShortcut:t("disableMenuShortcut",!1),acceptSuggestionOnCommitCharacter:s,disableKind:t("disableKind",!1),disableMenu:t("disableMenu",!1),previewIsKeyword:t("previewIsKeyword","@,48-57,_192-255"),enablePreview:t("enablePreview",!1),enablePreselect:t("enablePreselect",!1),maxPreviewWidth:t("maxPreviewWidth",80),triggerCompletionWait:t("triggerCompletionWait",100),labelMaxLength:t("labelMaxLength",200),triggerAfterInsertEnter:t("triggerAfterInsertEnter",!1),noselect:t("noselect",!0),numberSelect:t("numberSelect",!1),maxItemCount:t("maxCompleteItemCount",50),timeout:t("timeout",500),minTriggerInputLength:t("minTriggerInputLength",1),snippetIndicator:t("snippetIndicator","~"),fixInsertedWord:t("fixInsertedWord",!0),localityBonus:t("localityBonus",!0),highPrioritySourceLimit:t("highPrioritySourceLimit",null),lowPrioritySourceLimit:t("lowPrioritySourceLimit",null),asciiCharactersOnly:t("asciiCharactersOnly",!1)}}async startCompletion(e){this.pretext=Zt(e.line,0,e.colnr-1);try{await this._doComplete(e)}catch(t){this.stop(),Al.error("Complete error:",t.stack)}}async resumeCompletion(e=!1){let{document:t,complete:r}=this;if(!t||r.isCanceled||!r.results||r.results.length==0)return;let n=this.getResumeInput();if(n==this.input&&!e)return;if(!n||n.endsWith(" ")||!n.startsWith(r.input)){this.stop();return}this.input=n;let o=[];if(r.isIncomplete){await t.patchChange();let{changedtick:s}=t;if(o=await r.completeInComplete(n),r.isCanceled||t.changedtick!=s)return}else o=r.filterResults(n);if(!r.isCompleting&&o.length===0){this.stop();return}await this.showCompletion(r.option.col,o)}hasSelected(){return b.env.pumevent?this.selectedItem!=null:!this.config.noselect}async showCompletion(e,t){let{nvim:r,document:n,option:o}=this,{numberSelect:s,disableKind:a,labelMaxLength:l,disableMenuShortcut:u,disableMenu:c}=this.config,f=this.config.enablePreselect?t.findIndex(h=>h.preselect):-1;s&&o.input.length&&!/^\d/.test(o.input)&&(t=t.map((h,m)=>{let w=m+1;return m<9?Object.assign({},h,{abbr:h.abbr?`${w} ${h.abbr}`:`${w} ${h.word}`}):h}),r.call("coc#_map",[],!0)),this.changedTick=n.changedtick;let d=C_e.slice();a&&(d=d.filter(h=>h!="kind")),c&&(d=d.filter(h=>h!="menu"));let p=t.map(h=>{let m={word:h.word,equal:1};for(let w of d)h.hasOwnProperty(w)&&(u&&w=="menu"?m[w]=h[w].replace(/\[.+\]$/,""):w=="abbr"&&h[w].length>l?m[w]=h[w].slice(0,l):m[w]=h[w]);return m});r.call("coc#_do_complete",[e,p,f],!0)}async _doComplete(e){let{source:t}=e,{nvim:r,config:n}=this,o=b.getDocument(e.bufnr);if(!o||!o.attached)return;e.filetype=o.filetype,this.input=e.input;let s=[];if(t==null)s=nt.getCompleteSources(e);else{let u=nt.getSource(t);u&&s.push(u)}if(!s.length||(await o.patchChange(),o.changedtick!=e.changedtick))return;let a=new Hw(e,o,this.recentScores,n,s,r);this.start(a);let l=await this.complete.doComplete();if(!a.isCanceled){if(l.length==0&&!a.isCompleting){this.stop();return}a.onDidComplete(async()=>{if(this.selectedItem!=null)return;let u=this.getResumeInput();if(a.isCanceled||u==null)return;let{input:c}=this.option;if(u==c){let f=a.filterResults(u,Math.floor(Date.now()/1e3));await this.showCompletion(e.col,f)}else await this.resumeCompletion()}),l.length&&(this.getResumeInput()==e.input?await this.showCompletion(e.col,l):await this.resumeCompletion(!0))}}async onTextChangedP(e,t){let{option:r,document:n}=this,o=this.pretext=t.pre;if(!r||r.bufnr!=e||t.changedtick==this.changedTick)return;let s=this.latestInsert!=null;if(this.lastInsert=null,t.pre.match(/^\s*/)[0]!==r.line.match(/^\s*/)[0]){Al.warn("Complete stopped by indent change."),this.stop(!1);return}!s||!o||(nt.shouldTrigger(o,n.filetype,n.uri)?await this.triggerCompletion(n,o):await this.resumeCompletion())}async onTextChangedI(e,t){let{nvim:r,latestInsertChar:n,option:o}=this,s=this.pretext==t.pre,a=this.pretext=t.pre;this.lastInsert=null;let l=b.getDocument(e);if(!!l){if(!this.activated){if(!n)return;if(nt.getTriggerSources(a,l.filetype,l.uri).length){await this.triggerCompletion(l,this.pretext);return}this.triggerTimer=setTimeout(async()=>{await this.triggerCompletion(l,a)},this.config.triggerCompletionWait);return}if(!(!o||e!=o.bufnr)){if(o.linenr!=t.lnum||o.col>=t.col-1){this.stop();return}if(s&&!n){this.stop(!1);return}if(a&&this.selectedItem&&this.config.acceptSuggestionOnCommitCharacter&&n){let u=this.getCompleteItem(this.selectedItem),c=a[a.length-1];if(nt.shouldCommit(u,c)){let{linenr:f,col:d,line:p,colnr:h}=this.option;this.stop();let{word:m}=u,w=`${p.slice(0,d)}${m}${n}${p.slice(h-1)}`;await r.call("coc#util#setline",[f,w]);let v=d+m.length+2;await r.call("cursor",[f,v]),await l.patchChange();return}}nt.shouldTrigger(a,l.filetype,l.uri)?await this.triggerCompletion(l,a):await this.resumeCompletion()}}}async triggerCompletion(e,t){if(!e||!e.attached){Al.warn("Document not attached, suggest disabled.");return}if(!this.shouldTrigger(e,t))return;if(e.getVar("suggest_disable")){Al.warn("Suggest disabled by b:coc_suggest_disable");return}await e.patchChange();let[n,o]=await this.nvim.eval('[get(b:,"coc_suggest_disable",0),coc#util#get_complete_option()]');if(n==1){Al.warn("Suggest disabled by b:coc_suggest_disable");return}if(o.blacklist&&o.blacklist.includes(o.input)){Al.warn("Suggest disabled by b:coc_suggest_blacklist",o.blacklist);return}t.length&&(o.triggerCharacter=t.slice(-1)),Al.debug("trigger completion with",o),await this.startCompletion(o)}async onCompleteDone(e){let{document:t,isActivated:r}=this;if(!r||!t||!_g(e))return;let n=Object.assign({},this.option),o=this.getCompleteItem(e);if(this.stop(),!o)return;let s=this.insertCharTs,a=this.insertLeaveTs,l=new Gw.CancellationTokenSource;if(await nt.doCompleteResolve(o,l.token),l.dispose(),this.addRecent(o.word,t.bufnr),await ht(50),this.insertCharTs!=s||this.insertLeaveTs!=a)return;let[u,c,f]=await this.nvim.eval("[pumvisible(),line('.'),strpart(getline('.'), 0, col('.') - 1)]");u||c!=n.linenr||this.activated||!f.endsWith(o.word)||(await t.patchChange(),await nt.doCompleteDone(o,n))}async onInsertLeave(){this.insertLeaveTs=Date.now(),this.stop(!1)}async onInsertEnter(e){if(!this.config.triggerAfterInsertEnter||this.config.autoTrigger!=="always")return;let t=b.getDocument(e);if(!t)return;let r=await this.nvim.eval("strpart(getline('.'), 0, col('.') - 1)");!r||await this.triggerCompletion(t,r)}async onInsertCharPre(e){this.lastInsert={character:e,timestamp:Date.now()},this.insertCharTs=this.lastInsert.timestamp}get latestInsert(){let{lastInsert:e}=this;return!e||Date.now()-e.timestamp>500?null:e}get latestInsertChar(){let{latestInsert:e}=this;return e?e.character:""}shouldTrigger(e,t){let r=this.config.autoTrigger;if(r=="none")return!1;if(nt.shouldTrigger(t,e.filetype,e.uri))return!0;if(r!=="always"||this.isActivated)return!1;let n=t.slice(-1);if(n&&(e.isWord(t.slice(-1))||n.codePointAt(0)>255)){let o=this.config.minTriggerInputLength;return o==1?!0:this.getInput(e,t).length>=o}return!1}async onPumChange(){if(!this.popupEvent)return;let{col:e,row:t,height:r,width:n,scrollbar:o}=this.popupEvent,s={col:e,row:t,height:r,width:n,scrollbar:o},a=this.getCompleteItem(this.selectedItem);if(!a){this.floating.close();return}let l=this.resolveTokenSource=new Gw.CancellationTokenSource,{token:u}=l;if(await nt.doCompleteResolve(a,u),this.resolveTokenSource==l&&(this.resolveTokenSource=null),l.dispose(),u.isCancellationRequested)return;let c=a.documentation;if(!c&&a.info){let{info:f}=a;c=[{filetype:/^[\w-\s.,\t]+$/.test(f)?"txt":this.document.filetype,content:f}]}if(!c||c.length==0)this.floating.close();else{if(this.config.floatEnable){let f=new Gw.CancellationTokenSource;await this.floating.show(c,s,{maxPreviewWidth:this.config.maxPreviewWidth,excludeImages:this.excludeImages},f.token)}this.isActivated||this.floating.close()}}start(e){let{activated:t}=this;this.activated=!0,t&&this.complete.dispose(),this.complete=e,this.config.keepCompleteopt||this.nvim.command(`noa set completeopt=${this.completeOpt}`,!0)}cancelResolve(){this.resolveTokenSource&&(this.resolveTokenSource.cancel(),this.resolveTokenSource=null)}stop(e=!0){let{nvim:t}=this;!this.activated||(this.cancelResolve(),this.floating.close(),this.activated=!1,this.complete&&(this.complete.dispose(),this.complete=null),t.pauseNotification(),e&&t.call("coc#_hide",[],!0),this.config.numberSelect&&t.call("coc#_unmap",[],!0),this.config.keepCompleteopt||t.command(`noa set completeopt=${b.completeOpt}`,!0),t.command("let g:coc#_context = {'start': 0, 'preselect': -1,'candidates': []}",!0),t.resumeNotification(!1,!0))}getInput(e,t){let r="";for(let n=t.length-1;n>=0;n--){let o=n==0?null:t[n-1];if(!o||!e.isWord(o)){r=t.slice(n,t.length);break}}return r}getResumeInput(){let{option:e,pretext:t}=this;if(!e)return null;let r=Buffer.from(t,"utf8");if(r.length{Zo=C(G());il();nr();Sy();xt();oXe=W()("snippets-snipet"),qR=class{constructor(e,t,r){this._snippetString=e;this.position=t;this._variableResolver=r;this._parser=new Bs}async init(){let e=this._parser.parse(this._snippetString,!0),{_variableResolver:t}=this;t&&await e.resolveVariables(t),this.tmSnippet=e,this.update()}adjustPosition(e,t){let{line:r,character:n}=this.position;this.position={line:r+t,character:n+e},this.update()}adjustTextEdit(e){let{range:t,newText:r}=e;if(Ue(this.range.start,t.end)<0||!r.includes(` `)&&Ue(t.start,t.end)==0&&Ue(this.range.start,t.start)==0&&this._placeholders.findIndex(s=>Ue(s.range.start,t.start)==0)!==-1)return!1;let n=XC(this.range.start,e);return n.line==0&&n.character==0||this.adjustPosition(n.character,n.line),!0}get isPlainText(){return this._placeholders.length>1?!1:this._placeholders.every(e=>e.value=="")}get finalCount(){return this._placeholders.filter(e=>e.isFinalTabstop).length}toString(){return this.tmSnippet.toString()}get range(){let{position:e}=this,t=this.tmSnippet.toString(),n=Qt.create("untitled:/1","snippet",0,t).positionAt(t.length),o=n.line==0?e.character+n.character:n.character;return Zo.Range.create(e,Zo.Position.create(e.line+n.line,o))}get firstPlaceholder(){let e=0;for(let t of this._placeholders)t.index!=0&&(e==0||t.indexe)&&(e=t.index);return this.getPlaceholder(e)}getPlaceholderById(e){return this._placeholders.find(t=>t.id==e)}getPlaceholder(e){let t=this._placeholders.filter(n=>n.index==e),r=t.filter(n=>!n.transform);return r.length?r[0]:t[0]}getPrevPlaceholder(e){if(e==0)return this.lastPlaceholder;let t=this.getPlaceholder(e-1);return t||this.getPrevPlaceholder(e-1)}getNextPlaceholder(e){let t=this._placeholders.map(o=>o.index),r=Math.max.apply(null,t);if(e>=r)return this.finalPlaceholder;let n=this.getPlaceholder(e+1);return n||this.getNextPlaceholder(e+1)}get finalPlaceholder(){return this._placeholders.find(e=>e.isFinalTabstop)}getPlaceholderByRange(e){return this._placeholders.find(t=>Xn(e,t.range))}insertSnippet(e,t,r){let{start:n}=e.range,o=Zo.Position.create(r.start.line-n.line,r.start.line==n.line?r.start.character-n.character:r.start.character),s=Zo.Position.create(r.end.line-n.line,r.end.line==n.line?r.end.character-n.character:r.end.character),a=Zo.Range.create(o,s),l=this.tmSnippet.insertSnippet(t,e.id,a);return this.update(),l}updatePlaceholder(e,t){let{start:r,end:n}=t.range,{range:o}=this,{value:s,id:a,index:l}=e,u=mH(e.range,s,t),c=0;if(!u.includes(` `)){for(let p of this._placeholders)if(p.index==l&&p.id{let d=e.offset(c),p=n.positionAt(d),h={line:t+p.line,character:p.line==0?r+p.character:p.character},m;if(c instanceof Qn){let x=c.name;l.has(x)?m=l.get(x):(l.set(x,u),m=u,u=u+1)}else m=c.index;let w=c.toString(),v=w.split(/\r?\n/),D={range:Zo.Range.create(h,{line:h.line+v.length-1,character:v.length==1?h.character+w.length:v[v.length-1].length}),transform:c.transform!=null,line:h.line,id:f,index:m,value:w,isVariable:c instanceof Qn,isFinalTabstop:c.index===0};if(Object.defineProperty(D,"snippet",{enumerable:!1}),c instanceof Ri&&c.choice){let{options:x}=c.choice;x&&x.length&&(D.choice=x.map(S=>S.value))}return D})}}});var $h,lXe,Bh,$R=I(()=>{$h=C(require("path"));Te();lXe=W()("snippets-variable"),Bh=class{constructor(){this._variableToValue={};let e=new Date;Object.assign(this._variableToValue,{CURRENT_YEAR:e.getFullYear().toString(),CURRENT_YEAR_SHORT:e.getFullYear().toString().slice(-2),CURRENT_MONTH:(e.getMonth()+1).toString(),CURRENT_DATE:e.getDate().toString(),CURRENT_HOUR:e.getHours().toString(),CURRENT_MINUTE:e.getMinutes().toString(),CURRENT_SECOND:e.getSeconds().toString(),CURRENT_DAY_NAME:e.toLocaleString("en-US",{weekday:"long"}),CURRENT_DAY_NAME_SHORT:e.toLocaleString("en-US",{weekday:"short"}),CURRENT_MONTH_NAME:e.toLocaleString("en-US",{month:"long"}),CURRENT_MONTH_NAME_SHORT:e.toLocaleString("en-US",{month:"short"}),TM_FILENAME:null,TM_FILENAME_BASE:null,TM_DIRECTORY:null,TM_FILEPATH:null,YANK:null,TM_LINE_INDEX:null,TM_LINE_NUMBER:null,TM_CURRENT_LINE:null,TM_CURRENT_WORD:null,TM_SELECTED_TEXT:null,CLIPBOARD:null})}async resolveValue(e){let{nvim:t}=T;if(["TM_FILENAME","TM_FILENAME_BASE","TM_DIRECTORY","TM_FILEPATH"].includes(e)){let r=await t.eval('expand("%:p")');if(e=="TM_FILENAME")return $h.default.basename(r);if(e=="TM_FILENAME_BASE")return $h.default.basename(r,$h.default.extname(r));if(e=="TM_DIRECTORY")return $h.default.dirname(r);if(e=="TM_FILEPATH")return r}if(e=="YANK")return await t.call("getreg",['""']);if(e=="TM_LINE_INDEX")return(await t.call("line",["."])-1).toString();if(e=="TM_LINE_NUMBER")return(await t.call("line",["."])).toString();if(e=="TM_CURRENT_LINE")return await t.call("getline",["."]);if(e=="TM_CURRENT_WORD")return await t.eval("expand('')");if(e=="TM_SELECTED_TEXT")return await t.eval("get(g:,'coc_selected_text', '')");if(e=="CLIPBOARD")return await t.eval("@*")}async resolve(e){let t=e.name,r=this._variableToValue[t];if(r!=null)return r.toString();let n=await this.resolveValue(t);return n||(e.children&&e.children.length?e.toString():this._variableToValue.hasOwnProperty(t)?"":t)}}});function __e(i,e,t){let r=i.split(/\r?\n/),n=t.insertSpaces?" ".repeat(t.tabSize):" ",o=t.tabSize||2;return r=r.map((s,a)=>{let l=s.match(/^\s*/)[0],u=l,c=l.startsWith(" ");return c&&t.insertSpaces?u=n.repeat(l.length):!c&&!t.insertSpaces&&(u=n.repeat(l.length/o)),(a==0||s.length==0?"":e)+u+s.slice(l.length)}),r.join(` `)}var aa,cf,BR,VX=I(()=>{aa=C(G());NR();nr();xt();Z();Te();Ne();GX();$R();cf=W()("snippets-session"),BR=class{constructor(e,t){this.nvim=e;this.bufnr=t;this._isActive=!1;this._currId=0;this.applying=!1;this.preferComplete=!1;this._snippet=null;this._onCancelEvent=new aa.Emitter;this.onCancel=this._onCancelEvent.event;let r=b.getConfiguration("coc.preferences"),n=b.getConfiguration("suggest");this.preferComplete=r.get("preferCompleteThanJumpPlaceholder",n.get("preferCompleteThanJumpPlaceholder",!1))}async start(e,t=!0,r,n){let{document:o}=this;if(!o||!o.attached)return!1;if(M.fire("InsertSnippet",[]).logError(),!r){let h=await T.getCursorPosition();r=aa.Range.create(h,h)}let s=r.start,a=await b.getFormatOptions(this.document.uri);await o.patchChange(!0);let l=o.getline(s.line),u=l.match(/^\s*/)[0],c="";n===aa.InsertTextMode.asIs?c=e:c=__e(e,u,a);let f=new Bh,d=new qR(c,s,f);await d.init();let p=aa.TextEdit.replace(r,d.toString());if(e.endsWith(` @@ -250,7 +250,7 @@ ${s.message} `)+` `})):(s.ranges.splice(u,1),l.push({range:this.getFileRangeRange(c,!1),newText:""}))}}this._fileItems=this._fileItems.filter(u=>u.ranges&&u.ranges.length>0),l.length&&(this.changing=!0,await this.document.applyEdits(l),this.changing=!1),this.nvim.pauseNotification(),this.highlightLineNr(),this.buffer.setOption("modified",!1,!0),await this.nvim.resumeNotification()}async getFileChanges(){if(this._disposed)return[];let e=[],t=await this.buffer.lines;t.push(mf);let r=[],n,o;for(let s=0;s1){let l=a.match(/^\u3000(.*)/);l&&(n=this.getAbsolutePath(l[1].replace(/\s+$/,"")),o=s+1,r=[])}}else r.push(a)}return e}async splitOpen(){let{nvim:e}=this,r=await e.createWindow(this.opts.fromWinid).valid,n=await e.eval('getline(1,line("."))'),o=n.length;for(let s=0;sp.filepath==f.filepath);d?d.ranges.push(...f.ranges):this._fileItems.push(f)}let o=r.lineCount,s=new dn,a=[];for(let f of e)for(let d of f.ranges){s.addLine(mf),s.addLine(mf),d.lnum=o+s.length,s.addText(`${ct(t,f.filepath)?zh.default.relative(t,f.filepath):f.filepath}`);let p=String(d.start+1).length+String(d.end).length+4;this.srcId||s.addText(" ".repeat(p));let h=0-s.length-o;d.highlights&&a.push(...d.highlights.map(w=>L_e(w,h)));let{lines:m}=d;m||(m=await this.getLines(f.filepath,d.start,d.end),d.lines=m),s.addLines(m)}let{nvim:l,buffer:u}=this;if(this.changing=!0,l.pauseNotification(),s.render(u,o),this.highlightLineNr(),u.setOption("modified",!1,!0),u.setOption("undolevels",1e3,!0),o==2&&a.length){let f=a[0].start;l.call("coc#util#jumpTo",[f.line,f.character],!0)}b.isVim&&l.command("redraw",!0);let[,c]=await l.resumeNotification();if(c)throw new Error(c[2]);await r.patchChange(),this.changing=!1,await pe.executeCommand("editor.action.addRanges",a)}catch(o){this.changing=!1,_Z.error("Error on add file item:",o)}n()}async save(){let{nvim:e}=this,t=this.document,{buffer:r}=t;await t.patchChange();let n=await this.getFileChanges();if(!n)return;n.sort((l,u)=>l.lnum-u.lnum);let o=[],s=new Map;for(let l=0;lm.filepath==c),h=p?p.ranges.find(m=>m.lnum==f):null;if(!h||ut(h.lines,u.lines)){o.push(l),d&&h&&(h.start=h.start+d,h.end=h.end+d);continue}if(u.start=h.start,u.end=h.end,d!=0&&(h.start=h.start+d),u.lines.length!=h.lines.length){let w=u.lines.length-h.lines.length+d;s.set(c,w),h.end=h.end+w}else h.end=h.end+d;h.lines=u.lines}if(o.length&&(n=n.filter((l,u)=>!o.includes(u))),n.length==0)return T.showMessage("No change.","more"),await r.setOption("modified",!1),!1;let a={};for(let l of n){let u=j.file(l.filepath).toString(),c=a[u]||[];c.push({range:hD.Range.create(l.start,0,l.end,0),newText:l.lines.join(` `)+` -`}),a[u]=c}return this.changing=!0,await b.applyEdit({changes:a}),this.changing=!1,e.pauseNotification(),r.setOption("modified",!1,!0),this.config.saveToFile&&e.command("silent noa wa",!0),this.highlightLineNr(),await e.resumeNotification(),!0}getFileRange(e){for(let t of this._fileItems)for(let r of t.ranges)if(r.lnum==e)return r;return null}getLinesRange(e){for(let t of this._fileItems)for(let r of t.ranges)if(r.lnum==e)return[r.start,r.end];return null}async getLines(e,t,r){let n=j.file(e).toString(),o=b.getDocument(n);return o?o.getLines(t,r):await T5(e,t,r-1)}getAbsolutePath(e){return zh.default.isAbsolute(e)?e:zh.default.join(this.opts.cwd,e)}getFileRangeRange(e,t=!0){let{document:r}=this;if(!r)return null;let{lnum:n}=e;if(!r.getline(n-1).startsWith("\u3000"))return null;let s=t?n:n-1,a=r.lineCount;for(let l=n;l{gf=C(G());Ze();je();be();zt();Te();Z();CZ();TZ();M_e=W()("handler-refactor"),N_e="__coc_refactor__",q_e=0,gD=class{constructor(e,t){this.nvim=e;this.handler=t;this.buffers=new Map;this.disposables=[];this._onCreate=new gf.Emitter;this.onCreate=this._onCreate.event;b.isNvim&&this.nvim.hasFunction("nvim_buf_set_virtual_text")&&(this.srcId=b.createNameSpace("coc-refactor")),this.setConfiguration(),b.onDidChangeConfiguration(this.setConfiguration,this,this.disposables),b.onDidCloseTextDocument(r=>{let n=this.buffers.get(r.bufnr);n&&(n.dispose(),this.buffers.delete(r.bufnr))},null,this.disposables),b.onDidChangeTextDocument(r=>{let n=this.buffers.get(r.bufnr);n&&n.onChange(r)},null,this.disposables)}setConfiguration(e){if(e&&!e.affectsConfiguration("refactor"))return;let t=b.getConfiguration("refactor");this.config=Object.assign(this.config||{},{afterContext:t.get("afterContext",3),beforeContext:t.get("beforeContext",3),openCommand:t.get("openCommand","edit"),saveToFile:t.get("saveToFile",!0)})}async doRefactor(){let{doc:e,position:t}=await this.handler.getCurrentState();if(!B.hasProvider("rename",e.textDocument))throw new Error("Rename provider not found for current buffer");await e.synchronize();let r=await this.handler.withRequestToken("refactor",async n=>{let o=await B.prepareRename(e.textDocument,t,n);if(n.isCancellationRequested)return null;if(o===!1)throw new Error("Provider returns null on prepare, unable to rename at current position");let s=await B.provideRenameEdits(e.textDocument,t,"NewName",n);if(n.isCancellationRequested)return null;if(!s)throw new Error("Provider returns null for rename edits.");return s});r&&await this.fromWorkspaceEdit(r,e.filetype)}async search(e){let t=await this.createRefactorBuffer();if(!t)return;let r=await this.nvim.call("getcwd",[]);await new pD(this.nvim).run(e,r,t)}async save(e){let t=this.buffers.get(e);if(t)return await t.save()}getBuffer(e){return this.buffers.get(e)}async createRefactorBuffer(e){let{nvim:t}=this,[r,n]=await t.eval("[win_getid(),getcwd()]"),{openCommand:o}=this.config;t.pauseNotification(),t.command(`${o} ${N_e}${q_e++}`,!0),t.command("setl buftype=acwrite nobuflisted bufhidden=wipe nofen wrap conceallevel=2 concealcursor=n",!0),t.command("setl undolevels=-1 nolist nospell noswapfile foldmethod=expr foldexpr=coc#util#refactor_foldlevel(v:lnum)",!0),t.command("setl foldtext=coc#util#refactor_fold_text(v:foldstart)",!0),t.call("setline",[1,["Save current buffer to make changes",mf]],!0),t.call("matchadd",["Comment","\\%1l"],!0),t.call("matchadd",["Conceal","^\\%u3000"],!0),t.call("matchadd",["Label","^\\%u3000\\zs\\S\\+"],!0),t.command("setl nomod",!0),e&&t.command(`runtime! syntax/${e}.vim`,!0),t.call("coc#util#do_autocmd",["CocRefactorOpen"],!0);let[,s]=await t.resumeNotification();if(s){M_e.error(s),T.showMessage(`Error on open refactor window: ${s}`,"error");return}let[a,l]=await t.eval('[bufnr("%"),win_getid()]'),u={fromWinid:r,winid:l,cwd:n};await b.document;let c=new mD(a,this.srcId,this.nvim,this.config,u);return this.buffers.set(a,c),c}async fromLines(e){let t=await this.createRefactorBuffer();return t&&await t.buffer.setLines(e,{start:0,end:-1,strictIndexing:!1}),t}async fromLocations(e,t){if(!e||e.length==0)return null;let r={},n={changes:r};for(let o of e){let s=r[o.uri]||[];s.push({range:o.range,newText:""}),r[o.uri]=s}return await this.fromWorkspaceEdit(n,t)}async fromWorkspaceEdit(e,t){if(!e||$_e(e))return;let r=[],{beforeContext:n,afterContext:o}=this.config,{changes:s,documentChanges:a}=e;if(!s){s={};for(let u of a||[])if(gf.TextDocumentEdit.is(u)){let{textDocument:c,edits:f}=u;c.uri.startsWith("file:")&&(s[c.uri]=f)}}for(let u of Object.keys(s)){let c=await this.getLineCount(u),f=s[u],d=[],p=null,h=null,m=[];f.sort((w,v)=>w.range.start.line-v.range.start.line);for(let w of f){let{line:v}=w.range.start,D=Math.max(0,v-n);p!=null&&D{Gh=C(G());je();nr();Te();Z();vD=class{constructor(e,t){this.nvim=e;this.handler=t}async getWordEdit(){let{doc:e,position:t}=await this.handler.getCurrentState(),r=e.getWordRangeAtPosition(t);if(!r||qo(r))return null;let n=e.textDocument.getText(r);if(B.hasProvider("rename",e.textDocument)){await e.synchronize();let s=new Gh.CancellationTokenSource;if(await B.prepareRename(e.textDocument,t,s.token)===!1)return null;let l=await B.provideRenameEdits(e.textDocument,t,n,s.token);if(l)return l}T.showMessage("Rename provider not found, extract word ranges from current buffer","more");let o=e.getSymbolRanges(n);return{changes:{[e.uri]:o.map(s=>({range:s,newText:n}))}}}async rename(e){let{doc:t,position:r}=await this.handler.getCurrentState();this.handler.checkProvier("rename",t.textDocument),await t.synchronize();try{let n=new Gh.CancellationTokenSource().token,o=await B.prepareRename(t.textDocument,r,n);if(n.isCancellationRequested)return!1;if(o===!1)return T.showMessage("Invalid position for rename","warning"),!1;let s;if(e||(Gh.Range.is(o)?(s=t.textDocument.getText(o),await T.moveTo(o.start)):o&&typeof o.placeholder=="string"?s=o.placeholder:s=await this.nvim.eval('expand("")'),e=await T.requestInput("New name",s)),!e)return!1;let a=await B.provideRenameEdits(t.textDocument,r,e,n);return n.isCancellationRequested?!1:a?(await b.applyEdit(a),b.isVim&&this.nvim.command("redraw",!0),!0):(T.showMessage("Invalid position for rename","warning"),!1)}catch(n){return T.showMessage(`Error on rename: ${n.message}`,"error"),logger.error(n),!1}}}});function IZ(i){return!!(i.name&&i.kind&&vf.Range.is(i.range)&&i.uri)}var vf,yD,FZ=I(()=>{vf=C(G());je();yD=class{constructor(e,t){this.nvim=e;this.handler=t}async prepare(){let{doc:e,position:t}=await this.handler.getCurrentState();this.handler.checkProvier("callHierarchy",e.textDocument),await e.synchronize();let r=new vf.CancellationTokenSource,n=await B.prepareCallHierarchy(e.textDocument,t,r.token);if(!(!n||r.token.isCancellationRequested))return Array.isArray(n)?n[0]:n}async getIncoming(e){if(e||(e=await this.prepare()),!IZ(e))throw new Error("Not a CallHierarchyItem");let t=new vf.CancellationTokenSource;return await B.provideIncomingCalls(e,t.token)}async getOutgoing(e){if(e||(e=await this.prepare()),!IZ(e))throw new Error("Not a CallHierarchyItem");let t=new vf.CancellationTokenSource;return await B.provideOutgoingCalls(e,t.token)}}});var OZ,yf,B_e,j_e,la,bD,AZ=I(()=>{OZ=C(zr()),yf=C(G());je();Z();B_e=W()("semanticTokens-buffer"),j_e="CocSem_",la="semanticTokens",bD=class{constructor(e,t,r){this.nvim=e;this.bufnr=t;this.config=r;this.highlight=(0,OZ.default)(()=>{this.doHighlight().catch(n=>{B_e.error("Error on semanticTokens highlight:",n.stack)})},global.hasOwnProperty("__TEST__")?10:2e3),this.highlight()}onChange(){this.cancel(),this.highlight()}async forceHighlight(){this.cancel(),this.highlight.clear(),await this.doHighlight()}get highlights(){return this._highlights}get enabled(){if(!this.config.enabled)return!1;let e=b.getDocument(this.bufnr);return!e||!e.attached?!1:B.hasProvider("semanticTokens",e.textDocument)}get previousVersion(){if(!!this.previousResults)return this.previousResults.version}get buffer(){return this.nvim.createBuffer(this.bufnr)}checkState(){if(!this.config.enabled)throw new Error("SemanticTokens highlights disabled by configuration");let e=b.getDocument(this.bufnr);if(!e||!e.attached)throw new Error("Document not attached");if(!B.hasProvider("semanticTokens",e.textDocument))throw new Error("SemanticTokens provider not found, your languageserver may not support it")}setState(e){e?this.highlight():(this.highlight.clear(),this.clearHighlight())}async doHighlight(){if(!this.enabled)return;let e=b.getDocument(this.bufnr),{nvim:t}=this;if(await t.call("bufwinid",[this.bufnr])==-1)return;let n=await this.requestHighlights(e);if(!n)return;if(!n.length){this.clearHighlight();return}let o=[];b.env.updateHighlight&&(o=await t.call("coc#highlight#get_highlights",[this.bufnr,la]));let{highlights:s,lines:a}=this.calculateHighlightUpdates(o,n);if(t.pauseNotification(),!b.env.updateHighlight)this.buffer.clearNamespace(la,0,-1);else for(let u of a)this.buffer.clearNamespace(la,u,u+1);let l={};if(s.length)for(let u of s){let c=yf.Range.create(u.lnum,u.colStart,u.lnum,u.colEnd);l[u.hlGroup]=l[u.hlGroup]||[],l[u.hlGroup].push(c)}for(let u of Object.keys(l))this.buffer.highlightRanges(la,u,l[u]);t.resumeNotification(!1,!0),b.isVim&&t.command("redraw",!0)}calculateHighlightUpdates(e,t){let r=Intl.Collator("en").compare;function n(c,f){return c.lnum-f.lnum||c.colStart-f.colStart||c.colEnd-f.colEnd||r(c.hlGroup,f.hlGroup)}e=e.slice().sort(n),t=t.slice().sort(n);let o=new Map;for(let c of e)o.has(c.lnum)||o.set(c.lnum,[]),o.get(c.lnum).push(c);let s=new Map;for(let c of t)s.has(c.lnum)||s.set(c.lnum,[]),s.get(c.lnum).push(c);let a=Math.max((e[e.length-1]||{lnum:0}).lnum,(t[t.length-1]||{lnum:0}).lnum),l=new Set;for(let c=0;c<=a;c++){let f=o.has(c),d=s.has(c);if(f!==d){l.add(c);continue}else if(!f&&!d)continue;let p=o.get(c),h=s.get(c);if(p.length!==h.length){l.add(c);continue}for(let m=0;m{h.deleteCount>0?u.splice(h.start,h.deleteCount):u.splice(h.start,0,...h.data)})),this.previousResults={resultId:a.resultId,tokens:u,version:l};let c=[];for(let h=0;h{Fi();Ne();je();Yc();be();Te();Z();AZ();U_e=W()("semanticTokens"),wD="Statement",DD=class{constructor(e,t){this.nvim=e;this.handler=t;this.disposables=[];this.loadConfiguration(),b.onDidChangeConfiguration(this.loadConfiguration,this,this.disposables),pe.register({id:"semanticTokens.checkCurrent",execute:async()=>{try{(await this.getCurrentItem()).checkState()}catch(r){T.showMessage(r.message,"error");return}T.showMessage("Semantic tokens provider found for current buffer","more")}},!1,"check semantic tokens provider for current buffer"),pe.register({id:"semanticTokens.clearCurrent",execute:async()=>{(await e.buffer).clearNamespace(la,0,-1)}},!1,"clear semantic tokens highlights of current buffer"),pe.register({id:"semanticTokens.clearAll",execute:async()=>{let r=await e.buffers;for(let n of r)n.clearNamespace(la,0,-1)}},!1,"clear semantic tokens highlights of all buffers"),this.disposables.push({dispose:()=>{pe.unregister("semanticTokens.checkCurrentBuffer")}}),M.on("BufEnter",r=>{let n=this.highlighters.getItem(r);if(!n)return;let o=b.getDocument(r);!o||o.textDocument.version==n.previousVersion||n.forceHighlight().catch(s=>{U_e.error("Error on semantic highlighters:",s)})},null,this.disposables),this.highlighters=b.registerBufferSync(r=>new bD(this.nvim,r.bufnr,this.config)),B.onDidSemanticTokensRefresh(r=>{for(let n of this.highlighters.items){let o=b.getDocument(n.bufnr);o&&b.match(r,o.textDocument)&&n.highlight()}},null,this.disposables)}loadConfiguration(e){if(!e||e.affectsConfiguration("coc.preferences")){let r=b.getConfiguration("coc.preferences").get("semanticTokensHighlights",!0);if(b.isVim&&!b.env.textprop&&(r=!1),this.config&&r!=this.config.enabled&&this.highlighters)for(let n of this.highlighters.items)n.setState(r);this.config?this.config.enabled=r:this.config={enabled:r}}}async getCurrentItem(){let e=await this.nvim.buffer,t=this.highlighters.getItem(e.id);if(!t)throw new Error("current buffer not attached");return t}async highlightCurrent(){let e=await this.getCurrentItem();e.checkState(),await e.forceHighlight()}async showHiglightInfo(){if(!this.config.enabled)throw new Error("Semantic highlights is disabled by configuration.");let e=await this.getCurrentItem();e.checkState();let t=e.highlights||[],r=new dn,{nvim:n}=this;n.pauseNotification(),n.command(`vs +setl\\ buftype=nofile __coc_semantic_highlights_${e.bufnr}__`,!0),n.command("setl bufhidden=wipe noswapfile nobuflisted wrap undolevels=-1",!0),n.call("bufnr",["%"],!0);let o=await n.resumeNotification();if(o[1])throw new Error(`Error on buffer create: ${o[1]}`);let s=o[0][2];r.addLine("Semantic highlights info",wD),r.addLine(""),r.addLine("The number of semantic tokens: "),r.addText(String(t.length),"Number"),r.addLine(""),r.addLine("Semantic highlight groups used by current buffer",wD),r.addLine("");let a=[...new Set(t.map(({hlGroup:c})=>c))];for(let c of a)r.addTexts([{text:"-",hlGroup:"Comment"},{text:" "},{text:c,hlGroup:c}]),r.addLine("");r.addLine("Tokens types that current Language Server supported:",wD),r.addLine("");let l=b.getDocument(e.bufnr),u=B.getLegend(l.textDocument);if(u==null?void 0:u.tokenTypes.length)for(let c of u.tokenTypes)r.addTexts([{text:"-",hlGroup:"Comment"},{text:" "},{text:`CocSem_${c}`,hlGroup:`CocSem_${c}`}]),r.addLine("");else r.addLine("No token types supported","Comment");if(r.addLine("Tokens modifiers that current Language Server supported:",wD),r.addLine(""),u==null?void 0:u.tokenModifiers.length)for(let c of u.tokenModifiers)r.addTexts([{text:"-",hlGroup:"Comment"},{text:" "},{text:`CocSem_${c}`,hlGroup:`CocSem_${c}`}]),r.addLine("");else r.addLine("No token modifiers supported","Comment");n.pauseNotification(),r.render(n.createBuffer(s)),n.resumeNotification(!1,!0)}dispose(){this.highlighters.dispose(),V(this.disposables)}}});var Ml,Att,xD,MZ=I(()=>{Ml=C(G());Ne();je();ec();be();xt();Z();uD();Att=W()("handler-signature"),xD=class{constructor(e,t){this.nvim=e;this.handler=t;this.disposables=[];this.signatureFactory=new Zi(e),this.loadConfiguration(),this.disposables.push(this.signatureFactory),b.onDidChangeConfiguration(this.loadConfiguration,this,this.disposables),M.on("CursorMovedI",async(n,o)=>{if(!this.signaturePosition)return;let s=b.getDocument(n);if(!s)return;let{line:a,character:l}=this.signaturePosition;if(o[0]-1==a){let u=s.getline(o[0]-1),c=ge(u.slice(0,l))+1;if(o[1]>=c)return}this.signatureFactory.close()},null,this.disposables),M.on(["InsertLeave","BufEnter"],()=>{var n;(n=this.tokenSource)==null||n.cancel()},null,this.disposables),M.on(["TextChangedI","TextChangedP"],async()=>{this.config.hideOnChange&&this.signatureFactory.close()},null,this.disposables);let r;M.on("InsertCharPre",async()=>{r=Date.now()},null,this.disposables),M.on("TextChangedI",async(n,o)=>{if(!this.config.trigger||!r||Date.now()-r>300)return;r=null;let s=b.getDocument(n);if(!s||s.isCommandLine||!s.attached)return;let a=o.pre[o.pre.length-1];!a||!B.shouldTriggerSignatureHelp(s.textDocument,a)||await this._triggerSignatureHelp(s,{line:o.lnum-1,character:o.pre.length},!1)},null,this.disposables)}loadConfiguration(e){if(!e||e.affectsConfiguration("signature")){let t=b.getConfiguration("signature"),r=t.get("target","float");r=="float"&&!b.floatSupported&&(r="echo"),this.config={target:r,trigger:t.get("enable",!0),wait:Math.max(t.get("triggerSignatureWait",500),200),maxWindowHeight:t.get("maxWindowHeight",80),maxWindowWidth:t.get("maxWindowWidth",80),preferAbove:t.get("preferShownAbove",!0),hideOnChange:t.get("hideOnTextChange",!1)}}}async triggerSignatureHelp(){let{doc:e,position:t,mode:r}=await this.handler.getCurrentState();if(!B.hasProvider("signature",e.textDocument))return!1;let n=0,o=t.character;if(r=="s"){let s=await this.nvim.getVar("coc_last_placeholder");if(s){let{start:a,end:l,bufnr:u}=s;u==e.bufnr&&a.line==l.line&&a.line==t.line&&(t=Ml.Position.create(a.line,a.character),n=o-t.character)}}return await this._triggerSignatureHelp(e,t,!0,n)}async _triggerSignatureHelp(e,t,r=!0,n=0){var d;(d=this.tokenSource)==null||d.cancel();let o=this.tokenSource=new Ml.CancellationTokenSource,s=o.token;s.onCancellationRequested(()=>{o.dispose(),this.tokenSource=void 0});let{target:a}=this.config,l=this.timer=setTimeout(()=>{o.cancel()},this.config.wait);await e.synchronize();let u=await B.getSignatureHelp(e.textDocument,t,s,{isRetrigger:this.signatureFactory.checkRetrigger(e.bufnr),triggerKind:r?Ml.SignatureHelpTriggerKind.Invoked:Ml.SignatureHelpTriggerKind.TriggerCharacter});if(clearTimeout(l),s.isCancellationRequested)return!1;if(!u||u.signatures.length==0)return this.signatureFactory.close(),!1;let{activeSignature:c,signatures:f}=u;if(c){let[p]=f.splice(c,1);p&&f.unshift(p)}return a=="echo"?this.echoSignature(u):await this.showSignatureHelp(e,t,u,n),!0}async showSignatureHelp(e,t,r,n){let{signatures:o,activeParameter:s}=r,a=null,l=n,u=o.reduce((h,m,w)=>{var x;let v=null,D=m.label.indexOf("(");if(w==0&&s!=null){let S=(x=m.parameters)==null?void 0:x[s];if(S){let P=m.label.slice(D==-1?0:D);if(a=S.documentation,typeof S.label=="string"){let A=P.slice(0),R=A.match(new RegExp("\\b"+S.label.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"\\b")),N=R?R.index:A.indexOf(S.label);N!=-1&&(v=[N+D,N+S.label.length+D])}else v=S.label}}if(v==null&&(v=[D+1,D+1]),n==l&&(n=n+v[0]+1),h.push({content:m.label,filetype:e.filetype,active:v}),a){let S=typeof a=="string"?a:a.value;S.trim().length&&h.push({content:S,filetype:Wh(m.documentation)?"markdown":"txt"})}if(w==0&&m.documentation){let{documentation:S}=m,P=typeof S=="string"?S:S.value;P.trim().length&&h.push({content:P,filetype:Wh(m.documentation)?"markdown":"txt"})}return h},[]);this.signaturePosition=t;let{preferAbove:c,maxWindowHeight:f,maxWindowWidth:d}=this.config,p=b.getConfiguration("coc.preferences").get("excludeImageLinksInMarkdownDocument");await this.signatureFactory.show(u,{maxWidth:d,maxHeight:f,preferTop:c,autoHide:!1,offsetX:n,modes:["i","ic","s"],excludeImages:p})}echoSignature(e){var s;let{signatures:t,activeParameter:r}=e,n=b.env.columns;t=t.slice(0,b.env.cmdheight);let o=[];for(let a of t){let l=[],{label:u}=a;u=u.replace(/\n/g," "),u.length>=n-16&&(u=u.slice(0,n-16)+"...");let c=u.indexOf("(");if(c==-1)l=[{text:u,type:"Normal"}];else{l.push({text:u.slice(0,c),type:"Label"});let f=u.slice(c);if(o.length==0&&r!=null){let d=(s=a.parameters)==null?void 0:s[r];if(d){let p,h;if(typeof d.label=="string"){let m=f.slice(0),w=m.match(new RegExp("\\b"+d.label.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"\\b")),v=w?w.index:m.indexOf(d.label);v==-1?l.push({text:f,type:"Normal"}):(p=v,h=v+d.label.length)}else[p,h]=d.label,p=p-c,h=h-c;p!=null&&h!=null&&(l.push({text:f.slice(0,p),type:"Normal"}),l.push({text:f.slice(p,h),type:"MoreMsg"}),l.push({text:f.slice(h),type:"Normal"}))}}else l.push({text:f,type:"Normal"})}o.push(l)}this.nvim.callTimer("coc#util#echo_signatures",[o],!0)}dispose(){V(this.disposables),this.timer&&clearTimeout(this.timer)}}});var NZ,Un,SD,qZ,$Z=I(()=>{NZ=C(zr()),Un=C(G());Ne();je();Mh();be();ni();nr();Te();Z();uD();SD=class{constructor(e,t){this.nvim=e;this.handler=t;this.disposables=[];this.buffers=b.registerBufferSync(r=>{if(r.buftype!="")return;let n=new qZ(r.bufnr);return n.onDidUpdate(async o=>{await M.fire("SymbolsUpdate",[n.bufnr,o])}),n}),M.on("CursorHold",async r=>{!this.functionUpdate||this.buffers.getItem(r)==null||await this.getCurrentFunctionSymbol(r)},null,this.disposables),M.on("InsertEnter",r=>{let n=this.buffers.getItem(r);n&&n.cancel()},null,this.disposables)}get functionUpdate(){return b.getConfiguration("coc.preferences").get("currentFunctionSymbolAutoUpdate",!1)}get labels(){return b.getConfiguration("suggest").get("completionItemKindLabels",{})}async getWorkspaceSymbols(e){this.handler.checkProvier("workspaceSymbols",null);let t=new Un.CancellationTokenSource;return await B.getWorkspaceSymbols(e,t.token)}async resolveWorkspaceSymbol(e){var r;if((r=e.location)==null?void 0:r.uri)return e;let t=new Un.CancellationTokenSource;return await B.resolveWorkspaceSymbol(e,t.token)}async getDocumentSymbols(e){let t=this.buffers.getItem(e);return t==null?void 0:t.getSymbols()}async getCurrentFunctionSymbol(e){e||(e=await this.nvim.call("bufnr",["%"]));let t=b.getDocument(e);if(!t||!t.attached||!B.hasProvider("documentSymbol",t.textDocument))return;let r=await T.getCursorPosition(),n=await this.getDocumentSymbols(e),o=this.nvim.createBuffer(e);if(!n||n.length===0)return o.setVar("coc_current_function","",!0),this.nvim.call("coc#util#do_autocmd",["CocStatusChange"],!0),"";n=n.filter(a=>["Class","Method","Function","Struct"].includes(a.kind));let s="";for(let a of n.reverse())if(a.range&&Ir(r,a.range)==0&&!a.text.endsWith(") callback")){s=a.text;let l=this.labels[a.kind.toLowerCase()];l&&(s=`${l} ${s}`);break}return this.functionUpdate&&(o.setVar("coc_current_function",s,!0),this.nvim.call("coc#util#do_autocmd",["CocStatusChange"],!0)),s}async selectSymbolRange(e,t,r){let{doc:n}=await this.handler.getCurrentState();this.handler.checkProvier("documentSymbol",n.textDocument);let o;if(t)o=await b.getSelectedRange(t,n);else{let l=await T.getCursorPosition();o=Un.Range.create(l,l)}let s=await this.getDocumentSymbols(n.bufnr);if(!s||s.length===0){T.showMessage("No symbols found","warning");return}s=s.filter(l=>r.includes(l.kind));let a;for(let l of s.reverse())if(l.range&&!ut(l.range,o)&&Xn(o,l.range)){a=l.range;break}if(e&&a){let{start:l,end:u}=a,c=n.getline(l.line+1),f=n.getline(u.line-1);a=Un.Range.create(l.line+1,c.match(/^\s*/)[0].length,u.line-1,f.length)}a?await b.selectRange(a):["v","V",""].includes(t)&&await this.nvim.command("normal! gv")}dispose(){this.buffers.dispose(),V(this.disposables)}},qZ=class{constructor(e){this.bufnr=e;this.disposables=[];this.autoUpdate=!1;this.symbols=[];this._onDidUpdate=new Un.Emitter;this.onDidUpdate=this._onDidUpdate.event;this.fetchSymbols=(0,NZ.default)(()=>{this._fetchSymbols().logError()},global.hasOwnProperty("__TEST__")?10:500)}async getSymbols(){let e=b.getDocument(this.bufnr);return e?(e.forceSync(),this.autoUpdate=!0,e.version==this.version?this.symbols:(this.cancel(),await this._fetchSymbols(),this.symbols)):[]}onChange(){this.cancel()}get textDocument(){var e;return(e=b.getDocument(this.bufnr))==null?void 0:e.textDocument}async _fetchSymbols(){let{textDocument:e}=this;if(!e||e.version==this.version)return;let{version:t}=e,r=this.tokenSource=new Un.CancellationTokenSource,{token:n}=r,o=await B.getDocumentSymbol(e,n);if(this.tokenSource=void 0,o==null||n.isCancellationRequested)return;let s=0,a=[];if(JR(o))o.sort(VR),o.forEach(l=>KR(a,l,s));else{o.sort(gZ);for(let l of o){let{name:u,kind:c,location:f}=l,{start:d}=f.range,p={col:d.character+1,lnum:d.line+1,text:u,level:0,kind:co(c),range:f.range,containerName:l.containerName};a.push(p)}}this.version=t,this.symbols=a,JR(o)?this._onDidUpdate.fire(o):this._onDidUpdate.fire(o.map(l=>Un.DocumentSymbol.create(l.name,"",l.kind,l.location.range,l.location.range)))}cancel(){this.fetchSymbols.clear(),this.tokenSource&&(this.tokenSource.cancel(),this.tokenSource=null)}dispose(){this.cancel(),this.symbols=void 0,this._onDidUpdate.dispose(),V(this.disposables)}}});var ED,W_e,CD,BZ=I(()=>{ED=C(G());Ne();je();be();Te();Z();rZ();nZ();cZ();fZ();dZ();hZ();mZ();vZ();bZ();wZ();RZ();kZ();FZ();LZ();MZ();$Z();W_e=W()("Handler"),CD=class{constructor(e){this.nvim=e;this.disposables=[];this.requestStatusItem=T.createStatusBarItem(0,{progress:!0}),M.on(["CursorMoved","CursorMovedI","InsertEnter","InsertSnippet","InsertLeave"],()=>{this.requestTokenSource&&(this.requestTokenSource.cancel(),this.requestTokenSource=null)},null,this.disposables),this.fold=new nD(e,this),this.links=new fD(e,this),this.codeLens=new Zw(e),this.colors=new rD(e,this),this.format=new sD(e,this),this.symbols=new SD(e,this),this.refactor=new gD(e,this),this.hover=new cD(e,this),this.locations=new dD(e,this),this.signature=new xD(e,this),this.rename=new vD(e,this),this.codeActions=new Yw(e,this),this.commands=new iD(e,b.env),this.callHierarchy=new yD(e,this),this.documentHighlighter=new aD(e,this),this.semanticHighlighter=new DD(e,this),this.disposables.push({dispose:()=>{this.codeLens.dispose(),this.refactor.dispose(),this.signature.dispose(),this.symbols.dispose(),this.hover.dispose(),this.locations.dispose(),this.colors.dispose(),this.documentHighlighter.dispose(),this.semanticHighlighter.dispose()}})}async getCurrentState(){let{nvim:e}=this,[t,[r,n],o,s]=await e.eval("[bufnr('%'),coc#util#cursor(),win_getid(),mode()]"),a=b.getDocument(t);if(!a||!a.attached)throw new Error(`current buffer ${t} not attached`);return{doc:a,mode:s,position:ED.Position.create(r,n),winid:o}}addDisposable(e){this.disposables.push(e)}checkProvier(e,t){if(!B.hasProvider(e,t))throw new Error(`${e} provider not found for current buffer, your language server doesn't support it.`)}async withRequestToken(e,t,r){this.requestTokenSource&&(this.requestTokenSource.cancel(),this.requestTokenSource.dispose()),this.requestTimer&&clearTimeout(this.requestTimer);let n=this.requestStatusItem;this.requestTokenSource=new ED.CancellationTokenSource;let{token:o}=this.requestTokenSource;o.onCancellationRequested(()=>{n.text=`${e} request canceled`,n.isProgress=!1,this.requestTimer=setTimeout(()=>{n.hide()},500)}),n.isProgress=!0,n.text=`requesting ${e}`,n.show();let s;try{s=await Promise.resolve(t(o))}catch(a){T.showMessage(a.message,"error"),W_e.error(`Error on ${e}`,a)}return this.requestTokenSource&&(this.requestTokenSource.dispose(),this.requestTokenSource=void 0),o.isCancellationRequested?null:(n.hide(),r&&(!s||Array.isArray(s)&&s.length==0)?(T.showMessage(`${e} not found`,"warning"),null):s)}async hasProvider(e){let t=await this.nvim.call("bufnr","%"),r=b.getDocument(t);return r?B.hasProvider(e,r.textDocument):!1}dispose(){this.requestTimer&&clearTimeout(this.requestTimer),V(this.disposables)}}});var jZ,XR,UZ,WZ,ZR,Nl,_D,HZ=I(()=>{jZ=C(require("events")),XR=C(require("fs")),UZ=C(require("path")),WZ=C(qU()),ZR=C(G());Ze();Fi();NR();tZ();ol();Ne();na();BZ();je();Aw();kh();Jc();_l();en();Te();Z();Nl=W()("plugin");WZ.default.shim();_D=class extends jZ.EventEmitter{constructor(e){super();this.nvim=e;this._ready=!1;this.actions=new Map;Object.defineProperty(b,"nvim",{get:()=>this.nvim}),b.onDidChangeWorkspaceFolders(()=>{e.setVar("WorkspaceFolders",b.folderPaths,!0)}),this.cursors=new Jw(e),pe.init(e,this),this.addAction("checkJsonExtension",()=>{xe.has("coc-json")||T.showMessage("Run :CocInstall coc-json for json intellisense","more")}),this.addAction("rootPatterns",r=>{let n=b.getDocument(r);return n?{buffer:b.getRootPatterns(n,si.Buffer),server:b.getRootPatterns(n,si.LanguageServer),global:b.getRootPatterns(n,si.Global)}:null}),this.addAction("getConfig",async r=>{let n=await b.document;return b.getConfiguration(r,n?n.uri:void 0)}),this.addAction("doAutocmd",async(r,...n)=>{let o=b.autocmds.get(r);if(o)try{await Promise.resolve(o.callback.apply(o.thisArg,n))}catch(s){Nl.error(`Error on autocmd ${o.event}`,s),T.showMessage(`Error on autocmd ${o.event}: ${s.message}`)}}),this.addAction("openLog",async()=>{let r=Nl.getLogFile();await b.jumpTo(j.file(r).toString())}),this.addAction("attach",()=>b.attach()),this.addAction("detach",()=>b.detach()),this.addAction("doKeymap",async(r,n="",o)=>{let s=b.keymaps.get(r);if(!s)return Nl.error(`keymap for ${r} not found`),this.nvim.command(`silent! unmap ${o.startsWith("{")&&o.endsWith("}")?`<${o.slice(1,-1)}>`:o}`,!0),n;let[a,l]=s,u=await Promise.resolve(a());return l&&await e.command(`silent! call repeat#set("\\(coc-${r})", -1)`),u!=null?u:n}),this.addAction("registExtensions",async(...r)=>{for(let n of r)await xe.loadExtension(n)}),this.addAction("snippetCheck",async(r,n)=>{if(r&&!xe.has("coc-snippets"))return console.error("coc-snippets required for check expand status!"),!1;if(n&&gr.jumpable())return!0;if(r){let o=xe.getExtensionApi("coc-snippets");if(o&&o.hasOwnProperty("expandable")&&await Promise.resolve(o.expandable()))return!0}return!1}),this.addAction("snippetNext",()=>gr.nextPlaceholder()),this.addAction("snippetPrev",()=>gr.previousPlaceholder()),this.addAction("snippetCancel",()=>gr.cancel()),this.addAction("openLocalConfig",()=>T.openLocalConfig()),this.addAction("showInfo",async()=>{this.infoChannel?this.infoChannel.clear():this.infoChannel=T.createOutputChannel("info");let r=this.infoChannel;r.appendLine("## versions"),r.appendLine("");let o=(await this.nvim.call("execute",["version"])).trim().split(/\r?\n/,2)[0].replace(/\(.*\)/,"").trim();r.appendLine("vim version: "+o+`${b.isVim?" "+b.env.version:""}`),r.appendLine("node version: "+process.version),r.appendLine("coc.nvim version: "+this.version),r.appendLine("coc.nvim directory: "+UZ.default.dirname(__dirname)),r.appendLine("term: "+(process.env.TERM_PROGRAM||process.env.TERM)),r.appendLine("platform: "+process.platform),r.appendLine(""),r.appendLine("## Log of coc.nvim"),r.appendLine("");let s=Nl.getLogFile();if(XR.default.existsSync(s)){let a=XR.default.readFileSync(s,{encoding:"utf8"});r.appendLine(a)}r.show()}),this.addAction("findLocations",(r,n,o,s)=>this.handler.locations.findLocations(r,n,o,s)),this.addAction("hasProvider",r=>this.handler.hasProvider(r)),this.addAction("getTagList",()=>this.handler.locations.getTagList()),this.addAction("hasSelected",()=>sa.hasSelected()),this.addAction("listNames",()=>vr.names),this.addAction("listDescriptions",()=>vr.descriptions),this.addAction("listLoadItems",r=>vr.loadItems(r)),this.addAction("search",(...r)=>this.handler.refactor.search(r)),this.addAction("cursorsSelect",(r,n,o)=>this.cursors.select(r,n,o)),this.addAction("fillDiagnostics",r=>Ot.setLocationlist(r)),this.addAction("saveRefactor",r=>this.handler.refactor.save(r)),this.addAction("commandList",()=>this.handler.commands.getCommandList()),this.addAction("selectSymbolRange",(r,n,o)=>this.handler.symbols.selectSymbolRange(r,n,o)),this.addAction("openList",(...r)=>vr.start(r)),this.addAction("listResume",r=>vr.resume(r)),this.addAction("listCancel",()=>vr.cancel(!0)),this.addAction("listPrev",r=>vr.previous(r)),this.addAction("listNext",r=>vr.next(r)),this.addAction("listFirst",r=>vr.first(r)),this.addAction("listLast",r=>vr.last(r)),this.addAction("sendRequest",(r,n,o)=>qr.sendRequest(r,n,o)),this.addAction("sendNotification",(r,n,o)=>qr.sendNotification(r,n,o)),this.addAction("registNotification",(r,n)=>qr.registNotification(r,n)),this.addAction("updateConfig",(r,n)=>b.configurations.updateUserConfig({[r]:n})),this.addAction("links",()=>this.handler.links.getLinks()),this.addAction("openLink",()=>this.handler.links.openCurrentLink()),this.addAction("pickColor",()=>this.handler.colors.pickColor()),this.addAction("colorPresentation",()=>this.handler.colors.pickPresentation()),this.addAction("highlight",()=>this.handler.documentHighlighter.highlight()),this.addAction("fold",r=>this.handler.fold.fold(r)),this.addAction("startCompletion",r=>sa.startCompletion(r)),this.addAction("stopCompletion",()=>sa.stop(!1)),this.addAction("sourceStat",()=>nt.sourceStats()),this.addAction("refreshSource",r=>nt.refresh(r)),this.addAction("toggleSource",r=>nt.toggleSource(r)),this.addAction("diagnosticRefresh",r=>Ot.refresh(r)),this.addAction("diagnosticInfo",()=>Ot.echoMessage()),this.addAction("diagnosticToggle",()=>Ot.toggleDiagnostic()),this.addAction("diagnosticToggleBuffer",async r=>{r||(r=await e.call("bufnr",["%"])),Ot.toggleDiagnosticBuffer(r)}),this.addAction("diagnosticNext",r=>Ot.jumpNext(r)),this.addAction("diagnosticPrevious",r=>Ot.jumpPrevious(r)),this.addAction("diagnosticPreview",()=>Ot.preview()),this.addAction("diagnosticList",()=>Ot.getDiagnosticList()),this.addAction("jumpDefinition",r=>this.handler.locations.gotoDefinition(r)),this.addAction("definitions",()=>this.handler.locations.definitions()),this.addAction("jumpDeclaration",r=>this.handler.locations.gotoDeclaration(r)),this.addAction("declarations",()=>this.handler.locations.declarations()),this.addAction("jumpImplementation",r=>this.handler.locations.gotoImplementation(r)),this.addAction("implementations",()=>this.handler.locations.implementations()),this.addAction("jumpTypeDefinition",r=>this.handler.locations.gotoTypeDefinition(r)),this.addAction("typeDefinitions",()=>this.handler.locations.typeDefinitions()),this.addAction("jumpReferences",r=>this.handler.locations.gotoReferences(r)),this.addAction("references",()=>this.handler.locations.references()),this.addAction("jumpUsed",r=>this.handler.locations.gotoReferences(r,!1)),this.addAction("doHover",r=>this.handler.hover.onHover(r)),this.addAction("getHover",()=>this.handler.hover.getHover()),this.addAction("showSignatureHelp",()=>this.handler.signature.triggerSignatureHelp()),this.addAction("documentSymbols",async r=>(r||(r=(await b.document).bufnr),await this.handler.symbols.getDocumentSymbols(r))),this.addAction("ensureDocument",async()=>{let r=await b.document;return r&&r.attached}),this.addAction("symbolRanges",()=>this.handler.documentHighlighter.getSymbolsRanges()),this.addAction("selectionRanges",()=>this.handler.selectionRange.getSelectionRanges()),this.addAction("rangeSelect",(r,n)=>this.handler.selectionRange.selectRange(r,n)),this.addAction("rename",r=>this.handler.rename.rename(r)),this.addAction("getWorkspaceSymbols",r=>this.handler.symbols.getWorkspaceSymbols(r)),this.addAction("resolveWorkspaceSymbol",r=>this.handler.symbols.resolveWorkspaceSymbol(r)),this.addAction("formatSelected",r=>this.handler.format.formatCurrentRange(r)),this.addAction("format",()=>this.handler.format.formatCurrentBuffer()),this.addAction("commands",()=>this.handler.commands.getCommands()),this.addAction("services",()=>qr.getServiceStats()),this.addAction("toggleService",r=>qr.toggle(r)),this.addAction("codeAction",(r,n)=>this.handler.codeActions.doCodeAction(r,n)),this.addAction("organizeImport",()=>this.handler.codeActions.organizeImport()),this.addAction("fixAll",()=>this.handler.codeActions.doCodeAction(null,[ZR.CodeActionKind.SourceFixAll]));let t=[];this.addAction("doCodeAction",r=>{if(r.index==null)throw new Error("index should exists with codeAction");let n=t[r.index];if(!n)throw new Error(`invalid codeAction index: ${r.index}`);return this.handler.codeActions.applyCodeAction(n)}),this.addAction("codeActions",async(r,n)=>(t=await this.handler.codeActions.getCurrentCodeActions(r,n),t.map((o,s)=>Object.assign({index:s},o)))),this.addAction("quickfixes",async r=>(t=await this.handler.codeActions.getCurrentCodeActions(r,[ZR.CodeActionKind.QuickFix]),t.map((n,o)=>Object.assign({index:o},n)))),this.addAction("codeLensAction",()=>this.handler.codeLens.doAction()),this.addAction("runCommand",(...r)=>this.handler.commands.runCommand(...r)),this.addAction("doQuickfix",()=>this.handler.codeActions.doQuickfix()),this.addAction("refactor",()=>this.handler.refactor.doRefactor()),this.addAction("repeatCommand",()=>this.handler.commands.repeat()),this.addAction("installExtensions",(...r)=>xe.installExtensions(r)),this.addAction("updateExtensions",r=>xe.updateExtensions(r)),this.addAction("extensionStats",()=>xe.getExtensionStates()),this.addAction("loadedExtensions",()=>xe.loadedExtensions()),this.addAction("watchExtension",r=>xe.watchExtension(r)),this.addAction("activeExtension",r=>xe.activate(r)),this.addAction("deactivateExtension",r=>xe.deactivate(r)),this.addAction("reloadExtension",r=>xe.reloadExtension(r)),this.addAction("toggleExtension",r=>xe.toggleExtension(r)),this.addAction("uninstallExtension",(...r)=>xe.uninstallExtension(r)),this.addAction("getCurrentFunctionSymbol",()=>this.handler.symbols.getCurrentFunctionSymbol()),this.addAction("getWordEdit",()=>this.handler.rename.getWordEdit()),this.addAction("addCommand",r=>this.handler.commands.addVimCommand(r)),this.addAction("addRanges",r=>this.cursors.addRanges(r)),this.addAction("currentWorkspacePath",()=>b.rootPath),this.addAction("selectCurrentPlaceholder",r=>gr.selectCurrentPlaceholder(!!r)),this.addAction("codeActionRange",(r,n,o)=>this.handler.codeActions.codeActionRange(r,n,o)),this.addAction("incomingCalls",r=>this.handler.callHierarchy.getIncoming(r)),this.addAction("outgoingCalls",r=>this.handler.callHierarchy.getOutgoing(r)),this.addAction("semanticHighlight",()=>this.handler.semanticHighlighter.highlightCurrent()),this.addAction("showSemanticHighlightInfo",()=>this.handler.semanticHighlighter.showHiglightInfo())}addAction(e,t){if(this.actions.has(e))throw new Error(`Action ${e} already exists`);this.actions.set(e,t)}async init(){let{nvim:e}=this,t=Date.now();try{await xe.init(),await b.init(),B.init(),gr.init(),sa.init(),Ot.init(),vr.init(e),nt.init(),this.handler=new CD(e),qr.init(),xe.activateExtensions(),b.setupDynamicAutocmd(!0),e.pauseNotification(),e.setVar("WorkspaceFolders",b.folderPaths,!0),e.setVar("coc_service_initialized",1,!0),e.call("coc#util#do_autocmd",["CocNvimInit"],!0),e.resumeNotification(!1,!0),this._ready=!0,await M.fire("ready",[]),Nl.info(`coc.nvim ${this.version} initialized with node: ${process.version} after ${Date.now()-t}ms`),this.emit("ready")}catch(r){console.error(`Error on initialize: ${r.stack}`),Nl.error(r.stack)}}get isReady(){return this._ready}get ready(){return this._ready?Promise.resolve():new Promise(e=>{this.once("ready",()=>{e()})})}get version(){return b.version+"-aa24232066"}hasAction(e){return this.actions.has(e)}async cocAction(e,...t){let r=this.actions.get(e);if(!r)throw new Error(`Action "${e}" not exists`);let n=Date.now(),o=await Promise.resolve(r.apply(null,t)),s=Date.now()-n;return s>500&&Nl.warn(`Slow action "${e}" cost ${s}ms`),o}getHandler(){return this.handler}dispose(){this.removeAllListeners(),xe.dispose(),vr.dispose(),b.dispose(),T.dispose(),nt.dispose(),qr.stopAll(),qr.dispose(),this.handler&&this.handler.dispose(),gr.dispose(),pe.dispose(),sa.dispose(),Ot.dispose()}}});var KZ={};ns(KZ,{default:()=>z_e});var zZ,GZ,VZ,ho,H_e,z_e,JZ=I(()=>{zZ=C(v0()),GZ=C(mx());Ne();HZ();VZ=C(cp());Vi();Ze();Z_();ho=W()("attach"),H_e=global.hasOwnProperty("__TEST__"),z_e=(i,e=!0)=>{let t=(0,zZ.attach)(i,GZ.default.getLogger("node-client"),e);global.hasOwnProperty("__TEST__")||t.call("coc#util#path_replace_patterns").then(s=>{if(Wt(s)){let a=j.file;j.file=l=>(l=l.replace(/\\/g,"/"),Object.keys(s).forEach(u=>l=l.replace(new RegExp("^"+u),s[u])),a(l))}}).logError(),t.setVar("coc_process_pid",process.pid,!0);let r=new _D(t),n=!1,o=!1;return t.on("notification",async(s,a)=>{switch(s){case"VimEnter":{!o&&n&&(o=!0,await r.init());break}case"Log":{ho.debug(...a);break}case"TaskExit":case"TaskStderr":case"TaskStdout":case"GlobalChange":case"PromptInsert":case"InputChar":case"MenuInput":case"OptionSet":case"FloatBtnClick":await M.fire(s,a);break;case"CocAutocmd":ho.trace("Notification autocmd:",...a),await M.fire(a[0],a.slice(1));break;default:{if(!r.hasAction(s)){if(global.hasOwnProperty("__TEST__"))return;console.error(`action "${s}" not exists`);return}try{r.isReady?ho.info("receive notification:",s,a):ho.warn(`Plugin not ready when received "${s}"`,a),await r.ready,await r.cocAction(s,...a)}catch(u){console.error(`Error on "${s}": ${u.message||u.toString()}`),ho.error("Notification error:",s,a,u)}}}}),t.on("request",async(s,a,l)=>{if(s=="redraw"){l.send();return}let u=setTimeout(()=>{ho.error("Request cost more than 3s",s,a)},3e3);try{if(s=="CocAutocmd")ho.trace("Request autocmd:",...a),await M.fire(a[0],a.slice(1)),l.send(void 0);else{if(!r.isReady){ho.warn(`Plugin not ready on request "${s}"`,a),l.send("Plugin not ready",!0);return}ho.info("Request action:",s,a);let c=await r.cocAction(s,...a);l.send(c)}clearTimeout(u)}catch(c){clearTimeout(u),l.send(c.message||c.toString(),!0),ho.error("Request error:",s,a,c)}}),t.channelId.then(async s=>{n=!0,H_e&&t.command(`let g:coc_node_channel_id = ${s}`,!0);let{major:a,minor:l,patch:u}=VZ.default.parse(yy);t.setClientInfo("coc",{major:a,minor:l,patch:u},"remote",{},{}),await t.getVvar("vim_did_enter")&&!o&&(o=!0,await r.init())}).catch(s=>{console.error(`Channel create error: ${s.message}`)}),r}});Nm();Object.defineProperty(console,"log",{value(){QR.info(...arguments)}});var QR=W()("server"),G_e=(JZ(),KZ).default;G_e({reader:process.stdin,writer:process.stdout});process.on("uncaughtException",function(i){let e="Uncaught exception: "+i.message;console.error(e),QR.error("uncaughtException",i.stack)});process.on("unhandledRejection",function(i,e){i instanceof Error?console.error("UnhandledRejection: "+i.message+` +`}),a[u]=c}return this.changing=!0,await b.applyEdit({changes:a}),this.changing=!1,e.pauseNotification(),r.setOption("modified",!1,!0),this.config.saveToFile&&e.command("silent noa wa",!0),this.highlightLineNr(),await e.resumeNotification(),!0}getFileRange(e){for(let t of this._fileItems)for(let r of t.ranges)if(r.lnum==e)return r;return null}getLinesRange(e){for(let t of this._fileItems)for(let r of t.ranges)if(r.lnum==e)return[r.start,r.end];return null}async getLines(e,t,r){let n=j.file(e).toString(),o=b.getDocument(n);return o?o.getLines(t,r):await T5(e,t,r-1)}getAbsolutePath(e){return zh.default.isAbsolute(e)?e:zh.default.join(this.opts.cwd,e)}getFileRangeRange(e,t=!0){let{document:r}=this;if(!r)return null;let{lnum:n}=e;if(!r.getline(n-1).startsWith("\u3000"))return null;let s=t?n:n-1,a=r.lineCount;for(let l=n;l{gf=C(G());Ze();je();be();zt();Te();Z();CZ();TZ();M_e=W()("handler-refactor"),N_e="__coc_refactor__",q_e=0,gD=class{constructor(e,t){this.nvim=e;this.handler=t;this.buffers=new Map;this.disposables=[];this._onCreate=new gf.Emitter;this.onCreate=this._onCreate.event;b.isNvim&&this.nvim.hasFunction("nvim_buf_set_virtual_text")&&(this.srcId=b.createNameSpace("coc-refactor")),this.setConfiguration(),b.onDidChangeConfiguration(this.setConfiguration,this,this.disposables),b.onDidCloseTextDocument(r=>{let n=this.buffers.get(r.bufnr);n&&(n.dispose(),this.buffers.delete(r.bufnr))},null,this.disposables),b.onDidChangeTextDocument(r=>{let n=this.buffers.get(r.bufnr);n&&n.onChange(r)},null,this.disposables)}setConfiguration(e){if(e&&!e.affectsConfiguration("refactor"))return;let t=b.getConfiguration("refactor");this.config=Object.assign(this.config||{},{afterContext:t.get("afterContext",3),beforeContext:t.get("beforeContext",3),openCommand:t.get("openCommand","edit"),saveToFile:t.get("saveToFile",!0)})}async doRefactor(){let{doc:e,position:t}=await this.handler.getCurrentState();if(!B.hasProvider("rename",e.textDocument))throw new Error("Rename provider not found for current buffer");await e.synchronize();let r=await this.handler.withRequestToken("refactor",async n=>{let o=await B.prepareRename(e.textDocument,t,n);if(n.isCancellationRequested)return null;if(o===!1)throw new Error("Provider returns null on prepare, unable to rename at current position");let s=await B.provideRenameEdits(e.textDocument,t,"NewName",n);if(n.isCancellationRequested)return null;if(!s)throw new Error("Provider returns null for rename edits.");return s});r&&await this.fromWorkspaceEdit(r,e.filetype)}async search(e){let t=await this.createRefactorBuffer();if(!t)return;let r=await this.nvim.call("getcwd",[]);await new pD(this.nvim).run(e,r,t)}async save(e){let t=this.buffers.get(e);if(t)return await t.save()}getBuffer(e){return this.buffers.get(e)}async createRefactorBuffer(e){let{nvim:t}=this,[r,n]=await t.eval("[win_getid(),getcwd()]"),{openCommand:o}=this.config;t.pauseNotification(),t.command(`${o} ${N_e}${q_e++}`,!0),t.command("setl buftype=acwrite nobuflisted bufhidden=wipe nofen wrap conceallevel=2 concealcursor=n",!0),t.command("setl undolevels=-1 nolist nospell noswapfile foldmethod=expr foldexpr=coc#util#refactor_foldlevel(v:lnum)",!0),t.command("setl foldtext=coc#util#refactor_fold_text(v:foldstart)",!0),t.call("setline",[1,["Save current buffer to make changes",mf]],!0),t.call("matchadd",["Comment","\\%1l"],!0),t.call("matchadd",["Conceal","^\\%u3000"],!0),t.call("matchadd",["Label","^\\%u3000\\zs\\S\\+"],!0),t.command("setl nomod",!0),e&&t.command(`runtime! syntax/${e}.vim`,!0),t.call("coc#util#do_autocmd",["CocRefactorOpen"],!0);let[,s]=await t.resumeNotification();if(s){M_e.error(s),T.showMessage(`Error on open refactor window: ${s}`,"error");return}let[a,l]=await t.eval('[bufnr("%"),win_getid()]'),u={fromWinid:r,winid:l,cwd:n};await b.document;let c=new mD(a,this.srcId,this.nvim,this.config,u);return this.buffers.set(a,c),c}async fromLines(e){let t=await this.createRefactorBuffer();return t&&await t.buffer.setLines(e,{start:0,end:-1,strictIndexing:!1}),t}async fromLocations(e,t){if(!e||e.length==0)return null;let r={},n={changes:r};for(let o of e){let s=r[o.uri]||[];s.push({range:o.range,newText:""}),r[o.uri]=s}return await this.fromWorkspaceEdit(n,t)}async fromWorkspaceEdit(e,t){if(!e||$_e(e))return;let r=[],{beforeContext:n,afterContext:o}=this.config,{changes:s,documentChanges:a}=e;if(!s){s={};for(let u of a||[])if(gf.TextDocumentEdit.is(u)){let{textDocument:c,edits:f}=u;c.uri.startsWith("file:")&&(s[c.uri]=f)}}for(let u of Object.keys(s)){let c=await this.getLineCount(u),f=s[u],d=[],p=null,h=null,m=[];f.sort((w,v)=>w.range.start.line-v.range.start.line);for(let w of f){let{line:v}=w.range.start,D=Math.max(0,v-n);p!=null&&D{Gh=C(G());je();nr();Te();Z();vD=class{constructor(e,t){this.nvim=e;this.handler=t}async getWordEdit(){let{doc:e,position:t}=await this.handler.getCurrentState(),r=e.getWordRangeAtPosition(t);if(!r||qo(r))return null;let n=e.textDocument.getText(r);if(B.hasProvider("rename",e.textDocument)){await e.synchronize();let s=new Gh.CancellationTokenSource;if(await B.prepareRename(e.textDocument,t,s.token)===!1)return null;let l=await B.provideRenameEdits(e.textDocument,t,n,s.token);if(l)return l}T.showMessage("Rename provider not found, extract word ranges from current buffer","more");let o=e.getSymbolRanges(n);return{changes:{[e.uri]:o.map(s=>({range:s,newText:n}))}}}async rename(e){let{doc:t,position:r}=await this.handler.getCurrentState();this.handler.checkProvier("rename",t.textDocument),await t.synchronize();try{let n=new Gh.CancellationTokenSource().token,o=await B.prepareRename(t.textDocument,r,n);if(n.isCancellationRequested)return!1;if(o===!1)return T.showMessage("Invalid position for rename","warning"),!1;let s;if(e||(Gh.Range.is(o)?(s=t.textDocument.getText(o),await T.moveTo(o.start)):o&&typeof o.placeholder=="string"?s=o.placeholder:s=await this.nvim.eval('expand("")'),e=await T.requestInput("New name",s)),!e)return!1;let a=await B.provideRenameEdits(t.textDocument,r,e,n);return n.isCancellationRequested?!1:a?(await b.applyEdit(a),b.isVim&&this.nvim.command("redraw",!0),!0):(T.showMessage("Invalid position for rename","warning"),!1)}catch(n){return T.showMessage(`Error on rename: ${n.message}`,"error"),logger.error(n),!1}}}});function IZ(i){return!!(i.name&&i.kind&&vf.Range.is(i.range)&&i.uri)}var vf,yD,FZ=I(()=>{vf=C(G());je();yD=class{constructor(e,t){this.nvim=e;this.handler=t}async prepare(){let{doc:e,position:t}=await this.handler.getCurrentState();this.handler.checkProvier("callHierarchy",e.textDocument),await e.synchronize();let r=new vf.CancellationTokenSource,n=await B.prepareCallHierarchy(e.textDocument,t,r.token);if(!(!n||r.token.isCancellationRequested))return Array.isArray(n)?n[0]:n}async getIncoming(e){if(e||(e=await this.prepare()),!IZ(e))throw new Error("Not a CallHierarchyItem");let t=new vf.CancellationTokenSource;return await B.provideIncomingCalls(e,t.token)}async getOutgoing(e){if(e||(e=await this.prepare()),!IZ(e))throw new Error("Not a CallHierarchyItem");let t=new vf.CancellationTokenSource;return await B.provideOutgoingCalls(e,t.token)}}});var OZ,yf,B_e,j_e,la,bD,AZ=I(()=>{OZ=C(zr()),yf=C(G());je();Z();B_e=W()("semanticTokens-buffer"),j_e="CocSem_",la="semanticTokens",bD=class{constructor(e,t,r){this.nvim=e;this.bufnr=t;this.config=r;this.highlight=(0,OZ.default)(()=>{this.doHighlight().catch(n=>{B_e.error("Error on semanticTokens highlight:",n.stack)})},global.hasOwnProperty("__TEST__")?10:2e3),this.highlight()}onChange(){this.cancel(),this.highlight()}async forceHighlight(){this.cancel(),this.highlight.clear(),await this.doHighlight()}get highlights(){return this._highlights}get enabled(){if(!this.config.enabled)return!1;let e=b.getDocument(this.bufnr);return!e||!e.attached?!1:B.hasProvider("semanticTokens",e.textDocument)}get previousVersion(){if(!!this.previousResults)return this.previousResults.version}get buffer(){return this.nvim.createBuffer(this.bufnr)}checkState(){if(!this.config.enabled)throw new Error("SemanticTokens highlights disabled by configuration");let e=b.getDocument(this.bufnr);if(!e||!e.attached)throw new Error("Document not attached");if(!B.hasProvider("semanticTokens",e.textDocument))throw new Error("SemanticTokens provider not found, your languageserver may not support it")}setState(e){e?this.highlight():(this.highlight.clear(),this.clearHighlight())}async doHighlight(){if(!this.enabled)return;let e=b.getDocument(this.bufnr),{nvim:t}=this;if(await t.call("bufwinid",[this.bufnr])==-1)return;let n=await this.requestHighlights(e);if(!n)return;if(!n.length){this.clearHighlight();return}let o=[];b.env.updateHighlight&&(o=await t.call("coc#highlight#get_highlights",[this.bufnr,la]));let{highlights:s,lines:a}=this.calculateHighlightUpdates(o,n);if(t.pauseNotification(),!b.env.updateHighlight)this.buffer.clearNamespace(la,0,-1);else for(let u of a)this.buffer.clearNamespace(la,u,u+1);let l={};if(s.length)for(let u of s){let c=yf.Range.create(u.lnum,u.colStart,u.lnum,u.colEnd);l[u.hlGroup]=l[u.hlGroup]||[],l[u.hlGroup].push(c)}for(let u of Object.keys(l))this.buffer.highlightRanges(la,u,l[u]);t.resumeNotification(!1,!0),b.isVim&&t.command("redraw",!0)}calculateHighlightUpdates(e,t){let r=Intl.Collator("en").compare;function n(c,f){return c.lnum-f.lnum||c.colStart-f.colStart||c.colEnd-f.colEnd||r(c.hlGroup,f.hlGroup)}e=e.slice().sort(n),t=t.slice().sort(n);let o=new Map;for(let c of e)o.has(c.lnum)||o.set(c.lnum,[]),o.get(c.lnum).push(c);let s=new Map;for(let c of t)s.has(c.lnum)||s.set(c.lnum,[]),s.get(c.lnum).push(c);let a=Math.max((e[e.length-1]||{lnum:0}).lnum,(t[t.length-1]||{lnum:0}).lnum),l=new Set;for(let c=0;c<=a;c++){let f=o.has(c),d=s.has(c);if(f!==d){l.add(c);continue}else if(!f&&!d)continue;let p=o.get(c),h=s.get(c);if(p.length!==h.length){l.add(c);continue}for(let m=0;m{h.deleteCount>0?u.splice(h.start,h.deleteCount):u.splice(h.start,0,...h.data)})),this.previousResults={resultId:a.resultId,tokens:u,version:l};let c=[];for(let h=0;h{Fi();Ne();je();Yc();be();Te();Z();AZ();U_e=W()("semanticTokens"),wD="Statement",DD=class{constructor(e,t){this.nvim=e;this.handler=t;this.disposables=[];this.loadConfiguration(),b.onDidChangeConfiguration(this.loadConfiguration,this,this.disposables),pe.register({id:"semanticTokens.checkCurrent",execute:async()=>{try{(await this.getCurrentItem()).checkState()}catch(r){T.showMessage(r.message,"error");return}T.showMessage("Semantic tokens provider found for current buffer","more")}},!1,"check semantic tokens provider for current buffer"),pe.register({id:"semanticTokens.clearCurrent",execute:async()=>{(await e.buffer).clearNamespace(la,0,-1)}},!1,"clear semantic tokens highlights of current buffer"),pe.register({id:"semanticTokens.clearAll",execute:async()=>{let r=await e.buffers;for(let n of r)n.clearNamespace(la,0,-1)}},!1,"clear semantic tokens highlights of all buffers"),this.disposables.push({dispose:()=>{pe.unregister("semanticTokens.checkCurrentBuffer")}}),M.on("BufEnter",r=>{let n=this.highlighters.getItem(r);if(!n)return;let o=b.getDocument(r);!o||o.textDocument.version==n.previousVersion||n.forceHighlight().catch(s=>{U_e.error("Error on semantic highlighters:",s)})},null,this.disposables),this.highlighters=b.registerBufferSync(r=>new bD(this.nvim,r.bufnr,this.config)),B.onDidSemanticTokensRefresh(r=>{for(let n of this.highlighters.items){let o=b.getDocument(n.bufnr);o&&b.match(r,o.textDocument)&&n.highlight()}},null,this.disposables)}loadConfiguration(e){if(!e||e.affectsConfiguration("coc.preferences")){let r=b.getConfiguration("coc.preferences").get("semanticTokensHighlights",!0);if(b.isVim&&!b.env.textprop&&(r=!1),this.config&&r!=this.config.enabled&&this.highlighters)for(let n of this.highlighters.items)n.setState(r);this.config?this.config.enabled=r:this.config={enabled:r}}}async getCurrentItem(){let e=await this.nvim.buffer,t=this.highlighters.getItem(e.id);if(!t)throw new Error("current buffer not attached");return t}async highlightCurrent(){let e=await this.getCurrentItem();e.checkState(),await e.forceHighlight()}async showHiglightInfo(){if(!this.config.enabled)throw new Error("Semantic highlights is disabled by configuration.");let e=await this.getCurrentItem();e.checkState();let t=e.highlights||[],r=new dn,{nvim:n}=this;n.pauseNotification(),n.command(`vs +setl\\ buftype=nofile __coc_semantic_highlights_${e.bufnr}__`,!0),n.command("setl bufhidden=wipe noswapfile nobuflisted wrap undolevels=-1",!0),n.call("bufnr",["%"],!0);let o=await n.resumeNotification();if(o[1])throw new Error(`Error on buffer create: ${o[1]}`);let s=o[0][2];r.addLine("Semantic highlights info",wD),r.addLine(""),r.addLine("The number of semantic tokens: "),r.addText(String(t.length),"Number"),r.addLine(""),r.addLine("Semantic highlight groups used by current buffer",wD),r.addLine("");let a=[...new Set(t.map(({hlGroup:c})=>c))];for(let c of a)r.addTexts([{text:"-",hlGroup:"Comment"},{text:" "},{text:c,hlGroup:c}]),r.addLine("");r.addLine("Tokens types that current Language Server supported:",wD),r.addLine("");let l=b.getDocument(e.bufnr),u=B.getLegend(l.textDocument);if(u==null?void 0:u.tokenTypes.length)for(let c of u.tokenTypes)r.addTexts([{text:"-",hlGroup:"Comment"},{text:" "},{text:`CocSem_${c}`,hlGroup:`CocSem_${c}`}]),r.addLine("");else r.addLine("No token types supported","Comment");if(r.addLine("Tokens modifiers that current Language Server supported:",wD),r.addLine(""),u==null?void 0:u.tokenModifiers.length)for(let c of u.tokenModifiers)r.addTexts([{text:"-",hlGroup:"Comment"},{text:" "},{text:`CocSem_${c}`,hlGroup:`CocSem_${c}`}]),r.addLine("");else r.addLine("No token modifiers supported","Comment");n.pauseNotification(),r.render(n.createBuffer(s)),n.resumeNotification(!1,!0)}dispose(){this.highlighters.dispose(),V(this.disposables)}}});var Ml,Att,xD,MZ=I(()=>{Ml=C(G());Ne();je();ec();be();xt();Z();uD();Att=W()("handler-signature"),xD=class{constructor(e,t){this.nvim=e;this.handler=t;this.disposables=[];this.signatureFactory=new Zi(e),this.loadConfiguration(),this.disposables.push(this.signatureFactory),b.onDidChangeConfiguration(this.loadConfiguration,this,this.disposables),M.on("CursorMovedI",async(n,o)=>{if(!this.signaturePosition)return;let s=b.getDocument(n);if(!s)return;let{line:a,character:l}=this.signaturePosition;if(o[0]-1==a){let u=s.getline(o[0]-1),c=ge(u.slice(0,l))+1;if(o[1]>=c)return}this.signatureFactory.close()},null,this.disposables),M.on(["InsertLeave","BufEnter"],()=>{var n;(n=this.tokenSource)==null||n.cancel()},null,this.disposables),M.on(["TextChangedI","TextChangedP"],async()=>{this.config.hideOnChange&&this.signatureFactory.close()},null,this.disposables);let r;M.on("InsertCharPre",async()=>{r=Date.now()},null,this.disposables),M.on("TextChangedI",async(n,o)=>{if(!this.config.trigger||!r||Date.now()-r>300)return;r=null;let s=b.getDocument(n);if(!s||s.isCommandLine||!s.attached)return;let a=o.pre[o.pre.length-1];!a||!B.shouldTriggerSignatureHelp(s.textDocument,a)||await this._triggerSignatureHelp(s,{line:o.lnum-1,character:o.pre.length},!1)},null,this.disposables)}loadConfiguration(e){if(!e||e.affectsConfiguration("signature")){let t=b.getConfiguration("signature"),r=t.get("target","float");r=="float"&&!b.floatSupported&&(r="echo"),this.config={target:r,trigger:t.get("enable",!0),wait:Math.max(t.get("triggerSignatureWait",500),200),maxWindowHeight:t.get("maxWindowHeight",80),maxWindowWidth:t.get("maxWindowWidth",80),preferAbove:t.get("preferShownAbove",!0),hideOnChange:t.get("hideOnTextChange",!1)}}}async triggerSignatureHelp(){let{doc:e,position:t,mode:r}=await this.handler.getCurrentState();if(!B.hasProvider("signature",e.textDocument))return!1;let n=0,o=t.character;if(r=="s"){let s=await this.nvim.getVar("coc_last_placeholder");if(s){let{start:a,end:l,bufnr:u}=s;u==e.bufnr&&a.line==l.line&&a.line==t.line&&(t=Ml.Position.create(a.line,a.character),n=o-t.character)}}return await this._triggerSignatureHelp(e,t,!0,n)}async _triggerSignatureHelp(e,t,r=!0,n=0){var d;(d=this.tokenSource)==null||d.cancel();let o=this.tokenSource=new Ml.CancellationTokenSource,s=o.token;s.onCancellationRequested(()=>{o.dispose(),this.tokenSource=void 0});let{target:a}=this.config,l=this.timer=setTimeout(()=>{o.cancel()},this.config.wait);await e.synchronize();let u=await B.getSignatureHelp(e.textDocument,t,s,{isRetrigger:this.signatureFactory.checkRetrigger(e.bufnr),triggerKind:r?Ml.SignatureHelpTriggerKind.Invoked:Ml.SignatureHelpTriggerKind.TriggerCharacter});if(clearTimeout(l),s.isCancellationRequested)return!1;if(!u||u.signatures.length==0)return this.signatureFactory.close(),!1;let{activeSignature:c,signatures:f}=u;if(c){let[p]=f.splice(c,1);p&&f.unshift(p)}return a=="echo"?this.echoSignature(u):await this.showSignatureHelp(e,t,u,n),!0}async showSignatureHelp(e,t,r,n){let{signatures:o,activeParameter:s}=r,a=null,l=n,u=o.reduce((h,m,w)=>{var x;let v=null,D=m.label.indexOf("(");if(w==0&&s!=null){let S=(x=m.parameters)==null?void 0:x[s];if(S){let P=m.label.slice(D==-1?0:D);if(a=S.documentation,typeof S.label=="string"){let A=P.slice(0),R=A.match(new RegExp("\\b"+S.label.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"\\b")),N=R?R.index:A.indexOf(S.label);N!=-1&&(v=[N+D,N+S.label.length+D])}else v=S.label}}if(v==null&&(v=[D+1,D+1]),n==l&&(n=n+v[0]+1),h.push({content:m.label,filetype:e.filetype,active:v}),a){let S=typeof a=="string"?a:a.value;S.trim().length&&h.push({content:S,filetype:Wh(m.documentation)?"markdown":"txt"})}if(w==0&&m.documentation){let{documentation:S}=m,P=typeof S=="string"?S:S.value;P.trim().length&&h.push({content:P,filetype:Wh(m.documentation)?"markdown":"txt"})}return h},[]);this.signaturePosition=t;let{preferAbove:c,maxWindowHeight:f,maxWindowWidth:d}=this.config,p=b.getConfiguration("coc.preferences").get("excludeImageLinksInMarkdownDocument");await this.signatureFactory.show(u,{maxWidth:d,maxHeight:f,preferTop:c,autoHide:!1,offsetX:n,modes:["i","ic","s"],excludeImages:p})}echoSignature(e){var s;let{signatures:t,activeParameter:r}=e,n=b.env.columns;t=t.slice(0,b.env.cmdheight);let o=[];for(let a of t){let l=[],{label:u}=a;u=u.replace(/\n/g," "),u.length>=n-16&&(u=u.slice(0,n-16)+"...");let c=u.indexOf("(");if(c==-1)l=[{text:u,type:"Normal"}];else{l.push({text:u.slice(0,c),type:"Label"});let f=u.slice(c);if(o.length==0&&r!=null){let d=(s=a.parameters)==null?void 0:s[r];if(d){let p,h;if(typeof d.label=="string"){let m=f.slice(0),w=m.match(new RegExp("\\b"+d.label.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"\\b")),v=w?w.index:m.indexOf(d.label);v==-1?l.push({text:f,type:"Normal"}):(p=v,h=v+d.label.length)}else[p,h]=d.label,p=p-c,h=h-c;p!=null&&h!=null&&(l.push({text:f.slice(0,p),type:"Normal"}),l.push({text:f.slice(p,h),type:"MoreMsg"}),l.push({text:f.slice(h),type:"Normal"}))}}else l.push({text:f,type:"Normal"})}o.push(l)}this.nvim.callTimer("coc#util#echo_signatures",[o],!0)}dispose(){V(this.disposables),this.timer&&clearTimeout(this.timer)}}});var NZ,Un,SD,qZ,$Z=I(()=>{NZ=C(zr()),Un=C(G());Ne();je();Mh();be();ni();nr();Te();Z();uD();SD=class{constructor(e,t){this.nvim=e;this.handler=t;this.disposables=[];this.buffers=b.registerBufferSync(r=>{if(r.buftype!="")return;let n=new qZ(r.bufnr);return n.onDidUpdate(async o=>{await M.fire("SymbolsUpdate",[n.bufnr,o])}),n}),M.on("CursorHold",async r=>{!this.functionUpdate||this.buffers.getItem(r)==null||await this.getCurrentFunctionSymbol(r)},null,this.disposables),M.on("InsertEnter",r=>{let n=this.buffers.getItem(r);n&&n.cancel()},null,this.disposables)}get functionUpdate(){return b.getConfiguration("coc.preferences").get("currentFunctionSymbolAutoUpdate",!1)}get labels(){return b.getConfiguration("suggest").get("completionItemKindLabels",{})}async getWorkspaceSymbols(e){this.handler.checkProvier("workspaceSymbols",null);let t=new Un.CancellationTokenSource;return await B.getWorkspaceSymbols(e,t.token)}async resolveWorkspaceSymbol(e){var r;if((r=e.location)==null?void 0:r.uri)return e;let t=new Un.CancellationTokenSource;return await B.resolveWorkspaceSymbol(e,t.token)}async getDocumentSymbols(e){let t=this.buffers.getItem(e);return t==null?void 0:t.getSymbols()}async getCurrentFunctionSymbol(e){e||(e=await this.nvim.call("bufnr",["%"]));let t=b.getDocument(e);if(!t||!t.attached||!B.hasProvider("documentSymbol",t.textDocument))return;let r=await T.getCursorPosition(),n=await this.getDocumentSymbols(e),o=this.nvim.createBuffer(e);if(!n||n.length===0)return o.setVar("coc_current_function","",!0),this.nvim.call("coc#util#do_autocmd",["CocStatusChange"],!0),"";n=n.filter(a=>["Class","Method","Function","Struct"].includes(a.kind));let s="";for(let a of n.reverse())if(a.range&&Ir(r,a.range)==0&&!a.text.endsWith(") callback")){s=a.text;let l=this.labels[a.kind.toLowerCase()];l&&(s=`${l} ${s}`);break}return this.functionUpdate&&(o.setVar("coc_current_function",s,!0),this.nvim.call("coc#util#do_autocmd",["CocStatusChange"],!0)),s}async selectSymbolRange(e,t,r){let{doc:n}=await this.handler.getCurrentState();this.handler.checkProvier("documentSymbol",n.textDocument);let o;if(t)o=await b.getSelectedRange(t,n);else{let l=await T.getCursorPosition();o=Un.Range.create(l,l)}let s=await this.getDocumentSymbols(n.bufnr);if(!s||s.length===0){T.showMessage("No symbols found","warning");return}s=s.filter(l=>r.includes(l.kind));let a;for(let l of s.reverse())if(l.range&&!ut(l.range,o)&&Xn(o,l.range)){a=l.range;break}if(e&&a){let{start:l,end:u}=a,c=n.getline(l.line+1),f=n.getline(u.line-1);a=Un.Range.create(l.line+1,c.match(/^\s*/)[0].length,u.line-1,f.length)}a?await b.selectRange(a):["v","V",""].includes(t)&&await this.nvim.command("normal! gv")}dispose(){this.buffers.dispose(),V(this.disposables)}},qZ=class{constructor(e){this.bufnr=e;this.disposables=[];this.autoUpdate=!1;this.symbols=[];this._onDidUpdate=new Un.Emitter;this.onDidUpdate=this._onDidUpdate.event;this.fetchSymbols=(0,NZ.default)(()=>{this._fetchSymbols().logError()},global.hasOwnProperty("__TEST__")?10:500)}async getSymbols(){let e=b.getDocument(this.bufnr);return e?(e.forceSync(),this.autoUpdate=!0,e.version==this.version?this.symbols:(this.cancel(),await this._fetchSymbols(),this.symbols)):[]}onChange(){this.cancel()}get textDocument(){var e;return(e=b.getDocument(this.bufnr))==null?void 0:e.textDocument}async _fetchSymbols(){let{textDocument:e}=this;if(!e||e.version==this.version)return;let{version:t}=e,r=this.tokenSource=new Un.CancellationTokenSource,{token:n}=r,o=await B.getDocumentSymbol(e,n);if(this.tokenSource=void 0,o==null||n.isCancellationRequested)return;let s=0,a=[];if(JR(o))o.sort(VR),o.forEach(l=>KR(a,l,s));else{o.sort(gZ);for(let l of o){let{name:u,kind:c,location:f}=l,{start:d}=f.range,p={col:d.character+1,lnum:d.line+1,text:u,level:0,kind:co(c),range:f.range,containerName:l.containerName};a.push(p)}}this.version=t,this.symbols=a,JR(o)?this._onDidUpdate.fire(o):this._onDidUpdate.fire(o.map(l=>Un.DocumentSymbol.create(l.name,"",l.kind,l.location.range,l.location.range)))}cancel(){this.fetchSymbols.clear(),this.tokenSource&&(this.tokenSource.cancel(),this.tokenSource=null)}dispose(){this.cancel(),this.symbols=void 0,this._onDidUpdate.dispose(),V(this.disposables)}}});var ED,W_e,CD,BZ=I(()=>{ED=C(G());Ne();je();be();Te();Z();rZ();nZ();cZ();fZ();dZ();hZ();mZ();vZ();bZ();wZ();RZ();kZ();FZ();LZ();MZ();$Z();W_e=W()("Handler"),CD=class{constructor(e){this.nvim=e;this.disposables=[];this.requestStatusItem=T.createStatusBarItem(0,{progress:!0}),M.on(["CursorMoved","CursorMovedI","InsertEnter","InsertSnippet","InsertLeave"],()=>{this.requestTokenSource&&(this.requestTokenSource.cancel(),this.requestTokenSource=null)},null,this.disposables),this.fold=new nD(e,this),this.links=new fD(e,this),this.codeLens=new Zw(e),this.colors=new rD(e,this),this.format=new sD(e,this),this.symbols=new SD(e,this),this.refactor=new gD(e,this),this.hover=new cD(e,this),this.locations=new dD(e,this),this.signature=new xD(e,this),this.rename=new vD(e,this),this.codeActions=new Yw(e,this),this.commands=new iD(e,b.env),this.callHierarchy=new yD(e,this),this.documentHighlighter=new aD(e,this),this.semanticHighlighter=new DD(e,this),this.disposables.push({dispose:()=>{this.codeLens.dispose(),this.refactor.dispose(),this.signature.dispose(),this.symbols.dispose(),this.hover.dispose(),this.locations.dispose(),this.colors.dispose(),this.documentHighlighter.dispose(),this.semanticHighlighter.dispose()}})}async getCurrentState(){let{nvim:e}=this,[t,[r,n],o,s]=await e.eval("[bufnr('%'),coc#util#cursor(),win_getid(),mode()]"),a=b.getDocument(t);if(!a||!a.attached)throw new Error(`current buffer ${t} not attached`);return{doc:a,mode:s,position:ED.Position.create(r,n),winid:o}}addDisposable(e){this.disposables.push(e)}checkProvier(e,t){if(!B.hasProvider(e,t))throw new Error(`${e} provider not found for current buffer, your language server doesn't support it.`)}async withRequestToken(e,t,r){this.requestTokenSource&&(this.requestTokenSource.cancel(),this.requestTokenSource.dispose()),this.requestTimer&&clearTimeout(this.requestTimer);let n=this.requestStatusItem;this.requestTokenSource=new ED.CancellationTokenSource;let{token:o}=this.requestTokenSource;o.onCancellationRequested(()=>{n.text=`${e} request canceled`,n.isProgress=!1,this.requestTimer=setTimeout(()=>{n.hide()},500)}),n.isProgress=!0,n.text=`requesting ${e}`,n.show();let s;try{s=await Promise.resolve(t(o))}catch(a){T.showMessage(a.message,"error"),W_e.error(`Error on ${e}`,a)}return this.requestTokenSource&&(this.requestTokenSource.dispose(),this.requestTokenSource=void 0),o.isCancellationRequested?null:(n.hide(),r&&(!s||Array.isArray(s)&&s.length==0)?(T.showMessage(`${e} not found`,"warning"),null):s)}async hasProvider(e){let t=await this.nvim.call("bufnr","%"),r=b.getDocument(t);return r?B.hasProvider(e,r.textDocument):!1}dispose(){this.requestTimer&&clearTimeout(this.requestTimer),V(this.disposables)}}});var jZ,XR,UZ,WZ,ZR,Nl,_D,HZ=I(()=>{jZ=C(require("events")),XR=C(require("fs")),UZ=C(require("path")),WZ=C(qU()),ZR=C(G());Ze();Fi();NR();tZ();ol();Ne();na();BZ();je();Aw();kh();Jc();_l();en();Te();Z();Nl=W()("plugin");WZ.default.shim();_D=class extends jZ.EventEmitter{constructor(e){super();this.nvim=e;this._ready=!1;this.actions=new Map;Object.defineProperty(b,"nvim",{get:()=>this.nvim}),b.onDidChangeWorkspaceFolders(()=>{e.setVar("WorkspaceFolders",b.folderPaths,!0)}),this.cursors=new Jw(e),pe.init(e,this),this.addAction("checkJsonExtension",()=>{xe.has("coc-json")||T.showMessage("Run :CocInstall coc-json for json intellisense","more")}),this.addAction("rootPatterns",r=>{let n=b.getDocument(r);return n?{buffer:b.getRootPatterns(n,si.Buffer),server:b.getRootPatterns(n,si.LanguageServer),global:b.getRootPatterns(n,si.Global)}:null}),this.addAction("getConfig",async r=>{let n=await b.document;return b.getConfiguration(r,n?n.uri:void 0)}),this.addAction("doAutocmd",async(r,...n)=>{let o=b.autocmds.get(r);if(o)try{await Promise.resolve(o.callback.apply(o.thisArg,n))}catch(s){Nl.error(`Error on autocmd ${o.event}`,s),T.showMessage(`Error on autocmd ${o.event}: ${s.message}`)}}),this.addAction("openLog",async()=>{let r=Nl.getLogFile();await b.jumpTo(j.file(r).toString())}),this.addAction("attach",()=>b.attach()),this.addAction("detach",()=>b.detach()),this.addAction("doKeymap",async(r,n="",o)=>{let s=b.keymaps.get(r);if(!s)return Nl.error(`keymap for ${r} not found`),this.nvim.command(`silent! unmap ${o.startsWith("{")&&o.endsWith("}")?`<${o.slice(1,-1)}>`:o}`,!0),n;let[a,l]=s,u=await Promise.resolve(a());return l&&await e.command(`silent! call repeat#set("\\(coc-${r})", -1)`),u!=null?u:n}),this.addAction("registExtensions",async(...r)=>{for(let n of r)await xe.loadExtension(n)}),this.addAction("snippetCheck",async(r,n)=>{if(r&&!xe.has("coc-snippets"))return console.error("coc-snippets required for check expand status!"),!1;if(n&&gr.jumpable())return!0;if(r){let o=xe.getExtensionApi("coc-snippets");if(o&&o.hasOwnProperty("expandable")&&await Promise.resolve(o.expandable()))return!0}return!1}),this.addAction("snippetNext",()=>gr.nextPlaceholder()),this.addAction("snippetPrev",()=>gr.previousPlaceholder()),this.addAction("snippetCancel",()=>gr.cancel()),this.addAction("openLocalConfig",()=>T.openLocalConfig()),this.addAction("showInfo",async()=>{this.infoChannel?this.infoChannel.clear():this.infoChannel=T.createOutputChannel("info");let r=this.infoChannel;r.appendLine("## versions"),r.appendLine("");let o=(await this.nvim.call("execute",["version"])).trim().split(/\r?\n/,2)[0].replace(/\(.*\)/,"").trim();r.appendLine("vim version: "+o+`${b.isVim?" "+b.env.version:""}`),r.appendLine("node version: "+process.version),r.appendLine("coc.nvim version: "+this.version),r.appendLine("coc.nvim directory: "+UZ.default.dirname(__dirname)),r.appendLine("term: "+(process.env.TERM_PROGRAM||process.env.TERM)),r.appendLine("platform: "+process.platform),r.appendLine(""),r.appendLine("## Log of coc.nvim"),r.appendLine("");let s=Nl.getLogFile();if(XR.default.existsSync(s)){let a=XR.default.readFileSync(s,{encoding:"utf8"});r.appendLine(a)}r.show()}),this.addAction("findLocations",(r,n,o,s)=>this.handler.locations.findLocations(r,n,o,s)),this.addAction("hasProvider",r=>this.handler.hasProvider(r)),this.addAction("getTagList",()=>this.handler.locations.getTagList()),this.addAction("hasSelected",()=>sa.hasSelected()),this.addAction("listNames",()=>vr.names),this.addAction("listDescriptions",()=>vr.descriptions),this.addAction("listLoadItems",r=>vr.loadItems(r)),this.addAction("search",(...r)=>this.handler.refactor.search(r)),this.addAction("cursorsSelect",(r,n,o)=>this.cursors.select(r,n,o)),this.addAction("fillDiagnostics",r=>Ot.setLocationlist(r)),this.addAction("saveRefactor",r=>this.handler.refactor.save(r)),this.addAction("commandList",()=>this.handler.commands.getCommandList()),this.addAction("selectSymbolRange",(r,n,o)=>this.handler.symbols.selectSymbolRange(r,n,o)),this.addAction("openList",(...r)=>vr.start(r)),this.addAction("listResume",r=>vr.resume(r)),this.addAction("listCancel",()=>vr.cancel(!0)),this.addAction("listPrev",r=>vr.previous(r)),this.addAction("listNext",r=>vr.next(r)),this.addAction("listFirst",r=>vr.first(r)),this.addAction("listLast",r=>vr.last(r)),this.addAction("sendRequest",(r,n,o)=>qr.sendRequest(r,n,o)),this.addAction("sendNotification",(r,n,o)=>qr.sendNotification(r,n,o)),this.addAction("registNotification",(r,n)=>qr.registNotification(r,n)),this.addAction("updateConfig",(r,n)=>b.configurations.updateUserConfig({[r]:n})),this.addAction("links",()=>this.handler.links.getLinks()),this.addAction("openLink",()=>this.handler.links.openCurrentLink()),this.addAction("pickColor",()=>this.handler.colors.pickColor()),this.addAction("colorPresentation",()=>this.handler.colors.pickPresentation()),this.addAction("highlight",()=>this.handler.documentHighlighter.highlight()),this.addAction("fold",r=>this.handler.fold.fold(r)),this.addAction("startCompletion",r=>sa.startCompletion(r)),this.addAction("stopCompletion",()=>sa.stop(!1)),this.addAction("sourceStat",()=>nt.sourceStats()),this.addAction("refreshSource",r=>nt.refresh(r)),this.addAction("toggleSource",r=>nt.toggleSource(r)),this.addAction("diagnosticRefresh",r=>Ot.refresh(r)),this.addAction("diagnosticInfo",()=>Ot.echoMessage()),this.addAction("diagnosticToggle",()=>Ot.toggleDiagnostic()),this.addAction("diagnosticToggleBuffer",async r=>{r||(r=await e.call("bufnr",["%"])),Ot.toggleDiagnosticBuffer(r)}),this.addAction("diagnosticNext",r=>Ot.jumpNext(r)),this.addAction("diagnosticPrevious",r=>Ot.jumpPrevious(r)),this.addAction("diagnosticPreview",()=>Ot.preview()),this.addAction("diagnosticList",()=>Ot.getDiagnosticList()),this.addAction("jumpDefinition",r=>this.handler.locations.gotoDefinition(r)),this.addAction("definitions",()=>this.handler.locations.definitions()),this.addAction("jumpDeclaration",r=>this.handler.locations.gotoDeclaration(r)),this.addAction("declarations",()=>this.handler.locations.declarations()),this.addAction("jumpImplementation",r=>this.handler.locations.gotoImplementation(r)),this.addAction("implementations",()=>this.handler.locations.implementations()),this.addAction("jumpTypeDefinition",r=>this.handler.locations.gotoTypeDefinition(r)),this.addAction("typeDefinitions",()=>this.handler.locations.typeDefinitions()),this.addAction("jumpReferences",r=>this.handler.locations.gotoReferences(r)),this.addAction("references",()=>this.handler.locations.references()),this.addAction("jumpUsed",r=>this.handler.locations.gotoReferences(r,!1)),this.addAction("doHover",r=>this.handler.hover.onHover(r)),this.addAction("getHover",()=>this.handler.hover.getHover()),this.addAction("showSignatureHelp",()=>this.handler.signature.triggerSignatureHelp()),this.addAction("documentSymbols",async r=>(r||(r=(await b.document).bufnr),await this.handler.symbols.getDocumentSymbols(r))),this.addAction("ensureDocument",async()=>{let r=await b.document;return r&&r.attached}),this.addAction("symbolRanges",()=>this.handler.documentHighlighter.getSymbolsRanges()),this.addAction("selectionRanges",()=>this.handler.selectionRange.getSelectionRanges()),this.addAction("rangeSelect",(r,n)=>this.handler.selectionRange.selectRange(r,n)),this.addAction("rename",r=>this.handler.rename.rename(r)),this.addAction("getWorkspaceSymbols",r=>this.handler.symbols.getWorkspaceSymbols(r)),this.addAction("resolveWorkspaceSymbol",r=>this.handler.symbols.resolveWorkspaceSymbol(r)),this.addAction("formatSelected",r=>this.handler.format.formatCurrentRange(r)),this.addAction("format",()=>this.handler.format.formatCurrentBuffer()),this.addAction("commands",()=>this.handler.commands.getCommands()),this.addAction("services",()=>qr.getServiceStats()),this.addAction("toggleService",r=>qr.toggle(r)),this.addAction("codeAction",(r,n)=>this.handler.codeActions.doCodeAction(r,n)),this.addAction("organizeImport",()=>this.handler.codeActions.organizeImport()),this.addAction("fixAll",()=>this.handler.codeActions.doCodeAction(null,[ZR.CodeActionKind.SourceFixAll]));let t=[];this.addAction("doCodeAction",r=>{if(r.index==null)throw new Error("index should exists with codeAction");let n=t[r.index];if(!n)throw new Error(`invalid codeAction index: ${r.index}`);return this.handler.codeActions.applyCodeAction(n)}),this.addAction("codeActions",async(r,n)=>(t=await this.handler.codeActions.getCurrentCodeActions(r,n),t.map((o,s)=>Object.assign({index:s},o)))),this.addAction("quickfixes",async r=>(t=await this.handler.codeActions.getCurrentCodeActions(r,[ZR.CodeActionKind.QuickFix]),t.map((n,o)=>Object.assign({index:o},n)))),this.addAction("codeLensAction",()=>this.handler.codeLens.doAction()),this.addAction("runCommand",(...r)=>this.handler.commands.runCommand(...r)),this.addAction("doQuickfix",()=>this.handler.codeActions.doQuickfix()),this.addAction("refactor",()=>this.handler.refactor.doRefactor()),this.addAction("repeatCommand",()=>this.handler.commands.repeat()),this.addAction("installExtensions",(...r)=>xe.installExtensions(r)),this.addAction("updateExtensions",r=>xe.updateExtensions(r)),this.addAction("extensionStats",()=>xe.getExtensionStates()),this.addAction("loadedExtensions",()=>xe.loadedExtensions()),this.addAction("watchExtension",r=>xe.watchExtension(r)),this.addAction("activeExtension",r=>xe.activate(r)),this.addAction("deactivateExtension",r=>xe.deactivate(r)),this.addAction("reloadExtension",r=>xe.reloadExtension(r)),this.addAction("toggleExtension",r=>xe.toggleExtension(r)),this.addAction("uninstallExtension",(...r)=>xe.uninstallExtension(r)),this.addAction("getCurrentFunctionSymbol",()=>this.handler.symbols.getCurrentFunctionSymbol()),this.addAction("getWordEdit",()=>this.handler.rename.getWordEdit()),this.addAction("addCommand",r=>this.handler.commands.addVimCommand(r)),this.addAction("addRanges",r=>this.cursors.addRanges(r)),this.addAction("currentWorkspacePath",()=>b.rootPath),this.addAction("selectCurrentPlaceholder",r=>gr.selectCurrentPlaceholder(!!r)),this.addAction("codeActionRange",(r,n,o)=>this.handler.codeActions.codeActionRange(r,n,o)),this.addAction("incomingCalls",r=>this.handler.callHierarchy.getIncoming(r)),this.addAction("outgoingCalls",r=>this.handler.callHierarchy.getOutgoing(r)),this.addAction("semanticHighlight",()=>this.handler.semanticHighlighter.highlightCurrent()),this.addAction("showSemanticHighlightInfo",()=>this.handler.semanticHighlighter.showHiglightInfo())}addAction(e,t){if(this.actions.has(e))throw new Error(`Action ${e} already exists`);this.actions.set(e,t)}async init(){let{nvim:e}=this,t=Date.now();try{await xe.init(),await b.init(),B.init(),gr.init(),sa.init(),Ot.init(),vr.init(e),nt.init(),this.handler=new CD(e),qr.init(),xe.activateExtensions(),b.setupDynamicAutocmd(!0),e.pauseNotification(),e.setVar("WorkspaceFolders",b.folderPaths,!0),e.setVar("coc_service_initialized",1,!0),e.call("coc#util#do_autocmd",["CocNvimInit"],!0),e.resumeNotification(!1,!0),this._ready=!0,await M.fire("ready",[]),Nl.info(`coc.nvim ${this.version} initialized with node: ${process.version} after ${Date.now()-t}ms`),this.emit("ready")}catch(r){console.error(`Error on initialize: ${r.stack}`),Nl.error(r.stack)}}get isReady(){return this._ready}get ready(){return this._ready?Promise.resolve():new Promise(e=>{this.once("ready",()=>{e()})})}get version(){return b.version+"-c02be2e344"}hasAction(e){return this.actions.has(e)}async cocAction(e,...t){let r=this.actions.get(e);if(!r)throw new Error(`Action "${e}" not exists`);let n=Date.now(),o=await Promise.resolve(r.apply(null,t)),s=Date.now()-n;return s>500&&Nl.warn(`Slow action "${e}" cost ${s}ms`),o}getHandler(){return this.handler}dispose(){this.removeAllListeners(),xe.dispose(),vr.dispose(),b.dispose(),T.dispose(),nt.dispose(),qr.stopAll(),qr.dispose(),this.handler&&this.handler.dispose(),gr.dispose(),pe.dispose(),sa.dispose(),Ot.dispose()}}});var KZ={};ns(KZ,{default:()=>z_e});var zZ,GZ,VZ,ho,H_e,z_e,JZ=I(()=>{zZ=C(v0()),GZ=C(mx());Ne();HZ();VZ=C(cp());Vi();Ze();Z_();ho=W()("attach"),H_e=global.hasOwnProperty("__TEST__"),z_e=(i,e=!0)=>{let t=(0,zZ.attach)(i,GZ.default.getLogger("node-client"),e);global.hasOwnProperty("__TEST__")||t.call("coc#util#path_replace_patterns").then(s=>{if(Wt(s)){let a=j.file;j.file=l=>(l=l.replace(/\\/g,"/"),Object.keys(s).forEach(u=>l=l.replace(new RegExp("^"+u),s[u])),a(l))}}).logError(),t.setVar("coc_process_pid",process.pid,!0);let r=new _D(t),n=!1,o=!1;return t.on("notification",async(s,a)=>{switch(s){case"VimEnter":{!o&&n&&(o=!0,await r.init());break}case"Log":{ho.debug(...a);break}case"TaskExit":case"TaskStderr":case"TaskStdout":case"GlobalChange":case"PromptInsert":case"InputChar":case"MenuInput":case"OptionSet":case"FloatBtnClick":await M.fire(s,a);break;case"CocAutocmd":ho.trace("Notification autocmd:",...a),await M.fire(a[0],a.slice(1));break;default:{if(!r.hasAction(s)){if(global.hasOwnProperty("__TEST__"))return;console.error(`action "${s}" not exists`);return}try{r.isReady?ho.info("receive notification:",s,a):ho.warn(`Plugin not ready when received "${s}"`,a),await r.ready,await r.cocAction(s,...a)}catch(u){console.error(`Error on "${s}": ${u.message||u.toString()}`),ho.error("Notification error:",s,a,u)}}}}),t.on("request",async(s,a,l)=>{if(s=="redraw"){l.send();return}let u=setTimeout(()=>{ho.error("Request cost more than 3s",s,a)},3e3);try{if(s=="CocAutocmd")ho.trace("Request autocmd:",...a),await M.fire(a[0],a.slice(1)),l.send(void 0);else{if(!r.isReady){ho.warn(`Plugin not ready on request "${s}"`,a),l.send("Plugin not ready",!0);return}ho.info("Request action:",s,a);let c=await r.cocAction(s,...a);l.send(c)}clearTimeout(u)}catch(c){clearTimeout(u),l.send(c.message||c.toString(),!0),ho.error("Request error:",s,a,c)}}),t.channelId.then(async s=>{n=!0,H_e&&t.command(`let g:coc_node_channel_id = ${s}`,!0);let{major:a,minor:l,patch:u}=VZ.default.parse(yy);t.setClientInfo("coc",{major:a,minor:l,patch:u},"remote",{},{}),await t.getVvar("vim_did_enter")&&!o&&(o=!0,await r.init())}).catch(s=>{console.error(`Channel create error: ${s.message}`)}),r}});Nm();Object.defineProperty(console,"log",{value(){QR.info(...arguments)}});var QR=W()("server"),G_e=(JZ(),KZ).default;G_e({reader:process.stdin,writer:process.stdout});process.on("uncaughtException",function(i){let e="Uncaught exception: "+i.message;console.error(e),QR.error("uncaughtException",i.stack)});process.on("unhandledRejection",function(i,e){i instanceof Error?console.error("UnhandledRejection: "+i.message+` `+i.stack):console.error("UnhandledRejection: "+i),QR.error("unhandledRejection ",e,i)}); /*! * @description Recursive object extending diff --git a/doc/coc.txt b/doc/coc.txt index e141edc19de..ef02844018b 100644 --- a/doc/coc.txt +++ b/doc/coc.txt @@ -2784,7 +2784,7 @@ CocSem_* *CocSem* Basic defaults are provided for the "standard" token kinds, but any kind supported by the server can be highlighted by creating the highlight group. - Default (disable by setting `g:coc_default_semantic_highlight_groups = 0`): + Default (enabled by setting `g:coc_default_semantic_highlight_groups = 1`): `hi default link CocSem_namespace Identifier` `hi default link CocSem_type Type` `hi default link CocSem_class Structure` diff --git a/plugin/coc.vim b/plugin/coc.vim index 010406096dc..41c8846af48 100644 --- a/plugin/coc.vim +++ b/plugin/coc.vim @@ -396,7 +396,7 @@ function! s:Hi() abort endif call s:AddAnsiGroups() - if get(g:, 'coc_default_semantic_highlight_groups', 1) == 1 + if get(g:, 'coc_default_semantic_highlight_groups', 0) == 1 hi default link CocSem_namespace Identifier hi default link CocSem_type Type hi default link CocSem_class Structure @@ -481,7 +481,7 @@ command! -nargs=+ -complete=custom,s:ExtensionList CocUninstall :call CocAction command! -nargs=* -complete=custom,s:CommandList -range CocCommand :call coc#rpc#notify('runCommand', []) command! -nargs=* -complete=custom,coc#list#options CocList :call coc#rpc#notify('openList', []) command! -nargs=? -complete=custom,coc#list#names CocListResume :call coc#rpc#notify('listResume', []) -command! -nargs=0 -complete=custom,coc#list#names CocListCancel :call coc#rpc#notify('listCancel', []) +command! -nargs=? -complete=custom,coc#list#names CocListCancel :call coc#rpc#notify('listCancel', []) command! -nargs=? -complete=custom,coc#list#names CocPrev :call coc#rpc#notify('listPrev', []) command! -nargs=? -complete=custom,coc#list#names CocNext :call coc#rpc#notify('listNext', []) command! -nargs=? -complete=custom,coc#list#names CocFirst :call coc#rpc#notify('listFirst', [])