Virtual Nomad wrote: "can atom broadcast? ..."
I got my editor to compile, run, debug (with breakpoints and watch vars) and broadcast but broadcast and debug work better in a threaded environment and from something that can access the stdin input of the broadcaster.exe for setting the broadcast IP and debug breakpoints and watch var lists, if Atom can do all that then I see no reason why it can not be used as a full editor.
Can it run a program in a thread and push strings to stdin??
A quick and dirty PureBasic example
Debug
+ Code SnippetProcedure DebugProject(AGKInterpreter.s, AGKBroadcaster.s, ProjectPath.s)
AGK_Interpreter=RunProgram(AGKInterpreter, "", "", #PB_Program_Open | #PB_Program_Write | #PB_Program_Read)
WaitForInputIdle_(AGK_Interpreter, #INFINITE)
AGK_Broadcaster = RunProgram(AGKBroadcaster, "-nowindow", "", #PB_Program_Open | #PB_Program_Write | #PB_Program_Read)
WaitForInputIdle_(AGK_Broadcaster, #INFINITE)
If AGK_Broadcaster
WriteProgramStringN(AGK_Broadcaster, "setproject "+ProjectPath)
WriteProgramStringN(AGK_Broadcaster, "connect 127.0.0.1")
WriteProgramStringN(AGK_Broadcaster, "breakpoint main.agc:88")
WriteProgramStringN(AGK_Broadcaster, "watch mouse_x")
WriteProgramStringN(AGK_Broadcaster, "watch mouse_y")
WriteProgramStringN(AGK_Broadcaster, "debug")
While ProgramRunning(AGK_Broadcaster)
If AvailableProgramOutput(AGK_Broadcaster)
Output$ + ReadProgramString(AGK_Broadcaster) + Chr(13)
Debug Output$
EndIf
;WriteProgramStringN(AGK_Broadcaster, "step")
If ProgramRunning(AGK_Interpreter) = #False
Break;
EndIf
Wend
CloseProgram(AGK_Broadcaster)
EndIf
EndProcedure
Broadcast
+ Code SnippetProcedure BroadcastProject(AGKBroadcaster.s, ProjectPath.s, IPAddress.s)
AGK_Broadcaster = RunProgram(AGKBroadcaster, "-nowindow", "", #PB_Program_Open | #PB_Program_Write | #PB_Program_Read)
If AGK_Broadcaster
WriteProgramStringN(AGK_Broadcaster, "setproject "+ProjectPath)
WriteProgramStringN(AGK_Broadcaster, "connect "+IPAddress)
WriteProgramStringN(AGK_Broadcaster, "run")
While ProgramRunning(AGK_Broadcaster)
If AvailableProgramOutput(AGK_Broadcaster)
Output$ + ReadProgramString(AGK_Broadcaster) + Chr(13)
Debug Output$
EndIf
;WriteProgramStringN(AGK_Broadcaster, "step")
;If ProgramRunning(AGK_Interpreter) = #False
; Break;
;EndIf
Wend
CloseProgram(AGK_Broadcaster)
EndIf
EndProcedure
Both unfinished as my editor is on the back burner but they work, many hours of reverse engineering the IDE to get that far! lol