package Ġorg . jetbrains . lama . editor . 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 . psi . Psi Element Ċ import Ġcom . intellij . psi . tree . I ElementType Ċ import Ġcom . intellij . psi . util . Psi Tree Util Ċ import Ġcom . intellij . refactor ing . suggest ed . end Offset Ċ import Ġcom . intellij . refactor ing . suggest ed . start Offset Ċ import Ġcom . intellij . util . Processing Context Ċ import Ġorg . jetbrains . lama . parser . L ama Element Types .* Ċ import Ġorg . jetbrains . lama . psi . api . L ama Scope Ċ Ċ class ĠKeyword Completion Provider Ġ: ĠCompletion Provider < Completion Parameters >() Ġ{ ĊĊĠ Ġoverride Ġfun Ġadd Comp letions ( ĊĠĠĠ Ġparameters : ĠCompletion Parameters , ĊĠĠĠ Ġcontext : ĠProcessing Context , ĊĠĠĠ Ġresult : ĠCompletion ResultSet , ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġposition Ġ= Ġparameters . position ĊĠĠĠ Ġfor Ġ( keyword Ġin ĠKEY WORDS ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( keyword Ġin ĠKEY WORD _ NE C ESS ARY _ CONDITION ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! KEYWORD _ NE C ESS ARY _ CONDITION [ keyword ] !! ( position )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġadd Element ( keyword , Ġresult ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġadd Element ( keyword : ĠI ElementType , Ġresult : ĠCompletion ResultSet ) Ġ{ ĊĠĠĠ Ġval Ġstring Value Ġ= Ġkeyword . toString () ĊĠĠĠ Ġresult . addElement ( ĊĠĠĠĠĠ ĠL ama Lookup Element Factory . create Lookup Element With Grouping ( ĊĠĠĠĠĠĠĠ ĠL ama Lookup Element ( stringValue , Ġtrue ), ĊĠĠĠĠĠĠĠ Ġ{ Ġ_, Ġ_ Ġ-> Ġ}, ĊĠĠĠĠĠĠĠ ĠGLOBAL _ GROUP ING ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġval ĠKEY WORDS Ġ= ĠlistOf ( ĊĠĠĠĠĠ ĠLA MA _ FALSE , ĠLA MA _ TRUE , ĠLA MA _ SKIP , ĠLA MA _ SY NTAX , ĠLA MA _ IN FIX , ĠLA MA _ ETA , ĠLA MA _ LA ZY , ĊĠĠĠĠĠ ĠLA MA _ PUBLIC , ĠLA MA _ IN FIX L , ĠLA MA _ IN FIX R , ĠLA MA _ AT , ĠLA MA _ BEFORE , ĠLA MA _ AFTER , ĊĠĠĠĠĠ ĠLA MA _ FUN , ĠLA MA _ VAR , ĊĠĠĠĠĠ ĠLA MA _ VAL , ĠLA MA _ BOX , ĠLA MA _ VAL , ĠLA MA _ STR , ĠLA MA _ ARRAY , ĠLA MA _ SEXP , ĊĠĠĠĠĠ ĠLA MA _ IF , ĠLA MA _ THEN , ĠLA MA _ ELSE , ĠLA MA _ E LI F , ĠLA MA _ FI , ĊĠĠĠĠĠ ĠLA MA _ WH ILE , ĠLA MA _ DO , ĠLA MA _ OD , ĠLA MA _ FOR , ĊĠĠĠĠĠ ĠLA MA _ CASE , ĠLA MA _ ES AC , ĠLA MA _ OF ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval ĠKEY WORD _ NE C ESS ARY _ CONDITION Ġ= Ġmap Of < I ElementType , Ġ( Psi Element ) Ġ-> ĠBoolean >( ĊĠĠĠĠĠ ĠLA MA _ PUBLIC Ġto Ġ:: before EndOf Definition List , ĊĠĠĠĠĠ ĠLA MA _ IN FIX L Ġto Ġ:: before EndOf Definition List , ĊĠĠĠĠĠ ĠLA MA _ IN FIX R Ġto Ġ:: before EndOf Definition List , ĊĠĠĠĠĠ ĠLA MA _ AT Ġto Ġ:: before EndOf Definition List , ĊĠĠĠĠĠ ĠLA MA _ BEFORE Ġto Ġ:: before EndOf Definition List , ĊĠĠĠĠĠ ĠLA MA _ AFTER Ġto Ġ:: before EndOf Definition List , ĊĠĠĠĠĠ ĠLA MA _ VAR Ġto Ġ:: before EndOf Definition List , ĊĠĠĠĠĠ ĠLA MA _ FUN Ġto Ġ:: before EndOf Definition List , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġbefore EndOf Definition List ( psi : ĠPsi Element ): ĠBoolean Ġ{ ĊĠĠĠĠĠ Ġval Ġparent Scope Ġ= ĠPsi Tree Util . getParent OfType ( psi , ĠL ama Scope :: class . java ) Ġ?: Ġreturn Ġtrue ĊĠĠĠĠĠ Ġval Ġfirst Expression Ġ= Ġparent Scope . expression Series ?. expression List ?. first OrNull () Ġ?: Ġreturn Ġtrue ĊĠĠĠĠĠ Ġval Ġfirst Leaf Ġ= ĠPsi Tree Util . get Dee pe st Visible First ( first Expression ) Ġ?: Ġreturn Ġtrue ĊĠĠĠĠĠ Ġreturn Ġpsi . start Offset Ġ<= Ġfirst Leaf . end Offset ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }