Commit Graph

8540 Commits

Author SHA1 Message Date
Fabian Homborg
f533189a28 [default bindings] Bind \e\b as well
As it turns out, for some terminals backspace is \b but only when
preceded by \e.

All this makes about as much sense as the english language.

Fixes #4955.
2018-05-04 12:28:20 +02:00
Fabian Homborg
b5d6c1102e [git prompt] Only set chars/colors when necessary
Either on start or when something has changed.

This saves about 8ms on every call except the first.
2018-05-04 12:28:20 +02:00
Ray Juang
ba68efd543 Updating adb completion to enable tab-completing file paths for adb shell and pull commands 2018-05-03 16:41:04 +02:00
Fabian Homborg
b0368fd85b Set $IFS in C++
This was done in share/config.fish, but leads to surprising results if
that isn't read - e.g. because someone just built fish in the git
directory to test it without installing.

It's also not something that is any more or less complicated.

For compatibility, keep it in config.fish as well for the time being.
2018-05-03 12:49:21 +02:00
Fabian Homborg
2a616698b3 Just define : compatibility function directly
There really is no need for that indirection.
2018-05-03 12:42:09 +02:00
Fabian Homborg
d8b1f0715f [pip* completions] Silence stderr
For some reason, these tools print an upgrade message to stderr, even
when stdout goes somewhere else.
2018-05-03 11:32:18 +02:00
Fabian Homborg
baeeef3233 Remove triggerable assert in unescape_string_internal
Fixes #4954 - in a hacky way.
2018-05-02 16:35:56 +02:00
Fabian Homborg
e02e485cc6 command-not-found: Split os-release' stuff on space
ID_LIKE is defined as a space-separated list and ID can't have spaces.

Fixes it for "openSUSE Tumblewee".
2018-05-01 19:28:37 +02:00
Mahmoud Al-Qudsi
4962244161 Fix __fish_complete_suffix for arguments starting with './'
The previous completion generation was broken for several reasons:
* ./foo would break detection of suffix due to the leading . being
  interpreted an extension marker,
* ./foo would be completed as foo, which would be excluded from
  matching inrcomplete.cpp
2018-04-29 11:20:07 -05:00
Fabian Homborg
376a4eca58 Remove ^ redirection from sample prompts
A bunch of these did ^/dev/null. Replace it with 2>/dev/null.

[ci skip]
2018-04-28 18:16:35 +02:00
Andrew Lobos
f479e4a830 Remove caret redirection from tar completion 2018-04-28 18:13:24 +02:00
Fabian Homborg
e598cb235a Fix case matching literal ?
Fixes #4896.
2018-04-25 23:37:39 +02:00
Fabian Homborg
2fd15e7c6c Silence xsel errors
Fixes #4923.

[ci skip]
2018-04-25 23:11:40 +02:00
Fabian Homborg
f3f2d2d191 [git completions] Speed up branch completion
Using `git for-each-ref` both simplifies the code (no need to deal
with detached heads anymore) and speeds it up.

With 1600 branches, the time goes from ~48ms to ~16ms.
2018-04-25 23:11:40 +02:00
Wilke Schwiedop
0b0e65a8a4 Update ebuild.fish
greatly simplify __fish_seen_ebuild_arg
2018-04-25 15:46:15 +02:00
Wilke Schwiedop
29b67030b8 add completion for 'ebuild' command 2018-04-25 15:46:15 +02:00
Wilke Schwiedop
9d9966b156 add completion for 'equery files' filter switch 2018-04-25 15:46:15 +02:00
Wilke Schwiedop
80e30bc144 add argument completion for 'equery keywords' 2018-04-25 15:46:15 +02:00
Wilke Schwiedop
06cda3f0b0 fix 'equery uses' completion 2018-04-25 15:46:15 +02:00
Wilke Schwiedop
92fa94aa09 Improve equery completion
- fix capitalization
- shorten descriptions
- implement subcommand shortcuts
- add arg completion for 'limit' and 'depth' switches
- improve arg completion for list subcommand in case of -p switch
2018-04-25 15:46:15 +02:00
nblock
809b2cd792 Add completion for MkDocs (#4906)
* Add completion for MkDocs

* Use __fish_seen_subcommand_from
2018-04-25 15:45:48 +02:00
Wilke Schwiedop
02ae926c8e remove sed (and awk) from gentoo-portage completions 2018-04-25 15:45:12 +02:00
Wilke Schwiedop
70c80c9d0e fix and remove sed from __fish_print_xrandr_modes.fish 2018-04-25 15:45:12 +02:00
Wilke Schwiedop
374772e539 remove sed from __fish_print_xrandr_outputs.fish 2018-04-25 15:45:12 +02:00
Wilke Schwiedop
83637e2178 remove sed from __fish_complete_groups.fish 2018-04-25 15:45:12 +02:00
Wilke Schwiedop
4d864aea1c remove sed from __fish_print_addresses.fish 2018-04-25 15:45:12 +02:00
George Christou
0fdc51beed completions: [git] Add options for diff and show 2018-04-24 10:57:00 -07:00
Pavel Sviderski
8f526c0876 add try in browser button to launch fish playground 2018-04-23 12:10:30 -07:00
Mahmoud Al-Qudsi
a9e9af5c5d Include devDependencies in yarn and npm completions 2018-04-20 23:05:31 -05:00
Mahmoud Al-Qudsi
a733296980 Correct bower and yarn completions
bower was calling `__fish_should_complete_args`, the old name for
`__fish_should_complete_switches.`
yarn was parsing bower.json instead of package.json.
2018-04-20 09:12:34 -05:00
Mahmoud Al-Qudsi
b619f34777 Fix ngrok and port appearing on same line in CHANGELOG.md 2018-04-19 18:26:47 -05:00
Mahmoud Al-Qudsi
5f82cb5ca4 Use jq to iterate over installed dependencies for yarn completions
Only if available, else fall back to fragile package.json parsing.
2018-04-19 18:15:33 -05:00
Mahmoud Al-Qudsi
e48722f0bf Add completions for bower
These are "true" completions, with dynamic completion of available
packages to be installed or removed.
2018-04-19 18:09:11 -05:00
Mahmoud Al-Qudsi
7db0958804 Add __fish_can_complete_switches & __fish_should_complete_switches
To be used by completions to directly determine whether it is either
possible or preferable to complete a switch (instead of a subcommand),
(presuming that switches must come before subcommands).

* __fish_can_complete_switches: we are in a position where a switch may
be placed.
* __fish_should_complete_switches: we're in a position to accept a
switch and the current token starts with `-` so we have no choice but
to do so.
2018-04-19 18:09:10 -05:00
George Christou
342d0644ac completions: [git] Don't try to complete files when not in a repo 2018-04-19 17:15:21 +02:00
Mahmoud Al-Qudsi
c31861fdd1 Add note about read -L to CHANGELOG.md` 2018-04-19 08:37:43 -05:00
Mahmoud Al-Qudsi
77134fc49d Use all-the-package-names to complete yarn add 2018-04-19 08:35:06 -05:00
Mahmoud Al-Qudsi
503427255e Drop automation of all-the-package-names install for npm completions
Selectively reverts 156d4fb9b9.

`all-the-package-names` is still used to generate completions for `npm`
if it is installed, but it is not manually installed nor updated. It is
now the user's responsibility to do both, and it must be installed
globally.
2018-04-19 08:34:46 -05:00
J Delaney
54959a8248 Completions for merging 2018-04-19 14:34:01 +02:00
George Christou
97f2eca571 completions: [git] Add common options for show and diff 2018-04-19 14:31:49 +02:00
Sam Yu
408cdba1be Update tar completion
* Fix gzip archive files completion
* Let tar auto detect file type
2018-04-19 14:27:23 +02:00
Kevin Ballard
e03db61dac
Merge pull request #4909 from kballard/history_delete_err_msg
Tweak the error message for `history delete --exact foo`
2018-04-18 22:36:18 -07:00
slama
beba9df406 add job expansion wrapper for disown 2018-04-19 00:13:16 -05:00
Mahmoud Al-Qudsi
156d4fb9b9 Complete npm package names for npm install via all-the-package-names
`npm search` was _way_ too slow to be used for dynamic completions, so
using a cached list of all avaialable NPM packages to match against.

This is a bit brave for a fish completion, but the npm package
`all-the-package-names` has a list of, well, all the package names
avaialable for installation via the default npm registry. Installing a
copy locally to $HOME/.cache/fish/npm_completions and using that to
search for packages matching the tokenized command line.

Preference would be to call `__update_atpm` in the background, but that
emits an ugly "job has completed" message..

Should also use this for completions for `yarn add`.
2018-04-18 22:42:46 -05:00
Mahmoud Al-Qudsi
c2e66b002a Dynamically invoke yarn completions so they aren't cached
Correct `-a (something)` to `-a '(something)'`
2018-04-18 21:43:39 -05:00
Mahmoud Al-Qudsi
9d9afd8264 Speed up ./configure completion by not running ./configure --help
Instead, attempt to extract the message that _would_ be displayed on
execution of `./configure --help` by relying on some markers present in
autoconf-generated configure files.

As measured with 'hyperfine' on a laptop running in reduced frequency
power savings mode, `fish -c "__fish_parse_configure ./configure"`
runtime dropped from ~1.25s to ~0.8ms, which is inline with the
previously observed ~350ms execution time for `./configure --help`.
fish's own startup time is approximately 75ms before parsing begins.

Still very slow, but much better.
2018-04-18 15:40:52 -05:00
Mahmoud Al-Qudsi
6c5e5d35a9 Add real completions for ./configure
This relies on the new `read --line/-L` support as an entire parser for
the output of `./configure --help`  was written in fishscript. Also
doesn't work without 72f32e6d8a7905b064680ec4b578c41dea62bf84.

The completion script is slow... a function of both the autotools
configure script itself being written in a shell script combined with a
fishscript output parser.

fish's own `./configure --help` takes around 350ms to execute, while
`__fish_parse_configure ./configure` (which runs that behind the scenes)
takes around 660ms to run, all-in-all - a not insignificant overhead.

Output can be cached (based off of ./configure hash or mtime) in the
future if this is a big deal.
2018-04-17 21:35:51 -05:00
Mahmoud Al-Qudsi
c8af566330 Stop completion skipping in case of valid ./command
complete.cpp strips the path from commands before parsing for
completions, meaning that when we called `path_get_path()` against
`cmd`, if `./cmd` were typed in at the command line but `cmd` does not
exist in the PATH, then the command would incorrectly be flagged as not
present and the completions would be skipped.

This is also faster when an absolute/relative path is used for a
command, as we now search with the original path which skips searching
PATH directories unnecessarily.

Found when debugging why completions for `./configure` wouldn't work.
2018-04-17 21:34:22 -05:00
Mahmoud Al-Qudsi
c2cfc65cf2 Correct read behavior for unset values and update tests accordingly
`read` with IFS empty was expected to set all parameters after the first
n filled variables to an empty string, but that was inconsistent with
the behavior of `read` everywhere else.

I'm not sure why fish differed from the spec with regards to the
behavior in the event of an empty IFS: we eschew IFS where possible, yet
here we adopt non-standard behavior splitting on every (unicode)
character instead of not splitting at all with IFS empty. We still do
that, but now the unset variables are treated as they normally would be,
i.e. cleared and not set to an empty string (which is what an empty
value between two IFS separators would contain).
2018-04-17 21:34:22 -05:00
Mahmoud Al-Qudsi
3742a7827f Support multiple read --line variable outputs
ref #4861. Also closes #4917.
2018-04-17 21:34:22 -05:00