summaryrefslogtreecommitdiff
path: root/graphics/asymptote/envcompleter.h
blob: 8af7f5bff38e44d37895a68a247e16899159632c (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
/*****
 * envcompleter.h
 * Andy Hammerlindl 2006/07/31
 *
 * Implements a text completion function for readline based on symbols in the
 * environment.
 *****/

#ifndef ENVCOMPLETER_H
#define ENVCOMPLETER_H

#include "env.h"
#include "interact.h"

namespace trans {

class envCompleter : public interact::completer {
public:
  typedef protoenv::symbol_list symbol_list;

private:
  protoenv &e;
  symbol_list l;
  symbol_list::iterator index;

  // These are completions that don't come from the environment, such as
  // keywords.  They are read from the keywords file.
  static void basicCompletions(symbol_list &l, string start);

  void makeList(const char *text);

public:
  envCompleter(protoenv &e)
    : e(e), l(), index(l.end()) {}

  char *operator () (const char *text, int state);
};

} // namespace trans

#endif // ENVCOMPLETER_H