# Compiler - Whitespaces are checked twice, in the source class and by lexing. - Catch exceptions thrown by the argument parser and print them normally. - Parser should be able to collect errors. - Provide position information on parse tree nodes. - Move constants to the symbol table, so we can check at parse time for duplicates. - Allow defining variables. - Don't pass raw pointers to the visitor methods. - Make error abstract and derive unexpected_token in the lex module from it. - Wrap the tokens in a struct with methods for incrementing and lookups. - While loop. - If condition. - Grouping multiple statements with begin and end (compound_statement). # Shell - Persist the history. - Replace hard coded ANSI codes with constants or functions. ## Completion - Configure fzf to show only the current directory files - Support multiple selections for insertion in fzf. - Don't hardcode fzf binary path. - Send the word under the cursor to fzf as initial input. - Home directory expansion. - Show files in the PATH if starting at the beginning of the prompt ## Appearance - Add a bar with additional information under the prompt (edit_bar), like the hostname. - Show current time in the prompt.