2019-06-24 15:05:19 +03:00
|
|
|
IDE protocol, version 2
|
|
|
|
=======================
|
|
|
|
|
|
|
|
The IDE protocol is (or rather, will be) compatible with the IDE protocol for
|
|
|
|
Idris 1, as described here:
|
2019-12-18 23:37:50 +03:00
|
|
|
https://idris.readthedocs.io/en/latest/reference/ide-protocol.html
|
2019-06-24 15:05:19 +03:00
|
|
|
|
|
|
|
On start up, it reports:
|
|
|
|
|
|
|
|
`000018(:protocol-version 2 0)`
|
|
|
|
|
|
|
|
So far, there are two extended commands and one new command.
|
|
|
|
|
|
|
|
Extended commands
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
`(:type-of STRING LINE COLUMN)`
|
|
|
|
|
|
|
|
If `type-of` is given a line and a column, this looks up the type of the name
|
|
|
|
at that location, which may be a local variable or a specialisation of a
|
|
|
|
global definition.
|
|
|
|
|
|
|
|
`(:proof-search LINE NAME HINTS :all)`
|
|
|
|
|
|
|
|
The optional additional argument `:all` means that the expression search will
|
|
|
|
return all of the results it finds, one per line (up to a currently hard coded
|
|
|
|
search depth limit, which will probably be settable as an option in the
|
|
|
|
future).
|
|
|
|
|
|
|
|
`(:case-split LINE COLUMN NAME)`
|
|
|
|
|
|
|
|
Case splitting can take an optional additional `COLUMN` argument.
|
|
|
|
|
|
|
|
New commands
|
|
|
|
------------
|
|
|
|
|
|
|
|
`(:generate-def LINE NAME)`
|
|
|
|
|
|
|
|
Generates a pattern matching definition, if it can find one, for the function
|
|
|
|
declared with the given name, on the given line. It will only return the
|
|
|
|
first definition it finds, as a list of pattern clauses. This works via a
|
|
|
|
combination of case splitting and expression search.
|