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