input_mapping_execute, when passed false for allow_commands, will return
R_NULL. However currently it does this unconditionally, even if we don't
have any commands. This defeats our read-ahead optimization, so we
always read and process one byte at a time. This caused pasting to be
much slower.
Fixes#2215
This change eliminates global variables like stdout_buffer. Instead we wrap up
the IO information into a new struct io_streams_t, and thread that through
every builtin. This makes the intent clearer, gives us a place to hang new IO
data, and eliminates the ugly global state management like builtin_push_io.
Previously, the process's inherited $TERM value would be used.
This prevented users from being able to set $TERM in their config.fish files.
To make matters worse, the error message would print the computed $TERM value,
giving the mistaken impression that it was being used.
Signed-off-by: David Adam <zanchey@ucc.gu.uwa.edu.au>
This change moves source files into a src/ directory,
and puts object files into an obj/ directory. The Makefile
and xcode project are updated accordingly.
Fixes#1866