package Ġnl . h ann ah sten . tex ify idea . intent ions Ċ Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . util . Text Range Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġnl . h ann ah sten . tex ify idea . ins pe ctions . latex . Lat ex Too Large Section Inspection . Companion . find Next Section Ċ import Ġnl . h ann ah sten . tex ify idea . ins pe ctions . latex . Lat ex Too Large Section Inspection . Inspection Fix . Companion . find Label Ċ import Ġnl . h ann ah sten . tex ify idea . psi . Lat ex Commands Ċ import Ġnl . h ann ah sten . tex ify idea . ui . Create FileDialog Ċ import Ġnl . h ann ah sten . tex ify idea . util .* Ċ import Ġnl . h ann ah sten . tex ify idea . util . files . create File Ċ import Ġnl . h ann ah sten . tex ify idea . util . files . document Ċ import Ġnl . h ann ah sten . tex ify idea . util . files . find Root File Ċ import Ġnl . h ann ah sten . tex ify idea . util . files . is Lat ex File Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* Ġ@ author ĠH ann ah ĠS che lle ken s Ċ Ġ*/ Ċ open Ġclass ĠLat ex Move Section ToFile Int ention Ġ: ĠTex ify Int ention Base (" Move Ġsection Ġcontents Ġto Ġseparate Ġfile ") Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġaffected Commands Ġ= Ġset Of ("\\ section ", Ġ"\\ chapter ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Available ( project : ĠProject , Ġeditor : ĠEditor ?, Ġfile : ĠPsi File ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( editor Ġ== Ġnull Ġ|| Ġfile Ġ== Ġnull Ġ|| Ġ! file . is Lat ex File ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġfile . findElement At ( editor . caret Model . offset ) Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġselected Ġ= Ġelement Ġas ? ĠLat ex Commands Ġ?: Ġelement . parent OfType ( Lat ex Commands :: class ) Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġselected . name Ġin Ġaffected Commands ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠF oc using Ġnew Ġdialog s Ġwhen Ġin Ġwrite Ġaction Ġthrows Ġan Ġexception . ĊĠĠĠ Ġoverride Ġfun Ġstart In Write Action () Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġinvoke ( project : ĠProject , Ġeditor : ĠEditor ?, Ġfile : ĠPsi File ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( editor Ġ== Ġnull Ġ|| Ġfile Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠFind Ġrelated Ġelements . ĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġfile . findElement At ( editor . caret Model . offset ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġsection Command Ġ= Ġelement Ġas ? ĠLat ex Commands Ġ?: Ġelement . parent OfType ( Lat ex Commands :: class ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġfile . document () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġlabel Ġ= Ġfind Label ( section Command ) ĊĠĠĠĠĠĠĠ Ġval Ġnext Cmd Ġ= Ġfind Next Section ( section Command ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠFind Ġtext . ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġlabel ?. end Offset () Ġ?: Ġsection Command . end Offset () ĊĠĠĠĠĠĠĠ Ġval Ġcmd Indent Ġ= Ġdocument . line Indent ation ( document . get LineNumber ( next Cmd ?. text Offset Ġ?: Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġval Ġend Ġ= Ġ( next Cmd ?. text Offset Ġ?: Ġdocument . text Length ) Ġ- Ġcmd Indent . length ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġdocument . getText ( Text Range ( start , Ġend )). trim End (). remove Ind ents () ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġnew Ġfile . ĊĠĠĠĠĠĠĠ Ġval ĠfileName Br aces Ġ= Ġsection Command . required Parameter ( 0 ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġ// ĠRemove Ġthe Ġbr aces Ġof Ġthe ĠLaTeX Ġcommand Ġbefore Ġcreating Ġa Ġfilename Ġof Ġit . ĊĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= ĠfileName Br aces . removeAll ("{ ", Ġ" }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. format As FileName () ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġfile . find Root File (). containing Directory ?. virtual File ?. canonical Path Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġ// ĠDisplay Ġa Ġdialog Ġto Ġask Ġfor Ġthe Ġlocation Ġand Ġname Ġof Ġthe Ġnew Ġfile . ĊĠĠĠĠĠĠĠ Ġval ĠfilePath Ġ= ĠCreate FileDialog ( file . containing Directory ?. virtual File ?. canonical Path , ĠfileName . format As FileName ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. new File FullPath Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġ// ĠExecute Ġwrite Ġactions . ĊĠĠĠĠĠĠĠ Ġrun Write Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcreated File Ġ= Ġcreate File ("$ filePath . tex ", Ġtext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . delete String ( start , Ġend ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfileName Relative To Root Ġ= Ġcreated File . absolute Path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( File . separator , Ġ"/") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("$ root /", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindent Ġ= Ġsection Command . find Indent ation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . insert String ( start , Ġ"\ n $ indent \\ input { ${ fileName Relative To Root . drop Last ( 4 )}} \ n \ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }