/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 7 . Ġtang zx ( love . tang zx @ qq . com ) Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . tang . intellij . lua . editor Ċ Ċ import Ġcom . intellij . code Insight . editor Actions . enter . Enter Handler Delegate Ċ import Ġcom . intellij . code Insight . editor Actions . enter . Enter Handler Delegate Adapter Ċ import Ġcom . intellij . openapi . action System . DataContext Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . editor . action System . Editor Action Handler Ċ import Ġcom . intellij . openapi . util . Ref Ċ import Ġcom . intellij . psi . Psi Document Manager Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . psi . code Style . Code Style Manager Ċ import Ġcom . intellij . util . Incorrect OperationException Ċ import Ġcom . intellij . util . text . CharArray Util Ċ import Ġcom . tang . intellij . lua . lang . Lua Language Ċ import Ġcom . tang . intellij . lua . psi . Lua Block Ċ import Ġcom . tang . intellij . lua . psi . Lua Indent Range Ċ Ċ class ĠLua Enter Between Range Block Handler Ġ: ĠEnter Handler Delegate Adapter () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġpreprocess Enter ( psi File : ĠPsi File , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor : ĠEditor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcaret Offset Ref : ĠRef < Int >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcaret Advance : ĠRef < Int >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Context : ĠData Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal Handler : ĠEditor Action Handler ?): ĠEnter Handler Delegate . Result Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! psi File . language .` is `( Lua Language . INSTANCE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEnter Handler Delegate . Result . Continue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcaret Offset Ġ= Ġcaret Offset Ref . get () ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġeditor . document ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġdocument . chars Sequence ĊĠĠĠĠĠĠĠ Ġval Ġprev Char Offset Ġ= ĠChar Array Util . shift Backward ( text , Ġcaret Offset Ġ- Ġ 1 , Ġ" Ġ\ t ") ĊĠĠĠĠĠĠĠ Ġval Ġnext Char Offset Ġ= ĠChar Array Util . shift Forward ( text , Ġcaret Offset , Ġ" Ġ\ t ") ĊĊĠĠĠĠĠĠĠ Ġval Ġprev Ġ= Ġpsi File . findElement At ( prev Char Offset ) ĊĠĠĠĠĠĠĠ Ġval Ġnext Ġ= Ġpsi File . findElement At ( next Char Offset ) ĊĠĠĠĠĠĠĠ Ġif Ġ( prev Ġ!= Ġnext Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev . parent Ġ== Ġnext . parent Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev . parent Ġis ĠLua Indent Range Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev . next Sibling Ġis ĠLua Block ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal Handler ?. execute ( editor , Ġeditor . caret Model . current Caret , Ġdata Context ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPsi Document Manager . getInstance ( psi File . project ). commit Document ( editor . document ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCode Style Manager . getInstance ( psi File . project ). adjust Line Indent ( psi File , Ġeditor . caret Model . offset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInc orrect OperationException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEnter Handler Delegate . Result . Default Force Indent ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠEnter Handler Delegate . Result . Continue ĊĠĠĠ Ġ} Ċ }