/* Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ċ Ġ* Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . rust . ide . typing Ċ Ċ import Ġcom . intellij . code Insight . Auto Popup Controller Ċ import Ġcom . intellij . code Insight . completion . Completion Type Ċ import Ġcom . intellij . code Insight . editor Actions . Typed Handler Delegate Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . util . text . StringUtil Ċ import Ġcom . intellij . psi . Psi Document Manager Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . psi . Psi WhiteSpace Ċ import Ġcom . intellij . psi . code Style . Code Style Manager Ċ import Ġcom . intellij . psi . util . Psi Tree Util Ċ import Ġcom . intellij . psi . util . elementType Ċ import Ġcom . intellij . util . text . CharArray Util Ċ import Ġorg . rust . lang . core . psi . Rs Dot Expr Ċ import Ġorg . rust . lang . core . psi . Rs Element Types . COL ON COL ON Ċ import Ġorg . rust . lang . core . psi . Rs File Ċ import Ġorg . rust . lang . core . psi . Rs Pat ĊĊ Ċ class ĠRs Typed Handler Ġ: ĠTyped Handler Delegate () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġchar Typed ( c : ĠChar , Ġproject : ĠProject , Ġeditor : ĠEditor , Ġfile : ĠPsi File ): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( file Ġ! is ĠRs File ) Ġreturn ĠResult . CONTINUE ĊĠĠĠĠĠĠĠ Ġif Ġ( c Ġ!= Ġ'.') Ġreturn ĠResult . CONTINUE ĊĊĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġeditor . caret Model . offset ĊĠĠĠĠĠĠĠ ĠPsi Document Manager . getInstance ( project ). commit Document ( editor . document ) ĊĠĠĠĠĠĠĠ Ġif Ġ( indent Dot IfNeeded ( project , Ġfile , Ġoffset )) Ġreturn ĠResult . STOP ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResult . CONTINUE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġindent Dot IfNeeded ( project : ĠProject , Ġfile : ĠRs File , Ġoffset : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurr Element Ġ= Ġfile . findElement At ( offset Ġ- Ġ 1 ) Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġprev Leaf Ġ= ĠPsi Tree Util . prev Leaf ( curr Element ) ĊĠĠĠĠĠĠĠ Ġif Ġ(!( prev Leaf Ġis ĠPsi WhiteSpace Ġ&& Ġprev Leaf . text . contains ("\ n "))) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( curr Element . parent Ġ! is ĠRs Dot Expr ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġcur Element Length Ġ= Ġcurr Element . text . length ĊĠĠĠĠĠĠĠ Ġif Ġ( offset Ġ< Ġcur Element Length ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ ĠCode Style Manager . getInstance ( project ). adjust Line Indent ( file , Ġoffset Ġ- Ġcur Element Length ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcheck Auto Popup ( char Typed : ĠChar , Ġproject : ĠProject , Ġeditor : ĠEditor , Ġfile : ĠPsi File ): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( file Ġ! is ĠRs File ) Ġreturn ĠResult . CONTINUE ĊĊĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġeditor . caret Model . offset ĊĊĠĠĠĠĠĠĠ Ġ// Ġ` :` Ġis Ġtyped Ġright Ġafter Ġ` :` ĊĠĠĠĠĠĠĠ Ġif Ġ( char Typed Ġ== Ġ':' Ġ&& ĠString Util . endsWith ( editor . document . immutable CharSequence , Ġ 0 , Ġoffset , Ġ":" )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAuto Popup Controller . getInstance ( project ). schedule Auto Popup ( editor , ĠCompletion Type . BASIC ) Ġ{ Ġf Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleaf Ġ= Ġf . findElement At ( offset Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleaf . elementType Ġ== ĠCOL ON COL ON ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . STOP ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ` |` Ġis Ġtyped Ġafter Ġ` (` Ġor Ġ`, ` Ġor Ġ` =` Ġ( ign oring Ġwhitespace ) Ġ- Ġperform Ġlambda Ġexpr Ġcompletion ĊĠĠĠĠĠĠĠ Ġif Ġ( char Typed Ġ== Ġ'| ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠChar Array Util . shift Backward ( editor . document . immutable CharSequence , Ġ 0 , Ġoffset Ġ- Ġ 1 , Ġ" Ġ\ n ") Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshould Show Popup Ġ= ĠString Util . endsWith ( editor . document . immutable CharSequence , Ġ 0 , Ġi , Ġ"(" ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| ĠString Util . endsWith ( editor . document . immutable CharSequence , Ġ 0 , Ġi , Ġ", ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| ĠString Util . endsWith ( editor . document . immutable CharSequence , Ġ 0 , Ġi , Ġ"=" ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( should Show Popup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAuto Popup Controller . getInstance ( project ). schedule Auto Popup ( editor , ĠCompletion Type . BASIC ) Ġ{ Ġf Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleaf Ġ= Ġf . findElement At ( offset ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleaf ?. parent Ġ! is ĠRs Pat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . STOP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResult . CONTINUE ĊĠĠĠ Ġ} Ċ } Ċ