/* Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ċ Ġ* Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . rust . lang . core . completion Ċ Ċ import Ġcom . intellij . code Insight . completion . Completion Parameters Ċ import Ġcom . intellij . code Insight . completion . Completion Provider Ċ import Ġcom . intellij . code Insight . completion . Completion ResultSet Ċ import Ġcom . intellij . code Insight . completion . Insertion Context Ċ import Ġcom . intellij . code Insight . lookup . Lookup Element Builder Ċ import Ġcom . intellij . openapi . editor . Editor Modification Util Ċ import Ġcom . intellij . patterns . Element Pattern Ċ import Ġcom . intellij . patterns . Pattern Condition Ċ import Ġcom . intellij . patterns . Platform Patterns . psi Element Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . util . Processing Context Ċ import Ġorg . rust . lang . Rs Language Ċ import Ġorg . rust . lang . core . psi . Rs Meta Item Ċ import Ġorg . rust . lang . core . psi . Rs Meta Item Args Ċ import Ġorg . rust . lang . core . psi . ext . name Ċ import Ġorg . rust . lang . core . psi Element Ċ Ċ object ĠRs Cfg Attribute Completion Provider Ġ: ĠCompletion Provider < Completion Parameters >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠNAME _ OPTIONS : ĠList < String > Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ" unix ", ĊĠĠĠĠĠĠĠ Ġ" windows ", ĊĠĠĠĠĠĠĠ Ġ" test ", ĊĠĠĠĠĠĠĠ Ġ" debug _ assertions " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval ĠNAME _ VALUE _ OPTIONS : ĠList < String > Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ" target _ arch ", ĊĠĠĠĠĠĠĠ Ġ" target _ endian ", ĊĠĠĠĠĠĠĠ Ġ" target _ env ", ĊĠĠĠĠĠĠĠ Ġ" target _ family ", ĊĠĠĠĠĠĠĠ Ġ" target _ feature ", ĊĠĠĠĠĠĠĠ Ġ" target _ os ", ĊĠĠĠĠĠĠĠ Ġ" target _ pointer _ width ", ĊĠĠĠĠĠĠĠ Ġ" target _ vendor " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval ĠOPER ATORS : ĠList < String > Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ" all ", ĊĠĠĠĠĠĠĠ Ġ" any ", ĊĠĠĠĠĠĠĠ Ġ" not " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġadd Comp letions ( parameters : ĠCompletion Parameters , Ġcontext : ĠProcessing Context , Ġresult : ĠCompletion ResultSet ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( option Ġin ĠNAME _ OPTIONS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . addElement ( Lookup Element Builder . create ( option )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( option Ġin ĠNAME _ VALUE _ OPTIONS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . addElement ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLookup Element Builder . create ( option ). with Insert Handler Ġ{ Ġctx , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! ctx . already HasValue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . document . insert String ( ctx . selection End Offset , Ġ" Ġ= Ġ\" \" ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEditor Modification Util . move Caret Rel atively ( ctx . editor , Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( operator Ġin ĠOPER ATORS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . addElement ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLookup Element Builder . create ( operator ). with Insert Handler Ġ{ Ġctx , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! ctx . already Has Call P are ns ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . document . insert String ( ctx . selection End Offset , Ġ" () ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEditor Modification Util . move Caret Rel atively ( ctx . editor , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠInsert ion Context . already HasValue : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġnext Char Is (' =') ĊĊĠĠĠ Ġval Ġelement Pattern : ĠElement Pattern < Psi Element > ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcfg Attr Ġ= Ġpsi Element < Rs Meta Item >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with ( object Ġ: ĠPattern Condition < Rs Meta Item >(" cfg ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġaccepts ( t : ĠRs Meta Item , Ġcontext : ĠProcessing Context ?): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . name Ġ== Ġ" cfg " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcfg Option Ġ= Ġpsi Element < Rs Meta Item >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Parent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpsi Element < Rs Meta Item Args >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Parent ( cfg Attr ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpsi Element () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Language ( Rs Language ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inside ( cfg Option ) ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ