Legend:
Library
Module
Module type
Parameter
Class
Class type
This module offers basic control of ANSI compliant terminals and the windows shell.
The functions below do not send ANSI codes (i.e., do nothing or only print the output) when then output is not connected to a TTY. Functions providing information (such as pos_cursor) fail when in that situation. TTY detection is configurable by changing the value of isatty.
print_string attr txt prints the string txt with the attibutes attr. After printing, the attributes are automatically reseted to the defaults, unless autoreset is turned off.
Like print_string but prints on the standard error.
val printf : style list->('a, unit, string, unit)format4->'a
printf attr format arg1 ... argN prints the arguments arg1,...,argN according to format with the attibutes attr. After printing, the attributes are automatically reseted to the defaults, unless autoreset is turned off.
val eprintf : style list->('a, unit, string, unit)format4->'a
val sprintf : style list->('a, unit, string)format->'a
Same as printf but returns the result in a string. This only works on ANSI compliant terminals — for which escape sequences are used — and not under Windows — where system calls are required. On Windows, it is identical to the standard sprintf.
erase Eol clear from the cursor position to the end of the line without moving the cursor. erase Above erases everything before the position of the cursor. erase Below erases everything after the position of the cursor. erase Screen erases the whole screen.
This function does not modify the position of the cursor.
Cursor
val set_cursor : int ->int -> unit
set_cursor x y puts the cursor at position (x,y), x indicating the column (the leftmost one being 1) and y being the line (the topmost one being 1). If x <= 0, the x coordinate is unchanged; if y <= 0, the y coordinate is unchanged.
val move_cursor : int ->int -> unit
move_cursor x y moves the cursor by x columns (to the right if x > 0, to the left if x < 0) and by y lines (downwards if y > 0 and upwards if y < 0).
val move_bol : unit -> unit
move_bol () moves the cursor to the beginning of the current line. This is useful for progress bars for example.
val pos_cursor : unit -> int * int
pos_cursor () returns a couple (x,y) giving the current position of the cursor, x >= 1 being the column and y >= 1 the row.
val save_cursor : unit -> unit
save_cursor () saves the current position of the cursor.
val show_cursor : unit -> unit
show_cursor () show the cursor.
Not implemented on Windows.
val hide_cursor : unit -> unit
show_cursor () hidex the cursor.
Not implemented on Windows.
val restore_cursor : unit -> unit
restore_cursor () replaces the cursor to the position saved with save_cursor ().
Size
val resize : int ->int -> unit
resize width height resize the current terminal to the given width and height.
val size : unit -> int * int
size () returns a pair (width, height) giving the size of the terminal in character cells.
Scrolling
val scroll : int -> unit
scroll n scrolls the terminal by n lines, up (creating new lines at the bottom) if n > 0 and down if n < 0.