MCPcopy
hub / github.com/JuliaPluto/Pluto.jl / create

Function create

frontend-dist/editor.9f609029.js:217โ€“217  ยท  view source on GitHub โ†—
(e)

Source from the content-addressed store, hash-verified

215 </pluto-helpbox>
216 </aside>
217 `},nw=(e,t)=>{let[n,r]=(0,u.useState)(!1);return(0,u.useEffect)(()=>{if(e){let e=setTimeout(()=>{r(!0)},t);return()=>clearTimeout(e)}r(!1)},[e]),n},nE=(e,t)=>{let n=nk(t);return null==t?e.status_tree:{name:"notebook",started_at:0,finished_at:null,subtasks:{...e.status_tree?.subtasks,backend_launch:n}}},nk=e=>{let t=e??-1,n=Object.fromEntries(["requesting","created","responded","notebook_running"].map(e=>{let n=nh[e],r=`backend_${e}`;return[r,np(r,t>=n,t>n)]}));return np("backend_launch",null!=e&&e>nh.wait_for_user,e===nh.ready,n)};var u=s("cNaMA"),eT=s("gN16p"),eR=s("aN0pg"),tX=s("1gqBQ"),n$=s("hiQgq"),u=s("cNaMA"),ev=s("8iRLb"),nx=s("2P6PH"),eT=s("gN16p"),n$=s("hiQgq"),ev=s("8iRLb"),n$=s("hiQgq"),eR=s("aN0pg"),n$=s("hiQgq"),ev=s("8iRLb");let nS=!1,nN=e=>({from:e.from,to:e.to}),nC=(e,t,n)=>{for(let r of e)if(r.name===t&&n.from>=r.validity.from&&n.to<=r.validity.to)return r},nA=new Set(["WhileStatement","ForStatement","TryStatement","LetStatement","FunctionDefinition","MacroDefinition","DoClause","Generator","ArrowFunctionExpression"]),nO=e=>{if(nA.has(e.name))return!0;if("Assignment"===e.name){let t=e.firstChild();try{if("CallExpression"===e.name)return!0;if("BinaryExpression"===e.name){let t;e.firstChild();let n="CallExpression"===e.name||"BinaryExpression"===e.name&&(e.firstChild(),t="CallExpression"===e.name,e.parent(),t);if(e.parent(),n)return!0}}finally{t&&e.parent()}}return!1},nR=e=>{let t=nM(e),n=[],r=[];return e.iterate(e=>"Type"===e.name?(e.node.cursor().iterate(e=>{"Identifier"===e.name&&r.push(nN(e))}),!1):"BraceExpression"!==e.name&&((("Identifier"===e.name||"MacroIdentifier"===e.name||"Operator"===e.name)&&n.push(nN(e)),"IndexExpression"===e.name||"FieldExpression"===e.name)?(e.node.cursor().iterate(e=>{if("Identifier"===e.name&&r.push(nN(e)),"Field"===e.name)return!1}),!1):void 0)),t(),{definitions:n,usages:r}},nT=e=>{let t=new(0,n$.NodeWeakMap);return t.cursorSet(e,"here"),()=>{for(;"here"!==t.cursorGet(e);)if(!e.parent())throw Error("Could not find my back to the original parent!")}},nM=e=>{let t=new(0,n$.NodeWeakMap);t.cursorSet(e,"yay");let n=e=>`${e.name}(${e.from},${e.to})`,r=n(e);return()=>{if("yay"!==t.cursorGet(e))throw Error(`Cursor changed position when forbidden! Before: ${r}, after: ${n(e)}`)}},nL=e=>{let t=new(0,n$.NodeWeakMap);if(t.cursorSet(e,"here"),!e.parent())return{parent_name:null,index:-1};let n=e.name;if(!e.firstChild())throw Error("Could not find my way back");let r=0;for(;"here"!==t.cursorGet(e);)if(r++,!e.nextSibling())throw Error("Could not find my way back");return{parent_name:n,index:r}},nI=(e,{enter:t,leave:n})=>{nS&&console.assert("TupleExpression"===e.name||"Arguments"===e.name,e.name);let r=[],i=nM(e),a=nT(e);if(!e.firstChild())throw Error(`Expected to go into function definition argument expression, stuck at ${e.name}`);e.firstChild();let o=()=>{if("Identifier"===e.name||"Operator"===e.name)r.push(nN(e));else if("KwArg"===e.name){let r=e.firstChild();o(),e.nextSibling(),e.nextSibling(),e.iterate(t,n),r&&e.parent()}else if("BinaryExpression"===e.name){let r=e.firstChild();o(),e.nextSibling(),e.nextSibling(),e.iterate(t,n),r&&e.parent()}else if("UnaryExpression"===e.name)e.firstChild()&&(e.nextSibling(),e.iterate(t,n),e.parent());else if("SplatExpression"===e.name){let t=e.firstChild();o(),t&&e.parent()}else if("TupleExpression"===e.name){if(e.firstChild()){do o();while(e.nextSibling())e.parent()}}else"Type"===e.name&&e.iterate(t,n)};do"KeywordArguments"===e.name&&e.firstChild(),o();while(e.nextSibling())return a(),i(),nS&&console.log({found:r}),r},nD=(e,t,n,r=nS)=>{let i,a;"cursor"in e&&(console.trace("`explore_variable_usage()` called with a SyntaxNode, not a TreeCursor"),e=e.cursor());let o={usages:[],definitions:new Map,locals:[]},l=[],s=new Map,c=[],u=[],d=[],p=[],_=new(0,n$.NodeWeakMap);if(i=e=>{if(r){console.group(`Explorer: ${e.name}`),console.groupCollapsed("Details");try{console.log(`Full tree: ${e.toString()}`),console.log("Full text:",t.sliceString(e.from,e.to)),console.log("scopestate:",o)}finally{console.groupEnd()}}if(_.cursorGet(e)||"QuoteStatement"===e.name||"QuoteExpression"===e.name||"MacroIdentifier"===e.name||"Symbol"===e.name)return r&&console.groupEnd(),!1;if("ModuleDefinition"===e.name){let n=nT(e);if(e.firstChild()&&(e.nextSibling(),"Identifier"===e.name)){let n=t.sliceString(e.from,e.to);s.set(n,{from:e.from,to:e.to,valid_from:e.from})}return n(),r&&console.groupEnd(),!1}if("StructDefinition"===e.name||"AbstractDefinition"===e.name||"PrimitiveDefinition"===e.name){let n=nT(e),i=()=>{if("Identifier"===e.name)return{from:e.from,to:e.to};if("ParametrizedExpression"===e.name){if(e.firstChild()){if("Identifier"===e.name){let t={from:e.from,to:e.to};return e.parent(),t}e.parent()}}else if("BinaryExpression"===e.name&&e.firstChild()){let t=i();return e.parent(),t}return null};if(e.firstChild()){for(;e.nextSibling();)if("TypeHead"===e.name){if(e.firstChild()){let n=i();if(n){let e=t.sliceString(n.from,n.to);s.set(e,{...n,valid_from:n.from})}e.parent()}break}}return n(),r&&console.groupEnd(),!1}if("ImportStatement"===e.name||"UsingStatement"===e.name)return((e,t)=>{let n=nM(e),r=[],i=e=>{let t=null;if(e.firstChild()){do"Identifier"===e.name&&(t=nN(e));while(e.nextSibling())e.parent()}return t};if(e.firstChild()){for(;e.nextSibling();)if("SelectedImport"===e.name){let t=!1;if(e.firstChild()){do if(":"===e.name)t=!0;else if(t&&"ImportPath"===e.name){let t=i(e);t&&r.push(t)}while(e.nextSibling())e.parent()}}else if("ImportPath"===e.name){let t=i(e);t&&r.push(t)}e.parent()}return n(),r})(e,0).forEach(e=>{let n=t.sliceString(e.from,e.to);s.set(n,{...e,valid_from:e.from})}),r&&console.groupEnd(),!1;if("GlobalStatement"===e.name){let n=nT(e);if(e.firstChild()){if(e.nextSibling(),"Assignment"===e.name){e.firstChild();let{definitions:n,usages:r}=nR(e);e.nextSibling();let o="UpdateOp"===e.name;e.nextSibling(),r.forEach(e=>{let n=t.sliceString(e.from,e.to);/^_+$/.test(n)||u.push({name:n,usage:e,definition:nC(c,n,e)??null})}),o&&n.forEach(e=>{let n=t.sliceString(e.from,e.to);/^_+$/.test(n)||u.push({name:n,usage:e,definition:null})}),n.forEach(e=>{let n=t.sliceString(e.from,e.to);/^_+$/.test(n)||s.set(n,{...e,valid_from:e.from})}),e.iterate(i,a),e.parent()}else if("Identifier"===e.name){let n=t.sliceString(e.from,e.to),r=ev.default.last(l)??(e.node.parent?.parent?{from:e.node.parent.parent.from,to:e.node.parent.parent.to}:{from:0,to:t.length});d.push({name:n,scope:r})}else if("OpenTuple"===e.name){let n=ev.default.last(l)??(e.node.parent?.parent?{from:e.node.parent.parent.from,to:e.node.parent.parent.to}:{from:0,to:t.length});if(e.firstChild()){do"Identifier"===e.name&&d.push({name:t.sliceString(e.from,e.to),scope:n});while(e.nextSibling())e.parent()}}}return n(),r&&console.groupEnd(),!1}if("LocalStatement"===e.name){let n=nT(e),o=ev.default.last(l)??(e.node.parent?{from:e.node.parent.from,to:e.node.parent.to}:{from:0,to:t.length});if(e.firstChild()){if(e.nextSibling(),"Assignment"===e.name){e.firstChild();let{definitions:n,usages:r}=nR(e);e.nextSibling(),e.nextSibling(),r.forEach(e=>{let n=t.sliceString(e.from,e.to);/^_+$/.test(n)||u.push({name:n,usage:e,definition:nC(c,n,e)??null})}),n.forEach(e=>{let n=t.sliceString(e.from,e.to);/^_+$/.test(n)||c.push({name:n,validity:o,definition:e})}),e.iterate(i,a),e.parent()}else if("Identifier"===e.name)p.push({name:t.sliceString(e.from,e.to),scope:o});else if("OpenTuple"===e.name&&e.firstChild()){do"Identifier"===e.name&&p.push({name:t.sliceString(e.from,e.to),scope:o});while(e.nextSibling())e.parent()}}return n(),r&&console.groupEnd(),!1}let n=e=>{let n=t.sliceString(e.from,e.to),r=d.find(t=>t.name===n&&e.from>=t.scope.from&&e.to<=t.scope.to),i=p.find(t=>t.name===n&&e.from>=t.scope.from&&e.to<=t.scope.to);r?s.set(n,{...e,valid_from:e.from}):i?c.push({name:n,validity:i.scope,definition:e}):0===l.length?s.set(n,{...e,valid_from:e.from}):c.push({name:n,validity:ev.default.last(l),definition:e})};if("MacrocallExpression"===e.name){let o=nT(e),l=!1;if(e.firstChild()){let r=!1;if("MacroIdentifier"===e.name){let n=t.sliceString(e.from,e.to);r="@bind"===n||"@bindname"===n}else if("FieldExpression"===e.name){let n=e.node.lastChild;if(n?.name==="MacroIdentifier"){let e=t.sliceString(n.from,n.to);r="@bind"===e||"@bindname"===e}}if(r&&e.nextSibling()&&"MacroArguments"===e.name&&e.firstChild()){if("Identifier"===e.name){for(n(nN(e));e.nextSibling();)e.iterate(i,a);l=!0}e.parent()}}if(o(),l)return r&&console.groupEnd(),!1}if(nO(e)&&l.push(nN(e)),"ArrowFunctionExpression"===e.name){let t=nT(e);if(e.firstChild())for("Identifier"===e.name?n(nN(e)):"TupleExpression"===e.name&&nI(e,{enter:i,leave:a}).forEach(n);e.nextSibling();)"->"!==e.name&&e.iterate(i,a);return t(),a(e),!1}if("TupleExpression"===e.name&&e.matchContext(["FunctionDefinition","Signature"]))return nI(e,{enter:i,leave:a}).forEach(n),r&&console.groupEnd(),!1;if("Identifier"===e.name||"MacroIdentifier"===e.name||"Operator"===e.name){if("Identifier"===e.name&&e.matchContext(["FunctionDefinition","Signature"])){let t=l.pop();return n(nN(e)),t&&l.push(t),r&&console.groupEnd(),!1}if(e.matchContext(["KwArg"])){let{parent_name:t,index:n}=nL(e);if("KwArg"===t&&0===n)return r&&console.groupEnd(),!1}let i=t.sliceString(e.from,e.to);if("_"===i)return r&&console.groupEnd(),!1;let a=nC(c,i,e);if(a&&e.matchContext(["BraceExpression"]))return r&&console.groupEnd(),!1;u.push({name:i,usage:{from:e.from,to:e.to},definition:a??null})}else if("Assignment"===e.name||"ForBinding"===e.name||"CatchClause"===e.name){let o=nT(e);if(e.firstChild())if("catch"===e.name&&e.nextSibling(),(()=>{if("CallExpression"===e.name)return!0;if("BinaryExpression"===e.name){let t,n=nT(e);e.firstChild();let i="CallExpression"===e.name||"BinaryExpression"===e.name&&(e.firstChild(),t="CallExpression"===e.name,e.parent(),t);return n(),r&&console.log("is_funcdef_pattern: BinaryExpression first child is",e.name,"result:",i),i}return!1})())o();else{let{definitions:s,usages:d}=nR(e);e.nextSibling();let p="UpdateOp"===e.name,_=t.sliceString(e.from,e.to),m=".="===_,h=_.startsWith(".");return d.forEach(e=>{let n=t.sliceString(e.from,e.to);/^_+$/.test(n)||u.push({name:n,usage:e,definition:nC(c,n,{from:e.from,to:e.to})??null})}),m||h?s.forEach(e=>{let n=t.sliceString(e.from,e.to);/^_+$/.test(n)||u.push({name:n,usage:e,definition:nC(c,n,{from:e.from,to:e.to})??null})}):p?(s.forEach(e=>{let n=t.sliceString(e.from,e.to);/^_+$/.test(n)||u.push({name:n,usage:e,definition:nC(c,n,{from:e.from,to:e.to})??null})}),0===l.length&&s.forEach(e=>{let r;r=t.sliceString(e.from,e.to),/^_+$/.test(r)||n(e)})):s.forEach(e=>{let r;r=t.sliceString(e.from,e.to),/^_+$/.test(r)||n(e)}),e.nextSibling(),e.iterate(i,a),o(),r&&console.groupEnd(),!1}}else if("Parameters"===e.name){let{definitions:i}=nR(e);return i.forEach(e=>{"_"!==t.sliceString(e.from,e.to)&&n(e)}),r&&console.groupEnd(),!1}else if("Field"===e.name)return r&&console.groupEnd(),!1;else if("BinaryExpression"===e.name){if(e.matchContext(["Assignment"])&&0===nL(e).index){let t=nT(e);e.firstChild();let o=()=>{if("CallExpression"===e.name)return!0;if("BinaryExpression"===e.name){e.firstChild();let t=o();return t||e.parent(),t}return!1};if(o()){let o=e.from;if(e.to,e.parent()&&"BinaryExpression"===e.name){e.firstChild();do if("where"===e.name){if(e.nextSibling(),"Type"===e.name){if(e.firstChild(),"Identifier"===e.name)n(nN(e));else if("BraceExpression"===e.name){e.firstChild();do"Identifier"===e.name?n(nN(e)):"BinaryExpression"===e.name&&(e.firstChild(),"Identifier"===e.name&&n(nN(e)),e.parent());while(e.nextSibling())e.parent()}e.parent()}break}while(e.nextSibling())}t(),e.firstChild();let s=()=>"CallExpression"===e.name&&e.from===o||"BinaryExpression"===e.name&&(e.firstChild(),s());s();let c=nT(e);if(e.firstChild(),"Identifier"===e.name||"Operator"===e.name||"FieldExpression"===e.name){let t=l.pop();n(nN(e)),t&&l.push(t),e.nextSibling()}"Arguments"===e.name&&nI(e,{enter:i,leave:a}).forEach(n),c(),e.parent();let u=new(0,n$.NodeWeakMap);for(e.firstChild();"CallExpression"!==e.name&&e.nextSibling(););u.cursorSet(e,!0),e.parent(),e.firstChild();do if(!u.cursorGet(e)&&"::"!==e.name&&"where"!==e.name)if("Type"===e.name){let t=nT(e),n=!1,r=e.from;e.parent(),e.firstChild();do if("where"===e.name){e.nextSibling(),e.from===r&&(n=!0);break}while(e.nextSibling())if(t(),n){if(e.firstChild(),"BraceExpression"===e.name){e.firstChild();do"BinaryExpression"===e.name&&(e.firstChild(),e.nextSibling(),e.nextSibling(),e.nextSibling(),e.iterate(i,a),e.parent());while(e.nextSibling())e.parent()}e.parent()}else e.iterate(i,a)}else e.iterate(i,a);while(e.nextSibling())return t(),r&&console.groupEnd(),!1}t()}else if(e.matchContext(["FunctionDefinition","Signature"])){let o=nT(e);if(e.firstChild(),"CallExpression"===e.name){let s=e.from;if(e.to,e.nextSibling(),e.nextSibling(),"Type"===e.name){if(e.firstChild(),"Identifier"===e.name)n(nN(e));else if("BraceExpression"===e.name){e.firstChild();do"Identifier"===e.name?n(nN(e)):"BinaryExpression"===e.name&&(e.firstChild(),"Identifier"===e.name&&n(nN(e)),e.parent());while(e.nextSibling())e.parent()}e.parent()}if(e.parent(),e.firstChild(),"CallExpression"!==e.name||e.from!==s)return void o();if(e.firstChild(),"Identifier"===e.name||"Operator"===e.name||"FieldExpression"===e.name){r&&console.log("found function name (from where clause)",t.sliceString(e.from,e.to));let i=l.pop();n(nN(e)),i&&l.push(i),e.nextSibling()}if("Arguments"===e.name&&nI(e,{enter:i,leave:a}).forEach(n),e.parent(),e.nextSibling(),e.nextSibling(),"Type"===e.name){if(e.firstChild(),"BraceExpression"===e.name){e.firstChild();do"BinaryExpression"===e.name&&(e.firstChild(),e.nextSibling(),e.nextSibling(),e.nextSibling(),e.iterate(i,a),e.parent());while(e.nextSibling())e.parent()}e.parent()}return o(),r&&console.groupEnd(),!1}o()}}else if("CallExpression"===e.name){if(e.matchContext(["FunctionDefinition","Signature"])||e.matchContext(["Assignment"])&&0===nL(e).index){let o=nT(e);if(e.firstChild(),"Identifier"===e.name||"Operator"===e.name||"FieldExpression"===e.name){r&&console.log("found function name",t.sliceString(e.from,e.to),e.name);let i=l.pop();n(nN(e)),i&&l.push(i),e.nextSibling()}return r&&console.log("expl funcdef ",t.sliceString(e.from,e.to)),nI(e,{enter:i,leave:a}).forEach(n),r&&console.log("expl funcdef ",t.sliceString(e.from,e.to)),o(),r&&console.log("end of FunctionDefinition, currently at ",e.node),r&&console.groupEnd(),!1}}else if("Generator"===e.name){let t=nT(e);if(e.firstChild()){for(;e.nextSibling();)e.iterate(i,a);t()}return e.firstChild()&&(e.iterate(i,a),t()),a(e),!1}},a=e=>{r&&console.groupEnd(),nO(e)&&l.pop()},e.iterate(r?e=>{let t=nM(e),n=i(e);return t(),n}:i,a),l.length>0)throw Error(`Some scopes were not leaved... ${JSON.stringify(l)}`);let m={usages:u,definitions:s,locals:c};return r&&console.log(m),m},nP=n$.StateField.define({create(e){try{let t=(0,n$.syntaxTree)(e).cursor();return nD(t,e.doc,void 0)}catch(e){return console.error("Something went wrong while parsing variables...",e),{usages:[],definitions:new Map,locals:[]}}},update(e,t){try{if((0,n$.syntaxTree)(t.state)==(0,n$.syntaxTree)(t.startState))return e;{let e=(0,n$.syntaxTree)(t.state).cursor();return nD(e,t.state.doc,null)}}catch(e){return console.error("Something went wrong while parsing variables...",e),{usages:[],definitions:new Map,locals:[]}}}});var n$=s("hiQgq"),eM=s("kjWx8"),ev=s("8iRLb");let nj=(e,{scopestate:t,global_definitions:n})=>n$.Decoration.set(nB(t.usages.map(({definition:e,usage:t,name:r})=>null!=e?n$.Decoration.mark({tagName:"a",attributes:{title:`${eM.ctrl_or_cmd_name}-Click to jump to the definition of ${r}.`,"data-cell-variable":r,"data-cell-variable-from":`${e.from}`,"data-cell-variable-to":`${e.to}`,href:"#"}}).range(t.from,t.to):n[r]?n$.Decoration.mark({tagName:"a",attributes:{title:`${eM.ctrl_or_cmd_name}-Click to jump to the definition of ${r}.`,"data-pluto-variable":r,href:`#${r}`}}).range(t.from,t.to):null)),!0),nB=e=>e.filter(e=>null!=e),nF=n$.Facet.define({combine:e=>e[0],compare:ev.default.isEqual}),nU=n$.ViewPlugin.fromClass(class{constructor(e){let t=e.state.facet(nF);this.decorations=nj(e.state,{scopestate:e.state.field(nP),global_definitions:t})}update(e){let t=e.state.facet(nF);(e.docChanged||e.viewportChanged||t!==e.startState.facet(nF))&&(this.decorations=nj(e.state,{scopestate:e.state.field(nP),global_definitions:t}))}},{decorations:e=>e.decorations,eventHandlers:{click:(e,t)=>{if(e.target instanceof Element){let n=e.target.closest("[data-pluto-variable]");if(n){let r=n.getAttribute("data-pluto-variable");if(null==r||!((0,eM.has_ctrl_or_cmd_pressed)(e)||t.state.readOnly))return!1;e.preventDefault();let i=`[id='${encodeURI(r)}']`;document.querySelector(i)?.scrollIntoView({behavior:"smooth",block:"center"});let a=t.state.facet(nF);if(a[r])return window.dispatchEvent(new CustomEvent("cell_focus",{detail:{cell_id:a[r],line:0,definition_of:r}})),!0}let r=e.target.closest("[data-cell-variable]");if(r){let n=r.getAttribute("data-cell-variable"),i=Number(r.getAttribute("data-cell-variable-from")),a=Number(r.getAttribute("data-cell-variable-to"));return null!=n&&null!=i&&null!=a&&!!((0,eM.has_ctrl_or_cmd_pressed)(e)||t.state.readOnly)&&(e.preventDefault(),t.dispatch({scrollIntoView:!0,selection:{anchor:i,head:a}}),t.focus(),!0)}}}}});s("8iRLb");var n$=s("hiQgq");let nz=n$.htmlLanguage.parser,nq=n$.markdownLanguage.parser.configure((0,n$.parseCode)({htmlParser:nz})),nH=n$.PostgreSQL.language.parser,nG=(0,n$.sql)({dialect:n$.PostgreSQL}),nW=n$.pythonLanguage.parser,nK=["md","mermaid","cm","markdown","mdx","mdl","markdownliteral"].flatMap(e=>[e,`@${e}`]),nZ=new Set(["StringLiteral","CommandLiteral","NsStringLiteral","NsCommandLiteral"]),nV=(0,n$.parseMixed)((e,t)=>{let n;if("NsStringLiteral"!==e.name&&"StringLiteral"!==e.name)return null;let r=e.node,i=r.getChild('"""')??r.getChild('"');if(null==i)return null;let a=r.lastChild;if(null==a)return null;let o=i.to,l=Math.min(a.from,t.length);if(o>=l)return null;if("NsStringLiteral"===e.name)n=r.firstChild;else{let e=r.parent;if(null!=e&&"Arguments"===e.name){let t=e.parent;null!=t&&"MacrocallExpression"===t.name&&(n=t.getChild("MacroIdentifier"))}}if(null==n)return null;let s="MacroIdentifier"===n.name,c=t.read(n.from,n.to),u=null;if("@htl"===c||"html"===c)u=nz;else if(nK.includes(c))u=nq;else if("@javascript"===c||"@js"===c||"js"===c||"javascript"===c)u=n$.javascriptLanguage.parser;else if("py"===c||"pyr"===c||"python"===c||"@python"===c)u=nW;else{if("sql"!==c)return null;u=nH}let d=[];if(null!=r.firstChild){let e=o,t=r.firstChild.cursor();do e<t.from&&d.push({from:e,to:t.from}),e=t.to;while(t.nextSibling())e<l&&d.push({from:e,to:l})}else d=[{from:o,to:l}];return(s&&(d=d.flatMap(({from:e,to:n})=>{let r=t.read(e,n),i=[],a=e;for(let{index:t}of r.matchAll(/\\\$/g)){let n=e+t;a!==n&&i.push({from:a,to:n}),a=n+1}return a!==n&&i.push({from:a,to:n}),i})),[...nK].includes(c))?{parser:u,overlay:[{from:o,to:l}]}:{parser:u,overlay:d}}),nQ=e=>{let t=(0,n$.julia)(e);return t.language.parser=t.language.parser.configure({wrap:nV}),t};var nx=s("2P6PH"),t3=s("895o3");let{autocompletion:nX,completionKeymap:nY,completionStatus:nJ,acceptCompletion:n0,selectedCompletion:n1}=n$.autocomplete,n2=nX()[1],n3=[...(0,t3.get_settings)().CM_TAB_KEY_FOR_INDENT?[{key:"Tab",run:e=>{if(n0(e))return!0;if(e.state.readOnly)return!1;let t=e.state.selection.main;if(!t.empty)return!1;let n=e.state.sliceDoc(t.from-1,t.from),r=e.state.sliceDoc(e.state.doc.lineAt(t.from).from,t.from);return!" \n=".includes(n)&&(")"!==n||!!r.includes("?"))&&n$.autocomplete.startCompletion(e)}}]:[],{key:"?",run:e=>null!=n$.autocomplete.completionStatus(e.state)&&(ny("docs"),!0)}],n9=e=>/^[@\p{L}\p{Sc}\d_][\p{L}\p{Nl}\p{Sc}\d_!]*"?$/u.test(e)?null:":"===e?`:(${e})`:`:${e}`,n5={name:"Suggestions",header:()=>document.createElement("div"),rank:0},n4={name:"Operators",rank:1},n8=e=>["."],n6=e=>/[\p{L}\p{Nl}\p{Sc}\d_!]*$/u.test(e)&&!rr.test(e),n7=(e,t=!1)=>!e.explicit&&(!!e.matchBefore(/[\s=\)+-/,*:'\(;\[\]\{\}"]$/)||null!=e.tokenBefore(["IntegerLiteral","FloatLiteral","LineComment","BlockComment","Symbol"])||!t&&null!=e.tokenBefore([...nZ])&&null==e.matchBefore(/\$[(\p{L}\p{Nl}\p{Sc}\d_!]$/u)),re=e=>{if(e.matchBefore(rr)||e.matchBefore(/(catch|local|module|abstract type|struct|macro|const|for|function|let|do) ([@\p{L}\p{Nl}\p{Sc}\d_!,\(\)]|, )*$/u)||e.matchBefore(/do [\(\), \p{L}\p{Nl}\p{Sc}\d_!]*$/u))return!0;let t=(0,n$.syntaxTree)(e.state).resolve(e.pos,-1),n=t?.parent?.name;if(t?.name==="Identifier"&&"StructDefinition"===n||t?.name==="Identifier"&&"KeywordArguments"===n)return!0;let r="OpenTuple"===n||"TupleExpression"===n?t?.parent:t,i=r?.parent?.name;return t?.name==="Identifier"&&("Assignment"===i||"KwArg"===i)&&r?.nextSibling!=null},rt=e=>t=>{let n=e(t);if(n instanceof Promise)throw"Oh nooooo";return null==n?null:{...n,validFor:n6,commitCharacters:n8(t)}},rn=["abstract type","baremodule","begin","break","catch","ccall","const","continue","do","else","elseif","end","export","finally","for","function","global","if","import","let","local","macro","module","mutable struct","primitive type","quote","return","struct","try","using","while","false","true"],rr=/^(.*\s)?(baremodule|begin|break|catch|ccall|const|continue|do|else|elseif|end|export|false|finally|for|function|global|if|import|let|local|macro|module|quote|return|struct|true|try|type|using|while)$/,ri=rn.map(e=>({label:e,apply:e,type:"completion_keyword",section:n5})),ra=rt(n$.autocomplete.completeFromList(ri)),ro=async e=>null==e.matchBefore(/[\s\(\[][a-z]*$/)&&null==e.matchBefore(/^[a-z]*$/)?null:e.matchBefore(/\\[\d\w\!\(\)\+\-\/\:\=\^\_]*/)||!e.explicit&&re(e)||n7(e)?null:await ra(e),rl=e=>({label:e,apply:e,type:"c_from_notebook completion_module c_Any",section:n5,boost:1}),rs=async e=>{let t=e.state.field(nP),n=e.tokenBefore(["Identifier"]);if(null==n)return null;let{from:r,to:i}=n,a=t.locals.filter(({validity:e})=>r>e.from&&i<=e.to),o=t.definitions.entries().filter(([e,t])=>r>t.valid_from).map(([e,t])=>({name:e})),l=o.map(({name:e})=>rl(e)),s=[...a.filter(({name:e})=>!o.some(t=>t.name===e)).map(({name:e},t)=>({label:e,apply:e,type:"c_local completion_module c_Any",section:n5,boost:99-t})),...l];return await rt(n$.autocomplete.completeFromList(s))(e)},rc=["\\sqrt","\\pi","\\approx"],ru=["๐Ÿถ","๐Ÿฑ","๐Ÿญ","๐Ÿฐ","๐Ÿผ","๐Ÿจ","๐Ÿธ","๐Ÿ”","๐Ÿง"],rd=(e,t,n,r)=>{let i=e.state.sliceDoc(n,r),a=t.detail??t.label;if(!t.label.startsWith("\\:")&&i!==t.label){var o;let n;o=e.state,null!=(n=(0,n$.syntaxTree)(o).resolve(r))&&nZ.has(n.name)&&(a=t.label)}e.dispatch({...n$.autocomplete.insertCompletionText(e.state,a,n,r),annotations:n$.autocomplete.pickedCompletion.of(t)})},rp=e=>"IndexExpression"===e.name||"FieldExpression"===e.name?(e.firstChild(),rp(e)):"Identifier"===e.name?(e.firstChild(),e.node):null,r_=["Identifier","Field","FieldExpression","IndexExpression","MacroFieldExpression","MacroIdentifier","Operator","TypeHead","Signature","ParametrizedExpression"],rm=[...rn,"."],rh=e=>{if(rm.includes(e.name))return!0;if(!r_.includes(e.name))return!1;if(!e.firstChild())return!0;do{if("IntegerLiteral"===e.name||"FloatLiteral"===e.name||"BraceExpression"===e.name||"FieldName"===e.name||"MacroName"===e.name||"MacroFieldName"===e.name)continue;if(!rh(e))return!1}while(e.nextSibling())return e.parent(),!0},rf=(e,t=!1)=>{let n=e.selection.main,r=e.field(nP);if(!n.empty)return e.doc.sliceString(n.from,n.to).trim();{let i=e.doc.lineAt(n.from).text;if("?"===i[0])return i.slice(1);let a=(0,n$.syntaxTree)(e).cursor();t&&console.log("Full tree:",a.toString()),a.moveTo(n.to,-1);let o=0;do{t&&console.group(`Iteration #${o}`);try{if(t&&console.log(`cursor (${a.name}):`,a.toString()),o>100){console.group("Infinite loop while checking docs"),console.log("Selection:",n,e.doc.sliceString(n.from,n.to).trim()),console.log("Current node:",a.name,e.doc.sliceString(a.from,a.to).trim()),console.groupEnd();break}o+=1;let i=a.node.cursor(),l=[];for(;i.parent();)l.push(i.name);let s=a.node.parent;if(null==s)break;if(t&&console.log("parents:",l),rn.includes(a.name))return a.toString();let c=l.indexOf("StructDefinition");if(-1!==c)if(t&&console.log("in a struct?"),l.includes("binding")&&l.indexOf("binding")<c);else if(l.includes("TypedExpression")&&l.indexOf("TypedExpression")<c);else if(l.includes("SubtypedExpression")&&l.indexOf("SubtypedExpression")<c){for(;null!=s&&"SubtypedExpression"!==s.name;)s=s.parent;if(null==s)return;let t=s.lastChild;if(null!=t&&t.from<=a.from&&t.to>=a.to)return e.doc.sliceString(t.from,t.to)}else{if("struct"!==a.name&&"mutable"!==a.name)return;if(a.parent(),a.firstChild(),"struct"===a.name)return"struct";if("mutable"===a.name&&(a.nextSibling(),"struct"===a.name))return"mutable struct";return}if("AbstractDefinition"===a.name)return"abstract type";if("CallExpression"===a.name)return a.firstChild(),rh(a)?e.doc.sliceString(a.from,a.to):void 0;if(("Operator"===a.name||"โš "===a.name||"Identifier"===a.name)&&"QuoteExpression"===s.name&&s.parent?.name==="FieldExpression")return t&&console.log("Quirky symbol in a quote expression"),e.sliceDoc(s.parent.from,s.parent.to);if("ParameterizedIdentifier"===a.name)return a.firstChild(),rh(a)?e.doc.sliceString(a.from,a.to):void 0;if("Identifier"===a.name&&"Prefix"===s.name)continue;if("PrefixedString"===a.name){a.firstChild();let t=e.doc.sliceString(a.from,a.to);return`${t}"`}if("Identifier"===a.name&&"TypedExpression"===s.name)return a.parent(),a.lastChild(),rh(a)?e.doc.sliceString(a.from,a.to):void 0;if("TypedExpression"===a.name)return a.lastChild(),rh(a)?e.doc.sliceString(a.from,a.to):void 0;if("SpreadExpression"===a.name)return"...";if(s.to===a.to&&r_.includes(a.name)&&r_.includes(s.name)){t&&console.log("Expanding identifier");continue}if("Identifier"===a.name&&"NamedField"===s.name&&null!=s.lastChild&&s.lastChild.from!=a.from&&s.lastChild.to!=a.to)continue;if("binding"===a.name){let t=a.node.firstChild?.to,n=a.node.lastChild?.from;if(null==t||null==n)return;return e.doc.sliceString(t,n).trim()}if("ArgumentList"===a.name||"Identifier"===a.name&&"ArgumentList"===s.name&&(s.parent?.parent?.name==="FunctionAssignmentExpression"||s.parent?.name==="FunctionDefinition")||"Identifier"===a.name&&"Symbol"===s.name)continue;if("FunctionDefinition"===a.name)return a.firstChild(),a.nextSibling(),rh(a)?e.doc.sliceString(a.from,a.to):void 0;if("FunctionAssignmentExpression"===a.name)return a.firstChild(),rh(a)?e.doc.sliceString(a.from,a.to):void 0;if("Identifier"===a.name&&"MacroIdentifier"===s.name)continue;if("MacroExpression"===a.name)return a.firstChild(),e.doc.sliceString(a.from,a.to);if("BinaryExpression"===a.name){let t=a.node.firstChild?.to,n=a.node.lastChild?.from;if(null==t||null==n)return;return e.doc.sliceString(t,n).trim()}if("TernaryExpression"===a.name)return"??:";if(r_.includes(a.name)||rm.includes(a.name)){if(!rh(a)){t&&console.log("Not searchable aaa");return}let n=rp(a.node.cursor);if(null==n)return e.doc.sliceString(a.from,a.to);let i=r.usages.find(e=>e.usage.from===n.from&&e.usage.to===n.to);if(i?.definition==null)return e.doc.sliceString(a.from,a.to)}if("FunctionDefinition"===s.name||"binding"===s.name)return}finally{t&&console.groupEnd()}}while(a.parent())}};var n$=(s("hiQgq"),s("hiQgq")),ev=s("8iRLb"),n$=s("hiQgq"),eL=s("9fP3D"),tX=s("1gqBQ"),ev=s("8iRLb"),u=(s("cNaMA"),s("cNaMA"));s("8iRLb");var tq=s("1ZMWI"),tH=s("hrGZZ"),eL=s("9fP3D"),rg=s("21hEM"),tH=s("hrGZZ"),u=s("cNaMA"),eL=s("9fP3D"),rb=s("iNoqM");let ry=({fill:e})=>(0,u.html)`
218 <svg
219 width="48"
220 height="48"

Callers

nothing calls this directly

Calls 3

nDFunction ยท 0.70
cursorMethod ยท 0.65
errorMethod ยท 0.45

Tested by

no test coverage detected