1 type Editor 2 def check_process = 3 if maybe_process.is_none then 4 return 5 6 let process = maybe_process.unwrap 7 if process.is_running then 8 process.read_streams 9 else 10 process.complete 11 maybe_process = None 12 13 if process.output.is_not_empty then 14 write process.output.as_string 15 process.output.clear 16 17 if process.error.is_not_empty && state <> EditorState/BuildCpp then 18 write process.error.as_string 19 process.error.clear 20 21 if process.maybe_exit_code.is_some then 22 let line_index = output.lines.size - 1 23 maybe_process = None 24 25 if state == EditorState/CMake then 26 let text = "cmake --build $develop_path/cpptest/build" 27 state = EditorState/BuildCpp 28 separate 29 maybe_process = sys/process/run text 30 31 else if state == EditorState/BuildCpp then 32 if process.is_success then 33 state = EditorState/Run 34 separate 35 write_message "running" 36 separate 37 let path = "$target_path/build/cpptest" 38 maybe_process = sys/process/run path 39 else 40 write process.error.as_string 41 process.error.clear 42 state = EditorState/Idle 43 maybe_command = None 44 separate 45 write_message "compilation failed" 46 color = TextColor.failure 47 else 48 assert state == EditorState/Run 49 separate 50 if process.is_success then 51 write_message "completed" 52 else 53 write_message "failed" 54 color = TextColor.failure 55 56 maybe_command = None 57 state = EditorState/Idle 58