package Ġorg . are nd . tool Window . repl Ċ Ċ import Ġcom . intellij . execution . console . Base Console Execute Action Handler Ċ import Ġcom . intellij . execution . console . Language Console Builder Ċ import Ġcom . intellij . execution . console . Language Console Impl Ċ import Ġcom . intellij . execution . console . Language Console View Ċ import Ġcom . intellij . execution . ui . Console View ContentType Ċ import Ġcom . intellij . openapi . Disposable Ċ import Ġcom . intellij . openapi . action System . An ActionEvent Ċ import Ġcom . intellij . openapi . action System . Custom Shortcut Set Ċ import Ġcom . intellij . openapi . action System . Default Action Group Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . application . run Read Action Ċ import Ġcom . intellij . openapi . components . service Ċ import Ġcom . intellij . openapi . project . D umb Aware Action Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . util . Dis poser Ċ import Ġcom . intellij . openapi . wm . Tool Window Ċ import Ġorg . are nd . Are nd Icons Ċ import Ġorg . are nd . Are nd Language Ċ import Ġorg . are nd . ext . core . ops . Normalization Mode Ċ import Ġorg . are nd . psi . Are nd File Ċ import Ġorg . are nd . repl . CommandHandler Ċ import Ġorg . are nd . settings . Are nd Project Settings Ċ import Ġorg . are nd . tool Window . errors . Are nd Print Options Action Group Ċ import Ġorg . are nd . tool Window . errors . Print Option Kind Ċ import Ġjava . awt . event . Input Event Ċ import Ġjava . awt . event . KeyEvent Ċ import Ġjavax . swing . KeyStroke Ċ Ċ class ĠAre nd Repl Execution Handler ( ĊĠĠĠ Ġproject : ĠProject , ĊĠĠĠ Ġprivate Ġval Ġtool Window : ĠTool Window Ċ ) Ġ: ĠBase Console Execute Action Handler ( true ) Ġ{ ĊĠĠĠ Ġval Ġrepl Ġ= Ġobject Ġ: ĠInt ellij Repl ( this , Ġproject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprint ( anything : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( anything Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġrun Read Action Ġ{ Ġanything . toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . startsWith ("[ INFO ]") Ġ-> Ġconsole View . print ( s , ĠConsole View ContentType . LOG _ INFO _ OUTPUT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . startsWith ("[ ERROR ]") Ġ|| Ġs . startsWith ("[ FATAL ]") Ġ-> Ġconsole View . print ( s , ĠConsole View ContentType . ERROR _ OUTPUT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . startsWith ("[ WARN ]") Ġ|| Ġs . startsWith ("[ WARNING ]") Ġ-> Ġconsole View . print ( s , ĠConsole View ContentType . LOG _ WARNING _ OUTPUT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġconsole View . print ( s , ĠConsole View ContentType . NORMAL _ OUTPUT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġe println ( anything : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( anything Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġrun Read Action Ġ{ Ġanything . toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsole View . print ("$ s \ n ", ĠConsole View ContentType . ERROR _ OUTPUT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġconsole View Ġ= ĠLanguage Console Builder () ĊĠĠĠĠĠĠĠ Ġ. execution Enabled Ġ{ Ġtrue Ġ} ĊĠĠĠĠĠĠĠ Ġ. one Line Input ( false ) ĊĠĠĠĠĠĠĠ Ġ. init Actions ( this , ĠAre nd Repl Service . ID ) ĊĠĠĠĠĠĠĠ Ġ. build ( project , ĠAre nd Language . INSTANCE ) ĊĊĠĠĠ Ġval Ġare nd File Ġ= Ġconsole View . file Ġas ĠAre nd File ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( text : ĠString , Ġconsole : ĠLanguage Console View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . execute ( text , Ġconsole ) ĊĠĠĠĠĠĠĠ Ġif Ġ( repl . repl ( text ) Ġ{ Ġ"" Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose Repl () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġconsole View . is Editable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġconsole View . is Console Editor Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠDis poser . register ( console View , ĠDis posable (:: save Settings )) ĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= Ġsettings () ĊĠĠĠĠĠĠĠ Ġif Ġ( settings . repl Print ing Options Filter Set Ġ!== Ġrepl . pretty Printer Flags ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBind Ġthe Ġsettings Ġwith Ġthe Ġrepl Ġconfig ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepl . pretty Printer Flags . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepl . pretty Printer Flags . addAll ( settings . repl Print ing Options Filter Set ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . repl Print ing Options Filter Set Ġ= Ġrepl . pretty Printer Flags ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġnormalization Ġ= Ġsettings . data . repl Normalization Mode . uppercase () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepl . normal ization Mode Ġ= ĠNormal ization Mode . valueOf ( normal ization ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepl . normal ization Mode Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrepl . initialize () ĊĠĠĠĠĠĠĠ Ġreset Repl () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Settings () Ġ{ ĊĠĠĠĠĠĠĠ Ġsettings (). data . repl Normalization Mode Ġ= Ġrepl . normal ization Mode . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsettings () Ġ= ĊĠĠĠĠĠĠĠ Ġconsole View . project . service < Are nd Project Settings >() ĊĊĠĠĠ Ġprivate Ġfun Ġclose Repl () Ġ{ ĊĠĠĠĠĠĠĠ Ġtool Window . hide () ĊĠĠĠĠĠĠĠ Ġrepl . clear Scope () ĊĠĠĠĠĠĠĠ Ġrepl . reset Current Line Scope () ĊĠĠĠĠĠĠĠ Ġreset Repl () ĊĠĠĠĠĠĠĠ Ġsave Settings () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset Repl () Ġ{ ĊĠĠĠĠĠĠĠ Ġconsole View . clear () ĊĠĠĠĠĠĠĠ Ġconsole View . print (" Type Ġ", ĠConsole View ContentType . NORMAL _ OUTPUT ) ĊĠĠĠĠĠĠĠ Ġconsole View . print Hyper link (": ?") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCommand Handler . HELP _ COMMAND _ INSTANCE ("", Ġrepl ) Ġ{ Ġ"" Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconsole View . print (" Ġfor Ġhelp .\ n ", ĠConsole View ContentType . NORMAL _ OUTPUT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Action Group () Ġ= ĠDefault Action Group ( ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠD umb Aware Action (" Clear ", Ġnull , ĠAre nd Icons . CLEAR ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠactionPerformed ( event : ĠAn ActionEvent ) Ġ= ĠApplication Manager . getApplication () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. invoke Later ( this @ Are nd Repl Execution Handler :: reset Repl ) ĊĠĠĠĠĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Custom Shortcut Set ( Custom Shortcut Set ( KeyStroke . getKey Stroke ( KeyEvent . VK _ L , ĠInput Event . CTRL _ DOWN _ MASK )), Ġconsole View . preferred Focus able Component ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠD umb Aware Action (" Cancel ", Ġnull , ĠAre nd Icons . CANCEL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAn ActionEvent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġconsole View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Ġis ĠLanguage Console Impl ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . prepare Execute Action ( true , Ġtrue , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . setInput Text ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Custom Shortcut Set ( Custom Shortcut Set ( KeyStroke . getKey Stroke ( KeyEvent . VK _ C , ĠInput Event . CTRL _ DOWN _ MASK )), Ġconsole View . preferred Focus able Component ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠD umb Aware Action (" Close ", Ġnull , ĠAre nd Icons . CLOSE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAn ActionEvent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( console View . editor Document . text Length Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose Repl () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Custom Shortcut Set ( Custom Shortcut Set ( KeyStroke . getKey Stroke ( KeyEvent . VK _ D , ĠInput Event . CTRL _ DOWN _ MASK )), Ġconsole View . preferred Focus able Component ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ ĠAre nd Print Options Action Group ( console View . project , ĠPrint Option Kind . REPL _ PRINT _ OPTIONS ), ĊĠĠĠ Ġ) Ċ }