Commit Graph

1197 Commits

Author SHA1 Message Date
Mahmoud Al-Qudsi
4b78c92652 Optimize structure/layout of __fish_print_packages
Move XDG_CACHE_HOME logic below package providers that don't use the
cache.
2018-05-17 22:21:19 -05:00
Fabian Homborg
560985cdee Remove test invocations with implicit -n tests
This is something we would like to remove - #2037.
2018-05-17 13:24:26 +02:00
Mahmoud Al-Qudsi
5f1168002e Complete current commandline token with __fish_complete_directories if
Akin to __fish_complete_suffix, __fish_complete_directories now attempts
to complete the current commandline token if no token is explicitly
passed in as an argument.
2018-05-12 14:06:03 -05:00
Fabian Homborg
feb6e9c90b Make DEFAULT_PROMPT and DEFAULT_TITLE work without functions
The prompt is a fallback that is overridden via a function file
anyway.

Do that with the title as well, so we can use just builtins.

This removes error messages when $fish_function_path is borked.
2018-05-12 13:53:45 +02:00
Fabian Homborg
ef66b99721 Remove some dead code
This was a remnant from us checking `string length`. Now that we check
if the variable is set, this code does nothing.
2018-05-12 13:48:32 +02:00
Fabian Homborg
a4f55d95d4 Detect GNU make via "--version"
Turns out that `make -pn` actually takes a while - about 300ms on
fish's makefile.

That's quite a bit of time just to throw away the output and use the
exit code.

So we just check for "GNU" in the version string.

It would be nice to just _do_ the completion and fall back on the
BSD-style if it doesn't work, but that is tricky to do with the pipe
to `awk` - the awk expression actually does not fail if `make` does
not print output.

And I don't know enough about awk to change that.
2018-05-11 16:16:14 +02:00
Fabian Homborg
88b688c544 [hg prompt] Use hg status -q
For some reason, `hg status -q` prints the exact same output as `hg
status`, but about 20% faster.
2018-05-08 22:52:16 +02:00
Mahmoud Al-Qudsi
6dc74d3b6c New helper functions __fish_is_first_arg and __fish_prev_arg_in
For usage in completion scripts.

Unlike `__fish_is_first_token` (which is probably not correctly named),
`__fish_is_first_arg` returns true regardless of whether existing tokens start with `-`
or not, to be used when an arg cannot be used with any other argument.

`__fish_prev_arg_in` is similar to `__fish_seen_...` but it explicitly
tests the preceding token only, for arguments that take only a single
parameter.
2018-05-06 18:55:12 -05:00
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
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
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
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
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
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
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
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
Wilke Schwiedop
8ae9b716a0 fix 'grep ... | sed' 2018-04-09 01:09:49 +02:00
Thom Chiovoloni
25169a44ed Add alias -s/--save, which saves the alias.
Also updates the `alias` documentation to mention the `-h`/`--help` option,
which was previously undocumented.
2018-04-09 01:08:56 +02:00
George Christou
c6e7b7ef00 prompt: Show untracked Git files relative to root directory (#4874)
* prompt/git: Match untracked files relative to root directory

* prompt/git: Move untracked file logic to a separate function
2018-04-09 01:05:03 +02:00
Mahmoud Al-Qudsi
366933413b Fix string match argument parsing in __fish_seen_argument 2018-04-03 21:13:11 -05:00
Mahmoud Al-Qudsi
c492d03f51 Overhaul completions for set and add new completions for set -e
Now the description includes the variable scope, `set [-e] -[Ugl]`
completions only provide variables matching that scope, and completions
that shouldn't be modified are hidden from the user. Completions that
are often modified but rarely unset (`fish_*` variables) are omitted
from `set -e` completions.

A new helper function `__fish_seen_argument` has been added that makes
it easy to only provied completions for a specific flag.
2018-04-03 14:42:26 -05:00
Mahmoud Al-Qudsi
99ecaec175 Use system web browser under WSL
Launch `cmd.exe /c "start URL"` under WSL for both `fish_config` and
`help`. This works around #4299 but does not address the underlying
issue (#1132).
2018-04-02 18:36:14 -05:00
David Adam
5c56765d12 hg prompt: fix infinite loop due to incorrect scoping
4b079e16e5 fixed some unintended behaviour
which the hg prompt was apparently relying upon, producing an infinite
loop whenever called.
2018-04-02 21:24:52 +08:00
ridiculousfish
ca13e816ce Make fish more resilient to empty key bindings
If fish_key_bindings gets set to empty, fish will become unusable.
In this case reset it to fish_default_key_bindings.
2018-04-01 16:11:12 -07:00
Peter Ammon
7659554dea Remove use of caret redirection from share/*
This removes the use of caret redirections from share/completions
and share/functions, in preparation for dropping support in fish.
2018-04-01 13:42:38 -07:00
Mahmoud Al-Qudsi
6d80ab8d74 Rename $pid (née %self) to $fish_pid 2018-03-24 11:54:27 -05:00
Daniel Beckwith
7583d57b63 Add Makefile --file detection to completion 2018-03-23 22:45:40 -07:00
Wilke Schwiedop
44e2c28255 revisit gentoo-related completions (#4758)
* revisit gentoo-related completions

- add completion for emaint
- improve completion for emerge
  still incomplete, but an impovement regardless
- improve completion for equery
- add gentoo/portage-related auxiliary functions

* fix spelling

* remove trailing '.'

* remove old '_' invocation and capitalize descriptions

* add number-completion

* remove trailing '.'

* shorter descriptions

* replace sed with fish-builtin and drop deduplication

* batch change capitalization (lower case)

* indent equery descriptions

* batch change capitalization (upper case)
2018-03-23 19:42:30 +01:00
Mahmoud Al-Qudsi
007ae0b15e Add colon.fish for : compatibility with sh and bash
no-op function for compatibility with sh, bash, and others.
Often used to insert a comment into a chain of commands without having
it eat up the remainder of the line, handy in Makefiles.
2018-03-14 17:41:09 -05:00
Mahmoud Al-Qudsi
c51abd04ff Clean up $__fish_*dir variable names
Closes #4429
2018-03-12 08:34:20 -05:00
Mahmoud Al-Qudsi
b42b562d06 Revert prompt_hostname to short hostname only
Hat-tip: @zx8. Closes #4804.
2018-03-12 08:24:42 -05:00
Mahmoud Al-Qudsi
18a9aa58cd Add binding for MSFT/WSL paste escape sequence 2018-03-10 10:57:32 -06:00
Mahmoud Al-Qudsi
b3ec069401 Add missing $argv injection in fish_default_key_bindings.fish
These have to be present in all the default rules so that any errors can
be silenced at startup (and so additional arguments can be passed in).
2018-03-10 10:54:29 -06:00
Mahmoud Al-Qudsi
410f6fbd44 Switch prompt_hostname over to $hostname 2018-03-09 15:05:43 -06:00
Mahmoud Al-Qudsi
2a266c4d48 Update fish's only usage of read -s to use read --shell instead 2018-03-09 11:55:12 -06:00
Mahmoud Al-Qudsi
a6f79dcca8 Implement -s for fish_vi_key_bindings
In similar vein to how fish_default_key_bindings works, parameters
passed to the function are automatically passed to bind upstream.
Additionally, -s is automatically added if no parameters had been
specified to prevent startup error messages. See 46d1334.

Closes #4494
2018-03-09 09:29:25 -06:00
Mahmoud Al-Qudsi
b236ab6e5d Update %self references with $pid instead 2018-03-09 03:56:19 -06:00
Cesar Andreu
3792fb086a Fix man autocomplete when a section is set 2018-03-06 20:50:20 +01:00
Fabian Homborg
93209ab053 Fix termux path
This is "/data/data/com.termux/files/usr/etc", not just ".../files/etc".
2018-03-06 17:55:25 +01:00
Fabian Homborg
e7f8e58be9 Add more ssh known_hosts paths
Fixes #4759.
2018-03-06 15:27:34 +01:00
Mahmoud Al-Qudsi
225f748f79 Add __fish_parent_directories helper function for completions
Can be used to retrieve a list of parent paths, useful for searching
ancestors recursively via their absolute paths. Paths are returned from
deepest to shallowest, starting from the path passed in. Paths are not
validated for performance reasons. (Usually the input to
__fish_parent_directories would be (pwd) or (dir $file).)
2018-03-05 08:25:25 -06:00