package Ġgd script . completion ĊĊ Ċ import Ġcom . intellij . code Insight . completion .* Ċ import Ġcom . intellij . code Insight . lookup . Lookup Element Ċ import Ġcom . intellij . code Insight . lookup . Lookup Element Builder . create Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . vfs . V fs Util Core Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . openapi . vfs . Virtual File Visitor Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi File Factory Ċ import Ġcom . intellij . psi . impl . source . tree . Leaf Psi Element Ċ import Ġcom . intellij . psi . tree . I ElementType Ċ import Ġcom . intellij . psi . util . elementType Ċ import Ġcommon . Icons Ċ import Ġcommon . Resource Util Ċ import Ġgd script . Script FileType Ċ import Ġgd script . psi . Script Element Types . DOUBLE _ QUOT ED _ STRING Ċ import Ġgd script . psi . Script Element Types . SINGLE _ QUOT ED _ STRING Ċ import Ġjavax . swing . Icon Ċ Ċ class ĠResource Completion Contributor Ġ: ĠCompletion Contributor () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġfill Completion Variants ( parameters : ĠCompletion Parameters , Ġresult : ĠCompletion ResultSet ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġparameters . position ĊĠĠĠĠĠĠĠ Ġif Ġ( is Resource String ( element )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproject File Ġ= ĠResource Util . find Project ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlook ups Ġ= Ġfind Files ( project File . parent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġfile Ġ-> Ġfile . path Ġ== Ġparameters . original File . virtual File . path Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġfile Ġ-> Ġcreate Lookup ( project File , Ġfile , Ġelement . elementType !! ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . addAll Elements ( look ups ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Resource String ( element : ĠPsi Element ) Ġ= ĊĠĠĠĠĠĠĠ Ġelement . elementType Ġin ĠarrayOf ( DOUBLE _ QUOT ED _ STRING , ĠS INGLE _ QUOT ED _ STRING ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& ĠResource Util . is Resource ( element . text ) ĊĊĠĠĠ Ġprivate Ġfun Ġfind Files ( start : ĠVirtual File ): ĠList < Virtual File > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Virtual File >() ĊĠĠĠĠĠĠĠ ĠV fs Util Core . visit Children Re cursively ( start , Ġobject Ġ: ĠVirtual File Visitor < Any >() Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit File ( file : ĠVirtual File ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġfile . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . isDirectory Ġ&& Ġname . startsWith (". ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! file . isDirectory Ġ&& Ġ! name . startsWith (".") Ġ&& Ġ! name . endsWith (". import ") Ġ&& Ġname Ġ!= Ġ" project . godot ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Lookup ( project File : ĠVirtual File , Ġfile : ĠVirtual File , Ġtype : ĠI ElementType ): ĠLookup Element Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquote Ġ= Ġif Ġ( type Ġ== ĠDOUBLE _ QUOT ED _ STRING ) Ġ"\"" Ġelse Ġ"'" ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠV fs Util Core . find RelativePath ( project File , Ġfile , Ġ'/') !! ĊĠĠĠĠĠĠĠ Ġval Ġlookup Ġ= Ġcreate ("${ quote } res :// $ path ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Present able Text ( file . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Type Text ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Icon ( match Icon ( file . extension )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Insert Handler ( Replace Handler ("${ quote } res :// $ path $ quote ")) ĊĠĠĠĠĠĠĠ Ġval Ġpriority Ġ= Ġpriorit ize By ( file . extension ) ĊĠĠĠĠĠĠĠ Ġreturn ĠPri or it ized Lookup Element . with Explicit Prox imity ( lookup , Ġpriority ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmatch Icon ( extension : ĠString ?): ĠIcon Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( extension ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" gd " Ġ-> ĠIcons . GD SCRIPT _ FILE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" tsc n ", Ġ" tres " Ġ-> ĠIcons . T SC N _ FILE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" json " Ġ-> ĠIcons . JSON _ FILE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠIcons . ANY _ FILE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpriorit ize By ( extension : ĠString ?): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( extension ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" gd " Ġ-> Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" tsc n " Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠReplace Handler ( private Ġval Ġnew Text : ĠString ) Ġ: ĠInsert Handler < Lookup Element > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Insert ( context : ĠInsert ion Context , Ġitem : ĠLookup Element ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Ġ= Ġcontext . file . findElement At ( context . start Offset ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Ġ= Ġcreate New Leaf ( context . project ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold . replace ( new ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcreate New Leaf ( project : ĠProject ): ĠLeaf Psi Element Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdummy File Ġ= ĠPsi File Factory . getInstance ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create File FromText (" dummy . gd ", ĠScript FileType , Ġnew Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdummy File . node . find Leaf ElementAt ( 0 ) Ġas ĠLeaf Psi Element ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ } ĊĊ