/*****
* 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