1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-29 02:11:15 +02:00

Add completion for paths

This commit is contained in:
Eelco Dolstra 2020-05-10 21:35:07 +02:00
parent 91ddee6bf0
commit e0c19ee620
13 changed files with 82 additions and 15 deletions

View file

@ -83,6 +83,7 @@ protected:
std::string category;
Strings labels;
Handler handler;
std::function<void(size_t, std::string_view)> completer;
static Flag mkHashTypeFlag(std::string && longName, HashType * ht);
};
@ -98,8 +99,8 @@ protected:
struct ExpectedArg
{
std::string label;
size_t arity; // 0 = any
bool optional;
size_t arity = 0; // 0 = any
bool optional = false;
std::function<void(std::vector<std::string>)> handler;
};
@ -182,6 +183,8 @@ public:
}});
}
void expectPathArg(const std::string & label, string * dest, bool optional = false);
/* Expect 0 or more arguments. */
void expectArgs(const std::string & label, std::vector<std::string> * dest)
{
@ -190,6 +193,8 @@ public:
}});
}
void expectPathArgs(const std::string & label, std::vector<std::string> * dest);
friend class MultiCommand;
};
@ -257,7 +262,10 @@ typedef std::vector<std::pair<std::string, std::string>> Table2;
void printTable(std::ostream & out, const Table2 & table);
extern std::shared_ptr<std::set<std::string>> completions;
extern bool pathCompletions;
std::optional<std::string> needsCompletion(std::string_view s);
void completePath(size_t, std::string_view s);
}