2014-08-07 06:16:37 +00:00
|
|
|
Lean can process input incrementally, and extract type information.
|
|
|
|
This feature is useful for implementing "intelligent" support for Lean
|
|
|
|
in editors such as Emacs. It provides a convenient way to access
|
|
|
|
descriptions of functions, overloaded symbols, and typing information.
|
|
|
|
We must use the option =--server= to enable this feature.
|
|
|
|
|
|
|
|
* Commands
|
|
|
|
|
|
|
|
Lean implements a simple set of commands for loading files, extracting
|
|
|
|
typing information, and "replacing" lines. The commands should be sent
|
|
|
|
to the standard input.
|
|
|
|
|
|
|
|
** Load file
|
|
|
|
|
|
|
|
#+BEGIN_SRC
|
|
|
|
FILE [file-name]
|
|
|
|
#+END_SRC
|
|
|
|
|
|
|
|
This command loads the Lean file named =[file-name]=.
|
|
|
|
Lean will create a "snapshot" (aka backtracking point) after each
|
|
|
|
command. Lean uses the "snapshots" to process incremental updates efficiently.
|
|
|
|
|
|
|
|
** Replace line
|
|
|
|
|
|
|
|
#+BEGIN_SRC
|
|
|
|
REPLACE [line-number]
|
|
|
|
[new-line]
|
|
|
|
#+END_SRC
|
|
|
|
|
|
|
|
This command replaces the line =[line-number]= with =[new-line]=.
|
|
|
|
Lean uses the snapshots to process the request efficiently.
|
|
|
|
If =[line-number]= is greater than the total number of lines in the lean
|
2014-08-11 02:57:24 +00:00
|
|
|
buffer, then empty lines are introduced. The lines are indexed from 1.
|
|
|
|
|
|
|
|
** Insert line
|
|
|
|
|
|
|
|
#+BEGIN_SRC
|
|
|
|
INSERT [line-number]
|
|
|
|
[new-line]
|
|
|
|
#+END_SRC
|
|
|
|
|
|
|
|
This command inserts =[new-line]= before line =[line-number]=.
|
|
|
|
If =[line-number]= is greater than the total number of lines in the lean
|
|
|
|
buffer, then empty lines are introduced. The lines are indexed from 1.
|
|
|
|
|
|
|
|
** Remove line
|
|
|
|
|
|
|
|
#+BEGIN_SRC
|
|
|
|
REMOVE [line-number]
|
|
|
|
#+END_SRC
|
|
|
|
|
|
|
|
Remove line =[line-number]=. The lines are indexed from 1.
|
|
|
|
If =[line-number]= is greater than the total number of lines in the lean
|
|
|
|
buffer, then the command is ignored.
|
2014-08-07 06:16:37 +00:00
|
|
|
|
|
|
|
** Extracting typing information
|
|
|
|
|
|
|
|
#+BEGIN_SRC
|
|
|
|
INFO [line-number]
|
|
|
|
#+END_SRC
|
|
|
|
|
|
|
|
This command extracts typing information associated with line =[line-number]=.
|
|
|
|
Lean produces a possible empty sequence of entries terminated with
|
|
|
|
|
|
|
|
#+BEGIN_SRC
|
|
|
|
-- ENDINFO
|
|
|
|
#+END_SRC
|
|
|
|
|
|
|
|
A type information entry is of the form
|
|
|
|
|
|
|
|
#+BEGIN_SRC
|
|
|
|
-- TYPE|[line-number]|[column-number]
|
|
|
|
[type]
|
|
|
|
-- ACK
|
|
|
|
#+END_SRC
|
|
|
|
|
|
|
|
Information for overloaded operators and symbols is of the form
|
|
|
|
|
|
|
|
#+BEGIN_SRC
|
|
|
|
-- OVERLOAD|[line-number]|[column-number]
|
|
|
|
[overload-1]
|
|
|
|
--
|
|
|
|
...
|
|
|
|
--
|
|
|
|
[overload-n]
|
|
|
|
-- ACK
|
|
|
|
#+END_SRC
|
|
|
|
|
|
|
|
Here is an example of output produced by Lean
|
|
|
|
|
|
|
|
#+BEGIN_SRC
|
|
|
|
-- TYPE|15|38
|
|
|
|
num
|
|
|
|
-- ACK
|
|
|
|
-- TYPE|15|40
|
|
|
|
num → num → Prop
|
|
|
|
-- ACK
|
|
|
|
-- OVERLOAD|15|42
|
|
|
|
f
|
|
|
|
--
|
|
|
|
foo.f
|
|
|
|
-- ACK
|
|
|
|
-- TYPE|15|42
|
|
|
|
num → num
|
|
|
|
-- ACK
|
|
|
|
-- TYPE|15|44
|
|
|
|
num
|
|
|
|
-- ACK
|
|
|
|
-- ENDINFO
|
|
|
|
#+END_SRC
|