#pragma once #include #include #include "CommandSpec.h" #include "Completion.h" #include "Database.h" // Works out tab-completion candidates for the text typed so far: command // words first, then arguments (task names, account names, statuses, ...). class Completer { public: Completer(const Database& db, const std::vector& specs); Completion complete(const std::string& textBeforeCursor) const; private: std::vector valuesFor(ArgKind kind, const std::string& current) const; const Database& db_; const std::vector& specs_; };