1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/*!
Accessing Agda's interaction mode via command line.
This library is created for [agda-tac](https://lib.rs/agda-tac).
It works with stable rust starting from 1.39.0.
[agda#4183]: https://github.com/agda/agda/issues/4183
[agda#4209]: https://github.com/agda/agda/issues/4209
This crate will work only with master-branch Agda until Agda 2.6.1 is released.
Tracking issues for the feature are [agda#4183] and [agda#4209], both work for JSON now.
## Basic usage
Invoke [`ReplState::start`](crate::agda::ReplState::start) and await the REPL to be available.
That's the wrapper of the Agda REPL's state.
Then you may:
+ Invoke [`ReplState::reload_file`](crate::agda::ReplState::reload_file) to reload the current file
+ Invoke [`ReplState::command`](crate::agda::ReplState::command) to send a command to Agda
+ Invoke [`ReplState::response`](crate::agda::ReplState::response)
to await for the next response from Agda.
+ Note that Agda sends json to `agda-mode`.
The deserialized json type is [`Resp`](crate::resp::Resp).
There are more utilities to access Agda, checkout the library documentation to see all of them.
## Implementation notes
This crate deserialize json via `serde_json`,
and do async process io handling via `tokio`.
*/
/// Haskell interaction utilities.
/// Common types (used in both input/output to Agda).
/// Debugging utilities.
/// Position types, used in both `resp` & `cmd`.
/// Response data types (output of Agda).
/// Agda commands (input to Agda).
/// Invoke Agda in command line and interact with it via stdio.