removed placeholder text in prompt
cd no longer panics if the given directory doesn't exist (wtf?)
This commit is contained in:
@@ -450,7 +450,13 @@ impl Dispatcher {
|
||||
let curr_job_mut = self.job_stack.curr_job_mut().unwrap();
|
||||
let io_stack_mut = &mut self.io_stack;
|
||||
|
||||
if cmd_raw.as_str() == "builtin" || cmd_raw.as_str() == "command" {
|
||||
if cmd_raw.as_str() == "builtin" {
|
||||
*argv = argv.iter_mut()
|
||||
.skip(1)
|
||||
.map(|tk| tk.clone())
|
||||
.collect::<Vec<Tk>>();
|
||||
return self.exec_builtin(cmd)
|
||||
} else if cmd_raw.as_str() == "command" {
|
||||
*argv = argv.iter_mut()
|
||||
.skip(1)
|
||||
.map(|tk| tk.clone())
|
||||
|
||||
@@ -322,6 +322,7 @@ impl LexStream {
|
||||
let slice = self.slice_from_cursor().unwrap().to_string();
|
||||
let mut pos = self.cursor;
|
||||
let mut chars = slice.chars().peekable();
|
||||
let mut can_be_subshell = chars.peek() == Some(&'(');
|
||||
|
||||
if self.flags.contains(LexFlags::IN_CASE) {
|
||||
if let Some(count) = case_pat_lookahead(chars.clone()) {
|
||||
@@ -501,7 +502,7 @@ impl LexStream {
|
||||
self.cursor = pos;
|
||||
return Ok(cmdsub_tk)
|
||||
}
|
||||
'(' if self.next_is_cmd() => {
|
||||
'(' if self.next_is_cmd() && can_be_subshell => {
|
||||
pos += 1;
|
||||
let mut paren_count = 1;
|
||||
let paren_pos = pos;
|
||||
|
||||
@@ -691,17 +691,19 @@ impl ParseStream {
|
||||
let mut body: Vec<Node> = vec![];
|
||||
let mut redirs: Vec<Redir> = vec![];
|
||||
|
||||
|
||||
if *self.next_tk_class() != TkRule::BraceGrpStart {
|
||||
return Ok(None)
|
||||
}
|
||||
node_tks.push(self.next_tk().unwrap());
|
||||
|
||||
|
||||
loop {
|
||||
if *self.next_tk_class() == TkRule::BraceGrpEnd {
|
||||
node_tks.push(self.next_tk().unwrap());
|
||||
break
|
||||
}
|
||||
if let Some(node) = self.parse_block(true)? {
|
||||
if let Some(node) = self.parse_cmd_list()? {
|
||||
node_tks.extend(node.tokens.clone());
|
||||
body.push(node);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user