Commit graph

566 commits

Author SHA1 Message Date
Konrad Borowski
26051ea198 Add Meta+H as keybinding for man page.
Apparently, in zsh, Meta+H can be used to display the manpage for
the current command. This commit adds this zsh feature to fish shell.

The F1 keybinding is left, although it's now secondary according to
fish help, as some terminal emulators don't let the user press F1 key.
2014-09-28 11:12:25 +02:00
David Adam
3ac28f2b01 Revert "math.fish: support floating-point maths"
This reverts commit 7cad0069e8.

https://github.com/fish-shell/fish-shell/issues/1723
http://superuser.com/questions/31445/gnu-bc-modulo-with-scale-other-than-0

This is why we can't have nice things.
2014-09-27 23:27:05 +08:00
David Adam
7cad0069e8 math.fish: support floating-point maths
Closes #1643.

Thanks to Mickaël RAYBAUD-ROIG (https://github.com/m-r-r) for the idea
of printf.
2014-09-27 18:38:44 +08:00
lledey
73158d6255 Fix emacs completion on OS X
Avoid calling seq with 0 as argument since its behaviour is wrong on OS X.
2014-09-24 13:05:22 +01:00
Kevin Ballard
e1f623f548 Only print fish_greeting for interactive shells
Shell scripts that use `read` should not trigger fish_greeting.

Fixes #1401.
2014-09-21 20:35:33 -07:00
Kevin Ballard
0a32d96b27 Reset fish_bind_mode when changing fish_key_bindings
Also avoid resetting bindings if fish_key_bindings is "modified" without
actually changing.

Fixes #1638.
2014-09-18 15:46:17 -07:00
Michael Stillwell
133ba6e01b Ignore "host", "hostname", and hostname wildcards
See the PATTERNS section of ssh_config(5) for wildcards supported by ssh.
2014-09-16 17:20:59 +02:00
Kevin Ballard
f22864b813 Ensure type still works if $IFS is unset 2014-09-08 23:35:29 -07:00
Kevin Ballard
15cf06438e Suppress PATH errors in sudo tab-completion
Setting a non-existant path component to PATH logs an error to stderr.
This is not appropriate for non-interactive temporary modifications,
like the one done by the `sudo` completion helper function.
2014-09-04 13:22:06 -07:00
Konrad Borowski
1d0279eac5 Fix F1 binding to work with multiple tokens. 2014-08-30 11:18:56 +02:00
Nikolai Aleksandrovich Pavlov
cb29350954 Fix fish_vi_mode.fish 2014-08-29 13:15:13 -07:00
Kevin Ballard
61ce9db4ba Make the alias built-in function work better
The new --wraps functionality was breaking aliases of the form
`alias foo='bar baz'`. That is, aliases where the body is multiple
words. Extract the first word of the body and use that instead.

Use better errors for aliases with no name or no body.
2014-08-22 11:40:59 -07:00
ridiculousfish
033373f078 Merge branch 'make_type_better' of github.com:kballard/fish-shell into kballard-make_type_better 2014-08-21 21:36:39 -07:00
ridiculousfish
06400b83b1 Support for command wrapping ("aliases")
Add the --wraps option to 'complete' and 'function'. This allows a
command to (recursively) inherit the completions of a wrapped command.
Fixes #393.

When evaluating a completion, we inspect the entire "wrap chain" for a
command, i.e. we follow the sequence of wrapping until we either hit a
loop (which we silently ignore) or the end of the chain. We then
evaluate completions as if the wrapping command were substituted with
the wrapped command. Currently this only works for commands, i.e.
'complete --command gco --wraps git\ checkout' won't work (that would
seem to encroaching on abbreviations anyways). It might be useful to
show an error message for that case.

The commandline builtin reflects the commandline with the wrapped
command substituted in, so e.g. git completions (which inspect the
command line) will just work. This sort of command line munging is
also performed by 'complete -C' so it's not totally without precedent.

'alias will also now mark its generated function as wrapping the
'target.
2014-08-15 18:14:36 -07:00
ridiculousfish
3f526698ab Make __fish_print_users work on OS X via dscl 2014-08-12 14:42:49 -07:00
Konrad Borowski
6c80a3461c
Add support for toor account.
Currently fish doesn't recognize toor as special. However, it's likely
that on BSD systems, fish shell will be used on toor, not on root (toor
is an intentionally existing account to use more advanced shell on, like
shell).
2014-07-30 11:55:47 +02:00
David Xia
6d18bf5cd4 Fix umask function regex
Some grep implementations complain of empty subexpression

fixes #1313
2014-07-29 01:43:18 -04:00
Kevin Ballard
16e50c258a type: Restore combined flags behavior
Fix the parsing of `type` flags to handle combined short flags as
appropriate, e.g. `type -qf ls`.
2014-07-14 11:27:11 -07:00
Kevin Ballard
72e8489d50 command: Rename -p/--path flag to -s/--search 2014-07-13 19:11:29 -07:00
Kevin Ballard
29b3b6b31e type: Stop claiming grep is a function
Use `functions -q` instead of searching the `functiosn -na` list for the
provided word. This may result in an automatically-loaded function being
sourced, but that happens anyway with the default output.

This change means the results of `test -q foo` can be relied upon to
indicate whether `foo` can actually be invoked. Previosly, if `foo` was
the name of an automatically-loaded function file but did not actually
define a function `foo`, and there was no execuable `foo`, then `type -q
foo` would lie and say `foo` can be invoked when it can't.
2014-07-13 19:11:29 -07:00
Kevin Ballard
533496e43a Adopt the new type -q flag in the other functions 2014-07-13 19:11:29 -07:00
Kevin Ballard
6f7a7459c1 test: Add a new --quiet flag to suppress output
The --quiet flag is useful when only the exit status matters.

Fix the documentation for the -t flag to no longer claim that `type` can
print "keyword", as it never does that.

Stop printing a blank line for functions/builtins when the -p flag has
been passed. It's just not useful.
2014-07-13 19:11:29 -07:00
Kevin Ballard
6b062b07b4 type: Separate the notion of multi and paths
Track whether -a and -f have been supplied separately. That way both
`type -a -f command` and `type -f -a command` behaves correctly, as does
`type -a -f foo` where there are multiple executables named `foo` in the
$PATH.
2014-07-13 19:11:29 -07:00
Kevin Ballard
bfd3a47380 Fix type function to work better
Stop using getopt to parse flags. It's far more expensive than
necessary, and results in long flags not being parsed on OS X. This also
allows args starting with - after the options list to be properly
interpreted as a value to test.

Print the error message to stderr as is appropriate.

Use the new `command -p` functionality when the -a flag has not been
provided (`command` does not have any equivalent to the -a flag),
instead of using `which`. This is faster and also avoids any possible
disagreement between `which` and what fish thinks is valid.

Stop testing every path to see if it's executable, that test has already
been done by `which` or `command -p`.

The end result is `type -P ls` is roughly 250% faster, according to
profiling, on my OS X machine.
2014-07-13 19:11:29 -07:00
Sascha
ed5e585684 Also add forward/backward movement in insert mode 2014-06-27 22:55:27 +08:00
Sascha
32948b8dc6 Provide more useful insert mode mappings 2014-06-27 22:55:20 +08:00
Cameron Norman
ad5ad3d1ad Fix bug for systemd being installed but not PID 1 2014-06-20 11:08:35 +08:00
Konrad Borowski
d97e31b4ab git prompt shouldn't export variables. 2014-06-01 09:39:28 +02:00
David Adam
3225d7e169 avoid symlink attacks in __fish_print_packages and spawning fishd
* use $XDG_CACHE_HOME for __fish_print_packages completion caches
 * when starting fishd, redirect fishd output to /dev/null, not a
   predictable path

Fix for CVE-2014-3219.

Closes #1440.
2014-05-12 09:30:05 +08:00
Josh Kuhn
cbef88a593 Fix python completion to work for pypy
Pypy outputs 2 lines with the -V option, as well as adding a whole lot of stuff that confuses the very general sed regex that was used before.
2014-05-03 15:06:57 -07:00
SanskritFritz
b13179d4f4 Functions instead of static variables for conditions. 2014-05-03 12:30:41 -07:00
David Adam
55bc4168bf use mktemp(1) to generate temporary file names
Fix for CVE-2014-2906.

Closes a race condition in funced which would allow execution of
arbitrary code; closes a race condition in psub which would allow
alternation of the data stream.

Note that `psub -f` does not work (#1040); a fix should be committed
separately for ease of maintenance.

Closes #1437
2014-04-28 10:42:00 +08:00
Maxim Gonchar
2872a98b2b Set fish_vi_key_bindings to start in insert mode by default
Add optional argument for fish_vi_key_bindings to set desired initial
mode:
> fish_vi_key_bindings default
2014-04-19 14:48:15 -07:00
Steven Allen
17ab7bde44 Bind 0 to beginning-of-line in vi mode. 2014-04-06 12:49:52 -07:00
Steven Allen
fcc363333c Move cursor back on insert mode exit.
Make this consistent with vi.
2014-04-06 12:46:14 -07:00
Kevin Ballard
fe3b439e31 Fix non-verbose, non-informative __fish_git_prompt
At some point the non-verbose, non-informative variant of the prompt
(e.g. the variant that looks like the bash prompt) was modified to try
and show the behind/ahead counts the same way the informative prompt
does. Besides being wrong, it also didn't work because behind/ahead
weren't defined.
2014-03-31 09:59:41 -07:00
ridiculousfish
28fd1a4c5d Merge branch 'master' of github.com:fish-shell/fish-shell 2014-03-30 21:58:32 -07:00
ridiculousfish
d4fafeb6d6 Merge branch 'master' into 1218_rebase
Conflicts:
	builtin.cpp
	builtin_commandline.cpp
	highlight.cpp
	input.cpp
	input.h
	reader.cpp
	screen.cpp
	screen.h
2014-03-29 14:19:45 -07:00
Knut Ahlers
1270384ede Fixed appearance of ssh hostnames with [] in them
refs https://github.com/fish-shell/fish-shell/issues/1355
2014-03-29 11:46:45 +01:00
Konrad Borowski
1486774249 Force at least one line of output for set_color.
This should fix #1323.
2014-03-03 22:17:55 +01:00
ridiculousfish
3ab954644f Make fish install a command_not_found handler in non-interactive uses.
Previously, fish's command_not_found handler would be installed in
__fish_config_interactive. Errors that occured early in startup (e.g. in
config.fish) or in non-interactive mode would therefore not be reported.
With this change, fish now exposes its default cnf handler as
__fish_default_command_not_found_handler . config.fish then installs a
cnfh that invokes the default. When fish goes interactive, the initial
cnfh is overwritten with a fancier one, that may in turn fall back to
invoking the default.
2014-02-20 10:26:57 -08:00
Eric Mrak
64ca6c066c Caching for pacman packages. 2014-02-16 18:09:55 +08:00
Eric Mrak
d1cf5ab286 adding completion for aura. adding pacman integration for __fish_print_packages 2014-02-16 18:09:55 +08:00
waterhouse
b1545c5ce2 'seq' should return 1, not exit 1, on bad arglist 2014-02-16 01:17:12 -08:00
glennj
b475325b5e math.fish: exit if no output (e.g. from syntax error)
Closes #1175
2014-02-05 17:26:34 +08:00
ridiculousfish
7d345018af Redirect stderr of initial call to __fish_reload_key_bindings. Fixes ##1155 2014-02-03 16:46:01 -08:00
David Adam
27b6fe682d Squashed commit of the following:
commit d81ae2665f
Author: Max Gonzih <gonzih@gmail.com>
Date:   Sun Feb 2 16:22:18 2014 +0300

    Check for command-not-found command on suse

commit 004b794c82
Author: Max Gonzih <gonzih@gmail.com>
Date:   Sun Feb 2 14:04:41 2014 +0300

    Fix cnf handler for Suse and Fedora

    fixes #1208
2014-02-02 21:42:24 +08:00
ridiculousfish
20130d89dc Support for escaped colons in makefile targets in __fish_print_make_targets, as part of #1259 2014-01-29 15:42:52 -08:00
David Adam
8fbffe250a __fish_print_packages: correct syntax for yum, improve yum/rpm pipelines
Closes #1269 (output to cache file).

Reworks the editing pipeline for both yum and rpm completions down to a
single sed command.
2014-01-29 12:47:56 +08:00
Geoff Nixon
60808a4820 Enhance/fix isatty using command test.
Presently, `isatty` only works on a handful of keywords. Here it
  is rewritten to be able to take any path, device or fd number as
  an argument, and eliminates errors printed to stdout.
  Per discussion in #1228, using `builtin test -c` within a pipe to
  test special file descriptors is not viable, so this implementation
  specifcially uses `command test`. Additionally, a note has been
  added to the documentation of `test` regarding this potential
  aberration from the expected output of the test utility under the
  'Standards' section.
2014-01-28 11:14:54 -08:00
ridiculousfish
7d8766980b Support escape or up-arrow to cancel the completion search field. 2014-01-27 02:17:31 -08:00
ridiculousfish
5be3606236 Increased support for completion search field. Use btab (shift-tab) to
complete-and-search.
2014-01-27 00:56:13 -08:00
ridiculousfish
6d13b8bbc0 Teach down-or-search how to use down-arrow to begin pager navigation 2014-01-25 15:32:13 -08:00
ridiculousfish
2139334c36 Fix for issue where wc on OS X would produce leading spaces, causing
down-or-search to fail to match the case statement and therefore do the wrong thing.
2014-01-25 15:22:28 -08:00
Julian Aron Prenner
844b01cb6b Add 'and' input function; fixes a bug with t,T
'and' will prevent later input functions from being executed if the
previous one did not succeed (e.g. a jump to a char not on the command
line)
2014-01-23 10:23:04 +01:00
Julian Aron Prenner
45465e0c45 Merge branch 'bind_mode' of github.com:furunkel/fish-shell into bind_mode 2014-01-22 10:01:53 +01:00
Julian Aron Prenner
4a9be7bf11 Experimental support for f,F,t,T vi commands.
Input functions can now have arguments
2014-01-22 10:00:44 +01:00
Julian Aron Prenner
c8e0d18d18 Change mode colors in prompt 2014-01-22 09:00:57 +01:00
Maxim Gonchar
f284f00935 Add tmux support 2014-01-20 21:28:54 +04:00
Maxim Gonchar
71992158bf Retab again
default_keybindings are left with tabs as it was in the beginning
2014-01-20 17:12:32 +04:00
Maxim Gonchar
1514ab8ec5 Retab 2014-01-20 17:03:46 +04:00
Maxim Gonchar
3591900070 More clear way of setting cursor shape 2014-01-20 16:47:13 +04:00
Julian Aron Prenner
44c6fa68cf Make Ctrl-x autocomplete suggestions; cosmetics 2014-01-20 13:07:32 +01:00
Maxim Gonchar
1279888567 Add cursor shape handler 2014-01-20 10:19:41 +04:00
Max Gonzih
114f803a88 Fix e and E in visual vi mode 2014-01-19 17:07:23 +03:00
Max Gonzih
69778efb6b Add x binding to delete whole line in visual mode 2014-01-19 17:04:02 +03:00
Max Gonzih
e7df20f69b Add x binding to delete selection in visual vi mode 2014-01-19 16:50:56 +03:00
Julian Aron Prenner
cd64a777c3 Set $fish_bind_mode to default on fish startup; set $fish_key_bindings
when sourcing fish_vi_mode.fish
2014-01-19 10:27:39 +01:00
ridiculousfish
808bc42f2a Further work on keyboard navigating the completion list 2014-01-18 12:42:53 -08:00
Julian Aron Prenner
3728fc7dba Add kill-selection function and visual binds for 'y' and 'd' 2014-01-18 10:18:29 +01:00
Julian Aron Prenner
88eae68987 Fix a bug, commandline -s works now as expected. Add "*y binding in
visual mode
2014-01-17 20:32:24 +01:00
furunkel
8b89bd7a1f Merge pull request #4 from maxfl/bind_mode
Minor bind fixes
2014-01-17 08:06:49 -08:00
Maxim Gonchar
fc68b9d7cd Minor bind fixes
Comment out 'o' binding
Add '['/']' bindings to navigate current token history
Fix 'P' to paste indeed
Add "*P/"*p to insert current selection clipboard using xsel
2014-01-17 10:40:32 +04:00
Julian Aron Prenner
0cd125b55c Merge branch 'bind_mode' of github.com:furunkel/fish-shell into bind_mode 2014-01-15 22:41:50 +01:00
Julian Aron Prenner
444cb894be Set selection color to purple 2014-01-15 22:41:10 +01:00
Maxim Gonchar
8138b2080b Even dirtier *aw/*iw 2014-01-16 01:25:44 +08:00
Maxim Gonchar
737b204b2c Add dirty bindings for *iw, *aw
Put E, W bindings in agreement with vim
2014-01-16 00:55:51 +08:00
Julian Aron Prenner
213e907044 Merge remote-tracking branch 'upstream/master' into bind_mode
Conflicts:
	builtin.cpp
	reader.cpp
	share/functions/fish_default_key_bindings.fish
2014-01-15 15:27:06 +01:00
Julian Aron Prenner
c8d5131a42 Add experimental support for selection and visual mode 2014-01-15 15:07:22 +01:00
Julian Aron Prenner
fc21bb6eda Replace builtin 'bind_mode' with variable $fish_bind_mode 2014-01-15 12:04:52 +01:00
Maxim Gonchar
9684cbf850 Add optional options to fish_default_key_bindings
These options will be passed to the bind command.
Now it's possible to call
  fish_default_key_bindings -M insert
to set all original bindings to the insert mode
2014-01-15 15:26:38 +08:00
Maxim Gonchar
b0e94c15e6 Update vi bindings:
The following normal mode bindings are added:
    o, I, A, gg, G, g^, g$, x, X, backspace, d*, D, s, S, c*, C, ~, gu,
    gU, J, K, y*, Y, p, P

I was not able to add binding for 'O'

dd now deletes the whole line as vim, while D deletes the line to the
end. c, s, y act the same way
2014-01-15 00:21:13 +08:00
Julian Aron Prenner
874d3aca45 Make Ctrl+C exit insert mode, add some more backspace binds. 2014-01-14 15:24:26 +01:00
Konrad Borowski
b9394b9599 Rename __fish_complete_usb function. 2014-01-14 08:28:15 +01:00
leafonsword
129d2f803a 新文件: share/completions/lsusb.fish
新文件:    share/functions/__fish_complete_usb.fish
2014-01-13 20:24:20 +01:00
Max Gonzih
71f6986dd6 Fix __fish_print_packages for rpm 2014-01-13 22:36:02 +08:00
Alexander I.Grafov
75b02e1d27 Fixes issue #1234. Fish now parses system wide ssh configuration file in addition to user config. 2014-01-12 14:59:46 +05:30
David Adam
02bd933c58 Add Alt+. as a default binding for history-token-search-backward
Closes #89.
2014-01-08 15:15:15 +08:00
Julian Aron Prenner
dc90cd6bc4 Better input handling; add support multiple binding commands 2014-01-01 00:11:32 +01:00
Julian Aron Prenner
f408bc4808 Add sourceable script file to enable vi mode 2013-12-31 16:17:03 +01:00
Julian Aron Prenner
a302f37447 Fix bug 2013-12-31 16:16:28 +01:00
Julian Aron Prenner
f501e30353 Add sample prompt for vi mode 2013-12-31 14:56:12 +01:00
Julian Aron Prenner
2587649ca2 Allow restricting earsing and listing of bindings to specific mode;
implement force repaint and multi-char bindings;
2013-12-31 14:53:29 +01:00
Julian Aron Prenner
d1faac58dd Implement bind modes 2013-12-31 01:52:41 +01:00
David Adam
1efb120248 __fish_complete_svn: remove GNU extension options
Continuation of https://github.com/fish-shell/fish-shell/pull/1195/.
Removes use of --delimiter and --fields with cut(1) as these are GNU
extensions.

Note that a number of completions use these options, but as they are
only for GNU/Linux-specific tools have remained unmodified.
2013-12-30 12:32:24 +08:00
Derek Li
93f7c14ea6 Math: disable bc multi-line output. 2013-12-26 18:32:36 +01:00
Javier Gonel
12be83562d Non standard cut options
Some cut versions don't have `--delimiter` or `--fields` but use the standard options `-d` and `-f`
2013-12-18 18:02:19 +02:00
David Adam
f0946baeaa __fish_git_prompt: initialise colors early
Otherwise __fish_git_prompt_informative_status tries to expand an unset
variable.

Closes #1157.
2013-12-02 20:09:15 +08:00
Konrad Borowski
e1608362d0 Fix s/$remote// mistake.
$remote could have contained /.
2013-11-29 15:26:33 +01:00
Jelte Fennema
44d13869ad Add eselect, rc-update and rc-service completions. (These are utilities used by Gentoo Linux)
Disable php completion for the 4th part of the command, since php-eselect is differently designed and causes errors

Closes #1131.
2013-11-27 18:36:05 +08:00