summaryrefslogtreecommitdiff
path: root/graphics/asymptote/interact.h
blob: 4b7550986e9f4007469a01492c97d12a69ba6f69 (plain)
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
53
54
55
/*****
 * interact.h
 *
 * The glue between the lexical analyzer and the readline library.
 *****/

#ifndef INTERACT_H
#define INTERACT_H

#include "common.h"

void interruptHandler(int);

namespace interact {

extern bool interactive;
extern bool uptodate;
extern int lines; // Interactive scroll count
extern bool query; // Enable interactive scrolling;

void init_interactive();

// Read a line from the input, without any processing.
string simpleline(string prompt);

// Add a line of input to the readline history.
void addToHistory(string line);

// Functions to work with the most recently entered line in the history.
string getLastHistoryLine();
void setLastHistoryLine(string line);

// Remove the line last added to the history.
void deleteLastLine();

// Write out the history of input lines to the history file.
void cleanup_interactive();

// This class is used to set a text completion function for readline.  A class
// is used instead the usual function pointer so that information such as the
// current environment can be coded into the function (mimicking a closure).
class completer {
public:
  virtual ~completer() {};
  virtual char *operator () (const char *text, int state) = 0;
};

void setCompleter(completer *c);

#define YY_READ_BUF_SIZE YY_BUF_SIZE

void init_readline(bool tabcompletion);
}

#endif // INTERACT_H