fish-shell / fish-shell Goto Github PK
View Code? Open in Web Editor NEWThe user-friendly command line shell.
Home Page: https://fishshell.com
License: Other
The user-friendly command line shell.
Home Page: https://fishshell.com
License: Other
Call graph:
2903 Thread_2498 DispatchQueue_1: com.apple.main-thread (serial)
2903 start (in libdyld.dylib) + 1 [0x7fff8df5d7e1]
2903 main (in fish) + 1299 [0x104812eb3] fish.cpp:324
2903 reader_read(int, io_data_t_) (in fish) + 318 [0x1047e774e] reader.cpp:2570
2903 reader_readline() (in fish) + 1879 [0x1047e5287] reader.cpp:2840
2903 complete(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::vector<completion_t, std::allocator<completion_t> >&, complete_type_t, std::vector<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::allocator<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >) (in fish) + 1914 [0x1047bc7ca] complete.cpp:1880
2903 completer_t::complete_param(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, bool) (in fish) + 2271 [0x1047bb803] complete.cpp:1376
2903 completer_t::complete_from_args(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, int) (in fish) + 135 [0x1047b8547] complete.cpp:1139
2903 parser_t::eval_args(wchar_t const, std::vector<completion_t, std::allocator<completion_t> >&) (in fish) + 393 [0x1047d9a2b] parser.cpp:802
2903 expand_string(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::vector<completion_t, std::allocator<completion_t> >&, int) (in fish) + 674 [0x1047ccba2] expand.cpp:1451
2903 expand_cmdsubst(parser_t&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::vector<completion_t, std::allocator<completion_t> >&) (in fish) + 444 [0x1047c8cec] expand.cpp:1178
2903 exec_subshell_internal(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::vector<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::allocator<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >) (in fish) + 189 [0x1047c54ed] exec.cpp:1401
2903 parser_t::eval(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, io_data_t, block_type_t) (in fish) + 496 [0x1047de67c] parser.cpp:2506
2903 parser_t::eval_job(tokenizer_) (in fish) + 1270 [0x1047de262] parser.cpp:2333
2903 exec(parser_t&, job_t_) (in fish) + 2480 [0x1047c7190] exec.cpp:830
2903 internal_exec_helper(parser_t&, wchar_t const_, block_type_t, io_data_t_) (in fish) + 142 [0x1047c5dae]
2903 parser_t::eval(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, io_data_t_, block_type_t) (in fish) + 496 [0x1047de67c] parser.cpp:2506
2903 parser_t::eval_job(tokenizer_) (in fish) + 1270 [0x1047de262] parser.cpp:2333
2903 exec(parser_t&, job_t_) (in fish) + 2480 [0x1047c7190] exec.cpp:830
2903 internal_exec_helper(parser_t&, wchar_t const_, block_type_t, io_data_t_) (in fish) + 142 [0x1047c5dae]
2903 parser_t::eval(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, io_data_t_, block_type_t) (in fish) + 496 [0x1047de67c] parser.cpp:2506
2903 parser_t::eval_job(tokenizer_) (in fish) + 738 [0x1047de04e] parser.cpp:2300
2903 parser_t::parse_job(process_t_, job_t_, tokenizer_) (in fish) + 4727 [0x1047dcdbb] parser.cpp:2159
2903 parser_t::parse_job_argument_list(process_t_, job_t_, tokenizer_, std::vector<completion_t, std::allocator<completion_t> >&) (in fish) + 1200 [0x1047dd5bc] parser.cpp:1398
2903 expand_string(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::vector<completion_t, std::allocator<completion_t> >&, int) (in fish) + 674 [0x1047ccba2] expand.cpp:1451
2903 expand_cmdsubst(parser_t&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::vector<completion_t, std::allocator<completion_t> >&) (in fish) + 444 [0x1047c8cec] expand.cpp:1178
2903 exec_subshell_internal(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::vector<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::allocator<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >) (in fish) + 189 [0x1047c54ed] exec.cpp:1401
2903 parser_t::eval(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, io_data_t, block_type_t) (in fish) + 496 [0x1047de67c] parser.cpp:2506
2903 parser_t::eval_job(tokenizer_) (in fish) + 1235 [0x1047de23f] parser.cpp:2333
2903 exec(parser_t&, job_t_) (in fish) + 3194 [0x1047c745a] exec.cpp:981
2903 builtin_run(parser_t&, wchar_t const* const_, io_data_t_) (in fish) + 542 [0x1047b4f7e] builtin.cpp:3708
2903 builtin_complete(parser_t&, wchar_t**) (in fish) + 2024 [0x1047ac9e8] builtin_complete.cpp:548
2903 complete(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::vector<completion_t, std::allocator<completion_t> >&, complete_type_t, std::vector<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::allocator<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >) (in fish) + 1914 [0x1047bc7ca] complete.cpp:1880
2903 completer_t::complete_param(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, bool) (in fish) + 248 [0x1047bb01c] complete.cpp:1237
2903 autoload_t::load(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, bool) (in fish) + 462 [0x10480d112] autoload.cpp:107
2903 autoload_t::locate_file_and_maybe_load_it(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, bool, bool, std::vector<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::allocator<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > const&) (in fish) + 1709 [0x10480cccf] autoload.cpp:327
2903 exec_subshell_internal(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::vector<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::allocator<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >) (in fish) + 189 [0x1047c54ed] exec.cpp:1401
2903 parser_t::eval(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, io_data_t_, block_type_t) (in fish) + 496 [0x1047de67c] parser.cpp:2506
2903 parser_t::eval_job(tokenizer_) (in fish) + 1235 [0x1047de23f] parser.cpp:2333
2903 exec(parser_t&, job_t_) (in fish) + 3194 [0x1047c745a] exec.cpp:981
2903 builtin_run(parser_t&, wchar_t const_ const_, io_data_t_) (in fish) + 542 [0x1047b4f7e] builtin.cpp:3708
2903 builtin_complete(parser_t&, wchar_t**) (in fish) + 2726 [0x1047acca6] builtin_complete.cpp:129
2903 builtin_complete_add2(wchar_t const_, int, wchar_t const_, std::vector<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::allocator<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > const&, std::vector<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::allocator<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > const&, int, wchar_t const_, wchar_t const_, wchar_t const_, int) (in fish) + 122 [0x1047b46da]
2903 complete_add(wchar_t const_, bool, wchar_t, wchar_t const_, int, int, wchar_t const_, wchar_t const_, wchar_t const_, int) (in fish) + 113 [0x1047ba891] complete.cpp:436
2903 scoped_lock::lock() (in fish) + 72 [0x1048033f4] common.cpp:1988
2903 pthread_mutex_lock (in libsystem_c.dylib) + 536 [0x7fff94bfe9c9]
2903 __psynch_mutexwait (in libsystem_kernel.dylib) + 10 [0x7fff90bb2136]
Axel reports:
"On my machine, most key bindings seem to be broken. ^K does not kill, ^W
does remove text, but it seems not to be added to the actual kill ring. No
searching with up-arrow and down-arrow. Left arrow and right arrow do not
move around in the CD history when used on an empty command line. The bind
builtin implies that the bindings are still there, and the code to handle
these these commands seem to still be there in input*.cpp, so I guess
something is broken? (built from a tarball on Ubuntu 12.04)"
open -
--a\ (Specifies the application to use for opening ... [See Man Page])
--args (All remaining arguments are passed to the ope... [See Man Page])
--b\ (Specifies the bundle identifier for the appli... [See Man Page])
-F (Opens the application "fresh," that is, witho... [See Man Page])
-R (Reveals the file(s) in the Finder instead of ... [See Man Page])
I think it worth supporting fish_user_keybindings function, which should be loaded right after fish_default_keybindings to support user key bindings.
OS: Arch Linux 64bit
python --version
Python 3.2.3
Running fish_update_completions leads to a syntax error
fish_update_completions
File "/usr/local/share/fish/tools/create_manpage_completions.py", line 633
except IOError as (err, strerror):
^
SyntaxError: invalid syntax
This bug tracks reinstating implicit cd in some form. Implicit cd is where you can switch to a directory by just typing its path, without explicitly typing cd. It's as if you execute the directory.
In decreasing order of implicitness:
There's also potential to make this configurable in some way.
Feel free to pile on with your desires / perspectives.
This works:
$ function etu
echo "mooooo"
end
$ etu
mooooo
$
This does not work:
$ funced etu
etu> function etu
echo "mooooo"
end
$ etu
fish: Unknown command "etu"
$
The function was never made available when using funced
.
This also makes that you can't use funcsave
for some function edited with funced
-- because the functions doesn't exist.
They shouldn't show up in this case.
cd command should auto suggest name of directory to be entered from arguments passed to it.
Right now cd command only shows completions from history.
Let's migrate to posix_spawn.
The internalize scripts build phase internalizes far too much, including fish_prompt. We should measure to see what benefit, if any, is being derived from it, and restrict it to only those functions that really ought not to be changed (if any).
Whenever the ~ character is typed:
niemeyer@gopher ~> fish
niemeyer@gopher ~> ~fish: Job 1, 'fish' terminated by signal SIGSEGV (Address boundary error)
I've found a strange place in file output.cpp line 276:
if( ! c2.is_normal() &&
! c2.is_ignore())
{
/*
Background is set
*/
bg_set=1;
c = (c2==rgb_color_t::white())?rgb_color_t::black():rgb_color_t::white();
}
It means that it resets the foreground if background is set. Is there any particular reason of doing it? Or it's just a sort of typo?
As we are multithreaded, sigprocmask should instead be pthread_sigmask
pants writes:
There doesn't seem to be one of these available in the archives, and
it's the thing I've missed most since moving from zsh, so I figured I'd
really get fishy and write it. Appending the following to your scp.fish
(or making an alternate scp.fish in .config/fish/completions) will allow
you to preform tab completion of remote paths for scp! Identical
completions could also provide identical functionality in rsync. It
would be nice to integrate fish's built-in description methods, but I
can't think of a way to do that without ensuring fish is installed on
the remote system (not a general fix) or mounting an sshfs (gross).
Code:
complete -c scp -d "Remote Path" -n "echo (commandline -ct)|sgrep -o '.*:';and true" -a "
(
#Prepend any user@host information supplied before the remote completion
echo (commandline -ct)|sgrep -o '.:'
)(
#Get the list of remote files from the specified ssh server
ssh -o "BatchMode yes" (echo (commandline -ct)|sed -ne 's/(.):./\1/p') ls\ -d\ (echo (commandline -ct)|sed -ne 's/.://p')*
)
"
Enjoy!
Cheers,
pants.
on OSX, and ubuntu 12.04, with the beta release, I ran:
$ while true
echo hi
sleep 2
end
After a few iterations, I pressed ctrl+c to interrupt the loop, then pressed ctrl+c repeatedly, even holding it down
The child process was reliably terminated, but never the loop
Eventually, I had to kill the fish process from another terminal
In Bash on Linux:
`while true; do sleep 1; echo hi; done``
handles keyboard interrupts as expected
Functions in ~/.config/fish/functions/ does not work if there is a command called the same thing, this breaks my custom fish_prompt for example
set fish_color_autosuggestion 000000 --background FFFFFF
This should show a white background color with autosuggestions, but does not.
signal.cpp's default_handler gets an event_t by value, which looks highly suspicious, since an event_t contains non-PODs like wcstrings.
If I try to run echo $?
, I get the error message
fish: The '$' character begins a variable name. The character '@', which
directly followed a '$', is not allowed as a part of a variable name, and
variable names may not be zero characters long. To learn more about variable
expansion in fish, type 'help expand-variable'.
Same thing if I use $*
. That garbage character is U+F400 for ?
and U+F401 for *
. Other characters I've tried, including ,./@!
, print a correct error message.
I just found out fishfish supports ⌥→
and ⌥←
for jumping a word at a time (which is totally awesome!), would it make sense to support ⌘→
and ⌘←
to jump to the beginning and end of the current line? I know you can use ^a
and ^e
but I use ⌘→
and ⌘←
all the time and it feels a lot better to me.
In fish_config_interactive, we use 'which' to detect command-not-found.
The problem is, 'which' is not so portable, and in particular its exit status isn't always significant.
This could be changed to be 'command -v' to safer.
Also 'command' should support the -v flag.
A secondary problem is that the -s flag looks to be BSD specific.
Run this:
foo\
bar
Then this:
history --delete --prefix foo
You get two items foo\ and bar; there should only be one.
Run this: false ; and sdlkfjsdklf
This shows an error: Unknown command 'sdlkfjsdklf'
The short-circuit could suppress this error message, and perhaps even discovering that the command does not exist.
Snow Leopard's terminal is misidentified as supporting term256. It doesn't.
From http://comments.gmane.org/gmane.comp.shells.fish.user/3081:
"Consider this foo.fish file:
complete --command foo --no-files --short-option a --long-option 'an_example' --description 'example A'
complete --command foo --no-files --arguments '(sleep 5s)' --description 'slept'
Type in the shell
foo -
and press tab. 5 seconds pass, before we get the result. If I delete the second line from foo.fish, the result is instantanious. AFAIK, the --arguments should not be executed when fish is completing options for a command."
It would be nice if completions were not blocking. Perhaps they could be executed in a cancelable subshell.
Now that we have a history built-in, we should support deleting history from the web configuration interface.
make[2]: Entering directory `/home/pas/build/fishfish/xsel-1.2.0'
if gcc -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -fno-strict-aliasing -Wall -Werror -g -std=gnu99 -Wdeclaration-after-statement -Wno-unused -MT xsel.o -MD -MP -MF ".deps/xsel.Tpo" -c -o xsel.o xsel.c; \
then mv -f ".deps/xsel.Tpo" ".deps/xsel.Po"; else rm -f ".deps/xsel.Tpo"; exit 1; fi
xsel.c:32:28: fatal error: X11/StringDefs.h: No such file or directory
compilation terminated.
make[2]: *** [xsel.o] Error 1
make[2]: Leaving directory `/home/pas/build/fishfish/xsel-1.2.0'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/pas/build/fishfish/xsel-1.2.0'
history --help
troff: fatal error: can't open `/usr/local/share/fish/man/history.1': No such file or directory
That's not good.
This issue tracks considering integrating with cdargs.
Pierre Baillet writes:
"Hello,
Fish looks nice and sweet. I hope it will succeed in changing the shell landscape for ever :).
I've just written a function file for cdargs the directory alias manager, aliases for cv and ca and supports completion for the cv command.
Available here:
https://gist.github.com/2881699
Cheers,
"
Here is the code:
function ca
command cdargs --add=":$argv:$PWD"
end
function cv
cdargs "$argv"; and cd (cat "$HOME/.cdargsresult")
end
function _cdargs_completion
cat ~/.cdargs | cut -d' ' -f1 | xargs echo
end
The default prompt in fish is quite expensive (something like 10 fork calls). Let's make one that's still interesting but cheaper.
I have my own custom defined ~/.config/fish/functions/fish_prompt.fish
together with plenty of other functions. But my fish does not seem to care about the config in my homedirectory.
If I do funced fish_prompt
I get the defaultprompt to edit, and since the bug #16, I can't use funcsave
to save the edited prompt.
But it still does not matter if I take nano(or any editor) to edit the functionfile if theres a function existing on system-level in fish.
On DragonFly BSD, gnu make is 'gmake'. That's not the bug; I'm explaining why I typed what I did.
This error may apply to other non-OS X BSD systems too.
./internalize_scripts.py
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o function.o function.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o builtin.o builtin.cpp
In file included from builtin.cpp:385:
builtin_set.cpp: In function 'void erase_values(wcstring_list_t&, const std::vector<long int, std::allocator<long int> >&)':
builtin_set.cpp:288: warning: comparison between signed and unsigned integer expressions
builtin.cpp: In function 'int builtin_contains(parser_t&, wchar_t**)':
builtin.cpp:2736: warning: comparison between signed and unsigned integer expressions
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o complete.o complete.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o env.o env.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o exec.o exec.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o expand.o expand.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o highlight.o highlight.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o history.o history.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o kill.o kill.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o parser.o parser.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o proc.o proc.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o reader.o reader.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o sanity.o sanity.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o tokenizer.o tokenizer.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o wildcard.o wildcard.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o wgetopt.o wgetopt.cpp
wgetopt.cpp:184:1: warning: "_" redefined
In file included from wutil.h:18,
from wgetopt.cpp:94:
common.h:171:1: warning: this is the location of the previous definition
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o wutil.o wutil.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o input.o input.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o output.o output.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o intern.o intern.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o env_universal.o env_universal.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o env_universal_common.o env_universal_common.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o input_common.o input_common.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o event.o event.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o signal.o signal.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o io.o io.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o parse_util.o parse_util.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o common.o common.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o screen.o screen.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o path.o path.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o autoload.o autoload.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o parser_keywords.o parser_keywords.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o iothread.o iothread.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o builtin_scripts.o builtin_scripts.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o color.o color.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o postfork.o postfork.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o builtin_test.o builtin_test.cpp
g++ -I/usr/pkg/include/ -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fno-optimize-sibling-calls -Wall -DLOCALEDIR=\"/usr/local/share/locale\" -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share\" -DSYSCONFDIR=L\"/usr/local/etc\" -c -o fish.o fish.cpp
g++ function.o builtin.o complete.o env.o exec.o expand.o highlight.o history.o kill.o parser.o proc.o reader.o sanity.o tokenizer.o wildcard.o wgetopt.o wutil.o input.o output.o intern.o env_universal.o env_universal_common.o input_common.o event.o signal.o io.o parse_util.o common.o screen.o path.o autoload.o parser_keywords.o iothread.o builtin_scripts.o color.o postfork.o builtin_test.o fish.o -L/usr/pkg/lib/ -R/usr/pkg/lib/ -lintl -lm -lncurses -lpthread -rdynamic -o fish
builtin.o: In function`builtin_source(parser_t&, wchar_t*_)':
builtin.cpp:(.text+0x9de4): undefined reference to `wrealpath(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, wchar_t_)'
fish.o: In function `main':
fish.cpp:(.text+0x972): undefined reference to`wrealpath(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, wchar_t_)'
gmake: *_\* [fish] Error 1
Currently the hotkey to accept autosuggestions is right arrow or control-F. This ought to be configurable.
Running OS X Lion 10.7.4, process expansions leads to the following warning message:
Warning: principal_parser called off of main thread. Break on debug_thread_error to debug.
This message will show up again with each additional keystroke until the the % character is deleted.
This is being run in the native Terminal.app with no special plugins or SIMBL tweaks or anything like that, and I have reproduced this bug on both a 2011 iMac and a 2011 MacBook Pro, both running 10.7.4
fish_title applies correctly to the window title, but not the tab title. This is due to this code in reader.cpp:
writestr( L"\x1b]2;" );
2: Window title
1: Tab title
0: Both window and tab title
I think removing the 2 is equivalent to setting it to 0, so that's probably what we ought to do.
This behaviour have been in fish too, and annoyed me from time to time, but not very often.
$ cd /
$ cd e<tab>
// plenty of errors (fish didn't get this output)
# This will appear, but "etc/" will be red as in "directory does not exist":
$ cd etc/
# If you run pwd instead of the cd you got, you will notice that you're in your home directory
$ pwd
/home/etu
I can also note that this only affect cd
as far as I noticed.
Imagine a server that stores color configurations.
This would be integrated into the web config page.
Currently fish's python scripts fail on systems where 'python' invokes Python3, like Arch Linux.
On these systems, we can get by with '#!/usr/bin/env python2' but that fails on OS X (which has no python2 symlink).
This bug tracks finding a resolution.
After picking a suggested path, the whitespaces and special chars should be escaped
fish_update_completions
man: unrecognized option '--path'
Tryman --help' or
man --usage' for more information.
No paths specified
man --version
man 2.5.7
This is on Ubuntu 10.04, 64 bits, with fishfish built from source.
Method wgetopt() in wgetopt.cpp fails with segment violation. Here is a small snippet of code which may help in reproducing bug :
....
static const wchar_t short_options[] = L"cdanrwps";
int opt = 0;
while((opt = wgetopt( argc, argv, short_options )) != -1)
{
....
When typing "ssh " followed with a tab, it autocompletes to listing the current directory instead of available hosts in my ~/.ssh/known_hosts config.
when executing "__fish_print_hostnames" it does show hosts but they do not work in the autocompletion.
If you type a command that's not valid at all, maybe we can avoid autosuggesting it. This could be handled by a "special" handler in highlight.cpp
when typing a % it will print:
Warning: principal_parser called off of main thread. Break on debug_thread_error to debug.
alias foo="cd ~/"
batman@batman ~/D/S/rails> alias foo="cd ~/"
fish: Could not expand string '$tmp[2]'
/usr/local/share/fish/functions/alias.fish (line 19): set body $tmp[2]
The sed expression looks busted.
fish needs a history built-in, for things like deleting unwanted history items. bash and zsh both have this.
If you mistype a command, we'll happily suggest it again, even if the command failed to run. We ought to feed command success or failure back into history so it won't autosuggest that. But we need a way to distinguish between commands that could not run and commands that ran successfully, yet indicated failure to communicate some other information (such as grep's "not found").
If I try to run echo \uF400
this is treated identically to echo ?
. Similarly \uF401
is treated as *
. \uF402
is treated as some other character but I have no idea what; trying echo \uF402
hangs until I type ^C
, at which point it says fish: Could not expand string '\uF402'
.
ls should know about directories, just like cd
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.