Better fix to make cd completions work again

This commit is contained in:
ridiculousfish
2012-05-05 14:33:24 -07:00
parent 3be07cc645
commit ac3dce38f0
2 changed files with 7 additions and 6 deletions

View File

@@ -1159,18 +1159,19 @@ void completer_t::complete_from_args( const wcstring &str,
const wcstring &desc, const wcstring &desc,
complete_flags_t flags ) complete_flags_t flags )
{ {
/* If type is COMPLETE_AUTOSUGGEST, it means we're on a background thread, so don't call proc_push_interactive */
std::vector<completion_t> possible_comp; std::vector<completion_t> possible_comp;
parser_t parser(PARSER_TYPE_COMPLETIONS_ONLY); bool is_autosuggest = (this->type == COMPLETE_AUTOSUGGEST);
parser_t parser(is_autosuggest ? PARSER_TYPE_COMPLETIONS_ONLY : PARSER_TYPE_GENERAL);
if (this->type != COMPLETE_AUTOSUGGEST)
/* If type is COMPLETE_AUTOSUGGEST, it means we're on a background thread, so don't call proc_push_interactive */
if (is_autosuggest)
proc_push_interactive(0); proc_push_interactive(0);
parser.eval_args( args.c_str(), possible_comp ); parser.eval_args( args.c_str(), possible_comp );
if (this->type != COMPLETE_AUTOSUGGEST) if (is_autosuggest)
proc_pop_interactive(); proc_pop_interactive();
complete_strings( this->completions, str.c_str(), desc.c_str(), 0, possible_comp, flags ); complete_strings( this->completions, str.c_str(), desc.c_str(), 0, possible_comp, flags );

View File

@@ -767,7 +767,7 @@ int parser_t::eval_args( const wchar_t *line, std::vector<completion_t> &args )
expand_flags_t eflags = 0; expand_flags_t eflags = 0;
if (! show_errors) if (! show_errors)
eflags |= EXPAND_NO_DESCRIPTIONS; eflags |= EXPAND_NO_DESCRIPTIONS;
if (this->parser_type != PARSER_TYPE_GENERAL && this->parser_type != PARSER_TYPE_COMPLETIONS_ONLY) if (this->parser_type != PARSER_TYPE_GENERAL)
eflags |= EXPAND_SKIP_CMDSUBST; eflags |= EXPAND_SKIP_CMDSUBST;
/* /*