package Ġnl . h ann ah sten . tex ify idea . action Ċ Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . file Editor . Text Editor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . util . Text Range Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . psi . impl . source . tree . Leaf Psi Element Ċ import Ġnl . h ann ah sten . tex ify idea . Tex ify Icons Ċ import Ġnl . h ann ah sten . tex ify idea . lang . magic . magic Comment Ċ import Ġnl . h ann ah sten . tex ify idea . psi . Lat ex Commands Ċ import Ġnl . h ann ah sten . tex ify idea . psi . Lat ex Group Ċ import Ġnl . h ann ah sten . tex ify idea . psi . Lat ex Psi Util Ċ import Ġnl . h ann ah sten . tex ify idea . psi . Lat ex Types Ċ import Ġnl . h ann ah sten . tex ify idea . util . parent OfType Ċ Ċ /** Ċ Ġ* Ġ@ author ĠH ann ah ĠS che lle ken s Ċ Ġ*/ Ċ class ĠLat ex Toggle Star Action Ġ: ĠEditor Action (" Toggle ĠStar ", ĠTex ify Icons . TO GGLE _ STAR ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠactionPerformed ( file : ĠVirtual File , Ġproject : ĠProject , Ġtext Editor : ĠText Editor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġget Element ( file , Ġproject , Ġtext Editor ) ĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġtext Editor . editor ĊĠĠĠĠĠĠĠ Ġval Ġpsi File Ġ= Ġget Psi File ( file , Ġproject ) ĊĊĠĠĠĠĠĠĠ Ġelement ?. parent OfType ( Lat ex Group :: class )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( it . magic Comment ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcommands Ġ= ĠLat ex Psi Util . getParent OfType ( element , ĠLat ex Commands :: class . java ) Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġrun Write Action ( project ) Ġ{ Ġtoggle Star ( editor , Ġpsi File , Ġcommands ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġthe Ġstar Ġfrom Ġa Ġlat ex Ġcommands Ġor Ġadds Ġit Ġwhen Ġthere Ġwas Ġno Ġstar Ġin Ġthe Ġfirst Ġplace . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġeditor ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ ĠThe Ġcurrent Ġeditor . ĊĠĠĠĠ Ġ* Ġ@ param Ġpsi File ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ ĠThe Ġcurrent Ġfile . ĊĠĠĠĠ Ġ* Ġ@ param Ġcommands ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ ĠThe Ġlat ex Ġcommand Ġto Ġtoggle Ġthe Ġstar Ġof . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġtoggle Star ( editor : ĠEditor , Ġpsi File : ĠPsi File ?, Ġcommands : ĠLat ex Commands ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( remove Star ( commands !! )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd Star ( editor , Ġpsi File , Ġcommands ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġthe Ġstar Ġfrom Ġa ĠLaTeX Ġcommand . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcommands ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ ĠThe Ġcommand Ġto Ġremove Ġthe Ġstar Ġfrom . ĊĠĠĠĠ Ġ* Ġ@ return Ġ` true ` Ġwhen Ġthe Ġstar Ġwas Ġremoved , Ġ` false ` Ġwhen Ġthe Ġstar Ġwas Ġnot Ġremoved . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġremove Star ( commands : ĠLat ex Commands ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlast Child Ġ= Ġcommands . last Child ĊĠĠĠĠĠĠĠ Ġvar Ġelt : ĠPsi Element ? Ġ= Ġcommands . firstChild ĊĠĠĠĠĠĠĠ Ġwhile Ġ( elt Ġ!== Ġlast Child Ġ&& Ġelt Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( elt Ġ! is ĠLeaf Psi Element ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelt Ġ= Ġelt . next Sibling ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( elt . elementType Ġ=== ĠLat ex Types . STAR ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelt . delete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelt Ġ= Ġelt . next Sibling ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġa Ġstar Ġto Ġa Ġlat ex Ġcommand . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġeditor ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ ĠThe Ġcurrent Ġeditor . ĊĠĠĠĠ Ġ* Ġ@ param Ġfile ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ ĠThe Ġcurrent Ġfile . ĊĠĠĠĠ Ġ* Ġ@ param Ġcommands ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ ĠThe Ġlat ex Ġcommand Ġto Ġadd Ġa Ġstar Ġto . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd Star ( editor : ĠEditor , Ġfile : ĠPsi File ?, Ġcommands : ĠLat ex Commands ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġeditor . document ĊĠĠĠĠĠĠĠ Ġvar Ġposition Ġ= Ġeditor . caret Model . offset ĊĠĠĠĠĠĠĠ Ġwhile Ġ( position Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġdocument . getText ( Text Range ( position , Ġposition Ġ+ Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelt Ġ= Ġfile !!. findElement At ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= ĠLat ex Psi Util . getParent OfType ( elt , ĠLat ex Commands :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text . equals ("\\ ", Ġignore Case Ġ= Ġtrue ) Ġ&& Ġ( elt Ġ== Ġnull Ġ|| Ġparent Ġ=== Ġcommands )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . insert String ( position Ġ+ Ġcommands . command Token . text . length , Ġ"* ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition -- ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }