package Ġir . m md . intellij Dev . Action able . text . macro Ċ Ċ import Ġcom . intellij . openapi . action System . An Action Ċ import Ġcom . intellij . openapi . action System . An ActionEvent Ċ import Ġir . m md . intellij Dev . Action able . util . ext .* Ċ Ċ class ĠMacro Action ( name : ĠString , Ġprivate Ġval Ġmacro : ĠString ) Ġ: ĠAn Action ( name ) Ġ{ Ċ ĉ private Ġval Ġmacro Length Ġ= Ġmacro . length ĊĉĊ ĉ override Ġfun ĠactionPerformed ( e : ĠAn ActionEvent ) Ġ= Ġwith ( e . editor ) Ġ{ Ċĉ ĉ e . project !!. run Write Command Action With ( document ) Ġ{ Ġdocument Ġ-> Ċĉĉ ĉ all Care ts . forEach Ġ{ Ġcaret Ġ-> Ċĉĉĉ ĉ caret Ġmove To Ġmacro Length Ġ+ Ġif Ġ( caret . has Selection ()) Ġ{ Ċĉĉĉĉ ĉ val Ġ( start , Ġend ) Ġ= Ġcaret . selection Range Ċĉĉĉĉ ĉ caret . remove Selection () Ċĉĉĉĉ ĉ document . replace String ( start , Ġend , Ġmacro ) Ċĉĉĉĉ ĉ start Ċĉĉĉ ĉ } Ġelse Ġ{ Ċĉĉĉĉ ĉ val Ġoffset Ġ= Ġcaret . offset Ċĉĉĉĉ ĉ document . insert String ( offset , Ġmacro ) Ċĉĉĉĉ ĉ offset Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉ ĉ } Ċ ĉ } ĊĉĊ ĉ override Ġfun Ġis D umb Aware () Ġ= Ġtrue Ċ ĉ override Ġfun Ġupdate ( e : ĠAn ActionEvent ) Ġ= Ġe . enable If Ġ{ Ġhas Project Ġ&& Ġhas Editor Ġ} Ċ }