mirror of
https://github.com/fish-shell/fish-shell
synced 2024-11-10 23:24:39 +00:00
Merge remote-tracking branch 'fishfish/master'
This commit is contained in:
commit
32a98e799e
10 changed files with 1287 additions and 57 deletions
|
@ -606,7 +606,7 @@ install-force: all install-translations
|
|||
$(INSTALL) -m 755 -d $(DESTDIR)$(datadir)/fish
|
||||
$(INSTALL) -m 755 -d $(DESTDIR)$(datadir)/fish/completions
|
||||
$(INSTALL) -m 755 -d $(DESTDIR)$(datadir)/fish/functions
|
||||
$(INSTALL) -m 755 -d $(DESTDIR)$(datadir)/fish/man
|
||||
$(INSTALL) -m 755 -d $(DESTDIR)$(datadir)/fish/man/man1
|
||||
$(INSTALL) -m 755 -d $(DESTDIR)$(datadir)/fish/tools
|
||||
$(INSTALL) -m 755 -d $(DESTDIR)$(datadir)/fish/tools/web_config
|
||||
$(INSTALL) -m 644 etc/config.fish $(DESTDIR)$(sysconfdir)/fish/
|
||||
|
@ -620,7 +620,7 @@ install-force: all install-translations
|
|||
true; \
|
||||
done;
|
||||
for i in share/man/*.1; do \
|
||||
$(INSTALL) -m 644 $$i $(DESTDIR)$(datadir)/fish/man/; \
|
||||
$(INSTALL) -m 644 $$i $(DESTDIR)$(datadir)/fish/man/man1/; \
|
||||
true; \
|
||||
done;
|
||||
for i in share/tools/*.py; do\
|
||||
|
|
125
fish_tests.cpp
125
fish_tests.cpp
|
@ -833,6 +833,7 @@ class history_tests_t {
|
|||
public:
|
||||
static void test_history(void);
|
||||
static void test_history_merge(void);
|
||||
static void test_history_formats(void);
|
||||
};
|
||||
|
||||
static wcstring random_string(void) {
|
||||
|
@ -975,6 +976,129 @@ void history_tests_t::test_history_merge(void) {
|
|||
delete everything; //not as scary as it looks
|
||||
}
|
||||
|
||||
static bool install_sample_history(const wchar_t *name) {
|
||||
char command[512];
|
||||
snprintf(command, sizeof command, "cp tests/%ls ~/.config/fish/%ls_history", name, name);
|
||||
if (system(command)) {
|
||||
err(L"Failed to copy sample history");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Indicates whether the history is equal to the given null-terminated array of strings. */
|
||||
static bool history_equals(history_t &hist, const wchar_t * const *strings) {
|
||||
/* Count our expected items */
|
||||
size_t expected_count = 0;
|
||||
while (strings[expected_count]) {
|
||||
expected_count++;
|
||||
}
|
||||
|
||||
/* Ensure the contents are the same */
|
||||
size_t history_idx = 1;
|
||||
size_t array_idx = 0;
|
||||
for (;;) {
|
||||
const wchar_t *expected = strings[array_idx];
|
||||
history_item_t item = hist.item_at_index(history_idx);
|
||||
if (expected == NULL) {
|
||||
if (! item.empty()) {
|
||||
err(L"Expected empty item at history index %lu", history_idx);
|
||||
}
|
||||
break;
|
||||
} else {
|
||||
if (item.str() != expected) {
|
||||
err(L"Expected '%ls', found '%ls' at index %lu", expected, item.str().c_str(), history_idx);
|
||||
}
|
||||
}
|
||||
history_idx++;
|
||||
array_idx++;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void history_tests_t::test_history_formats(void) {
|
||||
const wchar_t *name;
|
||||
|
||||
// Test inferring and reading legacy and bash history formats
|
||||
name = L"history_sample_fish_1_x";
|
||||
say(L"Testing %ls", name);
|
||||
if (! install_sample_history(name)) {
|
||||
err(L"Couldn't open file tests/%ls", name);
|
||||
} else {
|
||||
/* Note: This is backwards from what appears in the file */
|
||||
const wchar_t * const expected[] = {
|
||||
L"#def",
|
||||
|
||||
L"echo #abc",
|
||||
|
||||
L"function yay\n"
|
||||
"echo hi\n"
|
||||
"end",
|
||||
|
||||
L"cd foobar",
|
||||
|
||||
L"ls /",
|
||||
|
||||
NULL
|
||||
};
|
||||
|
||||
history_t &test_history = history_t::history_with_name(name);
|
||||
if (! history_equals(test_history, expected)) {
|
||||
err(L"test_history_formats failed for %ls\n", name);
|
||||
}
|
||||
test_history.clear();
|
||||
}
|
||||
|
||||
name = L"history_sample_fish_2_0";
|
||||
say(L"Testing %ls", name);
|
||||
if (! install_sample_history(name)) {
|
||||
err(L"Couldn't open file tests/%ls", name);
|
||||
} else {
|
||||
const wchar_t * const expected[] = {
|
||||
L"echo this has\\\nbackslashes",
|
||||
|
||||
L"function foo\n"
|
||||
"echo bar\n"
|
||||
"end",
|
||||
|
||||
L"echo alpha",
|
||||
|
||||
NULL
|
||||
};
|
||||
|
||||
history_t &test_history = history_t::history_with_name(name);
|
||||
if (! history_equals(test_history, expected)) {
|
||||
err(L"test_history_formats failed for %ls\n", name);
|
||||
}
|
||||
test_history.clear();
|
||||
}
|
||||
|
||||
say(L"Testing bash import");
|
||||
FILE *f = fopen("tests/history_sample_bash", "r");
|
||||
if (! f) {
|
||||
err(L"Couldn't open file tests/history_sample_bash");
|
||||
} else {
|
||||
// It should skip over the export command since that's a bash-ism
|
||||
const wchar_t *expected[] = {
|
||||
L"echo supsup",
|
||||
|
||||
L"history --help",
|
||||
|
||||
L"echo foo",
|
||||
|
||||
NULL
|
||||
};
|
||||
history_t &test_history = history_t::history_with_name(L"bash_import");
|
||||
test_history.populate_from_bash(f);
|
||||
if (! history_equals(test_history, expected)) {
|
||||
err(L"test_history_formats failed for bash import\n");
|
||||
}
|
||||
test_history.clear();
|
||||
fclose(f);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Main test
|
||||
|
@ -1013,6 +1137,7 @@ int main( int argc, char **argv )
|
|||
test_autosuggest();
|
||||
history_tests_t::test_history();
|
||||
history_tests_t::test_history_merge();
|
||||
history_tests_t::test_history_formats();
|
||||
|
||||
say( L"Encountered %d errors in low-level tests", err_count );
|
||||
|
||||
|
|
314
history.cpp
314
history.cpp
|
@ -91,7 +91,6 @@ class history_lru_node_t : public lru_node_t {
|
|||
required_paths(item.required_paths)
|
||||
{}
|
||||
|
||||
bool write_to_file(FILE *f) const;
|
||||
bool write_yaml_to_file(FILE *f) const;
|
||||
};
|
||||
|
||||
|
@ -264,7 +263,7 @@ static const char *next_line(const char *start, size_t length) {
|
|||
// Pass a pointer to a cursor size_t, initially 0
|
||||
// If custoff_timestamp is nonzero, skip items created at or after that timestamp
|
||||
// Returns (size_t)(-1) when done
|
||||
static size_t offset_of_next_item(const char *begin, size_t mmap_length, size_t *inout_cursor, time_t cutoff_timestamp)
|
||||
static size_t offset_of_next_item_fish_2_0(const char *begin, size_t mmap_length, size_t *inout_cursor, time_t cutoff_timestamp)
|
||||
{
|
||||
size_t cursor = *inout_cursor;
|
||||
size_t result = (size_t)(-1);
|
||||
|
@ -334,6 +333,78 @@ static size_t offset_of_next_item(const char *begin, size_t mmap_length, size_t
|
|||
}
|
||||
|
||||
|
||||
// Same as offset_of_next_item_fish_2_0, but for fish 1.x (pre fishfish)
|
||||
// Adapted from history_populate_from_mmap in history.c
|
||||
static size_t offset_of_next_item_fish_1_x(const char *begin, size_t mmap_length, size_t *inout_cursor, time_t cutoff_timestamp) {
|
||||
if (mmap_length == 0 || *inout_cursor >= mmap_length)
|
||||
return (size_t)(-1);
|
||||
|
||||
const char *end = begin + mmap_length;
|
||||
const char *pos;
|
||||
|
||||
bool ignore_newline = false;
|
||||
bool do_push = true;
|
||||
bool all_done = false;
|
||||
|
||||
size_t result = *inout_cursor;
|
||||
for( pos = begin + *inout_cursor; pos < end && ! all_done; pos++ )
|
||||
{
|
||||
|
||||
if( do_push )
|
||||
{
|
||||
ignore_newline = (*pos == '#');
|
||||
do_push = false;
|
||||
}
|
||||
|
||||
switch( *pos )
|
||||
{
|
||||
case '\\':
|
||||
{
|
||||
pos++;
|
||||
break;
|
||||
}
|
||||
|
||||
case '\n':
|
||||
{
|
||||
if( ignore_newline )
|
||||
{
|
||||
ignore_newline = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Note: pos will be left pointing just after this newline, because of the ++ in the loop */
|
||||
|
||||
all_done = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
*inout_cursor = (pos - begin);
|
||||
return result;
|
||||
}
|
||||
|
||||
// Returns the offset of the next item based on the given history type, or -1
|
||||
static size_t offset_of_next_item(const char *begin, size_t mmap_length, history_file_type_t mmap_type, size_t *inout_cursor, time_t cutoff_timestamp) {
|
||||
size_t result;
|
||||
switch (mmap_type) {
|
||||
case history_type_fish_2_0:
|
||||
result = offset_of_next_item_fish_2_0(begin, mmap_length, inout_cursor, cutoff_timestamp);
|
||||
break;
|
||||
|
||||
case history_type_fish_1_x:
|
||||
result = offset_of_next_item_fish_1_x(begin, mmap_length, inout_cursor, cutoff_timestamp);
|
||||
break;
|
||||
|
||||
default:
|
||||
case history_type_unknown:
|
||||
// Oh well
|
||||
result = (size_t)(-1);
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
history_t & history_t::history_with_name(const wcstring &name) {
|
||||
/* Note that histories are currently never deleted, so we can return a reference to them without using something like shared_ptr */
|
||||
scoped_lock locker(hist_lock);
|
||||
|
@ -395,15 +466,16 @@ void history_t::add(const wcstring &str, const path_list_t &valid_paths)
|
|||
|
||||
void history_t::remove(const wcstring &str)
|
||||
{
|
||||
history_item_t item_to_delete(str);
|
||||
deleted_items.push_back(item_to_delete);
|
||||
|
||||
for (std::vector<history_item_t>::iterator iter = new_items.begin(); iter != new_items.end(); ++iter)
|
||||
/* Add to our list of deleted items */
|
||||
deleted_items.insert(str);
|
||||
|
||||
/* Remove from our list of new items */
|
||||
for (std::vector<history_item_t>::iterator iter = new_items.begin(); iter != new_items.end();)
|
||||
{
|
||||
if (iter->match_contents(item_to_delete))
|
||||
{
|
||||
new_items.erase(iter);
|
||||
break;
|
||||
if (iter->str() == str) {
|
||||
iter = new_items.erase(iter);
|
||||
} else {
|
||||
iter++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -426,7 +498,7 @@ void history_t::get_string_representation(wcstring &result, const wcstring &sepa
|
|||
load_old_if_needed();
|
||||
for (std::deque<size_t>::const_reverse_iterator iter = old_item_offsets.rbegin(); iter != old_item_offsets.rend(); ++iter) {
|
||||
size_t offset = *iter;
|
||||
const history_item_t item = history_t::decode_item(mmap_start + offset, mmap_length - offset);
|
||||
const history_item_t item = history_t::decode_item(mmap_start + offset, mmap_length - offset, mmap_type);
|
||||
if (! first)
|
||||
result.append(separator);
|
||||
result.append(item.str());
|
||||
|
@ -454,7 +526,7 @@ history_item_t history_t::item_at_index(size_t idx) {
|
|||
if (idx < old_item_count) {
|
||||
/* idx=0 corresponds to last item in old_item_offsets */
|
||||
size_t offset = old_item_offsets.at(old_item_count - idx - 1);
|
||||
return history_t::decode_item(mmap_start + offset, mmap_length - offset);
|
||||
return history_t::decode_item(mmap_start + offset, mmap_length - offset, mmap_type);
|
||||
}
|
||||
|
||||
/* Index past the valid range, so return an empty history item */
|
||||
|
@ -506,7 +578,8 @@ static bool extract_prefix(std::string &key, std::string &value, const std::stri
|
|||
return where != std::string::npos;
|
||||
}
|
||||
|
||||
history_item_t history_t::decode_item(const char *base, size_t len) {
|
||||
/* Decode an item via the fish 2.0 format */
|
||||
history_item_t history_t::decode_item_fish_2_0(const char *base, size_t len) {
|
||||
wcstring cmd;
|
||||
time_t when = 0;
|
||||
path_list_t paths;
|
||||
|
@ -562,7 +635,6 @@ history_item_t history_t::decode_item(const char *base, size_t len) {
|
|||
/* We're going to consume this line */
|
||||
cursor += advance;
|
||||
|
||||
|
||||
/* Skip the leading dash-space and then store this path it */
|
||||
line.erase(0, 2);
|
||||
unescape_yaml(line);
|
||||
|
@ -574,14 +646,151 @@ history_item_t history_t::decode_item(const char *base, size_t len) {
|
|||
done:
|
||||
paths.reverse();
|
||||
return history_item_t(cmd, when, paths);
|
||||
}
|
||||
|
||||
history_item_t history_t::decode_item(const char *base, size_t len, history_file_type_t type) {
|
||||
switch (type) {
|
||||
case history_type_fish_1_x: return history_t::decode_item_fish_1_x(base, len);
|
||||
case history_type_fish_2_0: return history_t::decode_item_fish_2_0(base, len);
|
||||
default: return history_item_t(L"");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Remove backslashes from all newlines. This makes a string from the
|
||||
history file better formated for on screen display.
|
||||
*/
|
||||
static wcstring history_unescape_newlines_fish_1_x( const wcstring &in_str )
|
||||
{
|
||||
wcstring out;
|
||||
for (const wchar_t *in = in_str.c_str(); *in; in++)
|
||||
{
|
||||
if( *in == L'\\' )
|
||||
{
|
||||
if( *(in+1)!= L'\n')
|
||||
{
|
||||
out.push_back(*in);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
out.push_back(*in);
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
/* Decode an item via the fish 1.x format. Adapted from fish 1.x's item_get(). */
|
||||
history_item_t history_t::decode_item_fish_1_x(const char *begin, size_t length) {
|
||||
|
||||
const char *end = begin + length;
|
||||
const char *pos=begin;
|
||||
|
||||
bool was_backslash = 0;
|
||||
wcstring out;
|
||||
bool first_char = true;
|
||||
bool timestamp_mode = false;
|
||||
time_t timestamp = 0;
|
||||
|
||||
while( 1 )
|
||||
{
|
||||
wchar_t c;
|
||||
mbstate_t state;
|
||||
size_t res;
|
||||
|
||||
memset( &state, 0, sizeof(state) );
|
||||
|
||||
res = mbrtowc( &c, pos, end-pos, &state );
|
||||
|
||||
if( res == (size_t)-1 )
|
||||
{
|
||||
pos++;
|
||||
continue;
|
||||
}
|
||||
else if( res == (size_t)-2 )
|
||||
{
|
||||
break;
|
||||
}
|
||||
else if( res == (size_t)0 )
|
||||
{
|
||||
pos++;
|
||||
continue;
|
||||
}
|
||||
pos += res;
|
||||
|
||||
if( c == L'\n' )
|
||||
{
|
||||
if( timestamp_mode )
|
||||
{
|
||||
const wchar_t *time_string = out.c_str();
|
||||
while( *time_string && !iswdigit(*time_string))
|
||||
time_string++;
|
||||
errno=0;
|
||||
|
||||
if( *time_string )
|
||||
{
|
||||
time_t tm;
|
||||
wchar_t *end;
|
||||
|
||||
errno = 0;
|
||||
tm = (time_t)wcstol( time_string, &end, 10 );
|
||||
|
||||
if( tm && !errno && !*end )
|
||||
{
|
||||
timestamp = tm;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
out.clear();
|
||||
timestamp_mode = false;
|
||||
continue;
|
||||
}
|
||||
if( !was_backslash )
|
||||
break;
|
||||
}
|
||||
|
||||
if( first_char )
|
||||
{
|
||||
if( c == L'#' )
|
||||
timestamp_mode = true;
|
||||
}
|
||||
|
||||
first_char = false;
|
||||
|
||||
out.push_back(c);
|
||||
|
||||
was_backslash = ( (c == L'\\') && !was_backslash);
|
||||
|
||||
}
|
||||
|
||||
out = history_unescape_newlines_fish_1_x(out);
|
||||
return history_item_t(out, timestamp);
|
||||
}
|
||||
|
||||
|
||||
/* Try to infer the history file type based on inspecting the data */
|
||||
static history_file_type_t infer_file_type(const char *data, size_t len) {
|
||||
history_file_type_t result = history_type_unknown;
|
||||
if (len > 0) {
|
||||
/* Old fish started with a # */
|
||||
if (data[0] == '#') {
|
||||
result = history_type_fish_1_x;
|
||||
} else {
|
||||
/* Assume new fish */
|
||||
result = history_type_fish_2_0;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void history_t::populate_from_mmap(void)
|
||||
{
|
||||
mmap_type = infer_file_type(mmap_start, mmap_length);
|
||||
size_t cursor = 0;
|
||||
for (;;) {
|
||||
size_t offset = offset_of_next_item(mmap_start, mmap_length, &cursor, birth_timestamp);
|
||||
size_t offset = offset_of_next_item(mmap_start, mmap_length, mmap_type, &cursor, birth_timestamp);
|
||||
// If we get back -1, we're done
|
||||
if (offset == (size_t)(-1))
|
||||
break;
|
||||
|
@ -831,15 +1040,16 @@ void history_t::save_internal()
|
|||
const char *local_mmap_start = NULL;
|
||||
size_t local_mmap_size = 0;
|
||||
if (map_file(name, &local_mmap_start, &local_mmap_size)) {
|
||||
const history_file_type_t local_mmap_type = infer_file_type(local_mmap_start, local_mmap_size);
|
||||
size_t cursor = 0;
|
||||
for (;;) {
|
||||
size_t offset = offset_of_next_item(local_mmap_start, local_mmap_size, &cursor, 0);
|
||||
size_t offset = offset_of_next_item(local_mmap_start, local_mmap_size, local_mmap_type, &cursor, 0);
|
||||
/* If we get back -1, we're done */
|
||||
if (offset == (size_t)(-1))
|
||||
break;
|
||||
|
||||
/* Try decoding an old item */
|
||||
const history_item_t old_item = history_t::decode_item(local_mmap_start + offset, local_mmap_size - offset);
|
||||
const history_item_t old_item = history_t::decode_item(local_mmap_start + offset, local_mmap_size - offset, local_mmap_type);
|
||||
if (old_item.empty() || is_deleted(old_item))
|
||||
{
|
||||
// debug(0, L"Item is deleted : %s\n", old_item.str().c_str());
|
||||
|
@ -913,12 +1123,14 @@ void history_t::save_internal()
|
|||
}
|
||||
}
|
||||
|
||||
void history_t::save(void) {
|
||||
void history_t::save(void)
|
||||
{
|
||||
scoped_lock locker(lock);
|
||||
this->save_internal();
|
||||
}
|
||||
|
||||
void history_t::clear(void) {
|
||||
void history_t::clear(void)
|
||||
{
|
||||
scoped_lock locker(lock);
|
||||
new_items.clear();
|
||||
deleted_items.clear();
|
||||
|
@ -931,6 +1143,63 @@ void history_t::clear(void) {
|
|||
|
||||
}
|
||||
|
||||
/* Indicate whether we ought to import the bash history file into fish */
|
||||
static bool should_import_bash_history_line(const std::string &line)
|
||||
{
|
||||
if (line.empty())
|
||||
return false;
|
||||
|
||||
/* Very naive tests! Skip export; probably should skip others. */
|
||||
const char * const ignore_prefixes[] = {
|
||||
"export ",
|
||||
"#"
|
||||
};
|
||||
|
||||
for (size_t i=0; i < sizeof ignore_prefixes / sizeof *ignore_prefixes; i++) {
|
||||
const char *prefix = ignore_prefixes[i];
|
||||
if (! line.compare(0, strlen(prefix), prefix)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
printf("Importing %s\n", line.c_str());
|
||||
return true;
|
||||
}
|
||||
|
||||
void history_t::populate_from_bash(FILE *stream)
|
||||
{
|
||||
/* Bash's format is very simple: just lines with #s for comments.
|
||||
Ignore a few commands that are bash-specific. This list ought to be expanded.
|
||||
*/
|
||||
std::string line;
|
||||
for (;;) {
|
||||
line.clear();
|
||||
bool success = false, has_newline = false;
|
||||
|
||||
/* Loop until we've read a line */
|
||||
do {
|
||||
char buff[128];
|
||||
success = !! fgets(buff, sizeof buff, stream);
|
||||
if (success) {
|
||||
/* Skip the newline */
|
||||
char *newline = strchr(buff, '\n');
|
||||
if (newline) *newline = '\0';
|
||||
has_newline = (newline != NULL);
|
||||
|
||||
/* Append what we've got */
|
||||
line.append(buff);
|
||||
}
|
||||
} while (success && ! has_newline);
|
||||
|
||||
/* Maybe add this line */
|
||||
if (should_import_bash_history_line(line)) {
|
||||
this->add(str2wcstring(line));
|
||||
}
|
||||
|
||||
if (line.empty())
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void history_init()
|
||||
{
|
||||
}
|
||||
|
@ -1041,10 +1310,5 @@ void history_t::add_with_file_detection(const wcstring &str)
|
|||
|
||||
bool history_t::is_deleted(const history_item_t &item) const
|
||||
{
|
||||
for (std::vector<history_item_t>::const_iterator iter = deleted_items.begin(); iter != deleted_items.end(); ++iter)
|
||||
{
|
||||
if (iter->match_contents(item)) { return true; }
|
||||
}
|
||||
|
||||
return false;
|
||||
return deleted_items.count(item.str()) > 0;
|
||||
}
|
||||
|
|
35
history.h
35
history.h
|
@ -57,20 +57,18 @@ class history_item_t {
|
|||
|
||||
const path_list_t &get_required_paths() const { return required_paths; }
|
||||
|
||||
bool write_to_file(FILE *f) const;
|
||||
|
||||
bool operator==(const history_item_t &other) const {
|
||||
return contents == other.contents &&
|
||||
creation_timestamp == other.creation_timestamp &&
|
||||
required_paths == other.required_paths;
|
||||
}
|
||||
};
|
||||
|
||||
bool match_contents(const history_item_t &other) const {
|
||||
return contents == other.contents;
|
||||
}
|
||||
|
||||
/* Functions for testing only */
|
||||
|
||||
/* The type of file that we mmap'd */
|
||||
enum history_file_type_t {
|
||||
history_type_unknown,
|
||||
history_type_fish_2_0,
|
||||
history_type_fish_1_x
|
||||
};
|
||||
|
||||
class history_t {
|
||||
|
@ -101,8 +99,8 @@ private:
|
|||
/** New items. */
|
||||
std::vector<history_item_t> new_items;
|
||||
|
||||
/** Deleted items. */
|
||||
std::vector<history_item_t> deleted_items;
|
||||
/** Deleted item contents. */
|
||||
std::set<wcstring> deleted_items;
|
||||
|
||||
/** How many items we've added without saving */
|
||||
size_t unsaved_item_count;
|
||||
|
@ -110,17 +108,18 @@ private:
|
|||
/** The mmaped region for the history file */
|
||||
const char *mmap_start;
|
||||
|
||||
/** The size of the mmaped region */
|
||||
/** The size of the mmap'd region */
|
||||
size_t mmap_length;
|
||||
|
||||
/** The type of file we mmap'd */
|
||||
history_file_type_t mmap_type;
|
||||
|
||||
/** Timestamp of when this history was created */
|
||||
const time_t birth_timestamp;
|
||||
|
||||
/** Timestamp of last save */
|
||||
time_t save_timestamp;
|
||||
|
||||
static history_item_t decode_item(const char *ptr, size_t len);
|
||||
|
||||
void populate_from_mmap(void);
|
||||
|
||||
/** List of old items, as offsets into out mmap data */
|
||||
|
@ -137,6 +136,11 @@ private:
|
|||
|
||||
/** Saves history */
|
||||
void save_internal();
|
||||
|
||||
/* Versioned decoding */
|
||||
static history_item_t decode_item_fish_2_0(const char *base, size_t len);
|
||||
static history_item_t decode_item_fish_1_x(const char *base, size_t len);
|
||||
static history_item_t decode_item(const char *base, size_t len, history_file_type_t type);
|
||||
|
||||
public:
|
||||
/** Returns history with the given name, creating it if necessary */
|
||||
|
@ -157,12 +161,15 @@ public:
|
|||
/** Irreversibly clears history */
|
||||
void clear();
|
||||
|
||||
/** Populates from a bash history file */
|
||||
void populate_from_bash(FILE *f);
|
||||
|
||||
/* Gets all the history into a string with ARRAY_SEP_STR. This is intended for the $history environment variable. This may be long! */
|
||||
void get_string_representation(wcstring &str, const wcstring &separator);
|
||||
|
||||
/** Return the specified history at the specified index. 0 is the index of the current commandline. (So the most recent item is at index 1.) */
|
||||
history_item_t item_at_index(size_t idx);
|
||||
|
||||
|
||||
bool is_deleted(const history_item_t &item) const;
|
||||
};
|
||||
|
||||
|
|
35
reader.cpp
35
reader.cpp
|
@ -1774,6 +1774,19 @@ void reader_sanity_check()
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Set the specified string from the history as the current buffer. Do
|
||||
not modify prefix_width.
|
||||
*/
|
||||
static void set_command_line_and_position( const wcstring &new_str, int pos )
|
||||
{
|
||||
data->command_line = new_str;
|
||||
data->command_line_changed();
|
||||
data->buff_pos = pos;
|
||||
reader_super_highlight_me_plenty( data->buff_pos );
|
||||
reader_repaint();
|
||||
}
|
||||
|
||||
void reader_replace_current_token( const wchar_t *new_token )
|
||||
{
|
||||
|
||||
|
@ -1792,23 +1805,11 @@ void reader_replace_current_token( const wchar_t *new_token )
|
|||
new_buff.append(new_token);
|
||||
new_buff.append(end);
|
||||
new_pos = (begin-buff) + wcslen(new_token);
|
||||
reader_set_buffer(new_buff, new_pos);
|
||||
|
||||
set_command_line_and_position(new_buff, new_pos);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Set the specified string from the history as the current buffer. Do
|
||||
not modify prefix_width.
|
||||
*/
|
||||
static void handle_history( const wcstring &new_str )
|
||||
{
|
||||
data->command_line = new_str;
|
||||
data->command_line_changed();
|
||||
data->buff_pos=data->command_line.size();
|
||||
reader_super_highlight_me_plenty( data->buff_pos );
|
||||
reader_repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
Reset the data structures associated with the token search
|
||||
*/
|
||||
|
@ -1828,6 +1829,8 @@ static void reset_token_history()
|
|||
data->search_pos=0;
|
||||
data->search_prev.clear();
|
||||
data->search_prev.push_back(data->search_buff);
|
||||
|
||||
data->history_search = history_search_t(*data->history, data->search_buff, HISTORY_SEARCH_TYPE_CONTAINS);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1937,7 +1940,7 @@ static void handle_token_history( int forward, int reset )
|
|||
//debug( 3, L"ok pos" );
|
||||
|
||||
const wcstring last_tok = tok_last( &tok );
|
||||
if (find(data->search_prev.begin(), data->search_prev.end(), last_tok) != data->search_prev.end()) {
|
||||
if (find(data->search_prev.begin(), data->search_prev.end(), last_tok) == data->search_prev.end()) {
|
||||
data->token_history_pos = tok_get_pos( &tok );
|
||||
str = wcsdup(tok_last( &tok ));
|
||||
}
|
||||
|
@ -3122,7 +3125,7 @@ const wchar_t *reader_readline()
|
|||
} else {
|
||||
new_text = data->history_search.current_string();
|
||||
}
|
||||
handle_history(new_text);
|
||||
set_command_line_and_position(new_text, new_text.size());
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
202
share/completions/brew.fish
Normal file
202
share/completions/brew.fish
Normal file
|
@ -0,0 +1,202 @@
|
|||
function __fish_brew_needs_command
|
||||
set cmd (commandline -opc)
|
||||
if [ (count $cmd) -eq 1 -a $cmd[1] = 'brew' ]
|
||||
return 0
|
||||
end
|
||||
return 1
|
||||
end
|
||||
|
||||
function __fish_brew_using_command
|
||||
set cmd (commandline -opc)
|
||||
if [ (count $cmd) -gt 1 ]
|
||||
if [ $argv[1] = $cmd[2] ]
|
||||
return 0
|
||||
end
|
||||
end
|
||||
return 1
|
||||
end
|
||||
|
||||
function __fish_brew_formulae
|
||||
set -l formuladir (brew --repository)/Library/Formula/
|
||||
# __fish_complete_suffix .rb
|
||||
ls $formuladir/*.rb | sed 's/.rb$//' | sed "s|^$formuladir||"
|
||||
end
|
||||
|
||||
############
|
||||
# commands #
|
||||
############
|
||||
|
||||
# audit
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a audit -d 'Check formula'
|
||||
complete -f -c brew -n '__fish_brew_using_command audit' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
|
||||
# cat
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a cat -d 'Display formula'
|
||||
complete -f -c brew -n '__fish_brew_using_command cat' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
|
||||
# cleanup
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a cleanup -d 'Remove old installed versions'
|
||||
complete -f -c brew -n '__fish_brew_using_command cleanup' -l force -d 'Remove out-of-date keg-only brews as well'
|
||||
complete -f -c brew -n '__fish_brew_using_command cleanup' -a '-n' -d 'Dry run'
|
||||
complete -f -c brew -n '__fish_brew_using_command cleanup' -a '-s' -d 'Scrubs the cache'
|
||||
complete -f -c brew -n '__fish_brew_using_command cleanup' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
|
||||
# create
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a create -d 'Create new formula from URL'
|
||||
complete -f -c brew -n '__fish_brew_using_command create' -a '--cmake' -d 'Use template for CMake-style build'
|
||||
complete -f -c brew -n '__fish_brew_using_command create' -a '--autotools' -d 'Use template for Autotools-style build'
|
||||
complete -f -c brew -n '__fish_brew_using_command create' -a '--no-fetch' -d 'Don\'t download URL'
|
||||
|
||||
# deps
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a deps -d 'Show a formula\'s dependencies'
|
||||
complete -f -c brew -n '__fish_brew_using_command deps' -a '--1' -d 'Show only 1 level down'
|
||||
complete -f -c brew -n '__fish_brew_using_command deps' -a '-n' -d 'Show in topological order'
|
||||
complete -f -c brew -n '__fish_brew_using_command deps' -a '--tree' -d 'Show dependencies as tree'
|
||||
complete -f -c brew -n '__fish_brew_using_command deps' -a '--all' -d 'Show dependencies for all formulae'
|
||||
complete -f -c brew -n '__fish_brew_using_command deps' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
|
||||
# diy
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a 'diy configure' -d 'Determine installation prefix for non-brew software'
|
||||
complete -f -c brew -n '__fish_brew_using_command diy' -a '--set-name' -d 'Set name of package'
|
||||
complete -f -c brew -n '__fish_brew_using_command diy' -a '--set-version' -d 'Set version of package'
|
||||
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a 'doctor' -d 'Check your system for problems'
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a 'edit' -d 'Open brew/formula for editing'
|
||||
|
||||
# fetch
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a fetch -d 'Download source for formula'
|
||||
complete -f -c brew -n '__fish_brew_using_command fetch' -a '--force' -d 'Remove a previously cached version and re-fetch'
|
||||
complete -f -c brew -n '__fish_brew_using_command fetch' -a '--HEAD' -d 'Download the HEAD version from a VCS'
|
||||
complete -f -c brew -n '__fish_brew_using_command fetch' -a '--deps' -d 'Also download dependencies'
|
||||
complete -f -c brew -n '__fish_brew_using_command fetch' -a '-v' -d 'Make HEAD checkout verbose'
|
||||
complete -f -c brew -n '__fish_brew_using_command fetch' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a 'help' -d 'Display help'
|
||||
|
||||
# home
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a home -d 'Open brew/formula\'s homepage'
|
||||
complete -c brew -n '__fish_brew_using_command home' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
|
||||
# info
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a 'info abv' -d 'Display information about formula'
|
||||
complete -f -c brew -n '__fish_brew_using_command info' -a '--all' -d 'Display info for all formulae'
|
||||
complete -f -c brew -n '__fish_brew_using_command info' -a '--github' -d 'Open the GitHub History page for formula'
|
||||
complete -c brew -n '__fish_brew_using_command info' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
|
||||
# install
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a 'install' -d 'Install formula'
|
||||
complete -f -c brew -n '__fish_brew_using_command install' -a '--force' -d 'Force install'
|
||||
complete -f -c brew -n '__fish_brew_using_command install' -a '--debug' -d 'If install fails, open shell in temp directory'
|
||||
complete -f -c brew -n '__fish_brew_using_command install' -a '--ignore-dependencies' -d 'skip installing any dependencies of any kind'
|
||||
complete -f -c brew -n '__fish_brew_using_command install' -a '--fresh' -d 'Don\'t re-use any options from previous installs'
|
||||
complete -f -c brew -n '__fish_brew_using_command install' -a '--use-clang' -d 'Attempt to compile using clang'
|
||||
complete -f -c brew -n '__fish_brew_using_command install' -a '--use-gcc' -d 'Attempt to compile using GCC'
|
||||
complete -f -c brew -n '__fish_brew_using_command install' -a '--use-llvm' -d 'Attempt to compile using the LLVM'
|
||||
complete -f -c brew -n '__fish_brew_using_command install' -a '--build-from-source' -d 'Compile from source even if a bottle is provided'
|
||||
complete -f -c brew -n '__fish_brew_using_command install' -a '--devel' -d 'Install the development version of formula'
|
||||
complete -f -c brew -n '__fish_brew_using_command install' -a '--HEAD' -d 'Install the HEAD version from VCS'
|
||||
complete -f -c brew -n '__fish_brew_using_command install' -a '--interactive' -d 'Download and patch formula, then open a shell'
|
||||
complete -c brew -n '__fish_brew_using_command install' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
|
||||
# link
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a 'link ln' -d 'Symlink installed formula'
|
||||
complete -f -c brew -n '__fish_brew_using_command link' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
complete -f -c brew -n '__fish_brew_using_command ln' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
|
||||
# list
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a 'list ls' -d 'List all installed formula'
|
||||
complete -f -c brew -n '__fish_brew_using_command list' -a '--unbrewed' -d 'List all files in the Homebrew prefix not installed by brew'
|
||||
complete -f -c brew -n '__fish_brew_using_command list' -a '--versions' -d 'Show the version number'
|
||||
complete -c brew -n '__fish_brew_using_command list' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
#ls
|
||||
complete -f -c brew -n '__fish_brew_using_command ls' -a '--unbrewed' -d 'List all files in the Homebrew prefix not installed by brew'
|
||||
complete -f -c brew -n '__fish_brew_using_command ls' -a '--versions' -d 'Show the version number'
|
||||
complete -c brew -n '__fish_brew_using_command ls' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
|
||||
# log
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a log -d 'Show log for formula'
|
||||
complete -c brew -n '__fish_brew_using_command log' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
|
||||
# missing
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a missing -d 'Check formula for missing dependencies'
|
||||
complete -c brew -n '__fish_brew_using_command missing' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
|
||||
# options
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a options -d 'Display install options for formula'
|
||||
complete -c brew -n '__fish_brew_using_command options' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
|
||||
# outdated
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a outdated -d 'Show formula that have updated versions'
|
||||
complete -f -c brew -n '__fish_brew_using_command outdated' -a '--quiet' -d 'Display only names'
|
||||
|
||||
# prune
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a prune -d 'Remove dead symlinks'
|
||||
|
||||
# search
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a 'search -S' -d 'Search for formula by name'
|
||||
complete -f -c brew -n '__fish_brew_using_command search' -a '--macports' -d 'Search on MacPorts'
|
||||
complete -f -c brew -n '__fish_brew_using_command search' -a '--fink' -d 'Search on Fink'
|
||||
complete -f -c brew -n '__fish_brew_using_command -S' -a '--macports' -d 'Search on MacPorts'
|
||||
complete -f -c brew -n '__fish_brew_using_command -S' -a '--fink' -d 'Search on Fink'
|
||||
|
||||
# tap
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a tap -d 'Tap a new formula repository on GitHub'
|
||||
|
||||
# test
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a test -d 'Run tests for formula'
|
||||
complete -c brew -n '__fish_brew_using_command test' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
|
||||
# uninstall
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a 'uninstall remove rm' -d 'Uninstall formula'
|
||||
complete -c brew -n '__fish_brew_using_command uninstall' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
complete -c brew -n '__fish_brew_using_command remove' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
complete -c brew -n '__fish_brew_using_command rm' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
complete -f -c brew -n '__fish_brew_using_command uninstall' -a '--force' -d 'Delete all installed versions'
|
||||
complete -f -c brew -n '__fish_brew_using_command remove' -a '--force' -d 'Delete all installed versions'
|
||||
complete -f -c brew -n '__fish_brew_using_command rm' -a '--force' -d 'Delete all installed versions'
|
||||
|
||||
# unlink
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a unlink -d 'Unlink formula'
|
||||
complete -c brew -n '__fish_brew_using_command unlink' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
|
||||
# untap
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a untap -d 'Remove a tapped repository'
|
||||
|
||||
# update
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a update -d 'Fetch newest version of Homebrew and formulas'
|
||||
complete -f -c brew -n '__fish_brew_using_command update' -a '--rebase' -d 'Use git pull --rebase'
|
||||
|
||||
# upgrade
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a upgrade -d 'Upgrade outdated brews'
|
||||
complete -c brew -n '__fish_brew_using_command upgrade' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
|
||||
# uses
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a uses -d 'Show formulas that depend on specified formula'
|
||||
complete -f -c brew -n '__fish_brew_using_command uses' -a '--installed' -d 'List only installed formulae'
|
||||
complete -c brew -n '__fish_brew_using_command uses' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
|
||||
# versions
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a versions -d 'List previous versions of formula'
|
||||
complete -f -c brew -n '__fish_brew_using_command versions' -a '--compact' -d 'Show all options on a single line'
|
||||
complete -c brew -n '__fish_brew_using_command versions' -a '(__fish_brew_formulae)' -d 'formula'
|
||||
|
||||
|
||||
############
|
||||
# switches #
|
||||
############
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -a '-v --version' -d 'Print version number of brew'
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -l repository -x -d 'Display where Homebrew\'s .git directory is located'
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -l config -x -d 'Show Homebrew and system configuration'
|
||||
|
||||
# --prefix
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -l prefix -d 'Display Homebrew\'s install path'
|
||||
complete -f -c brew -n '__fish_brew_using_command --prefix' -a '(__fish_brew_formulae)' -d 'Display formula\'s install path'
|
||||
|
||||
# --cache
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -l cache -d 'Display Homebrew\'s download cache'
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -n '__fish_brew_using_command --cache' -a '(__fish_brew_formulae)' -d 'Display the file or directory used to cache formula'
|
||||
|
||||
# --cellar
|
||||
complete -f -c brew -n '__fish_brew_needs_command' -l cellar -d 'Display Homebrew\'s Cellar path'
|
||||
complete -f -c brew -n '__fish_brew_using_command --cellar' -a '(__fish_brew_formulae)' -d 'Display formula\'s install path in Cellar'
|
||||
|
604
share/completions/bzr.fish
Normal file
604
share/completions/bzr.fish
Normal file
|
@ -0,0 +1,604 @@
|
|||
#
|
||||
# Command specific completions for the bzr command.
|
||||
# These completions were generated from the commands
|
||||
# man page by the make_completions.py script, but may
|
||||
# have been hand edited since.
|
||||
#
|
||||
|
||||
complete -c bzr -l dry-run --description 'Show what would be done, but don\'t actually do anything'
|
||||
complete -c bzr -l file-ids-from --description 'ARG Lookup file ids from this tree'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l no-recurse --description 'Don\'t recursively add the contents of directories'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l dry-run --description 'Will show which files would be added, but not actually add them'
|
||||
complete -c bzr -l file-ids-from --description 'Will try to use the file ids from the supplied path'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l remove --description 'Remove the alias'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l all --description 'Show annotations on all lines'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l long --description 'Show commit date in annotations'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l show-ids --description 'Show internal object ids'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l bind --description 'Bind new branch to from location'
|
||||
complete -c bzr -l files-from --description 'ARG Get file contents from this tree'
|
||||
complete -c bzr -l hardlink --description 'Hard-link working tree files where possible'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l no-tree --description 'Create a branch without a working-tree'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l stacked --description 'Create a stacked branch referring to the source branch'
|
||||
complete -c bzr -l standalone --description 'Do not use a shared repository, even if available'
|
||||
complete -c bzr -l switch --description 'Switch the checkout in the current directory to the new branch'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l use-existing-dir --description 'By default branch will fail if the target directory exists, but does not already have a control directory'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l recursive -s R --description 'Recursively scan for branches rather than just looking in the specified location'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l config --description 'LOCATION is the directory where the config lock is'
|
||||
complete -c bzr -l force --description 'Do not ask for confirmation before breaking the lock'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l filters --description 'Apply content filters to display the convenience form'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l name-from-revision --description 'The path name in the old tree'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l branch --description 'Check the branch related to the current directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l repo --description 'Check the repository related to the current directory'
|
||||
complete -c bzr -l tree --description 'Check the working tree related to the current directory'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l files-from --description 'ARG Get file contents from this tree'
|
||||
complete -c bzr -l hardlink --description 'Hard-link working tree files where possible'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l lightweight --description 'Perform a lightweight checkout'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l detritus --description 'Delete conflict files, merge and revert backups, and failed selftest dirs'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l dry-run --description 'Show files to delete instead of deleting them'
|
||||
complete -c bzr -l force --description 'Do not prompt before deleting'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l ignored --description 'Delete all ignored files'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l unknown --description 'Delete files unknown to bzr (default)'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l author --description 'ARG Set the author\'s name, if it\'s different from the committer'
|
||||
complete -c bzr -l commit-time --description 'ARG Manually set a commit time using commit date format, e'
|
||||
complete -c bzr -l exclude --description 'ARG, -x Do not consider changes made to a given path'
|
||||
complete -c bzr -l file --description 'MSGFILE, -F Take commit message from this file'
|
||||
complete -c bzr -l fixes --description 'ARG Mark a bug as being fixed by this revision (see "bzr help bugs")'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l local --description 'Perform a local commit in a bound branch'
|
||||
complete -c bzr -l lossy --description 'When committing to a foreign version control system do not push data that can not be natively represented'
|
||||
complete -c bzr -l message --description 'ARG, -m Description of the new revision'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l show-diff -s p --description 'When no message is supplied, show the diff along with the status summary in the message editor'
|
||||
complete -c bzr -l strict --description 'Refuse to commit if there are unknown files in the working tree'
|
||||
complete -c bzr -l unchanged --description 'Commit even if nothing has changed'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l show-diff --description 'Option'
|
||||
complete -c bzr -l all --description 'Display all the defined values for the matching options'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l remove --description 'Remove the option from the configuration file'
|
||||
complete -c bzr -l scope --description 'ARG Reduce the scope to the specified configuration file'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l text --description 'List paths of files with text conflicts'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l show-ids --description 'Show internal object ids'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l change --description 'ARG, -c Select changes introduced by the specified revision'
|
||||
complete -c bzr -l diff-options --description 'ARG Pass these options to the external diff program'
|
||||
complete -c bzr -l format --description 'ARG, -F Diff format to use'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l new --description 'ARG Branch/tree to compare to'
|
||||
complete -c bzr -l old --description 'ARG Branch/tree to compare from'
|
||||
complete -c bzr -l prefix --description 'ARG, -p Set prefixes added to old and new filenames, as two values separated by a colon'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l using --description 'ARG Use this command to compare files'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to push from, rather than the one containing the working directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l no-rebase --description 'Do not rebase after push'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l remember --description 'Remember the specified location as a default'
|
||||
complete -c bzr -l strict --description 'Refuse to push if there are uncommitted changes in the working tree, --no-strict disables the check'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l filters --description 'Apply content filters to export the convenient form'
|
||||
complete -c bzr -l format --description 'ARG Type of file to export to'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l per-file-timestamps --description 'Set modification time of files to that of the last revision in which it was changed'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l root --description 'ARG Name of the root directory inside the exported file'
|
||||
complete -c bzr -l uncommitted --description 'Export the working tree contents rather than that of the last revision'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l long --description 'Show help on all commands'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l default-rules --description 'Display the default ignore rules that bzr uses'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l append-revisions-only --description 'Never change revnos or the existing log'
|
||||
complete -c bzr -l create-prefix --description 'Create the path leading up to the branch if it does not already exist'
|
||||
complete -c bzr -l format --description 'ARG Specify a format for this branch'
|
||||
complete -c bzr -l 2a --description 'Format for the bzr 2'
|
||||
complete -c bzr -l default --description 'Format for the bzr 2'
|
||||
complete -c bzr -l development-colo --description 'The 2a format with experimental support for colocated branches'
|
||||
complete -c bzr -l pack-0.92 --description 'Pack-based format used in 1'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l no-tree --description 'Create a branch without a working tree'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l format --description 'ARG Specify a format for this repository'
|
||||
complete -c bzr -l 2a --description 'Format for the bzr 2'
|
||||
complete -c bzr -l default --description 'Format for the bzr 2'
|
||||
complete -c bzr -l development-colo --description 'The 2a format with experimental support for colocated branches'
|
||||
complete -c bzr -l pack-0.92 --description 'Pack-based format used in 1'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l no-trees --description 'Branches in the repository will default to not having a working tree'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l authors --description 'ARG What names to list as authors - first, all or committer'
|
||||
complete -c bzr -l change --description 'ARG, -c Show just the specified revision'
|
||||
complete -c bzr -l exclude-common-ancestry --description 'Display only the revisions that are not part of both ancestries (require -rX'
|
||||
complete -c bzr -l forward --description 'Show from oldest to newest'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l include-merged --description 'Show merged revisions like --levels 0 does'
|
||||
complete -c bzr -l levels --description 'N, -n Number of levels to display - 0 for all, 1 for flat'
|
||||
complete -c bzr -l limit --description 'N, -l Limit the output to the first N revisions'
|
||||
complete -c bzr -l log-format --description 'ARG Use specified log format'
|
||||
complete -c bzr -l gnu-changelog --description 'Format used by GNU ChangeLog files'
|
||||
complete -c bzr -l line --description 'Log format with one line per revision'
|
||||
complete -c bzr -l long --description 'Detailed log format'
|
||||
complete -c bzr -l short --description 'Moderately short log format'
|
||||
complete -c bzr -l match --description 'ARG, -m Show revisions whose properties match this expression'
|
||||
complete -c bzr -l match-author --description 'ARG Show revisions whose authors match this expression'
|
||||
complete -c bzr -l match-bugs --description 'ARG Show revisions whose bugs match this expression'
|
||||
complete -c bzr -l match-committer --description 'ARG Show revisions whose committer matches this expression'
|
||||
complete -c bzr -l match-message --description 'ARG Show revisions whose message matches this expression'
|
||||
complete -c bzr -l omit-merges --description 'Do not report commits with more than one parent'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l show-diff -s p --description 'Show changes made in each revision as a patch'
|
||||
complete -c bzr -l show-ids --description 'Show internal object ids'
|
||||
complete -c bzr -l signatures --description 'Show digital signature validity'
|
||||
complete -c bzr -l timezone --description 'ARG Display timezone as local, original, or utc'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Show files changed in each revision'
|
||||
complete -c bzr -s l --description 'N display a maximum of N revisions -n N display N levels of revisions (0 for all, 1 for collapsed) -v display a status summary (delta) for each revision -p display a diff (patch) for each revision --show-ids display revision-ids (and file-ids), not just revnos'
|
||||
complete -c bzr -o rX --description 'Display revision X -rX'
|
||||
complete -c bzr -o r..Y --description 'Display up to and including revision Y -rX'
|
||||
complete -c bzr -o r-1 --description 'Show just the tip -r-10'
|
||||
complete -c bzr -o rsubmit:.. --description 'Show what\'s new on this branch -rancestor:path'
|
||||
complete -c bzr -o rdate:yesterday.. --description 'Show changes since yesterday'
|
||||
complete -c bzr -l match-message --description 'Can be used to only match a specific field'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l from-root --description 'Print paths relative to the root of the branch'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l ignored -s i --description 'Print ignored files'
|
||||
complete -c bzr -l kind --description 'ARG, -k List entries of a particular kind: file, directory, symlink'
|
||||
complete -c bzr -l null -s 0 --description 'Use an ASCII NUL (\0) separator rather than a newline'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l recursive -s R --description 'Recurse into subdirectories'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l show-ids --description 'Show internal object ids'
|
||||
complete -c bzr -l unknown -s u --description 'Print unknown files'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l versioned -s V --description 'Print versioned files'
|
||||
complete -c bzr -l change --description 'ARG, -c Select changes introduced by the specified revision'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to merge into, rather than the one containing the working directory'
|
||||
complete -c bzr -l force --description 'Merge even if the destination tree has uncommitted changes'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l interactive -s i --description 'Select changes interactively'
|
||||
complete -c bzr -l merge-type --description 'ARG Select a particular merge algorithm'
|
||||
complete -c bzr -l diff3 --description 'Merge using external diff3'
|
||||
complete -c bzr -l lca --description 'LCA-newness merge'
|
||||
complete -c bzr -l merge3 --description 'Native diff3-style merge'
|
||||
complete -c bzr -l weave --description 'Weave-based merge'
|
||||
complete -c bzr -l preview --description 'Instead of merging, show a diff of the merge'
|
||||
complete -c bzr -l pull --description 'If the destination is already completely merged into the source, pull from the source rather than merging'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l remember --description 'Remember the specified location as a default'
|
||||
complete -c bzr -l reprocess --description 'Reprocess to reduce spurious conflicts'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l show-base --description 'Show base revision text in conflicts'
|
||||
complete -c bzr -l uncommitted --description 'Apply uncommitted changes from a working copy, instead of branch changes'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l include-merged --description 'Show all revisions in addition to the mainline ones'
|
||||
complete -c bzr -l log-format --description 'ARG Use specified log format'
|
||||
complete -c bzr -l gnu-changelog --description 'Format used by GNU ChangeLog files'
|
||||
complete -c bzr -l line --description 'Log format with one line per revision'
|
||||
complete -c bzr -l long --description 'Detailed log format'
|
||||
complete -c bzr -l short --description 'Moderately short log format'
|
||||
complete -c bzr -l mine-only --description 'Display changes in the local branch only'
|
||||
complete -c bzr -l my-revision --description 'ARG Filter on local branch revisions (inclusive)'
|
||||
complete -c bzr -l other --description 'Same as --theirs-only'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l reverse --description 'Reverse the order of revisions'
|
||||
complete -c bzr -l revision --description 'ARG, -r Filter on other branch revisions (inclusive)'
|
||||
complete -c bzr -l show-ids --description 'Show internal object ids'
|
||||
complete -c bzr -l theirs-only --description 'Display changes in the remote branch only'
|
||||
complete -c bzr -l this --description 'Same as --mine-only'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l parents -s p --description 'No error if existing, make parent directories as needed'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l after --description 'Move only the bzr identifier of the file, because the file has already been moved'
|
||||
complete -c bzr -l auto --description 'Automatically guess renames'
|
||||
complete -c bzr -l dry-run --description 'Avoid making changes when guessing renames'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l clean-obsolete-packs --description 'Delete obsolete packs to save disk space'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l verbose --description 'Shows the path where each plugin is located'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to pull into, rather than the one containing the working directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l local --description 'Perform a local pull in a bound branch'
|
||||
complete -c bzr -l overwrite --description 'Ignore differences between branches and overwrite unconditionally'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l remember --description 'Remember the specified location as a default'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l show-base --description 'Show base revision text in conflicts'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Show logs of pulled revisions'
|
||||
complete -c bzr -l create-prefix --description 'Create the path leading up to the branch if it does not already exist'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to push from, rather than the one containing the working directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l no-tree --description 'Don\'t populate the working tree, even for protocols that support it'
|
||||
complete -c bzr -l overwrite --description 'Ignore differences between branches and overwrite unconditionally'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l remember --description 'Remember the specified location as a default'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l stacked --description 'Create a stacked branch that references the public location of the parent branch'
|
||||
complete -c bzr -l stacked-on --description 'ARG Create a stacked branch that refers to another branch for the commit history'
|
||||
complete -c bzr -l strict --description 'Refuse to push if there are uncommitted changes in the working tree, --no-strict disables the check'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l use-existing-dir --description 'By default push will fail if the target directory exists, but does not already have a control directory'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l bind-to --description 'ARG Branch to bind checkout to'
|
||||
complete -c bzr -l force --description 'Perform reconfiguration even if local changes will be lost'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l repository_trees --description 'ARG Whether new branches in the repository have trees'
|
||||
complete -c bzr -l with-no-trees --description 'Reconfigure repository to not create working trees on branches by default'
|
||||
complete -c bzr -l with-trees --description 'Reconfigure repository to create working trees on branches by default'
|
||||
complete -c bzr -l repository_type --description 'ARG Location fo the repository'
|
||||
complete -c bzr -l standalone --description 'Reconfigure to be a standalone branch (i'
|
||||
complete -c bzr -l use-shared --description 'Reconfigure to use a shared repository'
|
||||
complete -c bzr -l stacked-on --description 'ARG Reconfigure a branch to be stacked on another branch'
|
||||
complete -c bzr -l tree_type --description 'ARG The relation between branch and tree'
|
||||
complete -c bzr -l branch --description 'Reconfigure to be an unbound branch with no working tree'
|
||||
complete -c bzr -l checkout --description 'Reconfigure to be a bound branch with a working tree'
|
||||
complete -c bzr -l lightweight-checkout --description 'Reconfigure to be a lightweight checkout (with no local history)'
|
||||
complete -c bzr -l tree --description 'Reconfigure to be an unbound branch with a working tree'
|
||||
complete -c bzr -l unstacked --description 'Reconfigure a branch to be unstacked'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l merge-type --description 'ARG Select a particular merge algorithm'
|
||||
complete -c bzr -l diff3 --description 'Merge using external diff3'
|
||||
complete -c bzr -l lca --description 'LCA-newness merge'
|
||||
complete -c bzr -l merge3 --description 'Native diff3-style merge'
|
||||
complete -c bzr -l weave --description 'Weave-based merge'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l reprocess --description 'Reprocess to reduce spurious conflicts'
|
||||
complete -c bzr -l show-base --description 'Show base revision text in conflicts'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l file-deletion-strategy --description 'ARGThe file deletion mode to be used'
|
||||
complete -c bzr -l force --description 'Delete all the specified files, even if they can not be recovered and even if they are non-empty directories'
|
||||
complete -c bzr -l keep --description 'Delete from bzr but leave the working copy'
|
||||
complete -c bzr -l no-backup --description 'Don\'t backup changed files'
|
||||
complete -c bzr -l safe --description 'Backup changed files (default)'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l new --description 'Only remove files that have never been committed'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l force --description 'Remove branch even if it is the active branch'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l force --description 'Remove the working tree even if it has uncommitted or shelved changes'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l action --description 'ARG How to resolve the conflict'
|
||||
complete -c bzr -l done --description 'Marks the conflict as resolved'
|
||||
complete -c bzr -l take-other --description 'Resolve the conflict taking the merged version into account'
|
||||
complete -c bzr -l take-this --description 'Resolve the conflict preserving the version in the working tree'
|
||||
complete -c bzr -l all --description 'Resolve all conflicts in this tree'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l forget-merges --description 'Remove pending merge marker, without changing any files'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l no-backup --description 'Do not save backups of reverted files'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l tree --description 'Show revno of working tree'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l body --description 'ARG Body for the email'
|
||||
complete -c bzr -l format --description 'ARG Use the specified output format'
|
||||
complete -c bzr -l from --description 'ARG, -f Branch to generate the submission from, rather than the one containing the working directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l mail-to --description 'ARG Mail the request to this address'
|
||||
complete -c bzr -l message --description 'ARG, -m Message string'
|
||||
complete -c bzr -l no-bundle --description 'Do not include a bundle in the merge directive'
|
||||
complete -c bzr -l no-patch --description 'Do not include a preview patch in the merge directive'
|
||||
complete -c bzr -l output --description 'ARG, -o Write merge directive to this file or directory; use - for stdout'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l remember --description 'Remember submit and public branch'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l strict --description 'Refuse to send if there are uncommitted changes in the working tree, --no-strict disables the check'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l allow-writes --description 'By default the server is a readonly server'
|
||||
complete -c bzr -l client-timeout --description 'ARG Override the default idle client timeout (5min)'
|
||||
complete -c bzr -l directory --description 'ARG, -d Serve contents of this directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l inet --description 'Serve on stdin/out for use from inetd or sshd'
|
||||
complete -c bzr -l port --description 'ARG Listen for connections on nominated port of the form [hostname:]portnumber'
|
||||
complete -c bzr -l protocol --description 'ARG Protocol to serve'
|
||||
complete -c bzr -l bzr --description 'The Bazaar smart server protocol over TCP'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l all --description 'Shelve all changes'
|
||||
complete -c bzr -l destroy --description 'Destroy removed changes instead of shelving them'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l list --description 'List shelved changes'
|
||||
complete -c bzr -l message --description 'ARG, -m Message string'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l writer --description 'ARG Method to use for writing diffs'
|
||||
complete -c bzr -l plain --description 'Plaintext diff output'
|
||||
complete -c bzr -l dry-run --description 'Don\'t actually sign anything, just print the revisions that would be signed'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l change --description 'ARG, -c Select changes introduced by the specified revision'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l no-classify --description 'Do not mark object type using indicator'
|
||||
complete -c bzr -l no-pending --description 'Don\'t show pending merges'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l short -s S --description 'Use short status indicators'
|
||||
complete -c bzr -l show-ids --description 'Show internal object ids'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l versioned -s V --description 'Only show versioned files'
|
||||
complete -c bzr -l create-branch -s b --description 'Create the target branch from this one before switching to it'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l force --description 'Switch even if local commits will be lost'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l delete --description 'Delete this tag rather than placing it'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch in which to place the tag'
|
||||
complete -c bzr -l force --description 'Replace existing tags'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l delete --description 'Oldname``'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch whose tags should be displayed'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l show-ids --description 'Show internal object ids'
|
||||
complete -c bzr -l sort --description 'ARG Sort tags by different criteria'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l long --description 'Produce long-format testament'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l strict --description 'Produce a strict-format testament'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l dry-run --description 'Don\'t actually make changes'
|
||||
complete -c bzr -l force --description 'Say yes to all questions'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l keep-tags --description 'Keep tags that point to removed revisions'
|
||||
complete -c bzr -l local --description 'Only remove the commits from the local branch when in a checkout'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l verbose --description 'Will print out what is being removed'
|
||||
complete -c bzr -l dry-run --description 'Will go through all the motions, but not actually remove anything'
|
||||
complete -c bzr -l action --description 'ARG The action to perform'
|
||||
complete -c bzr -l apply --description 'Apply changes and remove from the shelf'
|
||||
complete -c bzr -l delete-only --description 'Delete changes without applying them'
|
||||
complete -c bzr -l dry-run --description 'Show changes, but do not apply or remove them'
|
||||
complete -c bzr -l keep --description 'Apply changes but don\'t delete them'
|
||||
complete -c bzr -l preview --description 'Instead of unshelving the changes, show the diff that would result from unshelving'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l show-base --description 'Show base revision text in conflicts'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l clean --description 'Remove the backup'
|
||||
complete -c bzr -l dry-run --description 'Show what would be done, but don\'t actually do anything'
|
||||
complete -c bzr -l format --description 'ARG Upgrade to a specific format'
|
||||
complete -c bzr -l 2a --description 'Format for the bzr 2'
|
||||
complete -c bzr -l default --description 'Format for the bzr 2'
|
||||
complete -c bzr -l development-colo --description 'The 2a format with experimental support for colocated branches'
|
||||
complete -c bzr -l pack-0.92 --description 'Pack-based format used in 1'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l acceptable-keys --description 'ARG, -k Comma separated list of GPG key patterns which are acceptable for verification'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l short --description 'Print just the version number'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l all --description 'Include all possible information'
|
||||
complete -c bzr -l check-clean --description 'Check if tree is clean'
|
||||
complete -c bzr -l format --description 'ARG Select the output format'
|
||||
complete -c bzr -l custom --description 'Version info in Custom template-based format'
|
||||
complete -c bzr -l python --description 'Version info in Python format'
|
||||
complete -c bzr -l rio --description 'Version info in RIO (simple text) format (default)'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l include-file-revisions --description 'Include the last revision for each file'
|
||||
complete -c bzr -l include-history --description 'Include the revision-history'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l revision --description 'ARG, -r See "help revisionspec" for details'
|
||||
complete -c bzr -l template --description 'ARG Template for the output'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l template --description 'VERSION_INFO \"Project 1'
|
||||
complete -c bzr -l all --description 'Apply list or delete action to all views'
|
||||
complete -c bzr -l delete --description 'Delete the view'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l name --description 'ARG Name of the view to define, list or delete'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l switch --description 'ARG Name of the view to switch to'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
||||
complete -c bzr -l branch --description 'Set identity for the current branch instead of globally'
|
||||
complete -c bzr -l directory --description 'ARG, -d Branch to operate on, instead of working directory'
|
||||
complete -c bzr -l email --description 'Display email address only'
|
||||
complete -c bzr -l help -s h --description 'Show help message'
|
||||
complete -c bzr -l quiet -s q --description 'Only display errors and warnings'
|
||||
complete -c bzr -l usage --description 'Show usage message and options'
|
||||
complete -c bzr -l verbose -s v --description 'Display more information'
|
7
tests/history_sample_bash
Normal file
7
tests/history_sample_bash
Normal file
|
@ -0,0 +1,7 @@
|
|||
echo foo
|
||||
history --help
|
||||
#1339718290
|
||||
export HISTTIMEFORMAT='%F %T '
|
||||
#1339718298
|
||||
echo supsup
|
||||
#abcde
|
12
tests/history_sample_fish_1_x
Normal file
12
tests/history_sample_fish_1_x
Normal file
|
@ -0,0 +1,12 @@
|
|||
# 1339519901
|
||||
ls /
|
||||
# 1339519903
|
||||
cd foobar
|
||||
# 1339519906
|
||||
function yay\
|
||||
echo hi\
|
||||
end
|
||||
# 1339520882
|
||||
echo #abc
|
||||
# 1339520884
|
||||
#def
|
6
tests/history_sample_fish_2_0
Normal file
6
tests/history_sample_fish_2_0
Normal file
|
@ -0,0 +1,6 @@
|
|||
- cmd: echo alpha
|
||||
when: 1339717374
|
||||
- cmd: function foo\necho bar\nend
|
||||
when: 1339717377
|
||||
- cmd: echo this has\\\nbackslashes
|
||||
when: 1339717385
|
Loading…
Reference in a new issue