Compare commits

...

1931 Commits

Author SHA1 Message Date
David Adam
43535cf5a5 Bump version for 2.3b1 2016-04-19 15:55:30 +08:00
David Adam
bf0e91cc97 pcre2: add maintainer mode and disable by default 2016-04-19 15:13:15 +08:00
Aaron Gyes
fc78e70d08 Apply pcre2 svn rev 489 patch to fix CVE-2016-3191 2016-04-19 15:13:14 +08:00
David Adam
aefcf544ca Update Xcode build for new pcre2 version 2016-04-19 15:13:14 +08:00
Aaron Gyes
0fd3f5c0dd Update to pcre2 10.21
Point build tools at 10.21
2016-04-19 11:49:12 +08:00
Fabian Homborg
e7599fd18c Allow overriding fish_term24bit on launch
(cherry picked from commit ba1008b750)
2016-04-18 14:20:42 +02:00
Fabian Homborg
8d3eae0d76 Move 24bit setup into config.fish
Fixes #2941.

(cherry picked from commit 8558561650)
2016-04-18 14:20:42 +02:00
Kurtis Rader
d7fd0427f3 fix off by one error
(cherry picked from commit ea3d9c36a5)
2016-04-15 15:17:57 -07:00
Kurtis Rader
baee807837 fish handling of readlink()
The readlink() function does not null terminate the path it returns.

Remove the OS X code that deals with a path buffer that is too short. For
one thing a loop isn't needed since we're told how big of a buffer
is required if the first _NSGetExecutablePath() call fails. But more
important it is so unlikely that the path will be longer than PATH_MAX
that if it is we should just give up.

Fixes 2931.

(cherry picked from commit 8e103c231e)
2016-04-15 15:17:57 -07:00
Yauhen Kirylau
c2e9cda7b3 Add completions for 'pacaur' (#2934) 2016-04-15 15:10:21 +02:00
Laurence McGlashan
4aa8fc753f Correct typo in valgrind completions 2016-04-15 15:10:21 +02:00
Fabian Homborg
635a1e9dd2 Remove the default self-insert binding in vi-default mode
Fixes #2832.
2016-04-15 15:10:21 +02:00
Aaron Gyes
574851f092 Fix #2919 by removing the entire block.
This code represents only risk and does nothing useful for anything
that can compile fish.

In C++ situations where __STDC_VERSION__ is unset (as it should be),
fish was assuming we are on < C99 and setting it to __FUNCTION__.

Basically always, __PRETTY_FUNCTION__ ends up reaplaced by __FUNCTION__, this hurt
error message usefulness and richness.

__PRETTY_FUNCTION__: const thing::sub(int)
__FUNCTION__: sub
2016-04-09 12:40:04 -07:00
Jak Wings
2d5eaed745 fix handling of line continuation in keywords
This behavior is more consistent with line continuation in strings other
than keywords.

Fixes #2897
2016-04-08 21:05:46 -07:00
Kurtis Rader
6adc35c636 add missing special-case for ../
When I reviewed the fix for #952 I noted that "../" wasn't handled but in my
haste to merge it forgot to augment the pull-request.
2016-04-08 15:52:10 -07:00
Fabian Homborg
6c5f923a47 Remove non-existing functions in bind docs
At least delete-line was previously a thing, but none of these are still available.

First part of #2914
2016-04-08 16:35:12 +02:00
Fabian Homborg
d7c690b416 Fix "." and ".." paths in cd completions
Previously if a directory called "a" was in $CDPATH, `cd ./a<TAB>` would
complete from there even if it was invalid.
2016-04-08 15:03:49 +02:00
David Adam
8eb9dac4bc CHANGELOG: include release notes for previous releases
[ci skip]
2016-04-08 12:45:43 +08:00
David Adam
2ff3a36675 CHANGELOG: move release_notes.html to a markdown document
[ci skip]
2016-04-08 12:39:15 +08:00
ridiculousfish
e395a0eb69 Migrate PATH-completion logic from complete.cpp to expand.cpp
Prior to this fix, when completing a command that doesn't have a /, we
would prepend each component of PATH and then expand the whole thing. So
any special characters in the PATH would be interpreted when performing
tab completion.

With this fix, we pull the PATH resolution out of complete.cpp and
migrate it to expand.cpp. This unifies nicely with the CDPATH resolution
already in that file. This requires introducing a new expand flag
EXPAND_SPECIAL_FOR_COMMAND, which is analogous to EXPAND_SPECIAL_CD
(which is renamed to EXPAND_SPECIAL_FOR_CD). This flag tells expand to
resolve paths against PATH instead of the working directory.

Fixes #952
2016-04-07 20:15:32 -07:00
Aaron Gyes
36691df6fe Stringify many completions and functions, with --invert stringification.
I believe apm must have been buggy - example output that I found online
showed `tr` was mangling paths with spaces in it. Should be fixed.

Also, use dscl on OS X in __fish_complete_users.fish like
__fish_print_users.fish already does.
2016-04-08 10:49:29 +08:00
Aaron Gyes
790c7f80c7 Implement an --invert/-v for string match, like grep -v.
Only lines that do not match the pattern are shown.
2016-04-08 10:49:29 +08:00
ridiculousfish
155befe90e Complain less about "bogus" PATH entries
When determining the old path, get the existing value in any scope,
not just the set scope. Also only complain about absolute paths:
relative paths are expected to be invalid sometimes.
2016-04-07 15:44:56 -07:00
ridiculousfish
9347630d1e Update Xcode project for latest Xcode 2016-04-07 15:26:39 -07:00
Kurtis Rader
784b438d4a fix git command in lint.fish script 2016-04-07 13:47:51 -07:00
ridiculousfish
d2ae00ca44 Remove a dead function bool_from_env_var 2016-04-07 13:29:50 -07:00
Fabian Homborg
8477126ae4 Correct true-color statement in set_color docs
- OSX Terminal does not support it

- We do some detection
2016-04-07 18:27:34 +02:00
David Adam
9c75546724 Update osx/config.h for removed ifdefs 2016-04-07 11:13:38 +08:00
David Adam
e1e1e558ce pcre2: add maintainer mode and disable by default 2016-04-07 11:07:44 +08:00
David Adam
c37c93fcf6 configure: remove tiny leftover from xsel build 2016-04-07 08:21:13 +08:00
Kurtis Rader
35e282928a clarify documentation for the source command
Make it clear that fish 2.3.0 changed how `$argv` is initialized.
2016-04-06 17:18:06 -07:00
Kurtis Rader
02f18cae0a fix setting of $argv for source w/no args
Fixes #139
2016-04-06 13:04:44 -07:00
Kurtis Rader
4ff8e6e781 change how redirections are formatted
Modify `fish_indent` to emit redirections without a space before the target of
the redirection; e.g., "2>&1" rather than "2>& 1" as the former is clearer to
humans.

Fixes #2899
2016-04-05 19:29:23 -07:00
Kurtis Rader
8e8b5a6481 augment the guide for contributing
Include information about how to deal with lint warnings and suppress
`clang-format` reformatting of blocks of code.

Move information only relevant to developers from the README.md to the
CONTRIBUTING.md document.

Closes #2901
2016-04-05 19:19:57 -07:00
David Adam
200a10e78d Rename "snippets" to "conf" internally, and document them as snippets
Discussed in #2896.
2016-04-06 09:33:09 +08:00
Mark Griffiths
9e93ddc097 Fix a couple of minor issues in string examples
Print correct return code in 2nd example
Remove syntax colouring in \cg

Signed-off-by: Mark Griffiths <mark@thebespokepixel.com>
2016-04-05 10:57:32 -07:00
Kurtis Rader
3435e94994 make the string man page more readable
I didn't notice when I merged commit cb6d5d76c8
by thebespokepixel.com that it removed the explicit wrapping in the `string`
man page. That makes `man string` harder to read so reinstate the explicit
wrapping.
2016-04-04 21:32:03 -07:00
Kurtis Rader
fd1b7ba529 support making fish code match the style guide
This changes implements two new make targets: `style` and `style-all`. These
make it easy to ensure that a change conforms to the project style guides for
C++ and fish code.

Fixes #571
2016-04-04 21:00:43 -07:00
Aaron Gyes
a4642f141f don't try to use st_gen (inode generation) number
Per discussion in pull-request #2891, it's not available on Linux (we just
fill it with zero), and unless run as root on OS X (or other BSD system) it
will be zero. Remove it from file_id_t. Also fix the initialization of the
file_id_t structure.

Fixes #2891
2016-04-04 20:17:05 -07:00
Kurtis Rader
8f33b55ccc remove unused special color "ignore"
Resolve lint warning about unused method "rgb_color_t::ignore()".

Fixes #2893
2016-04-04 16:55:40 -07:00
David Adam
484c1484c9 Customisable extra configuration, completion and function directories
- Add options to the autotools build to set the path for the "vendor"
   or "extra" configuration snippets, functions and completions
   directories.

 - Remove the vendor_completions directory from the Xcode build, as
   these are relocatable and compiling the paths in does not make sense.

This allows packaging tools like Homebrew and Nix to use a common
directory outside of the main prefix for third-party completions, and
to make these available for programmatic discovery through `pkg-config`.

Closes #2113
2016-04-04 15:58:13 -07:00
Mark Griffiths
cb6d5d76c8 update lexicon for latest docs
Closes #2699

Fixes issues with:
* 'string' function synopsis
* Redirection display issues
* Better file & path detection
* Rendering of % & @ chars in both html and man
* @ symbol in tutorial

Improves robustness by implementing an @EOL marker to prevent hold buffer dumping extra chars after the end of an expression.

Added new '{{' and '}}' meta-chars for when you want curly braces in a regexp that was previously tripping up the lexicon.

Improve man/html presentation consistency for
* string
* printf
* prompt_pwd
* type

Use cli-styling for 'practical' examples.

Add <bs> tag for presenting content with preceding backslash.

Signed-off-by: Mark Griffiths <mark@thebespokepixel.com>
2016-04-04 15:23:56 -07:00
Kurtis Rader
47f1a92cc4 fixes for cppcheck lint warnings
Refine the linting behavior.

Fix several of the, mostly trivial, lint errors.
2016-04-04 14:34:28 -07:00
Fabian Homborg
0953590cca cd completion: No description for absolute paths
This also removes the "pushd/popd" dance and only executes the CDPATH
stuff when we need to.
2016-04-04 18:22:48 +02:00
Kurtis Rader
411d573ba9 convert atypical env_universal_common logging
This is a quick and dirty conversion of the atypical, and undocumented,
logging done by env_universal_common.cpp to the usual `debug()` pattern. I
didn't want to drop the messages because they could be useful when
debugging future issues. So I simply converted them to the lowest debug
level using the normal debug() function.

Fixes #2887
2016-04-03 20:23:43 -07:00
Kurtis Rader
9dd6873e58 lint: remove or comment out unused functions
Cppcheck has identified a lot of unused functions. This removes funcs that
are unlikely to ever be used. Others that might be useful for debugging I've
commented out with "#if 0".
2016-04-03 19:02:46 -07:00
Kurtis Rader
3f1fc332e7 remove unused wgetopt() method found by linting 2016-04-02 22:18:31 -07:00
Kurtis Rader
bbf0007c46 remove create_wajig_completions.py script
This script is really old and no longer works correctly. This discussion,
http://comments.gmane.org/gmane.comp.shells.fish.user/4062, from over two
years ago concluded it should be removed.

Resolves #2881
2016-04-01 21:01:54 -07:00
Kurtis Rader
6fa09e6a70 add make targets to lint the code
Fixes #2818
2016-04-01 16:29:06 -07:00
David Adam
4f5d42858c travis: move to clang 3.8 for ASan builds 2016-04-01 08:08:36 +08:00
Laurence McGlashan
83233ccc5a Correction to make rule for fish_version 2016-03-31 15:22:08 -07:00
Jak Wings
6888c3d604 rename make target "user_doc" to "doc"
Fixes #2875
2016-03-31 14:52:34 +08:00
Kurtis Rader
35cee1e39c remove "doc" make target and rename "user_doc"
Fixes #2874
2016-03-30 19:20:23 -07:00
Sam Yu
7e014174b8 __fish_print_packages: use libzypp builtin cache for zypper 2016-03-30 15:03:51 +02:00
Fabian Homborg
aacdaee6a9 Add history --help
This was probably an oversight - the builtin supports it, the function doesn't.
2016-03-30 15:03:51 +02:00
Kurtis Rader
0e18e2ba78 clarify behavior of ** glob
Fixes #2680
2016-03-29 16:44:44 -07:00
Kurtis Rader
a148b755a6 more fish_indent cleanup for prev commit
Commit dfb23c4fce was supposed to incude
all the edits to make the code compliant with fish_indent.
2016-03-29 16:42:58 -07:00
Kurtis Rader
dfb23c4fce fix regression to vi-mode \cc binding
Commit c0e8ad6 on 2015-10-02 to "Make vi bindings inherit the defaults"
inadvertently reverted commit b6b6de3. Fix that regression. And while I
hate to make "git blame" say I changed the entire file make the function
adhere to fish_indent style.
2016-03-29 15:33:37 -07:00
Fabian Homborg
d30f8fffc8 Reword: Always call suggestions sugggestions
Not completions.
2016-03-29 15:55:42 +02:00
Fabian Homborg
19dd28e400 Document pager search
Fixes #2866.
2016-03-29 15:55:42 +02:00
Fabian Homborg
daf94e14d4 Document more keybindings
Fixes #2866.
2016-03-29 15:55:42 +02:00
David Adam
2eb518f59c travis: enable leak detection in address sanitiser
Since #2849 was merged, there are no further leaks detected by the
address sanitiser. This makes it a good target to enable for Travis,
which will enable regression testing.

Closes #2851.
2016-03-28 20:56:56 +08:00
Josef Gajdusek
0eb3fd6b3f Make modprobe completion more precise
Only match loaded modules when -r is specified.

Also adds /lib/modules/(uname -r)/misc to the search path.
This directory is used by Gentoo for package-provided modules
(such as the app-emulation/virtualbox-modules)
2016-03-28 14:38:19 +02:00
Josef Gajdusek
6663c73eb0 Fix typos: ingnore->ignore 2016-03-28 14:38:19 +02:00
ridiculousfish
bb5608e920 Remove an unnecessary c_str() 2016-03-27 18:01:19 -07:00
Andreas Nordal
6495bd470d Fix memory leaks at exit found in tests
This fixes all memory leaks found by compiling with
clang++ -g -fsanitize=address and running the tests.

Method:
Ensure that memory is freed by the destructor of its respective container,
either by storing objects directly instead of by pointer, or implementing
the required destructor.
2016-03-27 17:40:48 -07:00
Fabian Homborg
7accadc33f Only read .fish files in the snippets directories
This would allow us to add a README and allows users to easily disable
something temporarily.
2016-03-26 19:20:40 +01:00
CharlonTank
ad97a122c9 Update README.md
Add a command that instantly add the fish path to /etc/shells
2016-03-25 15:24:30 -07:00
Bogdan Sinitsyn
516695ff21 add yaourt completions 2016-03-24 16:17:10 +01:00
Kurtis Rader
9d2b53450a limit size of cd history to 25 directories
The existing implementation grows the $dirprev array without bounds. Besides
causing what would appear to be a memory leak it also makes the nextd and
prevd commands more expensive than they need to be. It also makes it harder to
create a useful "menu" cd command.

In addition to implementing a reasonable limit on the size of the $dirprev
array I've reformatted the code using fish_indent.

Update the documentation to include mentions of the $dirprev and $dirnext
variables as well as the limit on how much directory history is kept.

Fixes 2836
2016-03-23 13:36:00 -07:00
Kurtis Rader
de1258e09b fish --version should write to stdout
When explicitly asking for the fish version string the information
should go to stdout rather than stderr. Also, there is no reason to use
exit_without_destructors() rather than exit() in that code path. We
actually want the side-effects of exit() such as flushing stdout and
there aren't any threads or other things that could cause a normal exit
to fail when that function is run.
2016-03-23 11:42:17 -07:00
Andreas Nordal
2a4a539d86 Fix memory leak, error message when failing to open input file
The early return skipped all cleanup.
This problem is a case for the classic "goto fail" paradigm, but this
change instead makes a few adjustments to take advantage of a previously
unused level of indentation to conditionally execute the success path.

The error message now prints the filename instead of "open",
which should be more idiomatic.

Tip:
This patch makes sense if viewed with `git show --ignore-space-change`.
2016-03-22 11:43:58 -07:00
Fabian Homborg
a81bd697a8 Make reading ssh files case-insensitive
Fixes #2843
2016-03-22 11:09:36 +01:00
Nyanpasu
2e0205a746 Add missing "Universal Variables" to tutorial.hdr 2016-03-22 06:52:11 +08:00
Federico Ferri
168a156e58 implement swap-selection-start-stop function
The swap-selection-start-stop function goes to the other end of the highlighted text, the equivalent of `o' for vim visual mode.

Add binding to the swap-selection-start-stop function, `o' when in visual
mode.

Document swap-selection-start-stop, begin-selection, end-selection, kill-selection.
2016-03-20 19:22:04 -07:00
Federico Ferri
879ee61a30 fix w, e (with a trick to cope with big-words) 2016-03-20 19:17:15 -07:00
Kurtis Rader
c2f1df1d4a fix handling of non-ASCII chars in C locale
The relevant standards allow the mbtowc/mbrtowc functions to reject
non-ASCII characters (i.e., chars with the high bit set) when the locale
is C or POSIX.  The BSD libraries (e.g., on OS X) don't do this but
the GNU libraries (e.g., on Linux) do. Like most programs we need the
C/POSIX locales to allow arbitrary bytes. So explicitly check if we're
in a single-byte locale (which would also include ISO-8859 variants)
and simply pass-thru the chars without encoding or decoding.

Fixes #2802.
2016-03-20 18:47:38 -07:00
Kurtis Rader
fb0921249f add \r equivalent binding
Add a binding that was overlooked by commit
d65c63322e.

Fixes #2834
2016-03-20 12:08:46 -07:00
Cody Frazer
1828def866 Add --no-index option completion for git diff 2016-03-20 10:10:51 -05:00
Fabian Homborg
dedc7f6f03 Fix acpi check in nim prompt 2016-03-20 12:20:39 +01:00
Fabian Homborg
de0349399c robbyrussell prompt: Check for git/hg existence
Fixes #2826
2016-03-20 12:17:00 +01:00
Kurtis Rader
b1b2698a84 Merge branch 'master' of github.com:fish-shell/fish-shell 2016-03-18 15:54:13 -07:00
Owen Richardson
9f0417b587 make alt-L output respect multi-line prompts
Fixes #718
2016-03-18 15:53:29 -07:00
David Adam
03460a3928 env_universal_common: use uid_t in geteuid checks
The u_int typedef fails to compile on all platforms (e.g. Windows). It
is part of the code imported from tmux.

Update it to the SUS-standard uid_t.

Closes #2821.
2016-03-18 15:53:29 -07:00
David Adam
19c13c72f6 env_universal_common: use uid_t in geteuid checks
The u_int typedef fails to compile on all platforms (e.g. Windows). It
is part of the code imported from tmux.

Update it to the SUS-standard uid_t.

Closes #2821.
2016-03-18 11:47:45 +08:00
Andreas Nordal
f20e8420a8 parse_execution.cpp: Remove line continuations
My IDE (Kdevelop 4.7.3) didn't tackle them.
2016-03-17 16:37:52 -07:00
Jeff Kowalski
a7012648fe Improve error handling around fchown
Address the feedback from the prior commit:
- Change the sense of return value testing to match more common
comparison idiom
- Test result of fchmod as well as fchown
- Change sense of return value testing around wrename as well
- Include errno where possible in error message
2016-03-12 12:26:01 -08:00
Jeff Kowalski
46b9f263ac Handle return values from fchown
The function fchown is annotated with warn_unused_result.  As
formerly used in the code, it would emit a compiler warning
```warning: ignoring return value of ‘fchown’, declared with
attribute warn_unused_result [-Wunused-result]```

This commit notes the return value and emits appropriate error/logging
messages if the call fails, creating more traceable results and
satisfying the compiler.
2016-03-12 11:21:52 -08:00
lordlycastle
540bdfcb02 date and uniq completions for OS X. 2016-03-12 13:57:37 +01:00
Fabian Homborg
6288f89bf9 Move code in etc/config.fish to share/config.fish
instead add a bit of information on how fish's configuration works for
the admin to etc/config.fish.

This means that fish is fully functional without /etc, which might be nice for "stateless" systems.
2016-03-09 13:07:04 +01:00
Kurtis Rader
6a16bdb808 assume getopt/getopt_long is available
There is no longer a good reason to detect whether or not getopt_long()
is available. All UNIX implementations we're likely to run on have it. And
if we ever find one that doesn't the right thing to do is not fallback to
getopt() but to include the getopt_long() source in our package like we
do with the pcre2 library. Since it's licensed under LGPL we can legally
do so if it becomes necessary.

This partially addresses issue #2790.
2016-03-08 13:38:57 -08:00
Fabian Homborg
5e09411340 Document more bind functions
Fixes #2534 as backward-kill-path-component is now documented.
2016-03-06 15:23:55 +01:00
David Adam
f4c14b69a2 Update dpkg completions to complete commonly used options
Closes #2798.
2016-03-06 21:29:09 +08:00
David Adam
b4b52b8234 Don't set locale to en_US.UTF-8 unconditionally.
This is an unwise assumption, both for en_US and UTF-8; the fallback C
locale should be used instead.
2016-03-06 19:29:35 +08:00
David Adam
ed4b78918a fish.spec: dependency on net-tools/hostname depending on platform
Closes #2190.

[ci skip]
2016-03-06 19:24:19 +08:00
ridiculousfish
6bee85fefa expand_string should not return any results on error
Fixes #2796
2016-03-05 21:50:05 -08:00
ridiculousfish
a37d4d809e Save a few string allocations when importing environment variables 2016-03-05 19:07:00 -08:00
ridiculousfish
3044697baa Prefer the first, not last, of any env var duplicates
If envp contains duplicate environment variables, use the
first value, not the last value. Fixes #2784.
2016-03-05 19:02:50 -08:00
ridiculousfish
1e7c3fe709 A few fixes suggested by Coverity Scan 2016-03-03 18:49:24 -08:00
Fabian Homborg
333415f42a Fix stylistic nit in glob documentation
The test is unnecessary.
2016-03-03 10:30:53 +01:00
ridiculousfish
e3968ba872 Remove "w/o Background Color" text from Set Theme button in fish_config
This is important information but the Set button is the wrong place to
put it.
2016-03-02 15:02:28 -08:00
ridiculousfish
58d56f91f3 Tweak UTF8 decoding interface
Previously, when decoding UTF-8, we would first run through the
array to compute the correct size, then allocate a buffer of that size,
then run through the array again to fill the buffer, and then copy it
into a std::wstring. With this fix we can copy it into the string
directly, reducing allocations and only requiring a single pass.
2016-03-02 11:24:23 -08:00
Fabian Homborg
0e8a8a7c80 Migrate abbrs from =-separated to space-separated
We silently upgrade existing abbreviations and change the separator when
saving.

This does not yet warn when the user is using the old syntax.

Resolves #2051
2016-03-02 10:59:12 -08:00
Fabian Homborg
fbd53f2da1 Check ssh's KnownhostsFiles in print_hostnames
These are an additional source of information

Thanks to @sysbot (#2313) for the inspiration.

This also stringifies the ssh_config reading
2016-03-02 15:16:52 +01:00
Fabian Homborg
65aeaab054 print_hostname: Avoid matches in fstab comments harder 2016-03-02 15:16:52 +01:00
Fabian Homborg
94c12d84e2 Stringify reading nfs in print_hostnames 2016-03-02 15:16:52 +01:00
Fabian Homborg
a5f5e6c1ef Ignore zero-ips in print_hostnames
This would be a lot of useless options for those who block via hosts.
2016-03-02 15:16:42 +01:00
Jaime Marquínez Ferrándiz
61fd8b9861 history.fish: Fix input handling
Pass the input to 'string', it was accidentally removed in fcdc6a48c0.
2016-03-02 14:26:10 +01:00
Kurtis Rader
f2246dfb34 reduce number of Unicode private-use characters
This narrows the range of Unicode codepoints fish reserves for its own
use from U+E000 thru U+F8FE (6399 codepoints) to U+F600 thru U+F73F (320
codepoints). This is still not ideal since fish shouldn't be using any
Unicode private-use codepoints but it's a step in the right direction.

This partially addresses issue #2684.
2016-02-28 18:36:34 -08:00
Fabian Homborg
b41b962336 Clarify example in $PATH tutorial
See #2777
2016-02-29 00:12:26 +01:00
Fabian Homborg
5446841069 Ditch __fish_sgrep in obnam completions 2016-02-28 18:07:57 +01:00
Fabian Homborg
60bd3c809a Try to clarify test documentation for newbies
See #2773
2016-02-28 17:52:42 +01:00
Fabian Homborg
fb5a8a089e Use command which in type
Turns out some shells will alias which to be something function-aware,
but doing this on fish would blow up because it would call type which
would then call which which would then call type....

Fixes #2775
2016-02-28 12:12:13 +01:00
ridiculousfish
9151ec7092 Eliminate narrow_string_rep_t
This was used to cache a narrow string representation
of commands, so that if certain system calls returned errors
after fork, we could output error messages without allocating
memory. But in practice these errors are very uncommon, as are
commands that have wide characters. It is simpler to do a best-effort
output of the wide string, instead of caching a narrow string
unconditionally.
2016-02-28 01:38:28 -08:00
ridiculousfish
3633c51ad8 Re-use the parse tree generated during error detection for execution
Prior to this fix, read_ni would use parse_util_detect_errors
to lint the script to run, and then parser_t::eval() to execute it.
Both functions would parse the script into a parse tree. This allows
us to re-use the parse tree, improving perfomance.
2016-02-28 00:44:20 -08:00
ridiculousfish
e3970f9cbb Allow parse_execution_context to take ownership of a parse tree
Introduces a new template moved_ref which is like an rvalue reference.
This allows passing around objects while being explicit that the
receiver may acquire ownership. This will help reduce some allocations.
2016-02-28 00:33:11 -08:00
ridiculousfish
077757a30b Add missing #include guards in FISH_PAGER_H 2016-02-27 20:04:57 -08:00
ridiculousfish
211d626152 Remove unused MESS_SIZE define 2016-02-27 19:46:28 -08:00
ridiculousfish
e8aab9183e Remove some unnecessary statics and a silly #define const 2016-02-27 19:45:43 -08:00
ridiculousfish
10f3ea0008 Mark a bunch of constructors as explicit
This prevents undesired implicit conversions
2016-02-27 19:38:15 -08:00
ridiculousfish
88a785e321 Make expand_argument_list a static function
It doesn't use any properties of parser_t
2016-02-27 18:40:54 -08:00
ridiculousfish
d628fe0dea Eliminate parser_t::show_errors
Errors are now unconditionally shown
2016-02-27 18:37:59 -08:00
ridiculousfish
cbd3fa6b01 Eliminate parser_type_t
It was never fully implemented and wasn't used for anything
2016-02-27 18:25:58 -08:00
ridiculousfish
584cca59bf Allow -w option as short for --wraps in define_function
Fixes #2772
2016-02-27 17:47:23 -08:00
ridiculousfish
6cb48c6380 Allow variable completion from just a $
Previously there had to be some variable text, now you can
tab complete from just a naked $.
2016-02-27 16:51:44 -08:00
ridiculousfish
99be3ee96f Save a few allocations in src/parse_execution.cpp 2016-02-27 16:51:32 -08:00
ridiculousfish
c1c35e0f21 Fix a subtle problem that caused lots of unnecessary memory allocation 2016-02-27 16:51:28 -08:00
Kevin Ballard
d8a497434f Rewrite __fish_urlencode to not encode valid characters
Much better to only encode the characters that are not URL-safe. This
also doesn't involve any forking, and it even handles newlines and NULs
in the input.
2016-02-27 00:14:52 -08:00
Kevin Ballard
211829c586 Remove share/config.fish from .gitignore
This is a file under version control, there's no reason it should be
listed here. Having it in .gitignore was causing tools like `ag` to
avoid looking at share/config.fish.
2016-02-26 21:14:16 -08:00
Kevin Ballard
2bb7c587f4 Skip over /etc/paths.d entries that don't exist
I had an old /etc/paths.d/TeX file that listed a path /usr/texbin that
doesn't exist anymore. This was causing the `set PATH` to print a
warning.
2016-02-26 20:26:24 -08:00
Kevin Ballard
2187c0a84b Standardize indentation in config.fish 2016-02-26 20:22:59 -08:00
David Adam
c359d28b21 README updates
[ci skip]
2016-02-26 21:46:48 +08:00
Fabian Homborg
c1b384e5d3 Add functions and configuration snippets hierarchy
This allows "vendors" (i.e. third-party upstreams interested in
supporting fish) to add auto-loaded functions and eager-loaded
configuration "snippets", while still allowing both the user and the administrator to
fully override all of that.

This has been inspired by systemd's configuration hierarchy, and implements a similar scheme
whereby files with the same name in higher-ranking directories override files in lower-ranking ones.

Fixes #1956
2016-02-26 12:14:55 +01:00
Kurtis Rader
8b67a1b26f make testing on local servers hermetic
I noticed while fixing issue #2702 that the fish program being tested
was sourcing config.fish files outside of the current build. This also
happens when Travis CI runs the tests but isn't an issue there because
of how Travis is configured to execute the tests.

I also noticed that running `make test` was polluting my personal fish
history; which will become a bigger problem if and when the fishd universal
var file is moved from $XDG_CONFIG_HOME to $XDG_DATA_HOME.

This change makes it possible for an individual to run the tests on
their local machine secure in the knowledge that only the config.fish and
related files from their git repository will be used and doing so won't
pollute their personal fish history.

Resolves #469
2016-02-25 17:16:36 -08:00
Aaron Gyes
c79ade9627 Send BEL to terminal to flash/beep while trying to complete something not completeable. 2016-02-25 08:18:27 +08:00
David Adam
d61e95e4f9 Makefile: enable maintainer mode for PCRE2
Closes #2469.
2016-02-24 18:14:41 +08:00
David Adam
68807f274e github: add issues template
[ci skip]
2016-02-24 16:06:26 +08:00
Fabian Weisshaar
a805d401b8 add completions for diskutil (osx) 2016-02-23 13:54:46 +01:00
Adam Dymitruk
2f52f073da Update index.hdr.in
simple grammar correction
2016-02-22 13:36:35 -08:00
Steve Stagg
c4cc9f9b8d add files for the fish logo as used for the fish-shell stickers 2016-02-22 12:27:39 -08:00
ridiculousfish
6c401bc587 Resume sorting completions from wildcard expansions
Ought to fix the wildcard expansion test on Linux
2016-02-22 03:37:39 -08:00
ridiculousfish
35160db268 Remove an unused variable 2016-02-22 03:37:03 -08:00
Michael Steed
5b0996fd80 make fish compatible with pcre2 10.21
pcre2_substitute() now sets the output buffer length to PCRE2_UNSET (~0)
if the output buffer is determined to be too small. This change keeps
track of the buffer size separately where pcre2 can't touch it.

A better fix would be to let pcre2 tell fish what size buffer it needs.
This can be done with PCRE2_SUBSTITUTE_OVERFLOW_LENGTH, but this
requires pcre2 10.21 or later (released January 12), which may be too
new to introduce as a dependency at this point.

Fixes #2743
2016-02-21 19:32:08 -08:00
Fabian Homborg
585c03db72 docs: Remove duplicate color variable listing 2016-02-21 13:58:15 +01:00
Aaron Gyes
613739ba07 Try to just see if grep is happy with --color=auto, or not, as the --help exit status varies in BSD vs. GNU. 2016-02-20 21:11:40 +01:00
ridiculousfish
947f659f96 Miscellaneous cleanup and dead code removal
Noticed by cppcheck
2016-02-19 15:45:31 -08:00
Fabian Homborg
8703c5bc00 Add fish_color_autosuggestion to docs
Fixes #2741.
2016-02-19 15:20:34 +01:00
ridiculousfish
43e1c0a2bf Remove some newly dead code
out_suggested_cdpath is no longer required from is_potential_path
2016-02-18 17:00:26 -08:00
ridiculousfish
99e18d9cef Remove autosuggest_suggest_special 2016-02-18 17:00:26 -08:00
ridiculousfish
718d9baead Implement the cd "unique hierarchy" autosuggestion in expand.cpp 2016-02-18 17:00:26 -08:00
ridiculousfish
e2f4584220 Teach tests about changes to special autosuggestions 2016-02-18 17:00:26 -08:00
ridiculousfish
4138073a2f Always env_set_pwd after chdir in the fish tests
This avoids confusion between getcwd() and $PWD
2016-02-18 17:00:26 -08:00
ridiculousfish
1907323afc Additional work on unifying cd autosuggestions with complete 2016-02-18 17:00:26 -08:00
ridiculousfish
c39b94949b Complete to take a pointer to output completions, not a mutable ref 2016-02-18 17:00:26 -08:00
ridiculousfish
31bc88d16f Migrate sort_and_prioritize to complete.cpp 2016-02-18 17:00:26 -08:00
ridiculousfish
5dbf40ca75 Switch autosuggest_suggest_special to returning a completion_t 2016-02-18 17:00:26 -08:00
ridiculousfish
2d68b25025 Early work towards moving the cd special autosuggestion into completions
This will simplify some code and make the cd autosuggestion smarter
2016-02-18 17:00:25 -08:00
Jak Wings
1767681f9a Fix the file URL for Terminal.app
* When using a UTF-8 locale, set locale to C temporarily in order to
  read one byte at a time.
* Use the builtin printf in a forward-compatible way. (GNU)
* Improve the readability of the code.
2016-02-16 21:49:58 -08:00
Aaron Gyes
0395c33982 Stop always returning STATUS_BUILTIN_ERROR on --merge. 2016-02-16 12:06:50 -08:00
Kurtis Rader
83d3c9fc04 fix flakey test
I've run this more than twenty times through Travis CI (by adding/removing
a comment line). Without this tweak the longest sequence seems to be
around six successful runs.
2016-02-16 11:40:40 -08:00
ridiculousfish
c184c1a81a Correctly handle --merge in the history.fish function
Previously --merge happened to work, but only because it was
smuggled in through the 'print' command
2016-02-16 11:34:36 -08:00
Aaron Gyes
31a617408f Fix typo 2016-02-16 05:14:33 -08:00
Aaron Gyes
a6565bbea8 Fix --merge hitting a case 2016-02-16 05:09:54 -08:00
ridiculousfish
81cdceddd3 Remove a debug() guarded by a surprising get_is_interactive
get_is_interactive can crash if proc_init has not been called.

Fixes #2280
2016-02-16 01:51:27 -08:00
ridiculousfish
5b506499c1 Use contains instead of string ==
Fix a few typos too
2016-02-15 13:27:00 -08:00
Andreas Nordal
62b76b26b4 Reinstate failglob behaviour for most commands
Expand globs to zero arguments (nullglob) only for set, for and count.

The warning about failing globs, and setting the accompanying $status,
now happens regardless of mode, interactive or not.

It is assumed that the above commands are the common cases where
nullglob behaviour is desirable.
More importantly, doing this with `set` is a real feature enabler,
since the resulting empty array can be passed on to any command.

The previous behaviour was actually all nullglob (since commit
cab115c8b9), but this was undocumented;
the failglob warning was still printed in interactive mode,
and the documentation was bragging about failglob behaviour.
2016-02-15 13:13:28 -08:00
Sunguk Lee
b72837a0f4 Improve __fish_print_users
Patch from `__make_users_completions` of killall command completion
2016-02-15 19:31:20 +09:00
Sunguk Lee
c4f702b7c4 Fix No command 'dscl' found error of killall command
`dscl` command have OSX system, to change `__fish_print_users`
2016-02-15 19:30:58 +09:00
Fabian Homborg
00cd01c89e Soften abbr-in-config.fish wording
This isn't as necessary anymore and having abbrs in config.fish is nice
for e.g. storing it in git.
2016-02-13 17:08:19 +01:00
Fabian Homborg
eb0d18add4 Rewrite abbr.fish to not call seq
This speeds up adding new abbrs by about 50 to 60% - from 2.3s to 1s for
100 abbrs.
2016-02-13 17:08:19 +01:00
Fabian Homborg
585bdf45c8 abbr: Bail early when the abbr already exists
This speeds up the common case of `abbr -a` calls in config.fish by
about 90% - from 900ms to 90ms for 100 calls.
2016-02-13 17:08:19 +01:00
Gordon Tyler
89206d8654 Fix user browser for help in Cygwin
Fixes the invocation of a user-specified browser by the `help` command on Cygwin.

- Use `cygstart` to launch the browser with escaped quotes to avoid problems with spaces in the path to the browser, (e.g. Program Files).
- Use `cygpath` to convert the base help dir to a Windows path before constructing the fie URL to pass to the browser.
2016-02-12 23:53:17 +01:00
Spittie
a00e26b109 Fix package listing for zypper
-E is only supported by BSD sed, switch to -r which is also supported
by GNU sed
2016-02-12 23:00:40 +01:00
David Adam
de17bdb130 travis: 'encrypt' notification configuration
The values for notification hooks remain available as comments, but this
prevents notifications from other repositories from automatically being
linked across to the official notification channels.
2016-02-11 23:06:21 +08:00
ridiculousfish
3345f5d0d0 Remove an unnecessary typecast 2016-02-10 11:38:05 -08:00
ridiculousfish
28837a8b30 Remove a stale comment about const 2016-02-10 11:37:26 -08:00
Jon Eyolfson
96e688ea91 Remove const from _wgetopt_internal's argv argument
The argv argument may be modified on calls to exchange within the function and should not be const qualified (it's not true from the caller's point of view).
2016-02-10 11:35:47 -08:00
Fabian Homborg
52f8707c3e Use string split in export.fish
It's a bit more explicit than replace.
2016-02-10 20:33:43 +01:00
Fabian Homborg
b6e058985b Fix "replacement string too large" error in pacman completion
Turns out we can skip using string altogether, thanks to the magic of
the cartesian product.
2016-02-10 15:35:01 +01:00
Andy Lutomirski
bc9e3c7546 fish_tests: Explicitly cast -2 to wchar_t
On arm, wchar_t is unsigned, and C++11 and newer disallow implicit
narrowing conversions inside braces.  Use an explicit conversion to
fix the build on GCC 6 and up, which defaults to C++11.
2016-02-08 13:48:28 -08:00
Fabian Homborg
57fcbecb41 Improve __fish_print_service_names
- Reuse systemd completion functions
- Remove a fork
- Fix #2715 - FreeBSD
- Comments
2016-02-07 14:53:12 +01:00
ridiculousfish
c4d0612e5c Factor expand_string into multiple stages
Breaks up a big ugly function into separable stages
with a common interface.
2016-02-05 01:22:46 -08:00
ridiculousfish
992dfcc4ce expand_string to return an enum instead of int 2016-02-05 00:00:38 -08:00
ridiculousfish
1e6492ef93 Bits of cleanup of expand_string
Remove some unnecessary variables, make some things not pointers
2016-02-04 23:57:21 -08:00
ridiculousfish
4c5aa8860a Update bind.expect for travis-CI
Travis-CI runs with clang ASAN enabled, which makes fish slow enough
that certain timing tests fail. Sleep a little so that fish can
catch up.
2016-02-04 16:33:02 -08:00
Fabian Homborg
adc3b0e122 eselect completion: Silence eselect php output
The version with the features we use isn't in gentoo stable yet and
older versions print a very ugly warning.
2016-02-04 23:31:32 +01:00
Elis Axelsson
29d06760bc Update eselect completions to work for the php-module
refs #1131
2016-02-04 23:30:06 +01:00
ridiculousfish
218843b9e4 Simplify escape character documentation in doc_src/bind.txt 2016-02-04 14:18:12 -08:00
ridiculousfish
25ad8866c9 Merge change for lengthened and configurable escape key timeout 2016-02-04 13:56:49 -08:00
Kurtis Rader
2646d51a0b change default escape timeout
This changes the default escape timeout for the default keybindings (emacs
mode) to 300ms and the default for vi keybindings to 10ms.

I couldn't resist fixing a few nits in the fish_vi_key_bindings.fish file
since I was touching it to set the escape timeout.
2016-02-04 13:39:19 -08:00
Kurtis Rader
e88bfbc440 incorporate suggestion by @oranja 2016-02-04 13:39:19 -08:00
Kurtis Rader
4e465ee04c make travis-ci happy again 2016-02-04 13:38:55 -08:00
Kurtis Rader
1d446b74ff when sourcing config.fish do not redirect stderr
All versions of fish prior to this change silently discarded anything written
to stderr while source a config.fish file. Apparently just to avoid having
the source command display an error if the file did not exist. This can mask
real problems. So instead this change explicitly checks whether the file is
readable and silently skips sourcing it if it isn't.

Resolves issue #2702.
2016-02-04 12:52:50 -08:00
ridiculousfish
dae0f63e5b Prefer special autosuggestions to match case
Fixes #2672
2016-02-04 12:46:52 -08:00
ridiculousfish
0779c89a65 Autosuggestions to follow same prioritization as tab completions
Partial fix for #2672
2016-02-04 12:46:51 -08:00
Fabian Homborg
b908d0b89b Another stringification (__fish_complete_command) 2016-02-04 13:53:55 +01:00
Fabian Homborg
cadb5d51ea Replace tr invocations 2016-02-03 23:47:46 +01:00
Fabian Homborg
fcdc6a48c0 Stringify history.fish 2016-02-03 23:45:54 +01:00
Fabian Homborg
16aa0b93e9 Stringify __fish_complete_lpr_option 2016-02-03 23:26:41 +01:00
Fabian Homborg
158ea98189 Replace uses of expr with math/string 2016-02-03 23:23:59 +01:00
Fabian Homborg
962f9914c6 Stringify trap 2016-02-03 23:23:04 +01:00
ridiculousfish
df8c4ce835 Use vector instead of deque in input_function_push_args
deque is a memory hog last I checked
2016-02-02 18:13:40 -08:00
ridiculousfish
1b8face1a3 Fix t-binding test for new escape behavior 2016-02-02 18:13:08 -08:00
ridiculousfish
b4a44deb7b Merge branch 'fix-jump' of git://github.com/cpick/fish-shell into cpick-fix-jump 2016-02-02 17:00:27 -08:00
ridiculousfish
60a477a303 Don't crash when autosuggesting cd'ing into a directory with ~
Fixes #2696
2016-02-02 16:47:39 -08:00
ridiculousfish
f8da754884 Work around some bogus static analyzer warnings 2016-02-02 15:39:46 -08:00
Fabian Homborg
1688b2384f pacman: Stringify 2016-02-02 09:48:55 +01:00
Fabian Homborg
0c94c2b9e8 pacman: Remove outdated "$argument" hack
This doesn't seem to speed up anything.
2016-02-02 09:48:26 +01:00
Fabian Homborg
d3f6c8a694 pacman: Improve --files completion
Missed one option and the option-as-command-hack
2016-02-02 09:47:44 +01:00
Fabian Homborg
e086e27f98 Update pacman/makepkg completions for pacman 5
Some new options, one new operation - "--files".
2016-02-02 09:23:23 +01:00
ridiculousfish
2f5d750393 Remove autoconf and lexicon_filter instructions from OS X build
Most OS X users will not have autoconf or Doxygen installed.
2016-01-30 00:18:11 -08:00
Kurtis Rader
b88e31b3f1 fix several build warnings
This fixes all but one of the warnings documented in issue #2685. The
sole remaining warning is from the

    string split '' abc

example in doc_src/string.txt. That example results in the man page
displaying

    string split {} abc

I leave it to someone else to fix that problem (I'll open an issue
specifically for it since it took some effort to track down the source
of the warning).

Resolves issue #2685.
2016-01-28 19:34:51 -08:00
Fabian Homborg
7c4f553acc Better document that binds in config.fish don't work
Fixes #230
2016-01-24 14:32:43 +01:00
Fabian Homborg
4eb6aaf36f Document that appending to universal variables in config.fish is not a
good idea

Fixes #2058.
2016-01-24 14:32:43 +01:00
Fabian Homborg
08edfaeae8 Document gitter channel and SO tag 2016-01-24 14:32:43 +01:00
Fabian Homborg
8081e9f189 Document that abbrs should be added once
While abbrs are still stored in a universal variable, it's much quicker
to just add them once and not just put `abbr --add key value` in config.fish.
2016-01-24 14:32:43 +01:00
Kurtis Rader
0dac245b58 document the escape timeout 2016-01-21 20:22:25 -08:00
Dan Martinez
c7ba446c23 Add support for brew's desc subcommand 2016-01-21 15:01:18 -08:00
Fabian Homborg
4b2495f28f Skip greeting on empty variable
It used to be that way and we recommend `set fish_greeting` (i.e. set to
empty) in the docs - possibly since we check if the variable is defined
on upgrade.
2016-01-18 21:56:59 +01:00
Kurtis Rader
11785c2bf4 make bind unit tests more robust on travis-ci
My previous commit failed in the travis-ci environment despite passing on my
local computer. This appears to be due to expect timing out looking for the
expected input. See if increasing the expect timeout slightly fixes the
problem.
2016-01-17 19:14:54 -08:00
Kurtis Rader
4b9fece9f4 allow configuring the escape delay timeout
Introduce a "fish_escape_delay_ms" variable to allow the user to configure the
delay used when seeing a bare escape before assuming no other characters will
be received that might match a bound character sequence. This is primarily
useful for vi mode so that a bare escape character (i.e., keystroke) can
switch to vi "insert" to "normal" mode in a timely fashion.
2016-01-17 17:45:30 -08:00
ridiculousfish
766176443d Clean up completion removal
Rather than passing a triple of short, long, is_old, pass an option
as a string and then a type
2016-01-16 22:42:14 -08:00
ridiculousfish
3552d073f6 Mark a bit of code as unreachable 2016-01-16 16:03:09 -08:00
ridiculousfish
49d3042bd3 Simplify locking in complete.cpp 2016-01-16 16:00:57 -08:00
ridiculousfish
701d141109 Clean up complete_entry_opt_t
Rather than storing short and long options separately, using
a complicated set of invariants, store them in a single string
and use an explicit type complete_option_type_t to track how they
are interpreted.
2016-01-16 15:46:43 -08:00
ridiculousfish
870593e345 Remove short_opt_str from completion_entry_t
This was a "cache" of dubious value that was also very confusing.
The idea was to express in one place all of the short options that
were allowed for a command, in a big string.  But it's simpler to
just construct that on-demand by walking the list of
complete_entry_opt_t.
Also remove some other dead code as part of cleanup.
2016-01-15 17:27:02 -08:00
ridiculousfish
5cf0e918b0 Clean up short_ok in completions
Preparing to remove short_opt_string
2016-01-15 17:14:44 -08:00
ridiculousfish
d7f38a0802 Tweak language and styling of background color text in fish_config 2016-01-14 23:16:34 -08:00
Kurtis Rader
a77ce393ba respond to feedback 2016-01-14 22:34:25 -08:00
Kurtis Rader
f8ed1d182e improve set_color and theme color documentation
This is meant to make it clear that fish cannot control the terminal
window background color. It also augments the set_color documentation to
describe how it decides which color the terminal can display.

Resolves #2421.
Resolves #2184.
2016-01-14 22:34:25 -08:00
Fabian Homborg
68fcb790b0 Add all boolean values to pacmd completion
PA accepts "0", "false" and "off" (among others) for false also for suspend-*.
2016-01-14 23:33:31 +01:00
Fabian Homborg
8db1a5fae7 Add completions for Pulseaudio's pacmd
To implement this mostly as a wrapper around pactl, we add the list of
commands for this to that. It's 90% the same anyway. (This means that
`pactl suspend ` will complete files instead of commands like `pactl
banana ` would, but neither is correct)
2016-01-14 23:31:17 +01:00
Fabian Homborg
6bf70c86d2 Only complete unloaded modules for pactl load-module
This now officially does more than the official bash completion!
2016-01-14 22:36:50 +01:00
Fabian Homborg
b7d98fa873 Add profiles and ports completion to pactl
This is now on par with the official bash completions.
2016-01-14 22:21:50 +01:00
Fabian Homborg
daafe4ef37 Add completion for pulseaudio's pactl 2016-01-14 21:21:54 +01:00
Fabian Homborg
ed1919b266 abbr: Ensure we don't split on "=" if the given separator is " "
This fails on e.g. an abbr that uses `env a=b`, like the included test demonstrates.

Unfortunately it decreases the speed again (2s vs 2.2s vs 4s original),
but correctness is more important.
2016-01-14 16:58:29 +01:00
Fabian Homborg
fdb2559425 abbr tests: Don't expect quoted "--*"
This doesn't seem necessary given we already prefix it with "--".

If this is backed out, the part about using string escape also needs to be removed.
2016-01-14 16:58:29 +01:00
Fabian Homborg
ac545940de Optimize and modernize abbr
- Replace __fish_abbr_escape with `string escape`

- Don't double-parse the key

- Replace IFS magic with string

Together, this seems to speed it up by a factor of about 2.
2016-01-14 16:57:07 +01:00
Fabian Homborg
7a8cbcda06 Disable 24bit-color on neovim's terminal
Unfortunately, nvim will, even when running in a terminal that supports
it, swallow the sequences whole, rendering the displayed text _white_.

This means falling back to 256 colors is the lesser evil as at least a
blue-ish color will display as blue while a red-ish will be red, instead
of both showing white.

nvim's behavior does _not_ change depending on
$NVIM_TUI_ENABLE_TRUE_COLOR or any other option I could find and neovim-qt
exhibits the same behavior.

Fixes #2600.
2016-01-14 15:17:49 +01:00
Fabian Homborg
8e79da3b2d Fix typos
Fixes #2673.
2016-01-12 00:08:41 +01:00
Kevin Ballard
1dac0041d5 Stop unescaping strings with commandline -b
The fix for #2075 inadvertently started unescaping the strings emitted
from `commandline -b`. Only strings emitted with the `-o` flag are
supposed to be unescaped.

Fixes #2210.
2016-01-10 17:25:22 -08:00
Fabian Homborg
43728fe7a0 Add missing newline to swedish translation
Jäg alskar sverige!
2016-01-10 16:11:24 +01:00
Fabian Homborg
e1f988b987 Fix typos in index
Fixes fish-site#30.
2016-01-10 15:25:05 +01:00
Max Nordlund
03fe30a774 Updated some Swedish translations 2016-01-09 19:51:31 +01:00
Fabian Homborg
c56df11128 Add completions for kcmshell5
A tool to open KDE Plasma settings menus.
2016-01-09 18:58:03 +01:00
Fabian Homborg
6027eae1a1 Add completions for asp
A package information and build tool for archlinux, replacement for the
ageing "abs".
2016-01-09 18:58:03 +01:00
Fabian Homborg
bd482898d4 Simplify and stringify valgrind completions
These used _eval_ when a simple variable capturing would have sufficed.
2016-01-09 18:58:03 +01:00
Tom Smeding
4417a6ee34 Prevent line-full-of-spaces in s_reset
If you have a prompt preceded by a new line, you'll get a line full of spaces instead of an empty line above your prompt. This doesn't make a difference in normal usage, but copying and pasting your terminal log becomes a pain. This commit clears that line, making it an actual empty line.
2016-01-08 23:38:31 +01:00
Aurélien Deharbe
2a4f21cc92 Add completions for the haskell 'stack' build tool 2016-01-08 21:50:41 +01:00
Fabian Homborg
8cc213ed4f hg_prompt: Use string match -q instead of redirection 2016-01-08 14:10:03 +01:00
Fabian Homborg
4f519297dd Add new named colors to webconfig
The 'br' variants were added in 0a0acc8, but not to named_colors in
webconfig.py.

Fix this oversight.
2016-01-08 14:00:54 +01:00
ridiculousfish
4c4020babe Shorten some of the language in random docs 2016-01-07 20:57:34 -08:00
Kurtis Rader
ef31aa94f8 clarify the documentation of builtin random
The random builtin command may or may not produce values with a truly
random distribution. So make the documentation reflect that reality. Also,
make the command consistent with similar shells (e.g., bash, zsh) which
produce a range of [0..32767].

Resolves issue #1272.
2016-01-07 20:54:50 -08:00
ridiculousfish
bc3260402a Don't resolve paths for files run from argv
Before this change, `fish ./test.fish` would fully resolve the
relative paths and symlinks of test.fish, as reported by `status -f`.
However `source` would not. With this change, both cases return relative
paths. `realpath` may be used by scripts to resolve them.

Fixes #2643
2016-01-03 12:12:53 -08:00
ridiculousfish
c5ed4e5cdf Pass a struct stat by const reference instead of by value 2016-01-03 12:12:42 -08:00
Nathan Zadoks
92d0d98a24 Pass the full argv to the NixOS command-not-found handler
This patch is currently floated from the NixOS side as part of
https://github.com/NixOS/nixpkgs/pull/12000, but prior versions of the
hook ignore anything but the first argument anyway, so this is
backwards-compatible.
2016-01-03 14:32:12 +01:00
Kevin Ballard
23fabf81d7 Tweak complete docs again
* Add a note to the `--wrap` docs saying that wrapping only works when
  specifying completions for commands, not for paths.
* Add more info about how `--arguments` is handled.
2016-01-01 19:54:21 -08:00
Kevin Ballard
19112980ee Update the docs for complete
* Indicate which options can be repeated in the usage lines.
* Reorder the options in usage slightly to group better.
* Reorder the option descriptions to match the order as seen in usage.
* Update some of the option descriptions.
* Fix the documentation for -C to show that it must be `-CSTRING`
  instead of `-C STRING`.
* Document the behavior of `-C` with no argument.
* Tweak some of the explanatory text after the option list.
* Delete `--authoritative` and `--unauthoritative` from the
  documentation entirely. Those options appear to not actually do
  anything in the new parser.
2016-01-01 18:20:50 -08:00
Fabian Homborg
8eca775977 hg prompt: Throw away string match input
This would print redundant characters
2015-12-31 14:21:37 +01:00
Fabian Homborg
c3971957ac hg prompt: Fix indentation 2015-12-31 14:21:37 +01:00
Fabian Homborg
9a7b2b190b hg prompt: Make display slightly nicer
The "/" between branch and bookmark might be mistaken for a path.

Parens (like the git prompt) make it look a bit more like a unit.
2015-12-31 14:21:37 +01:00
Fabian Homborg
6f2f0cfce2 Optimize hg prompt
Mainly replace hg calls since python is slow to start.
2015-12-31 14:21:37 +01:00
Fabian Homborg
3a249bb549 Include mount helpers in filesystem completion
Probably not a thing on OSX, but this should print nothing then.

On linux, it helps detect e.g. ntfs-3g.
2015-12-30 19:02:03 +01:00
Fabian Homborg
1a12071a48 Immediately define command-not-found handler
This skips the weird dance where we'd define a simple handler and then
later overwrite with a fancier one, once the first event came in.

It turns out that isn't necessary, as it doesn't actually improve
startup speed because the checks needed to define fancier handlers are fast.

In case we are non-interactive, still define the simple handler, and
keep the default handler for users to switch to.
2015-12-30 16:26:54 +01:00
Fabian Homborg
b7fb11cb7f git completion: Complete commits for all branches 2015-12-30 16:26:28 +01:00
Maxim Gonchar
95c30f7a23 Use \$ and \^ instead of their unicode codes 2015-12-30 12:49:44 +01:00
Maxim Gonchar
d5fe5c02a8 Update visual vi key bindings
* Add home/end, $/0 keys
* Add (c)hange key
* Add j/k keys for up/down
2015-12-30 12:49:44 +01:00
Fabian Homborg
759b45ad79 Remove temporary set_default function
This could potentially delete a user-defined set_default on first start.

It's also trivially done with set -q var; or set -U var val.
2015-12-30 12:49:44 +01:00
ridiculousfish
1363c7468d "Stop" should be "stomp" in fish.cpp comment 2015-12-29 16:39:28 -08:00
Fabian Homborg
834ebef53c Simplify greeting
We have already confirmed we're interactive, and `echo` is a builtin now.
2015-12-29 15:58:48 +01:00
Botond Erdos
bb932a0a0a adds dnf completions for package installs
Since dnf accepts the same arguments as yum, just inherit.
2015-12-29 14:48:09 +01:00
lordlycastle
f23c2beb61 Fixed kill-signals completion. Added completions for OS X kill command.
Don't generate killall completions when running on Solaris OS - `killall` there literally kills all processes.
2015-12-28 12:54:13 +01:00
ridiculousfish
994aba075d Remove some extra newlines from function error messages 2015-12-27 15:55:49 -08:00
Kurtis Rader
979b94e274 only swith to shell tty mode if interactive
My PR #2578 had the unexpected side-effect of altering the tty modes of
commands run via "fish -c command" or "fish scriptname". This change fixes
that; albeit incompletely. The correct solution is to unconditionally set
shell tty modes if stdin is attached to a tty and restore the appropriate
modes whenever an external command is run -- regardless of the path used to
run the external command. The proper fix should be done as part of addressing
issues #2315 and #1041.

Resolves issue #2619
2015-12-27 12:28:19 -08:00
ffdd
076ebf8cee Remove phone number. 2015-12-26 01:48:09 -05:00
Jannik V
6eea3992b3 Mention correct config file
While the tutorial explains how to set the `PATH` variable, it mentions the file `fish.config` but it should be `config.fish`.
2015-12-24 11:19:23 +01:00
Kurtis Rader
6969cfab3d fix unit tests related to the escape timeout 2015-12-23 21:41:48 -08:00
Bogdan Sinitsyn
1a3bcf63bc Add database completion for pacman 2015-12-23 20:33:57 +01:00
Kurtis Rader
814cb51eb5 improve handling of the escape character
Increase the delay between seeing an escape character and giving up on
whether additional characters that match a key binding are seen. I'm
setting the value to 500 ms to match the readline library. We don't need
such a large window for sequences transmitted by a terminal (even over ssh
where network delays can be a problem).  However, we can't expect humans to
reliably press the escape key followed by another key with an inter-char
delay of less than ~250 ms based on my testing and research. A value of
500 ms provides a nice experience even for people using "fish_vi_mode"
bindings as a half second to switch from insert to normal mode is still
fast enough that most people won't even notice.

Resolves #1356
2015-12-22 17:58:38 -08:00
Tobias Mühl
d6d3977f3d Update README.md
I also needed the autoconf package on my system, so adding it to the general template
2015-12-21 20:36:23 -08:00
Satender Singh Rathore
c9ddad94a9 double quote instead of single quote 2015-12-21 20:32:43 -08:00
ridiculousfish
172f1e1b5f getopt long_options to be const 2015-12-21 20:32:05 -08:00
Kurtis Rader
b257e79a07 simplify fish_parse_opt
While investigating issue #2619 my first thought was that the problem
had something to do with the "is_interactive_session" global variable.
That preliminary conclusion appears to be wrong (i.e., the problem
lies elsewhere). However, that hypothesis caused me to look at function
"fish_parse_opt" and other mentions of "is_interactive_session".

I decided to take the opportunity to simplify and improve the style of
"fish_parse_opt" since I just spent an hour reviewing the code that
references "is_interactive_session". For example, the "has_cmd" variable
isn't really needed. And there is inconsistent whitespace not to mention
confusion about bool's versus int's and zero versus NULL.
2015-12-21 20:07:18 -08:00
ridiculousfish
f029e04047 Update Xcode project settings 2015-12-19 18:10:45 -08:00
ridiculousfish
6aa2cbe807 Shave 4 bytes from parse_node_t
Bitfields ftw
2015-12-19 18:09:41 -08:00
ridiculousfish
ad72421b2c Don't define a function if there's an error in function's args
Fixes #2519
2015-12-19 18:03:46 -08:00
ridiculousfish
594b460ba2 Allow and/or statements to attach to the if/while header
For example:

  if false; or true; echo hello; end

will output 'hello' now.

Fixes #1428
2015-12-19 14:49:07 -08:00
ridiculousfish
0a6f62358b Write tests for new if/and/or behavior (#1428)
They fail for now.
2015-12-19 11:32:57 -08:00
ridiculousfish
8c707a4e2f Simplify parser implementation
Rather than returning a list of productions and an index,
return the relevant production directly from the rule function.

Also introduce a tag value (replacing production_idx) which tracks
information like command decorations, etc. with more clarity.
2015-12-19 11:17:13 -08:00
ridiculousfish
7188d94c1b Update osx/config.h for new ifdefs 2015-12-18 21:29:49 -08:00
Fabian Homborg
836b6bea73 git completions: Add commit hashes for show
That's probably the part where commit hashes are most used, we can add
the other subcommands later.

This generates a _lot_ of options, so hooking it up everywhere would be
unwise, though our pager helps quite nicely with filtering - typing
"Branch" will filter out the commits, and typing other things will
filter the subjects, which is quite cool.
2015-12-18 17:07:43 +01:00
Fabian Homborg
8a6f26ff9b Document prompt_pwd
Fixes #253
2015-12-17 15:25:13 +01:00
David Adam
7143512198 detect and provide fallback for backtrace_symbols_fd
Closes #2615 to fix includes on FreeBSD and provide fallback on Cygwin.
2015-12-17 20:36:33 +08:00
Fabian Homborg
5306fce16e mount completions: Support spaces in mountpoints
This turns '\040' into a space. /etc/mtab also supports other
escapes ("\\" for backslash, "\011" for tab), but I can't find
documentation for those in fstab.
2015-12-17 12:35:16 +01:00
Fabian Homborg
fb1a7d9d73 Port linux __fish_print_mounted to string
This adds a few escape sequences, but two out of the three are
theoretical and will fail a bit later.
2015-12-17 12:14:03 +01:00
Fabian Homborg
482cfca84f Make informative_git prompt use vcs_prompt -> Rename it to "Informative Vcs" 2015-12-16 19:05:28 +01:00
Fabian Homborg
e29d200ba5 Switch classic + git prompt to all vcsen -> Rename it to Classic + Vcs
Keep the variable names for now.
2015-12-16 19:05:28 +01:00
Fabian Homborg
43c7ababf9 Make lonetwin prompt use __fish_vcs_prompt 2015-12-16 19:05:28 +01:00
Fabian Homborg
baa6971a46 Add __fish_vcs_prompt helper function
This is supposed to be used by prompts so they'll get all known vcsen
integrated.

For now, there's no distinction between the different vcsen.
2015-12-16 19:05:28 +01:00
Fabian Homborg
aefe084124 Merge pull request #2607 from jakwings/doc
Improve documentations (see #354)
2015-12-16 16:35:17 +01:00
Kurtis Rader
c68f8f3418 restore the terminal modes before an "exec"
When replacing the existing fish process with a new process it is
important to restore the temrinal modes to what they were when fish
started running. We don't want any tweaks done for the benefit of fish
(e.g., disabling ICRNL mode) to bleed thru to an "exec"ed command.

Resolves #2609
2015-12-15 23:40:53 -08:00
David Adam
aa5291c6bd configure/docs: update sf.net to sourceforge.net
Closes fish-shell/fish-site#29

[ci skip]
2015-12-15 21:49:40 +08:00
Fabian Homborg
f045d9b143 Improve mount completion (now with blockdevices!)
This adds blockdevices (and directories) and fixes the regexes to no
longer include comments but include UUID= and LABEL=, which at least
util-linux mount understands.

It also shouldn't fail on systems without fstab any longer (like default OSX).

Fixes #2606.
2015-12-13 20:38:38 +01:00
Jak Wings
666dcd78ba Doc: Link Cartesian Product in tutorial to main documentaion. 2015-12-14 02:36:00 +08:00
Jak Wings
70ee7650f3 Doc: Introduce Cartesian Products on the main documentaion page. 2015-12-14 02:36:00 +08:00
Jak Wings
aa974b58bc Doc: Introduce another simple way to separate variable names from text.
This can avoid the confusion between brace expansion and the cartesian
product behavior of arrays, even if braces can help to do some hacks.
2015-12-14 02:36:00 +08:00
Fabian Homborg
6c8518dd10 Update vte cwd on launch
Fixes #2418
2015-12-12 12:22:08 +01:00
Fabian Homborg
346d918555 Delete upstreamed docker completions
A better version of these has been in an upstream release, so there's no
need to keep this around.
2015-12-12 12:13:05 +01:00
Fabian Homborg
8104854d5d Update makepkg completion
A few options were missing and --asroot has been removed
2015-12-11 12:19:30 +01:00
Tanner Bruce
b4b5c2188f Check that $XDG_RUNTIME_DIR is valid and accessible
Signed-off-by: David Adam <zanchey@ucc.gu.uwa.edu.au>
2015-12-11 15:02:36 +08:00
David Adam
a0eef2663a git completions: add missing description flags
Fixes syntax error introduced in 4280df3aa2.
2015-12-11 10:42:19 +08:00
Samantha Marshall
f5dfebb6a3 Add __fish_svn_prompt function
This refactors __fish_print_svn_rev to not depend on english locale
2015-12-10 18:17:40 +01:00
Fabian Homborg
2b7ffca414 Merge pull request #2595 from lordlycastle/master
Added OS X completions for open, and seq.
2015-12-10 15:32:18 +01:00
lordlycastle
96b3e1ce1b Added OS X completions for open, and seq. Added missing stdout redirection to /dev/null when checking command's version. 2015-12-10 14:20:46 +00:00
Fabian Homborg
ce719a700c Mention /etc/shells in README.md 2015-12-10 13:10:20 +01:00
mr.Shu
4280df3aa2 git: Add missing options to git clone
* Add missing options to `git clone` in order to make the suggestions as
  similar to the manual (https://git-scm.com/docs/git-clone) as
  possible.

Signed-off-by: mr.Shu <mr@shu.io>
2015-12-10 12:54:45 +01:00
Fabian Homborg
b73bf53bd3 Enable 24-bit mode for selected terminals
Unfortunately, there's no standard way to detect support (importantly,
terminfo doesn't encode it), but there's a variety of terminals that
support it that we can detect.

It's better than letting this functionality go to waste.

Check KONSOLE_PROFILE_NAME instead of DBUS_SESSION because Konsole can be compiled without dbus support.

Check ITERM_SESSION_ID's format for 24bit support

This has changed since the last release, just like 24bit support. So if
we check one, we get the other.
2015-12-10 12:47:45 +01:00
ridiculousfish
d90169e79b Remove a stale comment regarding fishd 2015-12-10 01:02:57 -08:00
Andy Lutomirski
fea798011b Switch show_stackframe to backtrace_symbols_fd
It's simpler and avoids calling into fprintf in contexts in which
it might crash or deadlock.
2015-12-10 01:02:57 -08:00
Andy Lutomirski
f17a71de74 Don't complain if do_builtin_io fails due to EPIPE
If stdio is dead due to EPIPE, there's no great reason to spew a stack dump.

This will still write an error to stderr if stdout dies.  This might be
undesirable, but changing that should be considered separately.
2015-12-10 01:02:57 -08:00
Fabian Homborg
0212314479 Merge pull request #2586 from mrshu/mrshu/add-git-cherry-pick-options
git: Add more options to `git cherry-pick`
2015-12-09 16:41:34 +01:00
Kurtis Rader
16c34b387f Ensure interactive tty modes are set ASAP
It is critical that we ensure our interactive tty modes are in effect at
the earliest possible moment. This achieves that goal and is harmless if
stdin is not tied to a tty. The reason for doing this is to ensure that
\r characters are not converted to \n if we're running on the slave side
of a pty controlled by a program like tmux that is stuffing keystrokes
into the pty before we issue our first prompt.
2015-12-08 21:01:31 -08:00
Kurtis Rader
d65c63322e allow \cJ (\n) to be bound separate from \cM (\r)
This makes it possible (on UNIX systems, don't know about MS Windows)
to bind \cJ (\n) independently of \cM (\r, aka [enter]).

Resolves #217
2015-12-08 21:01:31 -08:00
ridiculousfish
6943536ef3 named_color_names to reserve the right amount 2015-12-08 20:32:59 -08:00
Kurtis Rader
7322c9c591 "normal" should appear in set_color --print-colors 2015-12-08 20:08:08 -08:00
Kurtis Rader
dfaefb97ff remove "normal" from the basic color name table
The special token "normal" should not be in the basic sixteen color table
because a) it is not a color, and b) it is special cased with the result of
resetting the terminal colors (usually via a ANSI X3.64 CSI [0m sequence).
2015-12-08 20:08:08 -08:00
Kurtis Rader
0a0acc8a2e add support for ANSI "bright" colors
This adds support for the ANSI x3.64 "bright" colors in the basic sixteen
color palette. This is especially useful when trying to use the base colors
as a background color. The "bright" variants tend to be more useful as
background colors compared to the non-bright variants.

This also fixes a bug in so far as palette number 7 is actually grey and
not white whereas palette number 15 is white. At least on the terminal
emulators on which I've tested this change (Ubuntu xterm & uxterm, Mac
OS X Terminal & iTerm2).

Resolves issue #1464.
2015-12-08 20:08:08 -08:00
mr.Shu
a8837f537f git: Add more options to git cherry-pick
* Add more options to `git cherry-pick` so that the suggested options
  mimic the man page (https://www.git-scm.com/docs/git-cherry-pick/).

Signed-off-by: mr.Shu <mr@shu.io>
2015-12-08 23:51:29 +01:00
David Adam
ef67fc7ba0 __fish_complete_man: rework AWK script
Adds support for the man-db alias format used in CentOS/RHEL 5
Adds basic support for the output of apropos on Solaris

Work on #2087.
2015-12-04 16:23:57 +08:00
David Adam
83c0f43b33 configure.ac: use correct headers for TPARM_SOLARIS_KLUDGE check
Should fix the build at least partly on msys2.
2015-12-04 13:23:10 +08:00
ridiculousfish
17672b08c6 Don't print the jobs header when stdout is redirected 2015-12-03 21:08:48 -08:00
Max Nordlund
dc1f2fbb4c Fix the error message not being outputed 2015-12-03 20:59:13 -08:00
Max Nordlund
2d90859cab Fix wrong exit code for jobs #2505 2015-12-03 20:59:12 -08:00
Fabian Homborg
d325b4bf39 Add completion for pkg-config 2015-12-03 13:11:53 +01:00
Fabian Homborg
1d64c480c4 Add completion for systemd-nspawn 2015-12-03 12:53:10 +01:00
Fabian Homborg
9f7334deef Add completion for systemd-analyze 2015-12-03 12:52:59 +01:00
Fabian Homborg
3dbefd08ad Merge pull request #2575 from mrshu/mrshu/improve-git-remote
git: Improve completion for git remote
2015-11-30 10:45:02 +01:00
mr.Shu
1a5d0fc47f git: Improve completion for git remote
* Make sure that the `git remote` subcommands are not repeatedly
  suggested (that is do not suggest a subcommand if there already is one).

* Add both long and short options to `git remote` subcommands where
  appropriate.

Signed-off-by: mr.Shu <mr@shu.io>
2015-11-29 22:14:11 +01:00
Fabian Homborg
17b6936f53 Merge pull request #2573 from mrshu/mrshu/add-missing-git-remote-subcommands
git: Add missing remote subcommands completion
2015-11-28 14:41:37 +01:00
Fabian Homborg
c5bcc4567e Merge pull request #2572 from lordlycastle/master
Added completions for cat, cp, mktemp, stat, touch for OS X.
2015-11-28 14:41:03 +01:00
David Adam
ce360bcfe3 env_universal_common.cpp: don't bother trying nonexistent path 2015-11-28 14:34:27 +08:00
David Adam
789657456a env.cpp: warn when wgetcwd() fails
Closes #2321
2015-11-28 14:34:27 +08:00
mr.Shu
7b3d93f4a1 git: Add missing remote subcommands completion
* Add completion for missing `git remote` subcommands.

* Should fix #2567

Signed-off-by: mr.Shu <mr@shu.io>
2015-11-28 03:24:59 +01:00
lordlycastle
3868203c76 Added completions for cat, cp, mktemp, stat, touch for OS X. 2015-11-28 00:35:26 +00:00
David Adam
e5bfdcd9a4 fish_tests.cpp: use temporary path for completion tests
Closes #2322
2015-11-27 16:20:54 -08:00
Daniel Matz
b7f13b4685 Complete bg and fg with job PIDs. 2015-11-27 16:07:16 -08:00
Daniel Matz
c2c4fbf206 Add a function to complete job PIDs. 2015-11-27 16:07:16 -08:00
Daniel Matz
bf86a92596 Fix tab completion after '%' character. 2015-11-27 16:07:16 -08:00
Fabian Homborg
53fc9a4002 Remove circular dependency in fallback seq
This was subtle because `type` invoked seq.

Fixes #2570
2015-11-27 19:34:27 +01:00
Fabian Homborg
a8a9ac0dae Add completion for OSX rm
As always, this not only doesn't support longopts, but also has some
options that GNU rm doesn't - in this case, an undelete function.
2015-11-27 11:28:41 +01:00
Daniel Matz
3b53abecd0 Update hg completion
This does a number of things:
- Removing trailing space from suggested repos for hg.
- Use the string builtin for hg completions.
- Add more internal merge tools to hg completion.
- Enable completions for abbreviated hg commands.
- Stop completing a deprecated hg branches option.
- Properly match the hg subcommand when preceeded by global switches.
- Stop completing deprecated hg glog.
- Complete hg config instead of showconfig.
- Properly complete when global switches are before the hg command.
- Properly handle the repository switch for hg completions.
- Properly handle the hg global switch cwd.
2015-11-23 19:39:58 +01:00
Fabian Homborg
3f12f75853 Add completions for OSX which 2015-11-23 13:37:53 +01:00
Fabian Homborg
917c727619 Add more sudo options 2015-11-23 13:32:29 +01:00
Fabian Homborg
6336288da1 Support the OSX versions of head/tail
See #2537.

These were written from the online versions of the manpages.
2015-11-19 21:32:21 +01:00
Fabian Homborg
3e0ff6db2a math: Join lines manually
This is an issue with 15-year old versions of bc that don't support BC_LINE_LENGTH.

Closes #2548
2015-11-19 12:04:21 +01:00
Eugene Sharygin
5db811253e psub: add -s, --suffix 2015-11-14 13:15:30 +01:00
Fabian Homborg
e31a93040e Add completion for string
A bit simplistic since we can't complete e.g. regexes properly, but it
does the job.

Fixes #2543
2015-11-12 15:08:47 +01:00
Fabian Homborg
8e55f7154b Merge pull request #2539 from seethemhigh/docs-typos
Fix a doc typo
2015-11-10 22:41:02 +01:00
seethemhigh
71d3357b71 Fix a doc typo 2015-11-10 23:54:28 +03:00
ridiculousfish
3eafb3520f Upgrade Xcode project for newest Xcode 2015-11-09 00:16:40 -08:00
ridiculousfish
e50d104399 Remove duplicate \cw binding in default key bindings 2015-11-08 23:52:59 -08:00
ridiculousfish
45dfa2d864 Attempt to fix the sporadic uvar test failures on Linux
We identify when the universal variable file has changed out from under us by
comparing a bunch of fields from its stat: inode, device, size, high-precision
timestamp, generation. Linux aggressively reuses inodes, and the size may be
the same by coincidence (which is the case in the tests). Also, Linux
officially has nanosecond precision, but in practice it seems to only uses
millisecond precision for storing mtimes. Thus if there are three or more
updates within a millisecond, every field we check may be the same, and we are
vulnerable to the ABA problem. I believe this explains the occasional test
failures.

The solution is to manually set the nanosecond field of the mtime timestamp to
something unlikely to be duplicated, like a random number, or better yet, the
current time (with nanosecond precision). This is more in the spirit of the
timestamp, and it means we're around a million times less likely to collide.
This seems to fix the tests.
2015-11-08 23:48:32 -08:00
Gordon Tyler
c2024a6a94 Fix key_reader make target. 2015-11-08 12:43:14 -08:00
Alexander Hedges
32d54e37f7 Use unused cleanup_autogenerated_file 2015-11-08 12:19:15 -08:00
Alexander Hedges
2bbad22248 Remove autogenerated files before generating the new ones
Currently if there is a conflict with two manpages having the same
name, one completion will override the other. But if one can be parsed
and the other can't the one with parsed results will always have a
higher priority.
2015-11-08 12:19:15 -08:00
Alexander Hedges
22493c9df8 Guard against files that don't end in .[1...9]
It seems smart to only let files be parsed that are clearly
manpage files. Other files wouldn't be openend by man so
I think it is safe to guess that only these files are man
pages.
2015-11-08 12:19:15 -08:00
Alexander Hedges
8d97a85834 Ignore references to builtin on the mac
On my system (OS-X 10.11) references to builtin are denoted by:
".so man1/builtin.1". So you also need to check against that.
2015-11-08 12:19:15 -08:00
ridiculousfish
e7d18b96f9 Make input_mapping_execute stop returning R_NULL too often
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
2015-11-07 15:23:36 -08:00
ridiculousfish
1854ef9823 Teach the cd autosuggestion how to descend "unique" hierarchies
If we are cd'ing into a directory, and the directory has only one
child which is itself a directory, the autosuggestion should
descend as far as it can.

Fixes #2531
2015-11-07 13:58:13 -08:00
Fabian Homborg
c9577394eb vi-mode: Inherit \cf and \cb bindings as well
This makes them {forward,backward}-char instead of -word, which means
they accept suggestions _fully_.

Fixes #2255
2015-11-06 10:25:27 +01:00
maxried
0918ad6cee Improve apt-get completion
Added apt-get changelog sub-command completion.
2015-11-01 12:30:17 +01:00
David Adam
d3bcee9e2e tests: try longer timeout in case setting fish_key_bindings is taking too long 2015-10-30 13:31:02 +08:00
maxried
1055864438 Update fish_default_key_bindings.fish
fish_default_key_bindings.fish comments were wrong. Corrected comment about pagination.
2015-10-29 07:51:17 +01:00
Fabian Homborg
be0d9d093c vi-mode: Make \cb do backward-word again
This is mentioned in the documentation, so keep it for now.
2015-10-28 13:20:23 +01:00
Fabian Homborg
bb491742ea vi: Bind \cx to end-of-line in insert mode
This will also accept any autosuggestion completely.
2015-10-28 13:18:27 +01:00
Bheesham Persaud
46fbfaaa83 Add cargo and rustc completion.
rustc.fish makes heavy use of the `string` commands.
2015-10-26 21:39:16 -04:00
Gary Peck
09bd938e25 Add ability to customize the amount of path shortening in prompt_pwd
Allows the length of each shortened path component to be customized by setting the `fish_prompt_pwd_dir_length` variable to the number of characters to include (plus a leading dot because that's special). Maintains the default behavior of shortening path components to just one character. You can also set `fish_prompt_pwd_dir_length` to an empty or invalid value or 0 to disable shortening completely.
2015-10-26 13:11:13 +01:00
ridiculousfish
d5f3a09ce9 Make 'set -ql' search up to function scope
Previously 'set -ql' would only look for variables in the
immediate local scope. This was not very useful. It's also
arguably surprising, since a 'set -l' in a function, followed
by a 'set -ql' in a child block, would fail. There was also no
way to check for a function-scoped variable, since omitting the
scope would also pull in global variables.

We could revisit this and introduce an explicit function scope.

Fixes #2502
2015-10-23 15:15:39 -07:00
ridiculousfish
036a29acf5 Revert "reader.cpp: send carriage return after printing the window title"
This fix introduced #2499
This reverts commit 13479fbc2a.
2015-10-21 12:41:07 -07:00
Fabian Homborg
3e7dfd7f5e Switch useradd and chsh to string 2015-10-21 12:38:45 +02:00
David Adam
f21d826850 fish_complete_subcommand: shadow scope to inherit e.g. $PATH
Closes: #2141.
2015-10-21 15:38:20 +08:00
Jan Ernsting
8e3e286577 Update mix completion
Among others `mix escriptize` has not been supported since July 2014:
https://github.com/elixir-lang/elixir/issues/2468

Also explain what mix is.
2015-10-20 17:10:41 +02:00
Fabian Homborg
f4b4e5b41f git: Complete subcommands for git submodule foreach 2015-10-20 15:49:45 +02:00
Fabian Homborg
4a05d56337 git: Disable submodule subcommand completion if one is already given 2015-10-20 15:49:22 +02:00
Fabian Homborg
73708061fc Fix git submodule completions
Fixes #2494
2015-10-20 15:42:48 +02:00
David Adam
55abe105ea tests/bind.expect: re-enable but at human typing speed only
The interactive bind tests work if the keys are treated like there is a
human pressing them.

This reverts commit 0006d23df8.
2015-10-18 21:12:12 +08:00
Fabian Homborg
0006d23df8 Disable the bind test for now
This isn't pretty, but it fails for, as far as I can see, no _real_
reason.

It doesn't seem to be possible to trigger the failure in real usage, no
matter how fast you press the ESC key followed by something else.

So now this is known and constant travis emails don't help it in any way.
2015-10-18 14:14:22 +02:00
Fabian Homborg
df3da55602 git completion: Allow branches with "/" in them as unique remote branches 2015-10-16 17:15:37 +02:00
David Adam
13479fbc2a reader.cpp: send carriage return after printing the window title
Terminals can get confused by all the non-printed characters about the
line position.

Closes #2453.
2015-10-16 11:53:51 +08:00
Jeff Kowalski
226cdc6a28 Fix usage of history_filename 2015-10-16 07:40:04 +08:00
Jeff Kowalski
b13f0701a4 Migrate fish_history from config to data dir
New implementation of migration code within the history_t class will
copy the contents of the old fish_history found in the config directory
to its new location in the data directory.  The old file is left intact.

This is done only in the event that a fish_history is not already found in
the data directory ($XDG_DATA_HOME/fish or ~/.local/share/fish).
2015-10-16 07:40:04 +08:00
Jeff Kowalski
4c2cc384d2 Correct tests for new location of fish_history
The fish_history file is now located in the "data"
directory ($XDG_DATA_HOME/fish or ~/.local/share/fish),
accessible using the function `path_get_data`.

(This commit also cleans trailing whitespace in the source file.)
2015-10-16 07:40:04 +08:00
Jeff Kowalski
2971887bbd Access fish_history from $XDG_DATA_HOME
Add new functions path_get_data and path_create_data which parallel existing
functions path_get_config and path_create_data.  The new functions refer to
XDG_DATA_HOME, if it is defined, or ./local/share if not.

Modify history_filename to use the new function path_get_data.

As a consequence, fish_history will now be located in XDG_DATA_HOME,
not XDG_CONFIG_HOME.

Note that these changes mirror what is already used in
fish-shell/share/tools/create_manpage_completions.py, which stores the
completions in XDG_DATA_HOME

This change matches recommendations in the xdg basedir spec at
http://standards.freedesktop.org/basedir-spec/basedir-spec-0.7.html
($XDG_DATA_HOME defines the base directory relative to which user specific data
files should be stored. If $XDG_DATA_HOME is either not set or empty, a default
equal to $HOME/.local/share should be used.)

It addresses suggestions from the following issues:

1. Don't put history in $XDG_CONFIG_HOME (closes #744)
   https://github.com/fish-shell/fish-shell/issues/744

2. Fish is placing non-config files in $XDG_CONFIG_HOME #1257
   https://github.com/fish-shell/fish-shell/issues/1257

3. Move non-config data out of $XDG_CONFIG_HOME #1669
   https://github.com/fish-shell/fish-shell/issues/1669
2015-10-16 07:39:49 +08:00
David Adam
b776327b9d Revert "prompts: more concise way of getting the hostname."
This reverts commit 233c443694.

See discussion in https://github.com/fish-shell/fish-shell/pull/2489
2015-10-16 07:01:12 +08:00
David Adam
b7e991c4b7 Makefile: only clean PCRE2 directory if it is configured in 2015-10-15 17:18:02 +08:00
David Adam
9788566ba4 Revert "reader.cpp: send smkx/rmkx when entering/leaving interactive mode"
This reverts commit a66d44054c due to
https://github.com/fish-shell/fish-shell/issues/2406 - entering keypad
mode causes various terminals to send undocumented and highly variable
escapes for keys not specified in the terminfo specification.
2015-10-15 16:20:25 +08:00
Michael Fogleman
233c443694 prompts: more concise way of getting the hostname. 2015-10-15 11:59:39 +08:00
Fabian Homborg
35bbc1d7b7 vi: Make \cf do forward-word again in insert mode 2015-10-14 18:34:58 +02:00
Fabian Homborg
4e5e04bfda vi: Readd \cx binding 2015-10-14 18:31:45 +02:00
Fabian Homborg
c0e8ad6f1f Make vi bindings inherit the defaults
This reduces code duplication and adds some previously unavailable
bindings that don't quite _violate_ the vi-principle (like
prevd-or-backward-word on alt-left) and matches other "impure" bindings
like \cf for forward-word (a quite emacs-ish binding) we already have.

Fixes #2412
Fixes #2472
Fixes #2255
2015-10-13 21:08:55 +02:00
buo
3472a39d07 Add BSD specific arguments for tr command completion 2015-10-13 15:52:14 +02:00
Fabian Homborg
9865a8c807 Also send konsole cursor sequence for iTerm2
Fixes #1403
2015-10-13 15:36:55 +02:00
Matt Steedman
35e769d494 Make fish_vi_cursor check $TERM or use argument
Fixes #2475
2015-10-13 15:33:45 +02:00
Fábio Nogueira
6e3ea5b2ea New pt_BR translations - 25% 2015-10-12 19:54:53 +02:00
Fabian Homborg
54f215294f export: Fix replacing
Also run it through fish_indent
2015-10-12 11:35:45 +02:00
Ashok
f6f982226a Removed misleading space in stderr redirection example 2015-10-11 18:47:26 +05:30
Fabian Homborg
98b33d7b6b Fix pushd completions in the -n case 2015-10-09 20:02:28 +02:00
Fabian Homborg
86471ac21f Remove OSX/Cygwin special cases from prompt_pwd
For cygwin, you can't `cd C:`, so a prompt of "C:/Something" is
misleading.

For OSX, we dereference symlinks elsewhere

This also simplifies prompt_pwd quite a bit.
2015-10-09 17:45:45 +02:00
David Adam
57e22e87c2 functions/man.fish: add fish into MANPATH even if it is already set
Closes #2443.
2015-10-09 21:01:59 +08:00
David Adam
0b3406bdc0 tests/string.in: add tests for string builtin 2015-10-09 11:27:18 +08:00
David Adam
74cd977566 travis: add OS X build, add AddressSanitizer build, stop building docs
Leak checking is disabled for now as it has the potential to produce too
many false positives.
2015-10-08 14:58:10 +08:00
ridiculousfish
d9d2f61ba6 When autoloading a completion, also autoload the function
Fixes a case where a --wraps declaration would be missed
because the function would not be loaded. Fixes #2466.
2015-10-07 18:59:41 -07:00
ridiculousfish
434eabb787 Remove errant slash from the end of cd completions
Fixes #2465
2015-10-07 13:39:42 -07:00
ridiculousfish
e8605cb3ef Fix a dereference-past-the-end bug in read_redirection_or_fd_pipe
Fixes #2464. Credit to zanchey for reporting it and ASAN for finding it!
2015-10-07 11:38:13 -07:00
ridiculousfish
1bdf06836a Factor running the xcode_version_gen.sh
Instead of duplicating the script invocation across targets,
put it into a separate target and add dependencies. This also
requires moving its output into the SHARED_DERIVED_FILE_DIR
(which may be undocumented)?
2015-10-07 11:01:49 -07:00
Fabian Homborg
0a99772572 Rewrite __fish_complete_cd
This no longer uses "eval" (which is scary), and is a bit shorter (which
is nice).

Fixes #2299
Fixes #952

Improves #2300
Improves #562
2015-10-07 10:41:05 +02:00
Fabian Homborg
2ffb47eba2 Add missing \n to pushd completions 2015-10-07 10:26:27 +02:00
Fabian Homborg
b208d752e2 git completion: Complete files relative to repo-root
Not for _everything_ because that causes too many options to be
generated (which is an issue for git as it is), but for modified, staged
and added files - which is where it is most useful.

Fixes #901 as far as I'm concerned.
2015-10-06 14:05:08 +02:00
Fabian Homborg
ec74479d44 Add pushd -n to completions, use string
Also indent with fish_indent
2015-10-05 15:23:05 +02:00
Derek Harland
e75108fc4c Improve pushd completions
Add completions for rotating and swapping the stack.
2015-10-05 15:12:38 +02:00
Fabian Homborg
176e34cf73 Remove ls|__fish_sgrep from apt-proxy-import 2015-10-04 15:45:02 +02:00
Fabian Homborg
65415cb761 Move make completion to string
This also removes a hack that's not needed anymore
2015-10-04 15:41:20 +02:00
Fabian Homborg
45bf843b03 Move python comp away from eval and sed
I have no clue why this used eval.
2015-10-04 15:41:20 +02:00
Fabian Homborg
610a5926a8 Move apt-show-versions away from ls|__fish_sgrep
This is almost trivial to do with builtins.
2015-10-04 15:41:20 +02:00
Fabian Homborg
3b0f9911e2 Move setfacl completions to string 2015-10-04 15:41:20 +02:00
Fabian Homborg
55a2945449 Bring aura completions in line with pacman
Eliminates a bit of __fish_sgrep
2015-10-04 15:41:20 +02:00
Ian Ray
16061d06a9 prompt_pwd: zero fork prompt in general case
Now only one fork (uname) occurs on first load.
2015-10-04 12:36:49 +02:00
ridiculousfish
aeaacedf75 Don't do intermediate fuzzy directory matching with $PATH
When expanding an executable with $PATH, don't attempt to
interpret the directories in PATH as fuzzy matching. Fixes #2413.
2015-10-03 15:44:57 -07:00
David Adam
bec6d5c174 Makefile: improve integration with pcre2 build
Work on #2446
2015-10-02 15:29:08 +08:00
Fredrik Fornwall
d98b6f2434 Only include <spawn.h> if HAVE_SPAWN_H
This fixes building on platforms such as Android
which lacks <spawn.h>.

Signed-off-by: David Adam <zanchey@ucc.gu.uwa.edu.au>
2015-10-02 08:57:05 +08:00
David Adam
3ffbf9a7ea configure/Makefile: allow the use of a system libpcre2 if available 2015-10-01 16:33:23 +08:00
David Adam
c481137b40 travis: drop all use of sudo and root-owned directories
From
http://docs.travis-ci.com/user/migrating-from-legacy/
2015-10-01 16:19:04 +08:00
David Adam
9f0b077295 travis: move to container-based builds 2015-10-01 16:16:12 +08:00
Fabian Homborg
5f2feee680 git completion: Bring needs_command in line with git
git has options that can appear before commands, but not all of
them, and some of them need an argument. This means
`__fish_seen_subcommand_from`  will give too many false-positives, while
`[ (count $cmd) -eq 2 ]` will give too many false-negatives.

Instead go through all arguments and check if they are in that list of
options that can be before a command and skip the argument for them, if
any.
2015-09-30 15:14:09 +02:00
Ian Ray
9ecd73d956 Generate version numbers for Xcode builds
Teach Xcode to run new script xcode_version_gen.sh before building
the fish_shell and fish_indent targets.  The script generates file
fish-build-version.h for inclusion by fish_version.cpp.

Note that Xcode always runs the script because of the phony target
named force-fish-build-version.h, but fish-build-version.h is only
touched if the contents of FISH-BUILD-VERSION-FILE change.

Fixes #890
2015-09-29 14:55:51 -07:00
Fabian Homborg
b9b39f7c31 Replace sed -E with string replace
This is to the benefit of systems with ancient GNU sed, which does not
recognize "-E", but only "-r".

Fixes #2305 - even if it doesn't replace all `sed -E` invocations in the
codebase, the others are unlikely to occur on CentOS and other similarly
crusty systems.
2015-09-28 20:06:20 +02:00
Dan Underwood
37f4cbe3d7 Fix of multiple synonyms for apm command
`__fish_apm_using_command` was incorrectly taking lists of commands, new function added to support multiple a command having synonyms.

Simplify switch statement

Also remove superfluous function.

Allow for multiple completions after a command

Useful for removing packages, will complete for more than one.

Code improvements
2015-09-28 18:30:08 +01:00
Fabian Homborg
126c8c14b8 machinectl: Add "shell" subcommand 2015-09-28 16:22:29 +02:00
Fabian Homborg
3992315505 Normalize cabal* completion 2015-09-28 16:08:01 +02:00
Fabian Homborg
eb4e4fa7ad Normalize aura completions
Also fixes bug related to repo listings
2015-09-28 15:39:51 +02:00
ridiculousfish
71e38dec11 Fix a typo 2015-09-27 17:33:00 -07:00
ridiculousfish
11376ae25b Fix for recursive wildcard expansion ignoring directories
When ascending out of a directory, we need to clear the directory
from the visited set. Fixes #2414.
2015-09-27 17:19:52 -07:00
ridiculousfish
dd245f62f0 Trailing slashes in wildcards need to match directories
Fixes the wrong sense in a waccess test.
2015-09-27 17:19:52 -07:00
Fabian Homborg
aa37b40d93 __fish_hg_prompt: Clean up a bit
`sort -u | uniq` is completely redundant, calling grep for every
status-pair is unnecessary, `contains` doesn't take the word "in" as
special.

None of these are critical and there's basically no performance benefit
since this function is utterly dominated by hg calls.
2015-09-27 16:30:37 +02:00
Fabian Homborg
8eccf8a6f7 __fish_hg_prompt: Remove explicit root check again
This doesn't add anything except slowing the function down by about
33%. Checking for a branch is just as good and that is displayed in the
prompt anyway.
2015-09-27 16:23:11 +02:00
Jan Ernsting
7376639789 Fix completion for totem 2015-09-27 14:36:16 +02:00
Fabian Homborg
2334374fd6 math: Avoid calling env 2015-09-27 12:51:24 +02:00
ridiculousfish
f086bc9564 Maintain ownership when rewriting universal variables file
Fixes #2176
2015-09-26 15:24:55 -07:00
ridiculousfish
c30de8add4 Move OS X pcre2.h into a new directory shared_headers
Allows fish and pcre2 project to both find the header,
without their respective config.h files interfering with
each other.
2015-09-26 15:01:46 -07:00
Ian Ray
de3cb6b374 Squashed commit of the following:
commit 33c7c4df307b144652d6d842472aa843cc6a5420
Author: Ian Ray <ianjray@me.com>
Date:   Sat Sep 26 21:28:50 2015 +0300

    Fix xcode include paths for pcre2.h

commit 03d255a3e5e2e9b109c0bc6789ffa431381b6cb3
Author: Ian Ray <ianjray@me.com>
Date:   Sat Sep 26 21:02:42 2015 +0300

    Fix xcode include paths for pcre2.h
2015-09-26 14:34:31 -07:00
ridiculousfish
4c8fdf6e90 Add osx/pcre2/config.h which I forgot to check in too
Really fixes the Xcode build
2015-09-26 14:16:23 -07:00
ridiculousfish
1a41f908d3 Add osx/pcre2.h which I forgot to check in
Fixes the Xcode build
2015-09-26 14:14:53 -07:00
Fabian Homborg
95908aa2bc __fish_hg_prompt: Only show current bookmark 2015-09-26 21:52:20 +02:00
Fabian Homborg
a19f4dd4c8 __fish_hg_prompt: Add bookmark support 2015-09-26 20:41:18 +02:00
Fabian Homborg
eadd4d9b71 __fish_hg_prompt: Bail early if not in a hg repo 2015-09-26 20:40:48 +02:00
Wonicon
4f3ff3d77f Correct the comment on the default path
According to the newer code below:
    xdg_data_home = os.getenv('XDG_DATA_HOME', '~/.local/share')
the actual default path is ~/.local/share/fish/generated_completions/
2015-09-26 15:23:45 +02:00
Fabian Homborg
5bb81461f6 Normalize ls completions and bring them up-to-date
This adds the --group-directories-first option for GNU ls and fixes a
typo in --block-size (not --blocksize).

Fixes #2425.
2015-09-26 11:40:04 +02:00
ridiculousfish
871a2088db Preserve existing file permissions when rewriting a history file
Fixes #2335
2015-09-26 02:19:51 -07:00
ridiculousfish
abeaac6632 Teach builtin_string to recognize redirections, not just pipes
Allows cases like `string split \n < file.txt` to work.
Fixes 2422
2015-09-25 14:19:15 -07:00
Fabian Homborg
d591cebf44 Introduce __fish_print_pacman_repos helper
This is used in at least 4 places, all of which have a bug in that they
print "options" as a valid repo. It seems better to fix it once,
especially given that there are tons of AUR helpers and pacman wrappers,
all of which might need this info.
2015-09-25 13:37:39 +02:00
Michael Steed
8abb19aaca Prefix errors with 'string:', not 'string string:' 2015-09-24 19:21:09 -06:00
ridiculousfish
bcc937e4e0 Upgrade Xcode build to Xcode 7 2015-09-24 12:48:33 -07:00
Fabian Homborg
915d92019c Merge remote-tracking branch 'refs/remotes/faho/net-tools' into net-tools 2015-09-24 15:32:15 +02:00
Fabian Homborg
f24d5cb5f0 __fish_print_{addresses,interaces}: Better OSX/BSD 2015-09-24 15:32:15 +02:00
Fabian Homborg
79c22c76bf __fish_print_{addresses,interfaces}: Add alternative to net_tools
net_tools, which provides `ifconfig` and `netstat`, among other things,
has last been updated in 2013. This means `ifconfig` on linux is
basically dead.

Instead of ifconfig, use `ip` (from iproute2), which is much more powerful and
provides a much more annoying commandline syntax.

Instead of netstat, just look at /sys/class/net.
2015-09-24 15:32:15 +02:00
Fabian Homborg
20e96df85d export: Enable values with "=" in them
Only split on the first "=" to achieve this.

Closes #2403
2015-09-24 15:28:58 +02:00
Fabian Homborg
be51fe944d Fix vi* completions
I forgot a "-c".
2015-09-23 19:01:34 +02:00
Fabian Homborg
54d1d98e39 Fix aliases with whitespace
And document how that stuff works.

Fixes #2220

Also, the string stuff is cool.
2015-09-23 13:28:32 +02:00
Fabian Homborg
6f92781992 Refactor *vi* completions, add nvim wrapper
This assumes `vim` is always vim (or close enough, nvim should also
work), while `vi` could be either.

Fixes #2416
2015-09-23 12:59:05 +02:00
ridiculousfish
c1bd3b5824 Eliminate global variables associated with builtin IO
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.
2015-09-22 18:08:00 -07:00
Fabian Homborg
fb615843b3 git completion: Describe aliases with their definitions
I could have sworn we had this already.
2015-09-22 20:25:14 +02:00
Fabian Homborg
c6d808a0d8 git completions: Switch more to string 2015-09-22 20:24:54 +02:00
Fabian Homborg
4f12821ca8 git completion: Rewrite __fish_git_ranges with the string stuff
Cuts down on perl.

Also complete heads (i.e. tags and branches) always.
2015-09-22 18:21:09 +02:00
Fabian Homborg
4fcda28d9b git completions: Add remote branches with only one remote
Fixes #675
2015-09-22 16:46:43 +02:00
ridiculousfish
1883e051ba Apply some care regarding overflow in string sub 2015-09-21 16:41:26 -07:00
ridiculousfish
4825afbf58 Include headers needed on Linux 2015-09-21 16:41:26 -07:00
ridiculousfish
ad8c7b9d0b Clarify string split implementation
Use some template magic to handle the forward and reverse
string split cases uniformly
2015-09-21 16:41:26 -07:00
ridiculousfish
7eb88ed7dc Take advantage of find_first_not_of and friends
Simplifies some of the logic in string_trim
2015-09-21 16:41:26 -07:00
ridiculousfish
6afd0d8add pcre2_strerror should use wcstring instead of static wchar_t 2015-09-21 16:41:26 -07:00
ridiculousfish
bfe142fef0 Use append_formatv in string_error 2015-09-21 16:41:26 -07:00
ridiculousfish
54e626f665 Fix some type conversion warnings in builtin_string
Also pass around a wcstring for storage, instead of using a static
2015-09-21 16:41:26 -07:00
ridiculousfish
f296471726 Integrate pcre2 into Xcode build 2015-09-21 16:41:25 -07:00
ridiculousfish
b2e8967e94 Migrate builtin_string.cpp to its own object file
This keeps the architecture a little less surprising
2015-09-21 16:41:25 -07:00
Michael Steed
d83ef07ca7 Merge new string builtin
This adds the new builtin 'string' which supports various string
manipulation and matching algorithms, including PCRE based regular
expressions.

Fixes #2296

Squashed commit of the following:

commit 4c3eaeb6e57d76463e9683c327142b0aeafb92b8
Author: ridiculousfish <corydoras@ridiculousfish.com>
Date:   Sat Sep 12 12:51:30 2015 -0700

    Remove testdata and doc dirs from pcre2 source

commit b2a8b4b50f2398b204fb72cfe4b5ba77ece2e1ab
Merge: 11c8a47 7974aab
Author: ridiculousfish <corydoras@ridiculousfish.com>
Date:   Sat Sep 12 12:32:40 2015 -0700

    Merge branch 'string' of git://github.com/msteed/fish-shell into string-test

commit 7974aab6d3
Author: Michael Steed <msteed@saltstack.com>
Date:   Fri Sep 11 13:00:02 2015 -0600

    build pcre2 lib only, no docs

commit eb20b43d2d
Merge: 1a09e70 5f519cb
Author: Michael Steed <msteed68@gmail.com>
Date:   Thu Sep 10 20:00:47 2015 -0600

    Merge branch 'string' of github.com:msteed/fish-shell into string

commit 1a09e709d0
Author: Michael Steed <msteed68@gmail.com>
Date:   Thu Sep 10 19:58:24 2015 -0600

    rebase on master & address the fallout

commit a0ec9772cd
Author: Michael Steed <msteed68@gmail.com>
Date:   Thu Sep 10 19:26:45 2015 -0600

    use fish's wildcard_match() for glob matching

commit 64c25a01e3
Author: Michael Steed <msteed68@gmail.com>
Date:   Thu Aug 27 08:19:23 2015 -0600

    some fixes from review

    - string_get_arg_stdin(): simplify and don't discard the argument when
      the trailing newline is absent
    - fix calls to pcre2 for e.g. string match -r -a 'a*' 'b'
    - correct test for args coming from stdin

commit ece7f35ec5
Author: Michael Steed <msteed68@gmail.com>
Date:   Sat Aug 22 19:35:56 2015 -0600

    fixes from review

    - Makefile.in: restore iwyu target
    - regex_replacer_t::replace_matches(): correct size passed to realloc()

commit 9ff7477a92
Author: Michael Steed <msteed68@gmail.com>
Date:   Thu Aug 20 13:08:33 2015 -0600

    Minor doc improvements

commit baf4e096b2
Author: Michael Steed <msteed68@gmail.com>
Date:   Wed Aug 19 18:29:02 2015 -0600

    another attempt to fix the ci build

commit 896a2c2b27
Author: Michael Steed <msteed68@gmail.com>
Date:   Wed Aug 19 18:03:49 2015 -0600

    Updates after review comments

    - make match/replace without -a operate on the first match on each
      argument
    - use different exit codes for "no operation performed" and errors, as
      grep does
    - refactor regex compile code
    - use human-friendly error messages from pcre2
    - improve error handling & reporting elsewhere
    - add a few tests
    - make some doc fixes
    - some simplification & cleanup
    - fix ci build failure (I hope)

commit efd47dcbda
Author: Michael Steed <msteed68@gmail.com>
Date:   Wed Aug 12 00:26:07 2015 -0600

    fix dependencies for parallel make

commit ed0850e2db
Author: Michael Steed <msteed68@gmail.com>
Date:   Tue Aug 11 23:37:22 2015 -0600

    Add missing pcre2 files + .gitignore

commit 9492e7a7e9
Author: Michael Steed <msteed68@gmail.com>
Date:   Tue Aug 11 22:44:05 2015 -0600

    add pcre2-10.20 and update license.hdr

commit 1a60b93371
Author: Michael Steed <msteed68@gmail.com>
Date:   Tue Aug 11 22:41:19 2015 -0600

    add string builtin files

    - string builtin source, tests, & docs
    - changes to configure.ac & Makefile.in

commit 5f519cb2a2
Author: Michael Steed <msteed68@gmail.com>
Date:   Thu Sep 10 19:26:45 2015 -0600

    use fish's wildcard_match() for glob matching

commit 2ecd24f795
Author: Michael Steed <msteed68@gmail.com>
Date:   Thu Aug 27 08:19:23 2015 -0600

    some fixes from review

    - string_get_arg_stdin(): simplify and don't discard the argument when
      the trailing newline is absent
    - fix calls to pcre2 for e.g. string match -r -a 'a*' 'b'
    - correct test for args coming from stdin

commit 45b777e4dc
Author: Michael Steed <msteed68@gmail.com>
Date:   Sat Aug 22 19:35:56 2015 -0600

    fixes from review

    - Makefile.in: restore iwyu target
    - regex_replacer_t::replace_matches(): correct size passed to realloc()

commit 981cbb6ddf
Author: Michael Steed <msteed68@gmail.com>
Date:   Thu Aug 20 13:08:33 2015 -0600

    Minor doc improvements

commit ddb6a2a8fd
Author: Michael Steed <msteed68@gmail.com>
Date:   Wed Aug 19 18:29:02 2015 -0600

    another attempt to fix the ci build

commit 1e34e3191b
Author: Michael Steed <msteed68@gmail.com>
Date:   Wed Aug 19 18:03:49 2015 -0600

    Updates after review comments

    - make match/replace without -a operate on the first match on each
      argument
    - use different exit codes for "no operation performed" and errors, as
      grep does
    - refactor regex compile code
    - use human-friendly error messages from pcre2
    - improve error handling & reporting elsewhere
    - add a few tests
    - make some doc fixes
    - some simplification & cleanup
    - fix ci build failure (I hope)

commit 34232e152d
Author: Michael Steed <msteed68@gmail.com>
Date:   Wed Aug 12 00:26:07 2015 -0600

    fix dependencies for parallel make

commit 00d7e78169
Author: Michael Steed <msteed68@gmail.com>
Date:   Tue Aug 11 23:37:22 2015 -0600

    Add missing pcre2 files + .gitignore

commit 4498aa5f57
Author: Michael Steed <msteed68@gmail.com>
Date:   Tue Aug 11 22:44:05 2015 -0600

    add pcre2-10.20 and update license.hdr

commit 290c58c72e
Author: Michael Steed <msteed68@gmail.com>
Date:   Tue Aug 11 22:41:19 2015 -0600

    add string builtin files

    - string builtin source, tests, & docs
    - changes to configure.ac & Makefile.in
2015-09-21 16:41:25 -07:00
Fabian Homborg
e70ed961ea Document set_color resetting both for "normal"
Fixes #1658
2015-09-20 17:27:17 +02:00
Fabian Homborg
7216e36cb1 Document that only variable expansion occurs in ""
Fixes #925
2015-09-20 15:31:41 +02:00
Fabian Homborg
10a60b6ec2 Document cd -
Fixes #1946
2015-09-20 15:25:13 +02:00
Johannes Schneider
054fb22854 Maven completion added 2015-09-19 22:27:04 +02:00
Fabian Homborg
b34127e346 __fish_print_{addresses,interaces}: Better OSX/BSD 2015-09-18 12:00:12 +02:00
Fabian Homborg
be70ea7d49 Add completion for Arch's mkinitcpio 2015-09-17 18:23:37 +02:00
Fabian Homborg
1ef178c5e6 Add alsactl completions 2015-09-17 18:20:23 +02:00
Fabian Homborg
56399b9aa3 systemctl completions: Show instanced services
This unfortunately requires us to do two systemctl calls, but it's still
pretty fast.
2015-09-17 18:16:56 +02:00
Fabian Homborg
a79c7495c8 busctl completions: Fix usermode
Block-scope strikes again!
2015-09-17 18:12:00 +02:00
Fabian Homborg
b13ee9da2a docs: Rename cross to cartesian product, clarify 2015-09-17 14:17:52 +02:00
Fabian Homborg
f86ee20579 systemctl completions: Support systemd in /lib
Debian has not merged /usr/lib and /lib, so they install the `systemd`
binary at /lib/systemd/systemd.

See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=790671
2015-09-16 23:18:04 +02:00
Fabian Homborg
f7e8f8031d __fish_print_{addresses,interfaces}: Add alternative to net_tools
net_tools, which provides `ifconfig` and `netstat`, among other things,
has last been updated in 2013. This means `ifconfig` on linux is
basically dead.

Instead of ifconfig, use `ip` (from iproute2), which is much more powerful and
provides a much more annoying commandline syntax.

Instead of netstat, just look at /sys/class/net.
2015-09-16 23:01:27 +02:00
Dan Underwood
18a116394d Complete atom package manager or apmd
Completions for `apm` now support both the Advanced Power Management client and the Atom text editor.
2015-09-16 15:54:42 +01:00
Konrad Borowski
094948db51 Fix issue with pkg --jail=value completion 2015-09-16 13:58:48 +02:00
Konrad Borowski
18c7e97ecc Add pkgng command completions
Fixes #1054.
2015-09-16 13:57:36 +02:00
Fabian Homborg
c8ac48ff9a Informative git prompt: Handle root/toor users
Fixes #961

This should probably be in a helper function
2015-09-15 21:14:49 +02:00
ridiculousfish
fa4ec55c96 Fix process expansion on OS X
Puts back sys/sysctl.h header, so we know to use BSD style process
expansion
2015-09-15 11:40:20 -07:00
Fabian Homborg
a02d4dc27c Document cross-product
At least in tutorial for now.

Fixes #2341
2015-09-15 17:05:35 +02:00
Fabian Homborg
31c75e747c Merge pull request #2388 from alco/patch-1
Fix a typo in docs/index
2015-09-15 16:05:23 +02:00
Alexei Sholik
8a1a446f45 Fix a typo in docs/index 2015-09-15 16:49:14 +03:00
Fabian Homborg
7fe8a63f53 Webconfig: It's abbr --erase, not abbr --remove
This was renamed in c0cf25cf0b but never
in webconfig.
2015-09-13 22:35:32 +02:00
Fabian Homborg
48874294d6 Webconfig: abbr doesn't support "--"
Fixes #2276
2015-09-13 22:35:32 +02:00
ridiculousfish
f5093f1625 Fix tests under certain vswprintf calls
Work around an issue where vswprintf may not append
ANY_STRING from a format specifier
2015-09-12 16:32:52 -07:00
Fabian Homborg
4bc8cf1a1a Fix typo in documentation 2015-09-12 15:46:40 +02:00
Stefan Maric
527c932e93 Fix npm run completion executing only on completions load, also:
* Better handling of `npm run` output
2015-09-12 12:12:21 +02:00
Stefan Maric
cba3db6205 Remove redundant completions that lack descriptions for npm 2015-09-12 12:12:21 +02:00
Stefan Maric
3b798b1733 Make use of npm completion 2015-09-12 12:12:21 +02:00
Stefan Maric
f898d82536 Add script values as descriptions to npm run/run-script completion 2015-09-12 12:12:21 +02:00
Stefan Maric
3b5aab6edb Complete list of available scripts for npm run/run-script command 2015-09-12 12:12:21 +02:00
Fabian Homborg
11c8a47d22 Document %last process expansion
Fixes #2379 (at least the most pressing part of it).
2015-09-11 21:12:36 +02:00
Fabian Homborg
b2323ca203 commandline docs: Add examples for the filters
i.e. "-t", "-b", "-j" and "-p"
2015-09-11 21:05:55 +02:00
Fabian Homborg
2c648c80c8 docs: Improve autoloading/event documentation
The thing that says "event handlers can't be autoloaded, put it in config.fish". I make good words.
2015-09-11 11:33:04 +02:00
Fabian Homborg
b8d9ba993d printf docs: Improve wording 2015-09-11 11:33:04 +02:00
Fabian Homborg
3810ef47f7 Add multi-condition example to if documentation 2015-09-11 11:33:04 +02:00
Fabian Homborg
bbbadbcb78 Document printf 2015-09-11 11:33:04 +02:00
Fabian Homborg
c0acc98faa Also document autoloaded event handlers in funcsave 2015-09-11 11:33:04 +02:00
Fabian Homborg
9828d787fa Document problems with event handlers and autoloading
Fixes #845.
2015-09-11 11:33:04 +02:00
Fabian Homborg
53456b5fc3 Document pushd "+N" and "-N"
Fixes #2173
2015-09-11 11:33:04 +02:00
Fabian Homborg
73a5e2bc6b Document dirs -c
Fixes #2174
2015-09-11 11:33:04 +02:00
ridiculousfish
9a2ac5fcb6 Fix a typo in documentation for 'complete' 2015-09-10 18:09:08 -07:00
ridiculousfish
025b45b91e Don't crash on complete -C in non-interactive mode
Fixes #2361
2015-09-10 18:08:42 -07:00
Fabian Homborg
31d1e04301 git completion: Don't check $cmd[1]
Before we do anything else, remove this senseless piece of code
2015-09-10 16:17:14 +02:00
Fabian Homborg
a828f90d38 git: Add more options for format-patch and submodule
Not all of them and only those that don't accept arguments for now

Fixes #1996
2015-09-10 15:22:16 +02:00
Fabian Homborg
00556734bc git completion: Ignore stderr for all commands
Might print unrelated crap if we try to complete while not in a git repository
2015-09-10 15:22:16 +02:00
Fabian Homborg
b231ab7238 Allow set_color options in general for linux VTs 2015-09-10 15:12:02 +02:00
Fabian Homborg
2587bbc4a7 rbenv completion: Remove trailing spaces 2015-09-10 15:10:25 +02:00
Fabian Homborg
40df11b162 Also allow bold, underline and printing colors in linux kernel VTs
bold works, printing colors doesn't change anything and underline
doesn't _break_.
2015-09-10 12:27:09 +02:00
David Adam
a66d44054c reader.cpp: send smkx/rmkx when entering/leaving interactive mode
Closes #2139.
2015-09-10 16:22:39 +08:00
Fabian Homborg
e9fcbb334e rbenv completion: Support ruby-build as plugin
Fixes #1028
2015-09-10 02:04:40 +02:00
ridiculousfish
babc6f0f9c Stop exporting fish configuration directories (argh) 2015-09-09 16:50:05 -07:00
Fabian Homborg
bffeb664cc Add __fish_sgrep
Missed in b85a8bb because of `git commit -a`.

Fixes #2372
2015-09-09 21:52:18 +02:00
Fabian Homborg
b85a8bbbfe Rename sgrep to __fish_sgrep
Makes it harder to cause issues with aliases, see fish-shell#2245
2015-09-09 20:55:04 +02:00
Fabian Homborg
925f451773 Add descriptions to dd completions
Fixes #752.
2015-09-09 19:40:58 +02:00
David Adam
8bf1e694fe doc_src/complete: update for new options in synopsis
Update complete documentation, hopefully to avoid another #2368.

[ci skip]
2015-09-09 17:42:42 +08:00
Chris Pick
c5bc221b27 Use the $TERM value from fish's computed environment for ncurses setup
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>
2015-09-09 17:06:13 +08:00
Jan Ernsting
7f28acc5ed Complete tags for git-tag only 2015-09-07 13:35:50 +02:00
Jan Ernsting
f36d2ff55f Ensure display of modified files for git commit 2015-09-07 13:35:34 +02:00
Jan Ernsting
396e01a0e0 Add missing description
git reset allows for files and branches as completion results
2015-09-07 11:05:47 +02:00
Jan Ernsting
787c1304c6 Add file completion for git-reset
Staged files are now offered for completion
2015-09-07 11:05:47 +02:00
Jan Ernsting
d92c08c9bb Add completion for git-commit
Modified files are provided for completion
2015-09-07 11:05:47 +02:00
Fabian Homborg
bd3b4e03e9 Suspend docs: Fix typo
While not a huge thing, wrong variable names always carry great
confusion potential.
2015-09-06 15:03:43 +02:00
Fabian Homborg
cb5511c8db Vcs prompt: Break if vcs isn't installed
Prevents an annoying error message.
Fixes #2363.
2015-09-06 14:58:09 +02:00
Corey Ford
54b6a1c08e Fix error message for variable used as command 2015-09-03 21:42:42 -07:00
Chris Pick
8cc154bc48 Fix non-zero arity functions followed by other functions
Temporarily skip any queued function code characters when reading
the current function's arguments.

Fixes #2357.
2015-09-03 15:15:46 -04:00
Chris Pick
ab6d9ad521 Test vi-mode 't' binding
Test 't' binding that contains non-zero arity function (forward-jump) followed
by another function (and).
This demonstrates the problem in #2357.
2015-09-03 15:15:46 -04:00
James
5e1c71b059 Added completions for entr 2015-09-02 13:59:25 +02:00
Fabian Homborg
f3695b95fc Use $VISUAL before $EDITOR in funced
Closes #2268
2015-09-02 13:55:59 +02:00
Mike Meyer
32a3e15309 Add info to suspend help page. 2015-09-02 13:40:43 +02:00
Mike Meyer
0661553484 Add suspend help page. 2015-09-02 13:40:43 +02:00
Fabian Homborg
5f080fcfc9 Load fish_user_key_bindings for any binding (including vi)
fish_user_key_bindings is the user's, and they should know if they want
vi-ish bindings or emacs-ish (or nano-ish). If they want to define
multiple, they can also do that (e.g. via checking what
$fish_key_bindings is set to).

Fixes #2254

CC @kballard
2015-09-01 11:50:50 +02:00
Fabian Homborg
a21e44c155 Add escape sequences for arrows in some linux VTs
Why this is only in some, I don't know, but these don't seem to
interfere with anything.

Fixes #2309
2015-09-01 11:46:54 +02:00
Fabian Homborg
60089f9750 Remove setup outside of fish_prompt from sample prompts
This doesn't work with fish_config.

For terlar and pythonista, remove unnecessary color setting.

For informative+git and pythonista, move variable setup into fish_prompt

Fixes #1141
2015-08-31 21:27:44 +02:00
Fabian Homborg
5043b9d06e Revert "Fix missing variable expansion $ in psub"
That change was a bit too eager as the mkfifo route doesn't currently work.

See #1040 and #2052.

This reverts commit a17b9fdaba.
2015-08-31 19:32:28 +02:00
Fabian Homborg
a17b9fdaba Fix missing variable expansion $ in psub 2015-08-31 19:24:48 +02:00
Fabian Homborg
2f3123e175 Make overriding cnf-handler work
See #1925: This allows users to disable the cnf-logic which can be quite
slow on small hardware (like a raspberry pi).

Squashed commit of the following:

commit 742a59e30d8db24b6bb5067d4204d4b5cc01c1c3
Author: Fabian Homborg <FHomborg@gmail.com>
Date:   Sun Aug 30 18:23:41 2015 +0200

    Erase startup cnf-handler early

    Simplifies the code a bit - in particular it removes the special-casing
    from the startup handler.

commit 638a97e7f31f302b65e044c93c638c03a69e31f5
Author: Fabian Homborg <FHomborg@gmail.com>
Date:   Mon Aug 24 20:14:46 2015 +0200

    Make overriding cnf-handler work

    Do this by renaming the __fish_command_not_found_handler used during
    startup to __fish_startup_command_not_found_handler. That allows us to
    check if __fish_command_not_found_handler has been defined and skip the
    setup of the normal one.

    Now disabling cnf-handling can be done via defining an empty
    __fish_command_not_found_handler in config.fish
2015-08-31 18:39:15 +02:00
Fabian Homborg
17c756971a Add a shell suspend function
Squashed commit of the following:

commit ede9e510751497d61ff0e78fd948e901171cf6f9
Merge: 938da30 239d2a2
Author: Fabian Homborg <FHomborg@gmail.com>
Date:   Thu Aug 6 18:47:43 2015 +0200

    Merge branch 'suspend' of https://github.com/mwm/fish-shell into suspend

commit 239d2a28e1
Author: Mike Meyer <mwm@mired.org>
Date:   Thu Aug 6 11:24:32 2015 -0500

    Handle interactive & login shells, SHLVL checks, and better message.

commit 6334047ebd
Author: Mike Meyer <mwm@mired.org>
Date:   Tue Aug 4 08:53:10 2015 -0500

    Add a description to suspend

commit 080458b31c
Author: Mike Meyer <mwm@mired.org>
Date:   Tue Aug 4 07:05:17 2015 -0500

    Add a shell suspend function
2015-08-30 18:42:35 +02:00
Fabian Homborg
f71e877f18 Improve situation for linux in-kernel VTs (TERM = "linux")
This adds a special colorscheme and prompt function guaranteed to work
on a VT and activates them automatically if $TERM = "linux".

set_color is overridden to only allow the 8 colors VTs have (under the
assumption those are always the same) and the color variables are
shadowed with global ones so they don't pollute our nice capable terms.
2015-08-30 18:30:03 +02:00
Annika Backstrom
d6c97a6a13 Fix spelling 2015-08-30 00:33:04 -04:00
ridiculousfish
e0e732523e Remove an errant ampersand from the docs
Fixes fish-site issue 26
2015-08-26 21:15:59 -07:00
Fabian Homborg
47b9993469 {prev,next}d-or-*-word: Fix for multiple lines
Fixes #2333
2015-08-26 21:30:04 +02:00
Fabian Homborg
7bfad18ec7 Make alt-arrow in iTerm2 do the same thing as elsewhere
nextd-or-forward-word and such

Fixes #1836
2015-08-25 13:49:40 +02:00
David Adam
b0504f7739 env_universal_common: always pick shmem strategy on Cygwin
Cygwin FIFOs do not support more than one reader, so avoid them on this
platform. An autoconf feature test would be helpful but is tricky to
write.

Closes #2152.
2015-08-24 18:45:57 +08:00
Fabian Homborg
67ed58b0ba gpg: Complete files for --import 2015-08-24 12:38:24 +02:00
Fabian Homborg
a815e6ca14 Fix ping -I completion 2015-08-21 19:16:04 +02:00
ridiculousfish
b59904632d Rewrite parse_util_unescape_wildcards
Make it simpler, and use wcstring instead of wcsdup
2015-08-19 11:35:24 -07:00
ridiculousfish
c1b9b27f86 Remove unused original_pid variable 2015-08-18 11:22:05 -07:00
ridiculousfish
2b87705a46 Remove vi mode indicator from classic_git prompt
It is duplicative of the fish_mode_prompt function

Fixes #2228
2015-08-18 10:52:53 -07:00
Igor Gali
34faf7638e docs/design.hdr: inclusive lanugage
Closes fish-shell/fish-site#25.

Signed-off-by: David Adam <zanchey@ucc.gu.uwa.edu.au>

[skip ci]
2015-08-17 20:27:13 +08:00
Fabian Homborg
5e555fc1cf Completions: Don't check $cmd[1]
This is already done by fish before calling the completion.

It breaks completion with combiners (#2025) and also with wrappers.

(This does not include git because that's better solved in #2145)
2015-08-17 12:29:03 +02:00
Fabian Homborg
cb5d36d89f Add completions for systemd's localectl 2015-08-17 12:02:50 +02:00
ridiculousfish
e2f16ec20e Define a constant for function-not-found in input.cpp
Avoids differences in widths of wchar_t, hopefully addressing
issue #2284
2015-08-16 18:45:42 -07:00
Fabian Homborg
b615534d8d Fix sorin prompt, remove fallback
Closes #2243
2015-08-16 22:51:49 +02:00
ridiculousfish
93d57bd73a Factor function environment preparation into its own function 2015-08-15 13:37:17 -07:00
ridiculousfish
60798798ef Allow fish to build from Xcode without lexicon_filter
Emit a warning but keep building
2015-08-15 12:49:32 -07:00
faho
81696c16d2 Merge pull request #2283 from treeman/prompt_pwd
Match the whole real home directory in prompt_pwd.
2015-08-14 21:40:21 +02:00
faho
89c504daf6 Merge pull request #2304 from bpollack/fossil
Clean up completions for Fossil
2015-08-14 18:13:39 +02:00
Benjamin Pollack
5a2287c52f Clean up completions for Fossil
There are two main problems in the existing Fossil autocompletion that this
patch solves:

  * Because Fossil lacks an alias system similar to those in Hg and Git,
    wrapper scripts are common, and aliasing them to `fossil` is also fairly
    common. The lack of the `command fossil` pattern in the completions script
    meant that the actual fossil command might not be called, but rather the
    alias. This problem has been fixed by introducing a __fish_fossil command,
    similar to the __fish_hg and __fish_git commands in those completion shells,
    that does this, and converting all explicit fossil calls in the completion
    script to use __fish_fossil instead
  * Because there's now a centralized location for calling Fossil, I also moved
    all of the repetitive stderr redirects that function.

This results in more robust and cleaner code.
2015-08-14 10:36:37 -04:00
faho
a65a288eca Merge pull request #2256 from jcelliott/python-completion
Improve completion for python -m flag
2015-08-14 12:32:52 +02:00
ridiculousfish
cf80baa2d8 Teach the Xcode build how to apply lexicon_filter 2015-08-11 10:43:11 -07:00
ridiculousfish
871a822379 Remove some dead #defines 2015-08-11 01:00:05 -07:00
ridiculousfish
b9b6b6108e Dead macro cleanup
Enable -Wunused-macros, and remove said unused macros
2015-08-10 22:01:50 -07:00
ridiculousfish
3a2ba60b70 Use ++iter, not iter++ in input.cpp 2015-08-10 22:01:33 -07:00
ridiculousfish
aa76f64a94 Correct the caret position for unbalanced square brackets 2015-08-10 19:30:21 -07:00
ridiculousfish
e34a8da5d7 Correct the positioning of the error caret
When an error occurs midway through a token, like abc(def,
make the caret point at the location of the error (i.e. the paren)
instead of at the beginning of the token.
2015-08-10 18:31:20 -07:00
Fabian Homborg
6157a9a858 Fix wesnoth completion 2015-08-10 19:01:50 +02:00
Fabian Homborg
6b92c4867d Fix source completion by making "..fish" symlink regular file
Also fixes #2286 by removing the only symlink.
2015-08-09 23:10:17 +02:00
ridiculousfish
3bd6eab88f Make expansion test robust against different filesystem orders
Should make the tests pass on Linux
2015-08-08 15:25:07 -07:00
ridiculousfish
3a3a9f5cc1 Add wreaddir_for_dirs function
Eliminates some stat calls, speeding up wildcard expansion
2015-08-08 14:52:04 -07:00
ridiculousfish
f87268e2ac Remove a bogus function declaration 2015-08-08 14:32:10 -07:00
Jonas Hietala
5238ed309f Match the whole real home directory in prompt_pwd. 2015-08-08 23:19:01 +02:00
ridiculousfish
6347988e0a Eliminate wildcard_expand function 2015-08-08 13:55:51 -07:00
ridiculousfish
b92acd3cf2 Initial implementation of intermediate fuzzy completion
e.g. /u/l/b<tab> may be expanded to /usr/local/bin
2015-08-08 13:55:51 -07:00
ridiculousfish
fd96bafbc8 Experiment to rework wildcard matching
Preparation for zsh-style intermediate component
tab completion
2015-08-08 13:55:51 -07:00
ridiculousfish
b7e16cb0dd Tweak try_add_completion_result logic
Preparation for zsh-style intermediate fuzzy matching
2015-08-08 13:55:51 -07:00
ridiculousfish
459df23931 Migrate the prepend_token_prefix logic into the expander 2015-08-08 13:55:50 -07:00
ridiculousfish
e7b22a7ed2 Factor the expander class a bit more 2015-08-08 13:55:50 -07:00
ridiculousfish
bcbe91461e Move the "wildcard_complete" test into wildcard_test_flags_then_complete
Simplifies code yet further
2015-08-08 13:55:50 -07:00
ridiculousfish
b68410d619 Eliminate the wildcard_expand_internal function 2015-08-08 13:55:50 -07:00
ridiculousfish
602e9cebd9 rename FOR_COMPLETIONS to EXPAND_FOR_COMPLETIONS
This is yet clearer
2015-08-08 13:55:50 -07:00
ridiculousfish
d2049edcab Slight refactoring of expander's return code implementation 2015-08-08 13:55:49 -07:00
ridiculousfish
83322f63c6 Rewrite wildcard_complete_internal to be easier to follow 2015-08-08 13:55:49 -07:00
ridiculousfish
f0a2f24701 Remove some dead code 2015-08-08 13:55:49 -07:00
ridiculousfish
97f1a8fe91 Factor the completion prefix behavior into its own function
In a few places, we need to add a prefix to completions that
replace the token. This change factors that logic into its
own function prepend_token_prefix.
2015-08-08 13:55:49 -07:00
ridiculousfish
0ac9f159d6 Eliminate recurse_to_subdirectories function 2015-08-08 13:55:49 -07:00
ridiculousfish
a3f8e27bf8 rename ACCEPT_INCOMPLETE to FOR_COMPLETIONS, which is clearer 2015-08-08 13:55:49 -07:00
ridiculousfish
b55c13f275 Turn on the new wildcard expander 2015-08-08 13:55:48 -07:00
ridiculousfish
761651d410 Add some expansion tests 2015-08-08 13:55:48 -07:00
ridiculousfish
70548f7cc7 Initial implementation of wildcard match refactoring
Not yet turned on.
2015-08-08 13:55:43 -07:00
Nicholas Maccharoli
f6ab0b4d07 Making spacing of .fish files uniform. 2015-08-08 11:22:44 -07:00
ridiculousfish
bc8a34f8df Add a missing typecast 2015-08-08 10:35:17 -07:00
Tom Smeding
8f0cd5508d Fix wrong max argument list size reporting 2015-08-08 10:09:33 -07:00
faho
a151c3f892 Merge pull request #2282 from leoetlino/patch-1
Fix a typo in the French translation file
2015-08-08 18:58:55 +02:00
Léo Lam
5b9135a698 Fix a typo in the French translation file
This is a non-exciting change at all -- just a quick and simple typo fix in the
fish welcome message.
2015-08-09 00:35:10 +08:00
Fabian Homborg
db5c02fbfc abbr completions: Describe abbreviations with what they abbreviate
i.e. "abbr -e <TAB>" will list
	 am (alsamixer)
2015-08-06 20:15:36 +02:00
Mike Meyer
938da3039d Fix extra redirection. 2015-08-06 18:43:26 +02:00
faho
cfeae48b83 Merge pull request #2267 from mwm/fossil-completions
Various fossil completions fixes
2015-08-06 14:04:53 +02:00
Fabian Homborg
50f18ddaad Cower: Enable description and ignore errors when search string is too short 2015-08-06 12:57:40 +02:00
Fabian Homborg
2874650802 gpg: Fix key/user id completion
This was too simplistic, among other things it completed things that
looked like key ids but weren't, didn't turn "\x3a" back into
colons (which made the argument invalid)....

gpg is weird.

Might fix #2150
2015-08-05 22:38:42 +02:00
Fabian Homborg
1271de321e gpg: send-keys takes a key id, not a user id 2015-08-05 22:36:12 +02:00
Fabian Homborg
a265ee6f6f gpg completion: Add "-k", don't append "," so much 2015-08-05 21:59:58 +02:00
Fabian Homborg
e196203320 Add completion for systemd's timedatectl 2015-08-05 17:45:36 +02:00
Fabian Homborg
33d062cb60 pacman completion: Offer "command-options" first 2015-08-05 17:43:15 +02:00
Fabian Homborg
53bcd4b1ab Add iptables completion
This is far from perfect, but I need to gather more feedback.
2015-08-05 17:41:14 +02:00
Fabian Homborg
385f961b29 systemctl: Add new options from 220 2015-08-05 17:38:58 +02:00
Fabian Homborg
eada714a0a Complete machines in systemd tools 2015-08-05 17:38:17 +02:00
Fabian Homborg
66f11e9bd3 vi-mode: Make \cc go to normal from insert mode
Keep the behavior for normal mode

Fixes #2228
2015-08-04 14:22:55 +02:00
Mike Meyer
158d3cc743 Many small fixes, and done big one.
Bit one: Make all the fossil command invocations throw away stderr so we don't
get annoying messages when not in a repository.

Also:
- Move checkout into alphabetical order.
- Fix ls to complete against tags for -r option, not no option.
- Add missing option to delete command.
- Make commit complete against modified files.
- Make add only complete against extra files.
- Remove now ununused function to list extra & modified files.
- Add -f option in a number of places where it seemd appropriate.
2015-08-04 06:51:51 -05:00
Kunal Mehta
07c109fad8 Fix raw &amp in docs
The missing semicolon caused a raw &amp to be rendered.
2015-08-04 13:09:47 +02:00
Mike Meyer
618a4b42ad Fix type, add tag completion to checkout. 2015-08-03 17:16:44 -05:00
Mike Meyer
e2c81e54e2 Add completions for fossil checkout. 2015-08-03 16:11:26 -05:00
David Adam
e56f0628d5 common.cpp: check wcwidth for supported characters
Rather than trying to detect Unicode support from the environment, check
the printable width of characters in the current locale before deciding
on whether to use them.

Closes #1927.
2015-08-03 14:18:06 +08:00
Fabian Homborg
546ba888ae Complete commands in pacman again
"noopt" was mistakenly turned around by missing a "not".
2015-07-31 22:36:00 -07:00
David Adam
9b2a17eb1e functions/history.fish: whitespace only change
Run through fish_indent, mismatching indents actually confusing.

[skip ci]
2015-07-31 17:12:16 +08:00
David Adam
a7ecc0db1f functions/history.fish: validate command line arguments in wrapper
Closes #2055.

Implements the standard `--` option for delimiting options from
arguments; to search for "--", use `history --search -- --`.
2015-07-31 17:07:27 +08:00
Joshua Elliott
bc7eb39781 Improve completion for python -m flag 2015-07-30 16:04:39 -06:00
David Adam
299a383d98 Makefile: add target for Include What You Use (iwyu)
Requires http://include-what-you-use.org/ and Clang to operate.
Doesn't quite work for the builtin_* collection; that has to be done by
hand.
2015-07-29 21:41:57 +08:00
David Adam
75515af537 configure: only define special attributes if not defined
Fixes a build warning on FreeBSD, where <sys/cdefs.h> defines __packed and
friends.
2015-07-29 21:13:40 +08:00
Lars Grefer
b1ed15a07a Tab-Completition for atom 2015-07-29 09:58:19 +08:00
Lars Grefer
9dc6ef6771 Tab-Completition for sass 2015-07-29 03:43:31 +02:00
David Adam
a6a16808e3 Merge branch 'iwyu'
http://include-what-you-use.org/
2015-07-29 09:30:19 +08:00
ridiculousfish
aee71b594b Remove unused unload_all function 2015-07-27 23:36:54 -07:00
ridiculousfish
6e3231a9d7 Stop passing mutable references to completions around
Replace uses of vector<completion_t>& with vector<completion_t>*
This makes it clear at the call site that the object may be mutated.
2015-07-27 18:45:47 -07:00
ridiculousfish
85dad6913e Support file tab completion after = and : separators
For example, env VAR=/usr<tab> will now work as expected

Fixes #2178
2015-07-27 13:43:20 -07:00
ridiculousfish
deacec07bf Fix a warning with g++ about an unused function result 2015-07-26 10:55:19 -07:00
David Adam
958880d972 src/wutil: drop <features.h> header, _BSD_SOURCE is defined by the compiler 2015-07-26 19:58:02 +08:00
ridiculousfish
78af59f40c Handle getcwd failures to satisfy the linter 2015-07-26 02:15:59 -07:00
ridiculousfish
c59f5e9f01 Cast getcwd() to void to defeat a warning 2015-07-26 02:14:06 -07:00
ridiculousfish
c9349f2ef6 Continue to refine tokenizer interface
Migrate some functions into tokenizer instance methods
2015-07-26 00:58:32 -07:00
ridiculousfish
4ebaa7b6bd Continue migration to the new tokenizer interface 2015-07-26 00:12:36 -07:00
ridiculousfish
618896c043 Early reworking of tokenizer interface 2015-07-25 23:05:47 -07:00
ridiculousfish
0dbd83ffaf Remove some dead code 2015-07-25 22:47:44 -07:00
David Adam
3929e9de0e Merge branch 'master' into iwyu 2015-07-26 10:20:13 +08:00
ridiculousfish
f4d1657c22 Eliminate wgetopt global variables
Replace them with a new struct wgetopter_t that uses
instance variables instead.
2015-07-25 18:16:34 -07:00
ridiculousfish
caab298f72 Add DerivedData directory to .gitignore 2015-07-25 17:45:05 -07:00
ridiculousfish
0d0b2ce9b3 Update doc and message.pot targets for new src directory 2015-07-25 17:44:15 -07:00
ridiculousfish
16ad5d3a2e Add cppcheck.sh driver script for running cppcheck 2015-07-25 17:33:34 -07:00
ridiculousfish
92e9297a15 Update xcode project for new Xcode 2015-07-25 16:48:52 -07:00
ridiculousfish
ac72db8ef0 Make our wgettext() implementation a little less terrifying
Use wchar_t* directly instead of wcstring.c_str()
2015-07-25 16:01:59 -07:00
ridiculousfish
9b4e365517 Update 'depend' target so make depend works again
This is very ugly because makedepend has no native support
for building outside the source tree. It always wants to
prepend 'src/' to the object file path. So instead we have
to cons up a new source tree, with the sources files at the
root, and run makedepend on that.
2015-07-25 15:17:08 -07:00
ridiculousfish
c0cefde5d1 Manually update Makefile depends
Temporary fix until the 'make depend' target can be sorted out
2015-07-25 13:23:18 -07:00
ridiculousfish
1786a7cdc4 Use the address-of operator when checking for weak symbols
This fixes a warning with gcc on OS X
2015-07-25 13:02:58 -07:00
ridiculousfish
a91e8887cd Migrate source files into src/ directory
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
2015-07-25 12:31:57 -07:00
David Adam
d3a0372e89 grep completions: remove trailing end statement 2015-07-26 00:16:48 +08:00
David Adam
793e1afa08 Makefile: clean up dependenciees 2015-07-25 23:58:45 +08:00
David Adam
78162a2a13 Initial pass with Include What You Use 2015-07-25 23:53:32 +08:00
David Adam
30ea4fc416 Makefile: typo fixes in check-legacy-binaries 2015-07-25 16:52:19 +08:00
David Adam
d1d36cc9af Merge branch 'death_of_mimedb' 2015-07-25 13:04:28 +08:00
David Adam
b2a97e4245 Makefile: Add mimedb and fishd to check-legacy-binaries target 2015-07-25 12:27:27 +08:00
PythEch
b32f770a69 Fix Unknown Signal 'winch'
Fixes an annoying error that affects machines with Turkish locales
2015-07-24 08:56:14 -07:00
David Adam
78d4f22ce4 __fish_print_mounted: expand scope on non-Linux platforms 2015-07-24 18:35:10 +08:00
Fabian Homborg
3925929979 Fix mountpoints with spaces on linux
Signed-off-by: David Adam <zanchey@ucc.gu.uwa.edu.au>
2015-07-24 18:33:35 +08:00
David Adam
60fdd71f74 read: update completions
--right-prompt added in fe9cf673a2 but missed from the
completions.

With thanks to nafg@github.
2015-07-24 18:18:10 +08:00
ridiculousfish
b4f53143b0 Migrate source files into src/ directory
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
2015-07-24 00:59:27 -07:00
David Adam
9c2fdc6da5 fish.spec.in: re-add to source treee
Imported from https://github.com/zanchey/fish-build/

Work on #2020.

Note that this is explicitly removed from `git archive` tarballs in
keeping with the changes in 0effcf6df1.
2015-07-24 10:58:30 +08:00
Lars Grefer
821e8ec59a Completion support for the main commands of the travis command line tool 2015-07-24 02:29:53 +02:00
David Adam
4401abb166 tutorial: arrays as a synonym for lists
Closes https://github.com/fish-shell/fish-site/issues/13

[skip ci]
2015-07-23 18:43:57 +08:00
Razzi Abuissa
27be004c64 docs: typo fixes
[skip ci]

Signed-off-by: David Adam <zanchey@ucc.gu.uwa.edu.au>
2015-07-23 15:12:10 +08:00
David Adam
6c668868e9 death of mimedb: remove mimedb from the tree 2015-07-23 14:35:35 +08:00
David Adam
6add8a7df9 open: drop mimedb dependency 2015-07-23 14:26:38 +08:00
David Adam
7fa69ef8be __fish_complete_suffix: don't provide file description by default
Drops dependency on the mimedb tool and reflects the changes made to the
default chooser for files in #279.
2015-07-23 14:26:38 +08:00
David Adam
f77f71c17e __fish_{filter,complete}_mime: drop from tree
These are undocumented and unused, and rely on mimedb which is being removed
from the tree.
2015-07-23 14:26:38 +08:00
David Adam
749b9182ab wildcard.cpp: don't call mimedb to complete suffixes 2015-07-23 14:26:38 +08:00
Fabian Homborg
3b0805f4d7 Normalize *diff completions 2015-07-20 15:19:03 -07:00
Fabian Homborg
0c1485c325 Normalize *grep completions 2015-07-20 15:19:03 -07:00
Fabian Homborg
86554d66d0 Indent svn completion
Seems emacs' fish-mode sometimes breaks
2015-07-20 15:19:03 -07:00
Fabian Homborg
6475d763d0 Remove function and descriptions from rc-service completion
The descriptions are "Start: Start the service"
				 	 "Stop : Stop the service"
					 "Restart: Restart the service"
2015-07-20 15:19:03 -07:00
Fabian Homborg
7add4d5782 Normalize *tex completions 2015-07-20 15:19:03 -07:00
Fabian Homborg
f70b1ffbbf Normalize python* completion 2015-07-20 15:19:03 -07:00
Fabian Homborg
8a9b7dc63a Normalize *sum (md5sum et al) completions 2015-07-20 15:19:03 -07:00
Fabian Homborg
3f30096727 Normalize svn completion 2015-07-20 15:19:02 -07:00
Fabian Homborg
52ff997bf0 Normalize atool completions
Remove function, use wrapping.
2015-07-20 15:19:02 -07:00
ridiculousfish
08911e2dcc Fix for miscellaneous issues identiifed by Coverity Scan 2015-07-20 02:34:57 -07:00
ridiculousfish
dd4639e5db Make remove_backward coalesce repaints like it ought to 2015-07-20 00:45:44 -07:00
ridiculousfish
2109af0987 Implement lowercase-r replace in fish_vi_mode
Fixes #1595
2015-07-20 00:29:08 -07:00
ridiculousfish
68bbe13d23 Make R_SELF_INSERT only insert characters, not readline functions
This enables readline functions to appear after the self-insert
when defining bindings. This is preparation for fixing #1595.
2015-07-20 00:29:08 -07:00
Fabian Homborg
b1a0498ff9 Update emacs completion with all options, remove silly mime-hack
__fish_complete_mime used in that way is a no-op on current fish anyway,
and emacs is by no means useful for just text files (it can also view
PDFs, images, ...).

Otherwise this completion currently only offers options, not arguments.

For most these are pretty much incompletable (lisp code, for example),
and for others it's just not all that useful.

Signed-off-by: David Adam <zanchey@ucc.gu.uwa.edu.au>
2015-07-20 09:05:37 +08:00
Fabian Homborg
882f4714ac pacman completion: Turn into regular completion
This used to be a function because we didn't have complete -w

Use that and it becomes a bit simpler.

This also simplifies the code in a few other ways (like removing a
useless-use-of-cat)
and adds comments about a few edgecases.
2015-07-19 18:03:01 -07:00
Judson
e7273e1d81 All wcwidth is broken 2015-07-19 17:54:07 -07:00
Fabian Homborg
f359ded336 sysctl completions: Add OSX support 2015-07-19 17:52:25 -07:00
Fabian Homborg
ff4b1104a2 Add sysctl completion
See fish-shell/fish-shell#1375
2015-07-19 17:52:25 -07:00
David Adam
a550695cba fishd is dead, long live fishd
[skip ci]
2015-07-20 08:39:59 +08:00
David Adam
9438d33358 Makefile: update dependencies with make depend 2015-07-20 08:39:45 +08:00
Fabian Homborg
e35a2450d9 Apropos completion: Ignore stderr
Fixes fish-shell/fish-shell#1171
2015-07-19 17:32:03 -07:00
Fabian Homborg
616d848fac Add .fish suffix to funced's tempfile name
This allows editors (like emacs) to pick up on the fact that it's a fish script.
2015-07-19 17:22:09 -07:00
Fredrik Fornwall
a4b17b162c Remove non-portable "extern int errno" declaration
Declaring errno as an extern int breaks when errno is implemented
as a macro (as is allowed by POSIX). Specifically it breaks
building fish-shell on Android.
2015-07-19 17:16:53 -07:00
Nicholas Maccharoli
9fd6b5e1e2 Use newer syntax for autorelease pool 2015-07-19 17:16:01 -07:00
Jesse Nazario
466806fb11 ctrl-p as up-or-search and ctrl-n as down-or-search 2015-07-19 17:13:44 -07:00
Fabian Homborg
97edc96afd Improve journalctl completion
- Complete fields and (more importantly) values
- Add all options
- Complete boots

Signed-off-by: David Adam <zanchey@ucc.gu.uwa.edu.au>
2015-07-16 16:29:53 +08:00
Nicholas Maccharoli
8b14f1050d config.h was missing from project file.
Derived Sources empty except for redundant copy of config.h
2015-07-16 00:44:19 +09:00
ridiculousfish
9cf2bb18c2 pngquant delete.png, saving ~1.4 KB 2015-07-12 15:09:24 -07:00
Jonathan Chan
4b8febd44e Add favicon for web config 2015-07-12 15:06:56 -07:00
Vladimir Rudnyh
d49f6e1b29 __fish_git_prompt: fix stateseparator color in informative_status
In informative_status mode stateseparator did not use
fish_git_prompt_color settings.
2015-07-12 14:53:52 -07:00
Fernando Manfredi
1e32f9431d 👍 New sample prompt from Acidhub
New sample prompt from Acidhub (github.com/acidhub)
This prompt show user|path (full), and a small symbol to
show last command status.

If in a git repository, it's show after the path several
symbols to indicate the branch status and the branch name.

Very handy to me so far.

Signed-off-by: Fernando Manfredi <contact@acidhub.click>
2015-07-12 14:22:18 -07:00
David Woods
4a3cda1495 update function parameter for EXIT signal
changed `function __trap_handler_EXIT --on-exit %self` to `function __trap_handler_EXIT --on-process-exit %self`

I'm guessing the on-exit syntax was from an older version? Trapping EXIT with that syntax caused errors.
2015-07-12 14:21:05 -07:00
Derek Harland
05daedf7c6 Improve dirs output and add -c option
Adds behaviour similar to bash:
- shorten dirs output by representing $HOME as ~;
- provide a '-c' option to clear the stack
2015-07-12 12:20:44 -07:00
Derek Harland
f07d59c55d Alter pushd to add more bash-like behaviour
The following behaviour is added:
- an empty pushd exchanges the top two directories in the stack;
- pushd +<n> rotates the stack so that the n-th directory (counting from the left of the list shown by dirs, starting with zero) is at the top;
- pushd -<n> rotates the stack so that the nth directory (counting from the right of the list shown by dirs, starting with zero) is at the top.
2015-07-12 11:57:14 -07:00
Nitish Chandra
b057efdb37 Use a better wording for escaping characters
Replace the wording '... escapes the tab character ...' with '... represents the tab character ...'. Similarly for other escape sequences.
2015-07-12 11:25:32 -07:00
David Adam
7954b95f5d Merge branch 'Integration_2.2.0' 2015-07-12 22:50:34 +08:00
David Adam
ebf91d59c7 debian packaging: remove subdirectory from tree
Fixes problem introduced in 0effcf6df. Work on #2020.
2015-07-09 12:49:47 +08:00
David Adam
0effcf6df1 debian packaging: maintain in fish-shell tree
Imported from https://github.com/zanchey/fish-build/

Work on #2020.

Note that this is explicitly removed from `git archive` tarballs due to
https://wiki.debian.org/UpstreamGuide#Pristine_Upstream_Source
2015-07-09 12:07:44 +08:00
ridiculousfish
e752ac3035 Further tweak the language about setting PATH in the tutorial 2015-07-03 12:46:59 -07:00
ridiculousfish
a5fabc6875 Further tweak the language about setting PATH in the tutorial 2015-07-03 12:46:40 -07:00
ridiculousfish
506720003d Improve discussion of how to set PATH in the tutorial
Also fix a few broken anchors
2015-07-03 12:36:15 -07:00
ridiculousfish
8ca21767fe Improve discussion of how to set PATH in the tutorial
Also fix a few broken anchors
2015-07-03 12:35:53 -07:00
David Adam
e60db8075c Open universal variable lock file read/write and ignore errors
Closes #2149.
2015-07-03 15:31:03 +08:00
Fabian Homborg
0f3306870b machinectl: Fix fatal errors in __fish_systemd_has_machine_image 2015-07-02 14:36:48 +08:00
Fabian Homborg
a1b86749cf machinectl completions: Add --no-ask-password 2015-07-02 14:36:48 +08:00
Fabian Homborg
25d19f7d63 Add completions for systemd's machinectl 2015-07-02 14:36:48 +08:00
David Adam
ae58809c9f the slow death of fishd continues 2015-07-02 14:36:31 +08:00
David Adam
322a611872 Bump version for 2.2.0 2015-06-28 18:11:48 +08:00
David Adam
976ce1e8fd Add completions for Debian's Apache tools, a2{en,dis}{mod,conf,site}
Work on #2141.
2015-06-26 16:14:01 +08:00
David Adam
6ec58a20c0 Revert "Automatically add include paths for ncurses on Cygwin"
This reverts commit cd7f1a15f8.

Contemporary Cygwin systems provide the correct symlinks on both 32-bit
and 64-bit installations to allow the transparent use of libncursesw as
libncurses.

Reversion of #1454.
2015-06-26 13:14:30 +08:00
ridiculousfish
ecb2da3142 Fix wildcard expansion in directories without read permissions
When performing wildcard expansion with a literal path segment,
instead of enumerating the files in the directory, simply apply the
path segment as if we found the directory and continue on. This
enables us to expand strings that contain unreadable directory
components (common with $HOME) and also improves performance, since
we don't waste time enumerating directories unnecessarily. Adds
a test too.

Fixes #2099
2015-06-25 19:22:15 -07:00
Fabian Homborg
ad237136e7 Add completion for systemd's busctl 2015-06-23 16:02:59 -07:00
ridiculousfish
a4d6a104a6 Correct name and author fields to be lowercase in sorin prompt
fish_config requires that these fields be lowercase, otherwise
they won't show up in the prompt list.
2015-06-23 15:58:56 -07:00
Ivan Tham
a150ae76ac Add sorin theme 2015-06-23 15:46:16 -07:00
ridiculousfish
4621e763b6 Fix wildcard expansion in directories without read permissions
When performing wildcard expansion with a literal path segment,
instead of enumerating the files in the directory, simply apply the
path segment as if we found the directory and continue on. This
enables us to expand strings that contain unreadable directory
components (common with $HOME) and also improves performance, since
we don't waste time enumerating directories unnecessarily. Adds
a test too.

Fixes #2099
2015-06-20 12:32:30 -07:00
David Adam
8db162e048 configure: use feature detection for -rdynamic
Fixes the Cygwin build, works on OS X.

Work on #170.
2015-06-20 21:33:36 +08:00
David Adam
7d94b7fd1b __fish_print_hostnames: ignore errors from getent
Closes #2137.
2015-06-19 16:42:48 +08:00
ridiculousfish
d79a72d722 Add abbreviation tests 2015-06-14 14:14:12 -07:00
ridiculousfish
d018ef39e1 Add abbreviation tests 2015-06-14 14:13:57 -07:00
ridiculousfish
781bbe217a Tweak and add tests for abbr
1. When run with no arguments, make abbr do the equivalent
   of `abbr --show`
2. Enable "implicit add", e.g. `abbr gco git checkout`
3. Teach `abbr --show` to not use quotes for simple cases
4. Teach abbr to output -- when the abbreviation has
   leading dashes

Add some basic tests to abbr too.
2015-06-14 14:13:33 -07:00
ridiculousfish
4115a2f2d1 Tweak and add tests for abbr
1. When run with no arguments, make abbr do the equivalent
   of `abbr --show`
2. Enable "implicit add", e.g. `abbr gco git checkout`
3. Teach `abbr --show` to not use quotes for simple cases
4. Teach abbr to output -- when the abbreviation has
   leading dashes

Add some basic tests to abbr too.
2015-06-14 14:12:29 -07:00
ridiculousfish
064ad7b981 Rework how the mode is reported in fish_vi_mode
Add a new function fish_mode_prompt which (if it is defined) has its output
prepended to the left prompt. Rather than replacing the prompt wholesale, make
fish_vi_mode enable this function by setting a variable __fish_vi_mode. This
enables vi mode to interoperate nicely with custom prompts. Users who want
to change how the mode is reported can either redefine this function or
erase it entirely. Fixes #1988.
2015-06-14 11:36:20 -07:00
ridiculousfish
767742c7e7 Rework how the mode is reported in fish_vi_mode
Add a new function fish_mode_prompt which (if it is defined) has its output
prepended to the left prompt. Rather than replacing the prompt wholesale, make
fish_vi_mode enable this function by setting a variable __fish_vi_mode. This
enables vi mode to interoperate nicely with custom prompts. Users who want
to change how the mode is reported can either redefine this function or
erase it entirely. Fixes #1988.
2015-06-14 11:36:11 -07:00
ridiculousfish
6fbb3c9976 fish_config to select the proper tab when run with a tab name
`fish_config abbr` should show "abbreviations" selected
in the tab list.
2015-06-14 00:12:23 -07:00
ridiculousfish
7b34aaa432 Tweak the styling of the abbreviation editor
Removes the big white block of the input fields.
2015-06-14 00:12:23 -07:00
ridiculousfish
5c6143d8e9 Use --remove instead of -e when erasing abbreviations from fish_config
Updates fish_config to use the correct argument to abbr
2015-06-14 00:12:23 -07:00
ridiculousfish
0ddd0ed4fb fish_config to select the proper tab when run with a tab name
`fish_config abbr` should show "abbreviations" selected
in the tab list.
2015-06-14 00:10:11 -07:00
ridiculousfish
2d1331e104 Tweak the styling of the abbreviation editor
Removes the big white block of the input fields.
2015-06-13 22:56:45 -07:00
ridiculousfish
9223b643b6 Use --remove instead of -e when erasing abbreviations from fish_config
Updates fish_config to use the correct argument to abbr
2015-06-13 22:56:01 -07:00
ridiculousfish
ea407476d0 Correctly un-export an env var when it is shadowed
Prior to this fix, if you exported a variable in one scope
and then unexported it in the next, it would remain exported.
Example:

    set -gx VAR 1
    function foo; set -l VAR; env; end
    foo

Here 'VAR' would be exported to 'env' because we failed to
notice that the env var is shadowed by an unexported variable.
This occurred at env var computation time, not in env_set!

Fixes #2132
2015-06-12 16:11:45 -07:00
ridiculousfish
f3560b8e62 Correctly un-export an env var when it is shadowed
Prior to this fix, if you exported a variable in one scope
and then unexported it in the next, it would remain exported.
Example:

    set -gx VAR 1
    function foo; set -l VAR; env; end
    foo

Here 'VAR' would be exported to 'env' because we failed to
notice that the env var is shadowed by an unexported variable.
This occurred at env var computation time, not in env_set!

Fixes #2132
2015-06-12 16:05:59 -07:00
David Adam
18d7465592 Merge branch 'Integration_2.2.0' 2015-06-05 14:02:25 +08:00
David Adam
b6b6de3304 vi bindings: clear commandline with Ctrl-C
Closes #2077.
2015-06-05 14:01:43 +08:00
ridiculousfish
79a6961793 Add some simple documentation for fish_vi_mode 2015-06-04 13:18:17 -07:00
ridiculousfish
ec7dd1ece8 Add some simple documentation for fish_vi_mode 2015-06-04 13:17:33 -07:00
Michael Steed
cdfb425ac4 document new input functions 2015-06-04 12:09:02 -07:00
Michael Steed
cb984cf761 Add 'bigword' vi key bindings
- Add four new functions: forward-bigword, backward-bigword,
  kill-bigword, backward-kill-bigword
- Add new enum move_word_style_whitespace and related state machine
  method
- Change vi key bindings to operate on bigwords: B, gE, W, E, dW, diW,
  daW, dE, dB, dgE, cW, ciW, caW, cE, cB, cgE, yW, yiW, yaW, yE, yB,
  ygE
2015-06-04 12:09:02 -07:00
ridiculousfish
7efbcc039d Fix brace style in one line 2015-06-01 23:03:23 -07:00
ridiculousfish
6c53862ff1 Suppress uvar error messages due to permissions or file not found
su does not reset XDG_RUNTIME_DIR, which means that XDG_RUNTIME_DIR
may point to directories that the user does not have permission
to access. Similarly there is no guarantee that XDG_RUNTIME_DIR
points to a directory that actually exists. Rather than try to
handle these issues, we simply ignore them, effectively disabling
realtime uvar notifications. Fixes #1955.
2015-06-01 23:03:11 -07:00
ridiculousfish
d31eceddaf Suppress uvar error messages due to permissions or file not found
su does not reset XDG_RUNTIME_DIR, which means that XDG_RUNTIME_DIR
may point to directories that the user does not have permission
to access. Similarly there is no guarantee that XDG_RUNTIME_DIR
points to a directory that actually exists. Rather than try to
handle these issues, we simply ignore them, effectively disabling
realtime uvar notifications. Fixes #1955.
2015-06-01 22:26:36 -07:00
ridiculousfish
3a190bbe49 Revert "Notify vte-based terminals when a command completes."
Backing out fix for #2096 until we know how to avoid
spamming other terminals (#2102)

This reverts commit 5c4acc8ee1.
2015-05-30 11:57:31 -07:00
Ben Liblit
5c4acc8ee1 Notify vte-based terminals when a command completes.
Notification is sent using an OSC 777 escape sequence as described at
http://known.phyks.me/2014/local-notifications-for-weechat-and-urxvt.
The specific notification is crafted to match that emitted by bash
when running under Fedora 22 with the "vte-profile" RPM installed.
See the code for "__vte_prompt_command" starting at
http://pkgs.fedoraproject.org/cgit/vte291.git/tree/vte291-command-notify.patch#n307
to see exactly what bash produces.  My approach is, however, a bit
more paranoid about control characters embedded in commands.

Gnome-terminal 3.16 responds to this escape sequence by posting a
desktop notification if the containing terminal window does not have
focus.  This lets the user know that a long-running background command
has completed.  Job notification is promoted as a Fedora 22 feature
(http://fedoramagazine.org/terminal-job-notifications-in-fedora-22-workstation/),
so it would be good for fish users to be benefit from it.

Conversely, anyone who does not want this feature can use "functions
--erase __notify_vte_command_completed" to turn it off.
2015-05-28 03:10:56 -05:00
David Adam
92a9ba478b Update to newer install-sh version
(Now from Automake 1.14.1.)
2015-05-28 12:30:34 +08:00
David Adam
71a5db6961 Update to latest config.sub and config.guess versions
(Now from http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree, timestamp
March 2015)
2015-05-28 12:29:46 +08:00
David Adam
013d91d4ee Revert "Add completions for pass"
This reverts commit bfbeca8b6c which was
submitted in #2089.

`pass` ships its own completions and duplication is likely to cause
problems.

See https://github.com/fish-shell/fish-shell/pull/1843 for the
rationale.
2015-05-25 12:02:05 +08:00
John Pham
8e0c1c70ce Add completions for git-filter-branch 2015-05-23 11:43:54 +02:00
Rico Sta. Cruz
bfbeca8b6c Add completions for pass 2015-05-23 06:07:57 +08:00
David Adam
c0cf25cf0b abbr: rename --remove to --erase
for consistency with other fish commands

Closes #2071.
2015-05-22 09:48:39 +08:00
ridiculousfish
edf6a951ee Unescape the token returned by builtin_commandline
Fixes #2075
2015-05-22 08:46:23 +08:00
David Adam
412a42246f mimedb: kill mimedb.h
Closes #2064.
2015-05-21 16:49:25 +08:00
David Adam
781b61d074 Merge branch 'Integration_2.2.0' 2015-05-21 15:32:23 +08:00
David Adam
1c99ef5b6e FAQ: shorter fish_title fix
[skip ci]
2015-05-21 12:05:21 +08:00
ridiculousfish
2008415106 Unescape the token returned by builtin_commandline
Fixes #2075
2015-05-19 22:13:55 -07:00
ridiculousfish
386d6a77f2 Make fish_config work correctly when IPv6 is disabled in the kernel
Fixes #1754
2015-05-17 19:18:27 -07:00
ridiculousfish
a83323705d Make fish_config work correctly when IPv6 is disabled in the kernel
Fixes #1754
2015-05-17 19:13:50 -07:00
ridiculousfish
29d22e4e8b Stop showing help for function on an error
It's long and obnoxious
2015-05-17 14:20:18 -07:00
ridiculousfish
286c60bc9d Correctly handle mixing named arguments with function name
Before this fix, `function -a arg1 name1` would produce a
function named 'arg1'. After this fix, it will produce a
function named 'name'. See #2068 for more.
2015-05-17 14:17:01 -07:00
Jeremy W. Sherman
c26d317da5 documents function options must follow name
When declaring a function using the function "function", the options must follow, not precede, the function name.

The examples demonstrate this syntax, but the synopsis previously showed the options preceding the name.
2015-05-17 14:45:54 -04:00
ridiculousfish
534fd1a59e Pass the character index, not the character, to parse_util_expand_variable_error
Fixes #2067
2015-05-15 17:56:12 -07:00
ridiculousfish
49b49d7ed4 Pass the character index, not the character, to parse_util_expand_variable_error
Fixes #2067
2015-05-15 17:17:30 -07:00
David Adam
14bf2ee5cb bump version for 2.21b 2015-05-05 08:37:06 +08:00
Jakukyo Friel
cec1dc2095 doc: faq: avoid overwriting config.fish.
In FAQ:

> I'm seeing weird output before each prompt when using screen. What's wrong?

The command provided is

    echo 'function fish_title;end' > ~/.config/fish/config.fish

Using `>` will overwrite current config.fish.

We should use `>>` instead.
2015-05-03 23:38:05 -07:00
Brendan Whitfield
9b5026f7e5 added cursor:pointer to master_element in web_config css 2015-05-03 17:33:25 +08:00
ridiculousfish
96dfd27725 Disable __fish_parse for 2.2 release
Fixes #1809
2015-05-02 21:35:49 -07:00
ridiculousfish
905d8b2aa5 Don't stop history search on repaint
Fixes #2044
2015-05-02 18:42:38 -07:00
ridiculousfish
3ca518255e Treat comments ending in backslashes as not continuing onto the next line
Fixes #1255
2015-05-02 18:22:20 -07:00
ridiculousfish
c59119e0b7 Correct a reference to the wrong issue. 613, not 163! 2015-05-02 17:54:32 -07:00
ridiculousfish
0748a4d8b6 Use a more appropriate type for the reader_test function 2015-05-02 17:49:38 -07:00
ridiculousfish
3722f91e38 Upgrade Xcode project format to latest 2015-05-02 17:12:34 -07:00
ridiculousfish
ba721d6cbf Teach Xcode build to create vendor_completions.d directory
Per #1485
2015-05-02 16:58:47 -07:00
David Adam
5532e5aa8a docs: document pkg-config command for vendor_completions.d 2015-05-01 16:56:21 +08:00
David Adam
9cae8bf8a6 docs: document __fish_complete_path function
Introduced with 6ece852 for #834.
2015-05-01 16:56:21 +08:00
David Adam
cb92a1d12f CHANGELOG: remove, unused
[skip ci]
2015-05-01 16:56:17 +08:00
ridiculousfish
1242e63b6a Use mode 0600 for history file
Fixes #2041
2015-04-29 17:52:50 -07:00
ridiculousfish
f30872a7b5 Recalculate exported variables when universal variable is erased
Fixes #2046
2015-04-29 17:28:49 -07:00
ridiculousfish
9c3a9a1e73 Remove a redundant implementation of append_syntax_error 2015-04-29 17:02:32 -07:00
ridiculousfish
c91f70523c Rework error messages to be shorter and to handle more special bash-isms
Example: we can point $* to argv

Fixes #1288
2015-04-29 16:53:02 -07:00
ridiculousfish
3d9c24196d Add test for error messages
Preparation for issue #1228
2015-04-25 18:47:17 -07:00
Ingo Blechschmidt
6f438f65de typo 2015-04-25 18:59:43 +02:00
ridiculousfish
879d03d0fe Reset the color after printing the CWD in classic+git prompt
Fixes #2034
2015-04-23 17:53:40 -07:00
ridiculousfish
7a1fc028e3 Only pass the command name to command-not-found
With the fix for #365, fish_command_not_found event handlers
receive the command and all of its arguments. But commands
like /usr/lib/command-not-found expect only the command name.
So when invoking an external command, just pass the command
name, not all of the arguments.
2015-04-20 02:22:54 -07:00
ridiculousfish
c3ef23b10f Support for a "pending item" in history.
Before running a command, we add the command to history, so
that if the command causes us to exit it's still captured in
history. But that command should not be considered part of
history when expanding the history within the command itself.
For example, `echo $history[1]` should be the previously
run command, not `echo $history[1]` itself.

Fixes #2028
2015-04-20 02:04:17 -07:00
Sanne Wouda
722fedc8fd rewrite input_mapping_execute for clarity
For the case
```
bind \et "commandline -i 1" "commandline -i 2"
```
the order of execution of the commands is now in-order.

Note that functions codes are prepended to the queue in reverse order, so they
will be executed in-order.  This should allow all bindings of the form
```
bind \et beginning-of-line force-repaint
```
to remain unchanged.
2015-04-19 16:56:48 -07:00
Sanne Wouda
32936b0eb9 Change lookahead_list into a queue
Using builtin `commandline -f`, one would expect to have commands executed in
the order that they were given.  This motivates the change to a queue.

Unfortunately, fish internals still need lookahead_list to act as a stack.  Add
and rename functions to support both cases and have lookahead_list as
a std::deque internally.

This code is delicate, and we should probably dog-food this in nightly for
a while before the next-minor release.

Fixes #1567
2015-04-19 16:56:48 -07:00
Roman Hargrave
3559f20c8f Pass entire argv content to fish_command_not_found recipients 2015-04-19 15:50:10 -07:00
Roman Hargrave
9dc53f7c1b Added completions for apt command 2015-04-16 10:47:36 +08:00
Konrad Borowski
9c007d1c94 Revert "document evaluation of /etc/profile.d/*.fish, introduced in 20a6b65"
This reverts commit e17f6fb2dc.
2015-04-14 19:10:58 +02:00
ridiculousfish
6faac2d2c8 Revert "Source files /etc/profile.d/*.fish at startup"
Per discussion in #1956, back this out until we have consensus.

This reverts commit 20a6b65b25.
2015-04-14 10:08:40 -07:00
David Adam
665314b240 translations: update new strings 2015-04-13 22:19:29 +08:00
Sanne Wouda
cb1e3c501d Simplify begin_header production
The TOK_END is swallowed by the subsequent job_list anyway.
2015-04-13 13:23:59 +08:00
Sanne Wouda
9e8e5af064 Add test cases for parsing 'begin' without ';' 2015-04-13 13:23:59 +08:00
Sanne Wouda
fd731fb74f Modify parser to accept 'begin' without ';'
Examples that work as expected (even completions don't get confused):

$ begin true; end;
$ begin if true; end; end
$ begin if true; echo hi; end

The last example correctly expects another 'end' to match 'begin'.

Fixes #1248.
2015-04-13 13:23:59 +08:00
David Adam
d1a56139e1 fish.cpp: check for fishd from old version and warn if reachable
Work on #1730.

With thanks to Andrew Lutomirski (github.com/amluto) for the SOCK_DGRAM
trick:
https://github.com/fish-shell/fish-shell/pull/2023#issuecomment-91866965
2015-04-12 23:58:55 +08:00
David Adam
3408b2759e .gitignore: fishd is dead 2015-04-12 23:58:55 +08:00
Sanne Wouda
fbe28fd5d8 Tombstone only when explicitly removing a function.
Do not tombstone a function when it is evicted normally from the LRU cache.
This broke changing `fish_function_path`, since that would evict all nodes,
resulting in accidental tombstones, which caused autoloaded functions to
never be reloaded.

See #213.
2015-04-08 10:46:38 -07:00
ridiculousfish
97aa1c033b Switch back to insert mode after executing a command in vi mode
Fixes #1933
2015-04-08 10:31:48 -07:00
Nathan L Smith
34296dd440 add completions for test kitchen 2015-04-07 13:49:54 +08:00
ridiculousfish
87428672d8 Fix funcsave to not delete the function it just created
In 73f344f41b, we allowed autoloaded functions to be deleted.
For some reason, funcsave immediately deletes the function it
creates. This previously did very little, since the function would
immediately be re-autoloaded, but with the fix for 73f344f41b
the function gets tombstoned. So the effect is that funcsave
makes the function disappear! This simply removes the erase call,
which dates back to fish 1.x.
2015-04-06 22:40:13 -07:00
ridiculousfish
84899fb2f8 Small tweaks to clarify some code
Adds a comment about a recursive lock, and changes an ==1 to >0
for improved clarity
2015-04-06 08:38:31 -07:00
Sanne Wouda
73f344f41b Revert 1349d12 and properly fix #213
As suggested by @ridiculousfish, when removing autoloaded functions, add them
to a tombstones set.  These functions will never be autoloaded again in the
current shell, not even when the timestamp changes.

Tested as per comment 1 of #1033.  `~/.config/fish/functions/ls.fish` contains
the function definition.  `function -e ls` removes the redefined `ls` (and
reverts back to the built-in command).  `touch .../ls.fish` does not cause the
function to be reloaded.
2015-04-06 00:10:55 -07:00
ridiculousfish
9f8cec7f9e Add a test for issue #1987 2015-04-05 23:47:04 -07:00
Sanne Wouda
318daaffb2 Ignore comments for backslash newline
Works also if tok->show_comments (for highlighting and auto completion) and
with multi-line comments:

function my_function
    echo "hello" | \
    #remove 'l'
    #and more
    tr -d 'l'
end

$ my_function
heo

Fixes #983
2015-04-05 23:03:24 -07:00
Sanne Wouda
cad1dc5293 Fix #1978:"ul: unknown escape sequence" when asking for help
It seems that `ul` can't handle the escape sequences for bold text that `nroff` generates on my system.  Fixed by either removing `| ul`, or adding `-c` to the `nroff` command.

Needs testing for old (OSX?) versions of nroff.
2015-04-04 12:03:58 -07:00
David Adam
900a8a1408 __fish_complete_python: fix regex to be POSIX-compatible
Closes #2004.
2015-03-30 15:13:04 +08:00
David Adam
384cb2d735 Revert "__fish_config_interactive: warn users that fishd is going away"
This reverts commit ad61c3f0d6.

Work on #1730.
2015-03-30 13:42:59 +08:00
David Adam
ad61c3f0d6 __fish_config_interactive: warn users that fishd is going away
Work on #1730
2015-03-26 16:24:52 +08:00
David Adam
c10aab77da docs: move discussion of fishd file to universal variable section 2015-03-26 10:31:25 +08:00
David Adam
e17f6fb2dc document evaluation of /etc/profile.d/*.fish, introduced in 20a6b65
Work on #1956.
2015-03-26 10:31:06 +08:00
ridiculousfish
e896acffd7 Use $PWD instead of (pwd) in sample prompt
This improves the case where the working directory has vanished

Fixes #1857
2015-03-24 17:03:40 -07:00
ridiculousfish
20a6b65b25 Source files /etc/profile.d/*.fish at startup
Fixes #1956
2015-03-24 16:46:25 -07:00
ridiculousfish
01026c137f Don't evict autoloaded functions from background threads
Fixes a bug where generating a lot of autoloaded functions from
syntax highlighting would result in evicting nodes on background threads,
resulting in a thread error.

Fixes #1989
2015-03-23 12:31:22 -07:00
ridiculousfish
7aac3db55c Make "readahead" text insertion clear the pager
Without this change, pasting text with the pager contents
visible would not clear the pager.

Fixes #1974
2015-03-23 12:09:16 -07:00
ridiculousfish
0ecf294d34 Use natural (digit-sequence-aware) sorting for wildcard expansion
Fixes #1993
2015-03-23 11:13:26 -07:00
David Adam
89da09636e travis: parallel make 2015-03-20 14:53:37 +08:00
David Adam
f8299a1274 travis: add gitter.im room (experimental) 2015-03-20 14:46:13 +08:00
Martin Hamrle
94e9d6a5ef Add paging into navigating pager 2015-03-20 14:41:38 +08:00
Lucretiel
733108e33b Updated exit.txt reference to source
Changed the text referencing 'source' in exit.txt from '.' to 'source'
2015-03-18 16:22:29 -04:00
David Adam
48d353610f abbr: coalesce multiple arguments to --add
Makes the behaviour of the script match the documentation.
2015-03-13 16:32:05 +08:00
David Adam
bff68f3bfc reader.cpp: during forced exit, send SIGHUP to foreground processes only
Closes #1771.
2015-03-12 14:11:06 +08:00
Geoff Nixon
b9bd0166b6 Fix return value of if/else statements to match POSIX. Hopefully should close #1443, and reverses some of #1061 / e632d39b. 2015-03-11 20:32:16 +08:00
David Adam
1116929d2f Merge branch 'Integration_2.1.2' 2015-03-11 13:49:06 +08:00
Fabian Homborg
22103e4849 systemctl: Fix devices/slices/scopes/swaps completion
A rogue single-quote meant that a non-existent function
'__fish_systemctl_$t' was called
2015-03-11 13:29:18 +08:00
Ryo ONODERA
e421c12cc4 Fix typo in comment.
* DragonFly BSD is not Dragonfly BSD.
2015-03-07 08:34:01 +01:00
Fabian Homborg
5a9b1b1b57 Revert "Adjust filters a bit" - it doesn't work for .service
Unfortunately, list-unit-files doesn't understand --state=loaded

This needs a new function to explicitly use list-units

This reverts commit 9f521b7694.
2015-03-06 23:05:24 -08:00
Fabian Homborg
d99ed89aa3 Adjust filters a bit
This includes only showing unmasked units in mask, only loaded units in
start and more types in show/list-dependencies
2015-03-06 23:05:24 -08:00
Fabian Homborg
b9dd057a04 Make enable/disable completions work again
Was single-quoted, should have been double-quoted
2015-03-06 23:05:24 -08:00
Fabian Homborg
369a09e57e Simplify code by removing duplicated descriptions
For-loops ftw!
2015-03-06 23:05:24 -08:00
Fabian Homborg
468648ff51 systemctl completions: Improve option handling 2015-03-06 23:05:24 -08:00
Fabian Homborg
8c41a053fe systemctl completions: Show options for --property=
Inspired by the official bash completion, this uses systemd --dump-configuration-items.
2015-03-06 23:05:24 -08:00
Fabian Homborg
a1b3358cb8 systemctl completions: Remove duplicated commands 2015-03-06 23:05:24 -08:00
Fabian Homborg
16e65c849c systemctl completions: Only list matching units on enable/disable 2015-03-06 23:05:24 -08:00
Fabian Homborg
33c0d93b20 systemctl completions: Add more unit types and commands
It should now support all unit types mentioned in systemd.unit(5)
2015-03-06 23:05:24 -08:00
Fabian Homborg
3d163eb910 systemctl completions: Simplify code by using __fish_seen_subcommand_from 2015-03-06 23:05:24 -08:00
Fabian Homborg
3e32715693 systemctl completions: Support user-mode 2015-03-06 23:05:24 -08:00
Fabian Homborg
388a8d09d8 systemctl completions: Support command-after-options
This fixes completions for e.g. `systemctl --quiet status`
2015-03-06 23:05:24 -08:00
ridiculousfish
b4aa2b7c2c Allow fish to properly exit from job_continue when receiving a signal
e340baf6cc introduced a bug where fish would not exit from job_continue
when receiving a signal like SIGHUP. This means that it would not in turn
deliver SIGHUP to its children, who would therefore never exit. Those
children may attempt to write to stdout, in which case they would receive
EIO; this can cause other weird issues, like telnet using 100% CPU.

Fixes #1958
2015-02-27 09:56:19 -08:00
Trenton Broughton
dd595dd110 Added some common completions
* Added completion for `git branch --merged`
* Added completion for `git branch --no-merged`
2015-02-19 11:10:04 -05:00
ridiculousfish
95687a03fb Bump OS X version from 2.1.1 to 2.1.2 2015-02-16 11:07:12 -08:00
ridiculousfish
b3aa187867 Use a symlink instead of a hard link for fishd.socket compatibility path
On OS X, work around filesystem corruption triggered by having hard
links in /tmp, by using a symlink instead.
2015-02-09 15:37:51 -08:00
Konrad Borowski
b5d9e366ad Mention that for variables are local.
This is the current behaviour, documentation can be updated if this
behaviour changes, assuming it can, because it's an incompatible
change.
2015-02-06 07:48:47 +01:00
ridiculousfish
d7ba6e4a1d Properly fire events for universal variable changes
Fixes #1929
2015-02-03 16:13:02 -08:00
David Adam
981a71555f reader.cpp: don't set title in dumb terminals
Closes #1907.
2015-02-02 15:41:29 +08:00
David Adam
597dda5a4b isatty: use command test instead of redirections
Adds a fork but can't use builtin test yet.

Closes #1870.
2015-02-01 18:18:34 +08:00
David Adam
66acd17bc0 isatty: revert to previous behaviour
This partially reverts commit 60808a4820.
2015-02-01 18:18:34 +08:00
T. Jameson Little
793784c087 Add command-not-found handler for Arch Linux
- checks for `pkgfile`, which is an optional (but official)
  package used for searching for packages given a file
2015-01-30 22:01:40 -07:00
LoveIsGrief
df6f1e8f62 Add hg branch and status to terlar's prompt 2015-01-30 23:07:40 +08:00
LoveIsGrief
facfe33218 Add function to ouput hg branch and status for a prompt
This is an adaptation of terlar's git prompt output
2015-01-30 23:07:40 +08:00
David Adam
78dfc57b1e web_config: set new prompts via JSON instead of URI-encoded
Fixes problems with encoding and decoding Unicode from URL-encoded strings,
which was impossible to get right in Python 2.
2015-01-30 22:54:13 +08:00
David Adam
d17ba69f9e web_config: respect the client's character set for JSON 2015-01-30 22:52:41 +08:00
David Adam
5c16b5598b web_config: fix python2/3 unification for parse_qs 2015-01-30 22:52:07 +08:00
David Adam
028d9e8e3b default key bindings: ignore FocusIn/FocusOut control sequences
Closes #1917.
2015-01-30 16:01:25 +08:00
David Adam
53a4814d8b web_config: respect linebreaks in prompt demos 2015-01-29 21:41:31 +08:00
David Adam
1ff9aba6b1 rsync completions: rework transformation of file list
Accounts for filenames that contain spaces.

Closes #1872.
2015-01-23 12:27:23 +08:00
Bruno Pinto
39748870b6 math requires bc package 2015-01-22 14:47:28 +08:00
ridiculousfish
b0cbad84f4 Stop leaking the result of wrealpath 2015-01-20 01:04:07 -08:00
Jelte Fennema
f920be5ea3 Make emerge completion more powerful 2015-01-19 17:39:37 +08:00
Jelte Fennema
f9384fe323 Make commands more readable 2015-01-19 17:39:25 +08:00
Bruno Pinto
789a54222d adding a dockerfile building fish on a centos machine 2015-01-19 02:13:36 -02:00
ridiculousfish
68efa5233c Fix and add tests for format_long_safe with negative numbers 2015-01-18 16:03:21 -08:00
Max Gonzih
dce487380c Fix not found handler for fedora 2015-01-18 11:52:15 +01:00
ridiculousfish
75a76c596c Clean up recent fix for #1892
Restore 906d235 and simplify how __fish_restore_status works
2015-01-17 15:36:30 -08:00
ridiculousfish
7164769d33 Introduce tests for #1892 2015-01-17 15:22:37 -08:00
Jelte Fennema
9e3f912747 Ignore error message when not on a Gentoo system 2015-01-17 11:51:36 +01:00
Konrad Borowski
e529b78365 Don't define unnamespaced internal function. 2015-01-17 11:50:23 +01:00
Daniel K
9374494d2b Fix job_or_process_extent with command substitution 2015-01-17 11:47:42 +01:00
Jorge Bucaran
2018b9b217 Fix: eval should preserve previous $status if the evaluated block does not change it
Empty functions may return 1 when eval is used due to the $status not being correctly preserved inside the function definition.
2015-01-17 11:44:55 +01:00
Peter Dave Hello
3c0902b7e4 Use svg instead of png to get better image quality 2015-01-17 11:42:54 +01:00
Ben Hamilton
b31305b9bd Unexport CMD_DURATION
Valid uses of this environment variable don't really include passing
it to subsequent child processes.

I confirmed the fix with:

  function fish_prompt
      echo "cmd duration [$CMD_DURATION] "
  end

  cmd duration [0] sleep 2
  cmd duration [2002]
2015-01-16 11:57:26 -08:00
ridiculousfish
d4eded2376 Make octal/hex escapes in printf and echo output literal bytes
Fixes #1894
2015-01-15 11:21:07 -08:00
ridiculousfish
20974edc14 Use iothread_perform variant that doesn't take a completion callback
Removes some ugly NULL casts
2015-01-14 10:05:07 -08:00
Kevin Ballard
6e2132e01f Reap jobs before calling select() in job_continue()
Prior to b0e09303a, simple jobs like `printf "%s\n" $line | read word _`
never hit the call to select() because they were reaped in the SIGCHLD
signal handler. With that commit, the signal handler no longer reaps
children, and a job like that would enter select() and hit the 10000μs
timeout before discovering that the job was already complete.

Fixes #1884.
2015-01-12 22:26:07 -08:00
ridiculousfish
34db67680d Ignore user-supplied fd redirections above 2 for builtins
Prevents e.g. specifying an fd which corresponds to the history file
as the stdin for builtin_source
2015-01-08 10:44:05 -08:00
ridiculousfish
7864d0d416 Rework file descriptor handling
Remove global array of file descriptors, in
favor of relying on CLO_EXEC exclusively.
Also correctly implement "pipe avoidance" so
that fd redirections do not conflict
with pipes.
2015-01-07 18:07:06 -08:00
ridiculousfish
d1feb9bcbf Use scoped_push to save and restore real_io
Fixes a dangling pointer
2015-01-07 16:41:16 -08:00
ridiculousfish
906d235601 Add more expository comments to eval, and remove a useless parameter 2015-01-07 14:56:41 -08:00
ridiculousfish
e045eabad6 Add tests to verify pipes do not conflict with fd redirections 2015-01-04 14:18:06 -08:00
ridiculousfish
218bd7a687 Ignore xccheckout files 2015-01-04 13:46:03 -08:00
ridiculous_fish
70a99e494d Mark libnotify FDs as CLO_EXEC
Fixes a fd leak on OS X
2015-01-04 01:21:23 -08:00
ridiculousfish
e340baf6cc Remove useless signal-checking loop in job_continue
This loop has always been nonsense.
2014-12-29 01:04:13 -08:00
ridiculousfish
182faca2e5 Stop blocking signals within job_promote
Since we no longer inspect the job list from
a signal handler, we don't need to muck with signals
when modifying the job list
2014-12-29 00:56:27 -08:00
ridiculousfish
14834ff076 Rename events and simplify signal event handling
- Rename 'events' to 's_event_handlers'
- Stop inspecting the s_event_handlers list upon receiving
a signal. Instead, maintain the set of signals that are observed
in a separate static array. This lets us avoid mucking with
STL data structures in a signal handler, and so avoid blocking signals
in event.cpp
2014-12-29 00:38:11 -08:00
Andreas Heiduk
a0127a0c7a Change fish_paginate to paginate both stdout and stderr. 2014-12-28 23:14:13 +08:00
volnt
390fe05a87 Update pythonista.fish: make virtualenv aware that prompt is set
Closes #1823, closes #1795.

Signed-off-by: David Adam <zanchey@ucc.gu.uwa.edu.au>
2014-12-28 19:28:12 +08:00
David Adam
b9ff17f33c test: note that the square bracket form is available
As requested in https://github.com/fish-shell/fish-shell/issues/1850
2014-12-28 19:03:26 +08:00
ridiculousfish
5f2ea007a5 Close <code> before <pre> in fish_indent 2014-12-24 14:17:06 -08:00
ridiculousfish
e5a2343879 Use <pre><code> for fish_indent HTML output
As suggested in #1827
2014-12-24 13:08:16 -08:00
ridiculousfish
8d50b2509d Update completions for fish_indent 2014-12-24 13:07:28 -08:00
ridiculousfish
a76afd6dae Clarify some documentation regarding fish_indent 2014-12-24 13:05:31 -08:00
ridiculousfish
77a7dd82a9 Fix for assertion failure in fish_indent when setting a non-RGB color 2014-12-24 12:43:17 -08:00
Jonathan Arnett
04651105a8 Tmuxinator completions 2014-12-24 02:22:41 -05:00
ridiculousfish
d300bd4b62 Document new flags to fish_indent 2014-12-23 17:21:54 -08:00
ridiculousfish
a21db45cee Improve indentation of blocks inside if/while headers
Fixes #1665
2014-12-23 16:30:39 -08:00
ridiculousfish
2e948d9d6d Update fish_indent Xcode build target 2014-12-23 16:16:37 -08:00
ridiculousfish
6fa9a18a2b Correct path in fish_indent tests 2014-12-23 15:51:18 -08:00
ridiculousfish
da2e2c2e99 Implement tests for fish_indent 2014-12-23 15:46:47 -08:00
ridiculousfish
8ba0ab2172 Rewrite of fish_indent
Changes fish_indent to leverage new parse tree
Also supports colorizing output via --html and --ansi flags.
2014-12-23 15:32:01 -08:00
ridiculousfish
96589920d5 Allow running specific high-level tests by passing the name to test.fish
Example:
  tests/test.fish expansion
This will run the tests in expansion.in only
2014-12-23 12:20:44 -08:00
ridiculousfish
8c17d48c83 Include fallback.h in output.h to avoid a compile error 2014-12-23 12:02:09 -08:00
ridiculousfish
d458a8a03d Clean up the last token when receiving TOK_END 2014-12-23 11:22:54 -08:00
ridiculousfish
39fe9fcfcd Tweak comment handling. Mark a parse node with a new flag when it has comments 2014-12-23 10:58:45 -08:00
ridiculousfish
bf80b0db19 Fix to avoid generating multiple error nodes on parse error 2014-12-23 10:53:38 -08:00
ridiculousfish
ebfaa8cc95 Replace an expensive expand_one call with the cheaper unescape_string
Makes parsing a little faster
2014-12-23 10:08:41 -08:00
Max Gonzih
46cd89c2db Support nixos command-not-found handler 2014-12-22 11:16:36 +08:00
David Adam
8124b5073f osx/config.h: add some missed defines 2014-12-21 23:40:46 +08:00
David Adam
a4e81d3978 Merge a handful of old and new fixes for the build on Solaris
Note that it does not successfully compile yet due to missing flock() on this
platform.
2014-12-21 23:38:53 +08:00
David Adam
147078f43d Solaris build fixes: use _sys_errs if available 2014-12-21 23:38:09 +08:00
David Adam
90629caa61 Solaris build fixes: detect <termios.h> in configure
The header is already used appropriately in the code.
2014-12-21 23:38:03 +08:00
David Adam
9cec0ad02c Solaris build fixes: use memset instead of bzero 2014-12-21 23:38:03 +08:00
David Adam
11bece80a8 Solaris build fixes: fallback to _XOPEN_NAME_MAX if defined 2014-12-21 23:38:02 +08:00
David Adam
a10f729ef9 use configure to detect dirent.d_type 2014-12-21 23:38:02 +08:00
ridiculousfish
b9db555343 Support for dirents without d_type (e.g. Solaris) 2014-12-21 23:38:02 +08:00
David Adam
9b43e6fa8b use configure to define NOMACROS
(added in 9ec808a4c)
2014-12-21 23:38:02 +08:00
David Adam
1edb7d3aa5 Update osx/config.h with new configure headers 2014-12-21 23:37:23 +08:00
ridiculousfish
14fde56d32 Define some macros to stop Solaris curses headers from breaking the STL 2014-12-21 23:37:23 +08:00
David Adam
a8059c5962 Solaris build fixes: pick the right curses more of the time 2014-12-21 23:37:23 +08:00
Igor Savchuk
381404c4f4 tmux completion: add more attach-session aliases 2014-12-08 17:29:24 +03:00
David Adam
68029095b5 Remove del_curterm workaround on *BSD.
FreeBSD PR was https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=108117
OpenBSD PR was 5447.

Both have been fixed for years.

This reverts commit c55cbd3f2f, among
others.
2014-12-08 08:01:03 +08:00
Konrad Borowski
9a34df604d Make fish_config handle no LANG variable set.
Fixes #1849.
2014-12-05 21:39:21 +01:00
Konrad Borowski
2f96d2b19a Add cygport completions provided by Andrew Schulman
Squashed commit of the following:

commit a396c5e95a9987ea8ce6e057910131886d1b9695
Merge: bfd1951 f329530
Author: Konrad Borowski <x.fix@o2.pl>
Date:   Mon Dec 1 17:54:02 2014 +0100

    Merge branch 'master' of https://github.com/andrex-e-schulman/fish-shell into andrex-e-schulman-master

commit f32953064e
Author: Andrew Schulman <andrex-e-schulman@users.noreply.github.com>
Date:   Mon Dec 1 05:34:29 2014 -0500

    improve descriptions of pkg and diff

commit 81def0fb30
Author: Andrew Schulman <andrex-e-schulman@users.noreply.github.com>
Date:   Mon Dec 1 04:51:20 2014 -0500

    simplify cygport option descriptions

commit 4d84eb3e5c
Author: Andrew Schulman <andrex@5200-glenwood.net>
Date:   Mon Dec 1 04:32:47 2014 -0500

    add command descriptions to share/completions/cygport

commit c7ff7e4fa2
Author: Andrew Schulman <andrex@5200-glenwood.net>
Date:   Mon Dec 1 03:09:00 2014 -0500

    add share/completions/cygport.fish
2014-12-01 17:54:59 +01:00
Rack Lin
bfd1951023 Added export alias for set global variable, made for sh/bash/zsh compatibility
Signed-off-by: Rack Lin <racklin@gmail.com>
Signed-off-by: David Adam <zanchey@ucc.gu.uwa.edu.au>
2014-12-01 15:43:57 +08:00
Vladimir Varankin
019c0fed23 Add completion for git-clean 2014-11-29 00:15:49 +03:00
王邈
bb01e5f81a Added Chinese translation.
Signed-off-by: David Adam <zanchey@ucc.gu.uwa.edu.au>
2014-11-27 14:19:03 +08:00
ridiculousfish
8526a82947 Fix for issue where fish_indent would lose blank lines 2014-11-25 10:43:03 -08:00
Kevin Ballard
94a3203c74 Disable localizations during tests 2014-11-25 01:44:58 -08:00
Kevin Ballard
184110c2e7 Revert "tests/status.in: fix test for locale, fall back to default strings"
This reverts commit 3b3fde1c5e.
2014-11-25 00:51:39 -08:00
David Adam
3b3fde1c5e tests/status.in: fix test for locale, fall back to default strings 2014-11-25 16:00:04 +08:00
David Adam
60a2e0a2ad Update English translation 2014-11-25 15:46:13 +08:00
David Adam
c78e56c509 Update various strings for translation, avoid _ for non-translations
Use __ instead of _ as a placeholder for ignored variables in `read`
statements.
2014-11-25 15:37:30 +08:00
David Adam
190cac07a3 grep.fish: don't set GREP_COLOR
grep will fall back to the default colors.

Closes #1316.
2014-11-25 08:48:16 +08:00
David Adam
efc3846fcf grep.fish: don't use GREP_OPTIONS as it is deprecated
Closes #1825.
2014-11-25 08:47:30 +08:00
Kevin Ballard
83df5ea660 Define a common mktemp for tests
GNU and BSD `mktemp` handle options differently, and it's a useful
utility for tests. As such, define a common `mktemp` function wrapper
for the test suite.

It might actually be nice to expand this for more flags and support it
globally, but that may result in confusion for any users of BSD mktemp
that expect to be running /bin/mktemp.
2014-11-24 01:51:07 -08:00
Kevin Ballard
e13d423b68 Tweak test runner to set up environment better
Update the test runners so they set up their own environment in
test_util.fish. This simplifies the Makefile and paves the way for
adding utility functions for use in the tests themselves.
2014-11-24 01:51:07 -08:00
ridiculousfish
eafd577629 Hack the tokenizer to compress multiple adjacent newlines into one
This slightly reduces the size of parse trees, and is otherwise a
minor optimization
2014-11-24 01:23:42 -08:00
ridiculousfish
196a7c9d18 Add a helpful comment warning of a nonsense result from tok_last 2014-11-24 01:23:41 -08:00
David Adam
daa856ed47 Makefile: add pkgconfig file to uninstall target 2014-11-23 14:41:22 +08:00
ridiculousfish
04dc0aca50 Fix issue where tab completions could ignore command-specific completions
Fixes #1742
2014-11-20 11:12:19 -08:00
David Adam
918d5595bd __fish_config_interactive: send CWD via escapes in Apple Terminal
Closes #68.
2014-11-20 14:45:11 +08:00
David Adam
0abdf9eeff __fish_urlencode: rework to behave properly on BSD/OS X
Work on #68.
2014-11-20 13:53:24 +08:00
Misty De Meo
8e8549ef7a brew completion: update completion
* Remove unsupported options
 * Add new 'unpack' command
2014-11-20 08:53:53 +08:00
ridiculousfish
cfc2d7fb3f Minor commenting and cleanup in screen.cpp 2014-11-19 12:39:54 -08:00
ridiculousfish
c77f8e73c8 Stop resetting the color for the character under the cursor
Fixes #1821
2014-11-19 12:37:46 -08:00
ridiculousfish
dda6be2592 Use -1 instead of 0 for the notifyd token "missing value" sentinel
This matches NOTIFY_TOKEN_INVALID
2014-11-19 11:42:55 -08:00
ridiculousfish
93eea8de66 Filter lines starting with hash from /etc/shells and /etc/group
Fixes the useradd completion when these files
contains comment lines
2014-11-19 11:42:55 -08:00
David Adam
2ddd839f52 Fix error in yum completions
Pass -- to contains.

Closes #1811.
2014-11-17 18:16:11 +08:00
David Adam
7555772432 Makefile: check HAVE_GETTEXT in Makefile not shell
Tidy up the handling of gettext/non-gettext builds a bit
2014-11-17 17:27:25 +08:00
David Adam
33f9e071a4 Makefile: remove warning about old version of gettext
gettext introduced the Shell interpreter in 2003; I think we can assume
everyone has it.
2014-11-17 17:23:32 +08:00
David Adam
9aaf93f364 web_config: improve abbreviations support
* Fetch abbreviations by reading the variable directly.
 * Use space separators for writing new abbreviations.

Work on #731.
2014-11-16 23:20:27 +08:00
David Adam
14fa48864a abbr.fish: escape the output of abbr --show
Allows abbreviations containing embedded newlines, etc., to be displayed
and exported properly.

Work on #731.
2014-11-16 23:13:22 +08:00
David Adam
206ea15b68 abbr.fish: improve support for corner cases
Handle unusual cases ('=abc', ' =abc') better - regression from
8e8e6314due to a7bab7b.

Work on #731.
2014-11-16 23:05:58 +08:00
David Adam
a7bab7b18b abbr/web_config: support space-delimited abbreviations
Support for space-delimited abbreviations was added to the expansion
parser in fbade198; this commit extends that support to the user-facing
tools, and documents the space-separated behaviour. Equals-delimited
abbreviations are expected to be removed before the next release.

Work on #731.
2014-11-15 23:48:40 +08:00
David Adam
a6a41d159c __fish_print_packages: add support for zypper
Closes #1787.
2014-11-13 18:15:35 +08:00
David Adam
59da180b8f Makefile: install locale files to $localedir 2014-11-13 14:29:28 +08:00
David Adam
51e446bc5f update keybindings docs 2014-11-13 14:15:56 +08:00
Jared Grubb
f68f91b399 Vim bindings doc: describe modes better and explain some non-vim bindings 2014-11-13 14:15:55 +08:00
Konrad Borowski
0ea80a319e Move struct stat checks in configure
Tests for POSIX_C_SOURCE value need to be done before any actual checks
2014-11-11 12:07:43 +01:00
ridiculousfish
38caa0d988 Replace some std::string with wcstring to reduce copying 2014-11-10 00:06:43 -08:00
David Adam
7c2a420e88 add license for tmux code added in d944add 2014-11-10 16:06:02 +08:00
ridiculousfish
d944add782 Use a directory in /tmp instead of ~/.config/fish for named pipe path
The home directory may not be able to support named pipes, e.g. if it's
NFS. This puts the file in a secured directory in /tmp
2014-11-09 22:57:19 -08:00
ridiculousfish
338a1311f5 Make a string into a reference, to save a copy 2014-11-09 22:03:04 -08:00
David Adam
00e0ed64bc __fish_systemctl_*: use systemctl to generate the list of units
Closes #1804.

Note that if systemd is not running, the completion will fail.
2014-11-10 12:51:07 +08:00
David Adam
f2447c537e document behaviour of arrays that are split on import 2014-11-10 11:58:11 +08:00
ridiculousfish
220a15b8f6 Put the universal variables notifier named pipe in XDG_RUNTIME_DIR
This is where named pipes belong.
2014-11-09 17:56:38 -08:00
ridiculousfish
330e996c30 Make universal variables cache the path to the variable file 2014-11-09 16:55:02 -08:00
ridiculousfish
32c0afe5a9 Clean up vared error message output
Fixes #1323
2014-11-09 16:43:14 -08:00
ridiculousfish
e83441395e Make set_color take multiple colors, and choose the best supported one
As suggested in #1323
2014-11-09 16:42:35 -08:00
ridiculousfish
43d23ee56e Remove pre-1.22 migration support in fish_config_interactive
This removes some gnarly and probably broken code that attempts
to upgrade from fish 1.21 to fish 1.22. Fixes #1714.
2014-11-09 13:27:56 -08:00
ridiculousfish
58a0f7f091 Remove "squeezing" code in pager
The "squeezing" code attempted to force completions to fit
onto a single screen, but could render them unreadable.
Let's just get rid of it.
2014-11-09 13:08:09 -08:00
Andreas Heiduk
09bac97bb4 Align fg and bg commands: With no parameters fg prints the help.
`bg` on the other hand only prints `no job`. Now both print `no job`.
2014-11-07 19:05:09 +01:00
ridiculousfish
701a37fd00 Fix to avoid shortening the command line on tab completions.
This prevents cases like `cd /usr/e` from tab-completing to
`cd /usr/` (which is the shared prefix of the tab completions).

Things are still sort of confusing with fuzzy matching, e.g.
with files like this:

    foo1bar
    foo2bar

Then ba<tab> will replace the token with foo. That's surprising,
but not new to this fix.

Fixes #1727
2014-11-06 10:13:33 -08:00
jbbrokaw
9d7fbd2cc0 Fixes typo on line 86 2014-11-04 11:06:21 -08:00
jbbrokaw
32010d1d93 Changes tabs to 4 spaces per fish style 2014-11-04 11:06:21 -08:00
jbbrokaw
75860db511 Adds heroku toolbelt completions 2014-11-04 11:06:20 -08:00
David Adam
4d588a24e9 complete: recognise -w short option for --wraps
Closes #1793.
2014-11-04 23:33:31 +08:00
ridiculousfish
9382dc32df Remove an incorrect comment 2014-11-03 11:33:22 -08:00
ridiculousfish
6db82c162c Clean up some job status messages
Stop printing anything for jobs terminated via ^C.
Don't list the job number if it's the only job.

Fixes #1119
2014-11-03 10:56:16 -08:00
ridiculousfish
c31ad3ed07 Disallow backgrounding in conditionals and before and/or bool statements
Fixes #1136
2014-11-02 13:11:27 -08:00
ridiculousfish
c33a3862cc Disable printf %a test since it has different output on FreeBSD
Fixes #1139
2014-11-02 00:27:52 -07:00
ridiculousfish
6cc64fc9e3 BOM test should only run in UTF-8 locales 2014-11-02 00:14:16 -07:00
ridiculousfish
aafff91ac8 Fix tests on FreeBSD
FreeBSD throws errors if you pass flags like O_WRONLY to mkostemp.
Pass only O_CLOEXEC.
2014-11-01 23:57:12 -07:00
ridiculousfish
4b6639f697 Allow # within string tokens
This means that # must be the first character of the string
to start a comment, in line with other shells

Fixes #953
2014-11-01 21:06:16 -07:00
ridiculousfish
fa588db148 Fix to swallow BOMs in sourced files
Fixes #1518
2014-11-01 16:25:28 -07:00
ridiculousfish
851f0bcfb3 Remove some more dead code 2014-11-01 13:57:21 -07:00
Jared Grubb
d9d9fa512d vi bindings: add CTRL-C handler in default mode
There is no CTRL-C handler for the default mode in the vi bindings. This makes it difficult to say "never mind" and start a new command line like you can do in bash's vi mode. 

There were CTRL-C handlers for insert and visual modes that go back to default mode, but nothing happens in default mode. I copy-pasted the CTRL-C handler from the default key bindings file.
2014-10-31 22:17:17 -07:00
ridiculousfish
84372ba79d Don't suggest non-directories when tab completing cd
Fixes #1059
2014-10-31 10:44:32 -07:00
ridiculousfish
7ac593273e Remove a bunch of dead code identified by cppcheck 2014-10-31 01:15:50 -07:00
ridiculousfish
a529fc9d83 Set of fixes for issues identified by cppcheck 2014-10-30 22:40:35 -07:00
ridiculousfish
173a6a71c0 Fix C_ call to work when gettext is present 2014-10-30 21:59:23 -07:00
ridiculousfish
a177eb8c16 Fix expansion tests on OS X 2014-10-30 21:51:23 -07:00
ridiculousfish
16459099af Make C_ (gettext used in completions) return wcstring 2014-10-30 18:52:37 -07:00
ridiculousfish
fa854d7a01 Eliminate wcsv2strv 2014-10-30 18:52:37 -07:00
ridiculousfish
b3b83449cf Clean up some memory allocation in builtin_commandline 2014-10-30 18:52:37 -07:00
Alex Sulim
d62694a9ce Update completion for Bundler
All commands and options available for Bundler version 1.7.4

Signed-off-by: David Adam <zanchey@ucc.gu.uwa.edu.au> (with trailing
fullstops removed)
2014-10-28 11:58:31 +08:00
Kevin Ballard
6044ac7e5e Fix 3rd arg to PROCESS_EXIT event for %self
The PROCESS_EXIT event takes 3 args: event name, pid, status. However,
when fish is exiting, the PROCESS_EXIT is instead given the status of
whether the last commandline parsed successfully. Change it to use the
same value that fish itself is going to exit with.
2014-10-27 17:23:08 -07:00
Kevin Ballard
ec5f3d0cc8 Don't require .git before running git-describe
When calculating the version, we don't need to test for the presence of
.git before running `git describe`. This lets us work properly in a
detached work tree if GIT_DIR is set.
2014-10-27 15:46:22 -07:00
Natrim
f03d90e9de Add Composer completion 2014-10-26 22:04:47 +08:00
David Adam
a31b44f9b2 contains: add documentation regarding the use of --
Closes #1194.

[skip ci]
2014-10-26 19:02:03 +08:00
David Adam
a580d04dbc history: put the output through the pager in interactive mode
(Ideally, the behaviour of git could be implemented: pipe the input
through a pager iff the length is > window size and in interactive
mode).

Closes #1076.
2014-10-26 17:19:29 +08:00
Pawel Zubrycki
c84cdcd00c Added hg repo status to robbyrussell example prompt 2014-10-26 16:00:12 +08:00
David Adam
5638764bad prompt_pwd: Use tilde expansion to get real full home path
Closes #1133.
2014-10-26 14:20:49 +08:00
David Adam
ab7af98ded expand: expand tilde to canonical paths
Work on #1133.
2014-10-26 08:50:28 +08:00
ridiculousfish
b0e09303a6 Reintroduce "Stop reaping children from SIGCHLD handler"
This re-introduces 3fe1069219
with some associated fixes to address #1768.
2014-10-25 16:51:25 -07:00
David Adam
a242a64833 Move LICENSE to COPYING and update text.
Work on #1073.

fish is not exclusively distributed under the GPL version 2; the
canonical reference is doc_src/license.hdr, so use that as the full
description.

[skip ci]
2014-10-24 17:40:35 +08:00
ridiculousfish
315ff1e712 Revert "Stop reaping children from SIGCHLD signal handler"
This reverts commit 3fe1069219.

In light of #1768
2014-10-21 11:33:22 -07:00
ridiculousfish
21a751d153 Revert "Remove some previously buggy but dead code that I mistakenly resurrected"
This reverts commit 090f027de1.
2014-10-21 11:33:12 -07:00
ridiculousfish
090f027de1 Remove some previously buggy but dead code that I mistakenly resurrected 2014-10-20 21:47:29 -07:00
Roman Inflianskas
cfa41686d2 Add setfacl completions 2014-10-21 08:27:32 +08:00
ridiculousfish
3fe1069219 Stop reaping children from SIGCHLD signal handler
Prior to this fix, a child process may be reaped in one of two ways:
1. By a call to waitpid() within job_continue
2. By a call to waitpid() within the SIGCHLD signal handler

Only the second call was with the WNOHANG option. Thus if the signal
handler fired first, and then the waitpid call fired, we could get a
deadlock because we'd end up waiting on a long-running process. I have
not been able to reproduce this on fish 1.x, though it seems like it
ought to reproduce there too.

This fix migrates the waitpid() call out of the signal handler; the
second class of calls moves to job_reap. This eliminates the possibility
of a race, because we check for job completion before calling waitpid,
and there is no longer the possibility of the job being marked as
complete asynchronously. It also results in a massive conceptual
simplification, since the signal handler is now very simple and easy to
reason about (no more walking jobs lists, etc).

This partially fixes a bug reported in #1273
2014-10-20 15:50:54 -07:00
ridiculousfish
98091faeaf Add an assertion to reflect unreachable code 2014-10-19 18:00:49 -07:00
ridiculousfish
15e095233b Allow funced to retry on error
Fixes #1371
2014-10-17 11:50:09 -07:00
David Adam
a64c372a28 web_config: add support for adding and editing abbreviations
Possible future enhancements include explanatory text and an image for
the 'save' action.

Work on #731.
2014-10-17 10:28:26 +08:00
David Adam
1f91a2a6f5 web_config: map nonexistent post requests to 404 2014-10-17 10:28:26 +08:00
David Adam
4aa38db56f ls: find and use various dircolors initialisation files, if they exist
Closes #1758.
2014-10-17 10:23:05 +08:00
ridiculousfish
9e32b330aa Unescape strings in keyword detection.
This allows keywords to be quoted. However, they may not contain
variable or process expansions, etc. Fixes #1398
2014-10-15 12:49:02 -07:00
ridiculousfish
049bd227ed Remove EXPAND_SKIP_PROCESS, which did not actually work 2014-10-15 12:43:06 -07:00
ridiculousfish
ff7108877b Use binary search to determine what tokens are keywords 2014-10-15 12:04:23 -07:00
ridiculousfish
1927ebbc5d Improve error reporting for unclosed blocks 2014-10-14 00:41:39 -07:00
Kevin Ballard
5db9548f40 Run make depend 2014-10-13 19:29:07 -07:00
Kevin Ballard
cab115c8b9 Don't stop job execution on wildcard errors
Wildcard errors are only reported interactively, and they're also not
really errors. Commands with multiple wildcards would in fact continue
executing if at least one wildcard matched, which is quite surprising.
But they would report an error if there is only one wildcard in the
arguments list and the wildcard has no match, even if there are other
remaining arguments.

Given this inconsistency, and given that sh does not stop execution if a
wildcard fails to match, it seems better to allow execution to continue.
This is better from a scripting perspective anyway, as it means
constructs like `set -l paths foo/*.txt` will actually create the
variable (with an empty value) instead of skipping the `set`
altogether and perhaps causing subsequent code to read or modify a
global or universal variable.
2014-10-13 18:51:51 -07:00
Kevin Ballard
4568359e27 Remove some obsolete job flags
These flags were used by the old parser, but not by the new one.
2014-10-13 18:33:55 -07:00
Kevin Ballard
07e4170418 Suppress wildcard errors in functions
Wildcard errors are only supposed to reported when encountered during
interactive use. The old parser also suppressed them if `is_block` was
true. This was lost in the new parser. However, this also suppresses
errors generated from `begin; code_here; end` and other block
constructs.

Instead, check the parser block stack when we hit an error, and suppress
the error if there are any function calls / events / source invocations.
These all indicate that the code being executed came from somewhere
other than the commandline.
2014-10-13 17:49:26 -07:00
Kevin Ballard
0372cdbe7e Standardize unmatched wildcard errors
Unmatched wildcard errors during parsing are normally only reported when
run interactively. The switch command was unconditionally reporting them
anyway (and not setting the status to 124). Fix it so switch goes
through the same code path as everything else.
2014-10-13 17:27:56 -07:00
ridiculousfish
5d1ddc9c58 Report certain errors from parser_t::eval() that were previously ignored 2014-10-12 20:09:45 -07:00
ridiculousfish
c0b8e81b02 Change how arrays and environment variables interact.
Prior to this change, inherited environment variables
would be split on colons, becoming an array. This change
eliminates that behavior. Now environment variables are
always split on the record separator character (ASCII 0x1e),
with the exception of a short whitelist of PATH, MANPATH,
CDPATH. Likewise, exported variables are also exported
delimited by rs, with the exception of the above whitelist.

Fixes #1374, also see #1656
2014-10-12 15:01:44 -07:00
Konrad Borowski
c3bacc78c7 Mark unknown versions as unknown. 2014-10-12 15:01:48 +02:00
David Adam
4140e678f4 web_config: further python2/3 unification 2014-10-12 16:04:40 +08:00
David Adam
cc0fcdc18d web_config: use only Python 3-style (Unicode) string literals
Improves Python 2/3 compatibility.
(It is the distant future, the year TWO THOUSAND.)
2014-10-12 15:48:14 +08:00
ridiculousfish
fbade198b9 Support space separators for abbreviations as part of #731 2014-10-11 16:50:16 -07:00
Diego Zamboni
d982f2a575 Vagrant completion updates
Improve vagrant completions for some commands to avoid spurious
completions, and add completions for some missing Vagrant commands.

Fixes #1748.
2014-10-10 15:06:00 -07:00
David Xia
becdc8b4fc Add GPL2 LICENSE file
Fixes #1073.
2014-10-10 14:25:47 -07:00
Kevin Ballard
76c6985f82 A little extra tweaking so builtin_print_help looks better
The terminal width magic that __fish_print_help learned doesn't help
when builtin_print_help runs it in a subshell. Instead, add an
undocumented --tty-width flag to __fish_print_help that's used to pass
the terminal width.
2014-10-10 00:11:23 -07:00
Kevin Ballard
ac8c5910eb Rewrite __fish_print_help to produce better results
As a result of this rewrite, the output now:

* Expands to fit the terminal width, like `man` does
* Preprocesses the manpage with `tbl` just in case, since `man` does
  this, even though I doubt any fish manpages use `tbl` formatting.
* Handle bold/underline with the `ul` command as it was designed for
  instead of trying to fake it with `sed`.
* Compresses blank lines as `man` does with the default `less -is`
  pager.
2014-10-09 23:48:10 -07:00
Kevin Ballard
cc7f1755aa web_config: Interpret fish output as utf-8
Use the unicode replacement character in place of non-utf-8 sequences.
2014-10-09 20:21:26 -07:00
Kevin Ballard
7493c9a040 fish_config: Log the path for errors 2014-10-09 18:33:59 -07:00
Kevin Ballard
9fc8729b96 Support -h/--help with eval
`eval` prints help if given a single argument of -h or --help.

Fixes #1379.
2014-10-09 18:07:57 -07:00
Kevin Ballard
80859b8483 Revert "Remove help completion for eval, which doesn't work"
This reverts commit d2f23e1df4.
2014-10-09 17:59:14 -07:00
David Adam
71c55e1a4a web_config: send correct MIME type (and actually send it) 2014-10-09 18:45:17 +08:00
ridiculousfish
d2f23e1df4 Remove help completion for eval, which doesn't work
Fixes #1379
2014-10-08 11:50:04 -07:00
ridiculousfish
c70769c656 Raise debug level to 2 on annoying Changing language to English message
Fixes #1386
2014-10-08 11:46:03 -07:00
Kevin Ballard
a13e067b85 Fix test breakage from 14724401f
We can't use $PATHS to test the :-splitting because the global config
file adds extra paths based on /etc/paths and /etc/paths.d.

Ideally fish would have a way to suppress behavior like that, but for
the time being it doesn't.
2014-10-07 19:37:13 -07:00
Kevin Ballard
8e8e63144b Rewrite abbr function
The usage is still the same, but it's a lot more robust, and also no
longer assumes $fish_user_abbreviations must be a universal variable.

This also fixes the unexpected error output when calling `abbr -a` with
no existing abbreviations.

Calling `abbr -a` with an abbreviation that already exists now silently
overwrites the abbreviation, just like `function` and `bind` do, instead
of complaining.
2014-10-07 19:14:44 -07:00
David Adam
14724401ff env.cpp: correctly check variable_can_be_array
Closes #1746.
2014-10-08 09:53:29 +08:00
Kevin Ballard
72f5ab3186 Fix typo in abbr documentation
[skip ci]
2014-10-07 16:48:22 -07:00
David Adam
3f0210dc96 web_config: fix output if no abbreviations defined 2014-10-07 12:21:02 +08:00
Kevin Ballard
3c8b344a41 Rebuild fish.pc as appropriate
Re-running ./configure will cause fish.pc to rebuild, in case any of the
paths changed. It looks like this actually won't rebuild the rest of
fish, but figuring out how to handle that is out of scope for this
commit.

More importantly, this will rebuild fish.pc when the version string
changes.
2014-10-06 19:08:26 -07:00
David Adam
46241e383f license.hdr: reduce duplication and clarify some comments
[skip ci]
2014-10-06 16:30:00 +08:00
David Adam
ea79f6b03f license.hdr: remove licensing information for XSel, no longer shipped
[skip ci]
2014-10-06 16:30:00 +08:00
ridiculousfish
649c3f262d Don't complain if no errors occurred due to cancellation
Fixes #1166
2014-10-06 00:47:55 -07:00
David Adam
f85ec782a0 set: warn on setting a universal variable when a global is active
Closes #806.
2014-10-06 15:18:03 +08:00
ridiculousfish
9df0bcea99 Clean up string handling in parse_util_detect_errors_in_argument 2014-10-05 15:40:46 -07:00
David Adam
7764a1a6f8 web_config: add support for viewing abbreviations
Add a new tab which lists the current abbreviations defined, by wrapping
the `abbr` command.

Work on #731.
2014-10-05 12:23:31 +08:00
David Adam
980bf6e2f4 web_config: set width to dynamic 80% of window
As we add more tabs, 800px looks increasingly cramped, and our config
should take advantage of the screen space available.
2014-10-05 12:23:31 +08:00
David Adam
501c3d5518 abbr.fish: add abbr, a command to manipulate abbreviations
Work on #731.
2014-10-05 12:23:31 +08:00
David Adam
6a0931aeae web_config: update AngularJS to 1.0.8 2014-10-05 12:23:31 +08:00
ridiculousfish
d7b3821c0a Use ferror instead of checking errno to detect errors in read_file
glibc sets errno even though the file read did not have an error
Fixes #1731
2014-10-04 14:28:26 -07:00
Konrad Borowski
1665f84d60 Fix Perl module completions.
This fixes the issue with nonexistant directories (some Linux
distributions put these for local modules), and also fixes the
issue of dot meaning any character instead of simply dot.
2014-10-04 11:22:56 +02:00
Roman Inflianskas
fabee7e246 add yast2 completion 2014-10-04 00:41:10 +04:00
Jon Gjengset
0ffa434926 Prevent STDERR leak from abook detection in mutt completion
Fixes #1737
2014-10-03 14:39:42 -04:00
Kevin Ballard
a7727765dc Clean up prompt_pwd with the new function -V flag
Also fixes `cd /private` displaying as no path on OS X.
2014-10-02 18:41:39 -07:00
Kevin Ballard
33a76e1f8e Update psub for the new --inherit-variable flag
Also do some minor formatting cleanup, make psub return 1 when executed
outside of a command substitution, and make it respect $TMPDIR.
2014-10-02 18:41:39 -07:00
Kevin Ballard
cfc06203e7 Add new functions flag -V/--inherit-variable
--inherit-variable takes a variable name and snapshots its current
value. When the function is executed, it will have a local variable with
this value already defined. Printing the function source will include
synthesized `set -l` lines for the values.

This is primarily useful for functions that are created on the fly, such
as in `psub`.
2014-10-02 18:41:39 -07:00
Kevin Ballard
6d7a7b00d7 Use ENV_USER with vars set via function -a
ENV_USER is intended to be used when setting any variable whose name is
controlled by the user. The names given to `function -a` certainly
qualifies. This wasn't an issue in practice because the only restriction
ENV_USER imposes is also imposed on ENV_LOCAL, but the rules may change
in the future.
2014-10-02 18:41:39 -07:00
Kevin Ballard
3f11d90744 # This is a combination of 2 commits.
# The first commit's message is:

Simplify default fish_prompt

No need for the set_color caching now that it's a builtin.

Also simplify the 3 classic prompts in fish_config's sample_prompts set.
2014-10-02 18:41:01 -07:00
Kevin Ballard
ae7b6156ac Rewrite fishscript testrunner for better output
Update the fishscript testrunner to use the same output style as the
interactive testrunner.
2014-10-02 12:33:42 -07:00
Kevin Ballard
4ba95ad1c3 Minor tweaks to initial keybinding load
Remove comment that AFAICT is not true anymore.

Ensure someone setting __fish_active_key_bindings as a universal
variable doesn't screw up the initial keybinding load.
2014-10-02 12:14:22 -07:00
Kevin Ballard
bae2b2cc47 Fix examples in bind documentation 2014-10-01 18:20:09 -07:00
Kevin Ballard
47c357a354 Tweak lexicon_filter.in for GNU sed 2014-10-01 18:19:38 -07:00
Kevin Ballard
b592da41f6 Fix doc example for echo 2014-10-01 15:30:36 -07:00
Jan-Thorsten Peter
646d9ab431 Added fish_preexec and fish_postexec events
Fixes #1549.
2014-10-01 15:09:35 -07:00
Kevin Ballard
43e451d4d8 Find fishd file even when $HOME is unset
env.cpp sets up $HOME based on the current user, if it's not inherited
from the environment. fishd_get_config should be using the same
calculated value of $HOME. To that end, move universal variable
initialization to after $HOME is set up, and read the value from the
fish environment instead of using getenv().

Fixes #1725.
2014-10-01 12:35:15 -07:00
Kevin Ballard
1be5e68e99 Export $HOME if we have to calculate it
If $HOME is unset in the environment, fish calculates it with
getpwnam(). However, it wasn't being exported. Just like the $USER
calculation, $HOME should probably be exported, because everyone will
assume that it's an environment variable (as opposed to an unexported
global variable).
2014-10-01 12:27:32 -07:00
David Adam
ab5b22982f fish.pc: add pkgconfig file for fish
Assists other packages in finding the path to install completions: call
`pkg-config --variable=completionsdir fish` or so (like
bash-completion).

As discussed in #1485.
2014-10-01 22:15:24 +08:00
David Adam
5157ac30fa Create and use $DATADIR/vendor_completions.d/ for upstream completions
Closes #1485.
2014-10-01 21:28:01 +08:00
Kevin Ballard
3616dd5889 Base status -b off the parser execution stack
Instead of globally marking the state as "in block" when evaluating
blocks/functions, update the "in block" status when pushing/popping
blocks on the parser stack.

Fixes #1729.

On a side note, `status -b` is actually pretty useless, because it
always returns 0 inside of a function (even without this patch).
2014-09-30 20:58:45 -07:00
Kevin Ballard
489fb7ec3f Expunge INTERNAL_BLOCK from the codebase
It's a relic of the old parser, and isn't used anymore.
2014-09-30 17:20:46 -07:00
Kevin Ballard
51527612d3 Don't leave is_block in bad state after bad redirection
Fixes #1728.
2014-09-30 17:06:56 -07:00
ridiculousfish
c181de1d7f Teach the highlighter about multiple adjacent square bracket expansions
Fixes #1627
2014-09-30 11:15:22 -07:00
Kevin Ballard
d67800bbce Make false/true into builtins
Making `true` into a builtin is a significant optimization to `while
true` loops. As long as `true` is a builtin, we may as well make `false`
builtin as well (despite the fact that it's not typically executed in a
loop).
2014-09-29 13:39:35 -07:00
ridiculousfish
27dd37ebb4 Fix to indent comments in blocks properly (#1710)
This makes two changes to parse trees:

1. Unmaterialized nodes no longer have an invalid source location
For example, with the code `while false;end` there are no tokens
associated with the while loop's job_list, and therefore it is
unmaterialized. Previously it would have had a SOURCE_OFFSET_INVALID.
But now it has a zero source length, but an offset equal to the end of
the while loop (i.e. the semicolon), and a zero length. Correspondingly,
the has_source function now checks the length instead of the offset.

2. Special (comment and error) nodes have always been "disconnected,"
meaning they are not the child of any other node. However, they now have
their parent offsets set to whatever the top of the node stack was when
the node was encountered. This gives us a sense of which node the
comment is "in", e.g. if we are constructing a job list then the
comment's parent will be the job list. This lets us determine the
comment's indent.
2014-09-29 11:30:21 -07:00
David Adam
a186f04f15 Manpage completions: store in $XDG_DATA_HOME
Closes #1343, works towards #1257.
2014-09-29 19:39:36 +08:00
Vincent Huang
15ca3b426f Added some completions for opam
All opam subcommands and descriptions are covered, along with
all the flags that are common to all commands. However, only
`opam config` has complete subsubcommand coverage.
2014-09-29 14:34:07 +08:00
David Adam
1c9aec4899 bind: add completions for -m and -M
See https://github.com/fish-shell/fish-shell/issues/1663
2014-09-29 14:22:37 +08:00
David Adam
f0d8d90ed1 __fish_print_hostnames: use awk to process ssh_config files
Uses awk rather than sed to account for multiple formatting options.

Closes #1260.
2014-09-29 14:08:09 +08:00
David Adam
6ece8523b1 __fish_complete_path: add new completion, mimics builtin path completion
Completions can now be written which disable file completion and then
selectively re-enable it using this function.

Closes #834.
2014-09-29 14:05:18 +08:00
Konrad Borowski
84af3dcd18 Fix YAML indentation in history. 2014-09-28 15:03:55 +02:00
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
ridiculousfish
b00cbae4b5 Fix for issue where comments are lost in function definitions
Fixes #1710
2014-09-27 17:32:54 -07:00
ridiculousfish
4f4734fc9b Fix some busted escape sequences in docs, and slightly reformat a few examples 2014-09-27 16:56:13 -07: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
2f71c15b93 Makefile: warn about SELinux; avoid a bashism
Closes #63.
2014-09-27 19:11:35 +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
David Adam
a0e5cdd178 Merge branch 'Integration_2.1.1' 2014-09-26 22:18:31 +08:00
David Adam
ba11a0eb9b Merge branch 'Integration_2.1.1' 2014-09-26 22:03:25 +08:00
ridiculousfish
b511550917 Revert "Prepend ./ to "flag-like file" wildcard expansions and completions"
This reverts commit 316d7004a3.

Reverts fix for 1519 in light of #1713

Conflicts:
	fish_tests.cpp
2014-09-25 22:18:36 -07:00
Kevin Ballard
7935b86cb2 Report expand errors better in fish tests
Print the expected and actual results if an error occurs.
2014-09-25 19:45:54 -07:00
Kevin Ballard
fb8eb22e56 Refactor expand tests slightly to handle errors better
If we get an error relating to our manipulation of the temporary
directory or cwd, we don't want to run the rest of the tests that assume
it worked.
2014-09-25 18:51:03 -07:00
Kevin Ballard
6925cd5d88 Escape the error string in process expansion errors
This prevents `echo %*` from printing a private-use character in the
error string.

Fixes #1720.
2014-09-25 18:24:10 -07:00
Kevin Ballard
35595dbffd Make escape() return a wcstring
This avoids the potential for leaking the resulting string.
2014-09-25 18:20:03 -07:00
Kevin Ballard
cd4fa518b8 Remove my_wcswidth() in favor of fish_wcswidth()
my_wcswidth() was just a wrapper around fish_wcswidth() already.
Instead, add two convenience overrides of fish_wcswidth() to common.h
that make it a drop-in replacement for my_wcswidth().
2014-09-25 18:04:11 -07:00
ridiculousfish
316d7004a3 Prepend ./ to "flag-like file" wildcard expansions and completions
If a wildcard or completion expands to a file that begins with
one or more dashes, prepend a ./ to it so that it doesn't get
parsed as an option.

Fixes #1519
2014-09-24 22:06:43 -07:00
ridiculousfish
1096b1acd5 Merge pull request #1708 from lledey/master
Fix emacs completion on OS X
2014-09-24 11:53:56 -07:00
Konrad Borowski
5766c7c53a Add empty virtual destructor for lru_node_t.
history_lru_node_t has implicit destructor defined. However, because
it's being deleted as lru_node_t, it's not being actually called, as
lru_node_t doesn't have a virtual destructor.
2014-09-24 16:37:32 +02:00
Konrad Borowski
bbce0909fe Remove dead code in history builtin. 2014-09-24 16:18:29 +02: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
ridiculousfish
0986b6d991 Ignore SIGPIPE in fishd. Fixes #1084 2014-09-24 17:51:07 +08:00
Kevin Ballard
c4a453fb22 Try to fix the Travis test failures
It seems expect prioritizes the first pattern in the list, instead of
the pattern that matches earliest in the buffer. That seems pretty
stupid, but let's try moving the prompt pattern to the end and see if
that fixes the Travis failures.
2014-09-23 23:20:02 -07:00
Kevin Ballard
1563501868 Fix missing "1 test failed" line
Also tweak colored output to reset before the newline instead of after,
so travis behaves better (for some reason reset causes travis to display
the line in black).
2014-09-23 22:50:28 -07:00
Kevin Ballard
5f82f721d2 Rejigger test suite
Split test_interactive off from test_fishscript and add a new target
test_high_level that tests both.

Add some Makefile magic so the tests can be run serially without using
sub-make, which gets rid of a little noise from the make output.

Rewrite interactive tests to look better.
2014-09-23 22:39:23 -07:00
Konrad Borowski
8d03baa4e0 Make fish config work if one of colors is undefined.
This moves the sorting to be done before sorting remaining colors.
2014-09-23 13:48:00 +02:00
Mark Griffiths
a9b7e4582f Clean up font declarations
re: fish-shell/fish-shell@2726712e01

As this is rendering ok in Firefox, this version should pickup the best
fonts for most browser/os variants based on 'font-stretch' support.

`.fish_left_bar` should be condensed, the main body font shouldn't.
2014-09-23 12:14:20 +01:00
Konrad Borowski
2726712e01 Restore DejaVu Sans Condensed font.
With font-strentch: condensed, the rendering is acceptable.
2014-09-23 12:28:08 +02:00
Mark Griffiths
8d3d51a020 lexicon_filter fix for escaped options
Fixes #1703. Also fixes short and long options markup in synopsis when
directly following a '(' or '[' character.
2014-09-23 00:24:05 -07:00
Kevin Ballard
5afd42c097 Suppress italics in keyboard shortcuts 2014-09-23 00:21:18 -07:00
Kevin Ballard
5b33e60752 Support bind SEQ to print a binding for SEQ 2014-09-22 21:30:44 -07:00
Kevin Ballard
80078491bd Fix build failure
std::vector::erase() didn't take const_iterator until C++11 >_<
2014-09-22 21:25:51 -07:00
Kevin Ballard
0a3f220572 Rework mode handling of bind
Binds with the same sequence in multiple modes was not working right.
Fix up the implementation to propagate modes everywhere as necessary.
This means that `bind` will properly list distinct binds with the same
sequence, and `bind -e` will take mode into account properly as well.
Note that `bind -e seq` now assumes the bind is in the default bind
mode, whereas before it would erase the first binding with that sequence
regardless of mode.

`bind -e -a` still erases all binds in all modes, though `bind -M mode
-e -a` still only erases all binds in the selected mode.
2014-09-22 21:04:06 -07:00
Kevin Ballard
5eee7d17f6 Fix bind -e without -k
In adding `-k` support to `bind -e` I broke the ability to use `bind -e`
without specifyign `-k`. Oops.
2014-09-22 20:56:45 -07:00
Kevin Ballard
4718636ae2 Update bind documentation
Document all the `bind` flags, including modes.

Fixes #1663.
2014-09-22 20:08:38 -07:00
Kevin Ballard
2cd7f1443c Support -k with bind -e
Also return an exit code of 1 if `bind -k` can't match the key name.
2014-09-22 19:21:08 -07:00
Kevin Ballard
7a9e2d733a Stop overriding <em> in user documentation
<em> used to represent something else, but as far as I can tell, all
uses of <em> in the documentation today actually represent text that's
supposed to be visibly different. Notably, the documentation on
supported escapes uses <em> to indicate the letters that are a
placeholder for e.g. a hex digit, as opposed to being a literal
character.
2014-09-22 14:47:01 -07:00
Kevin Ballard
4ed4b265a5 Show -M and -m flags in bind list 2014-09-22 12:37:11 -07:00
ridiculousfish
e689a38663 Remove a redundant ivar set 2014-09-22 10:24:10 -07:00
ridiculousfish
e5aa06991e Remove INTERNAL_BUFFER, which was only used by fish_pager 2014-09-22 10:16:16 -07:00
Kevin Ballard
cb40507b7b Don't suppress output for printf --help
Fixes #746.
2014-09-21 23:49:14 -07:00
ridiculousfish
7d7a636f24 Allow running executables with $ in their name.
Fixes #1686
2014-09-21 23:35:19 -07:00
ridiculousfish
2450d00693 Add wcstringutil to the OS X build for tests target 2014-09-21 23:35:19 -07:00
Kevin Ballard
a4059d3e60 Support wide characters in printf %c 2014-09-21 23:22:43 -07:00
Kevin Ballard
fe9cf673a2 Add --right-prompt flag to read
Add a flag to read to allow for setting the right prompt command in
addition to the existing support for setting the prompt command.

Fixes #1698.
2014-09-21 21:10:07 -07:00
Kevin Ballard
b480c8ce79 Allow U+F8FF to be typed
U+F8FF is the last character in the private use area, but it's also the
codepoint used for the Apple symbol (), which is typeable on US
keyboards in OS X, and so should actually work.
2014-09-21 21:03:44 -07:00
Kevin Ballard
94e535507c R_MAX should be R_CANCEL now 2014-09-21 20:54:44 -07:00
Kevin Ballard
a027566295 No need for mbstate_t to be static 2014-09-21 20:47:03 -07: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
ridiculousfish
4573a4d69c Add wcstringutil to the OS X build 2014-09-21 20:24:56 -07:00
Kevin Ballard
a012aedb31 Fix incorrect error on read with 1-character input
When `read` is given a single character of input (including the
newline), it was bailing as if it had been given no input. This is
incorrect.
2014-09-21 20:00:26 -07:00
Kevin Ballard
a9c8b75599 Tweak git completion for aliases/stashes
Use the new `read -z` flag to complete git aliases better. This approach
won't break if an alias contains a newline.

Also fix stash completion, which was broken on BSD sed.
2014-09-21 19:54:42 -07:00
Kevin Ballard
c64f38f0bf Add extra logging for interactive test failures 2014-09-21 19:42:39 -07:00
Kevin Ballard
8f8c4cdd17 Implement new read --null flag
The `--null` flag to `read` makes it split incoming lines on NUL instead
of newlines. This is intended for processing the output of a command
that uses NUL separators (such as `find -print0`).

Fixes #1694.
2014-09-21 19:27:26 -07:00
Konrad Borowski
f889ad0fda Don't use DejaVu Sans Condensed for documentation rendering.
This font, at least under Kubuntu 14.04 and Firefox I use is rather
ugly. Anti-aliasing is wrong, and the spaces between letters are
rather random. It makes reading the documentation headings and table
of contents harder than it needs to be.

Those issues don't happen with DejaVu Sans.
2014-09-21 14:35:32 +02:00
Konrad Borowski
166a2f91bd Use double dashes for contains in fossil completions.
This fixes the issue with strange behaviour of fish shell when first
option of a command is an option.
2014-09-21 14:32:37 +02:00
Kevin Ballard
a069aec11d Squelch spurious set PATH errors in test 2014-09-20 00:35:51 -07:00
Kevin Ballard
8a3cf144f2 Don't include child directories of $PATH in completions
Directories are completed like commands, because of implicit cd.
However, directories found inside $PATH entries should not be completed,
as implicit cd doesn't work there. Similarly, directories should not be
completed after the `command` builtin.

Fixes #1695.
2014-09-20 00:31:33 -07:00
Kevin Ballard
a381ac2691 Complete custom git commands in $PATH
Git treats executables in $PATH that start with "git-" as custom
subcommands. Add completion support for them.

Fixes #1680.
2014-09-19 19:19:59 -07:00
Kevin Ballard
e2be71cbe4 Better git alias completion
Config entries that contained the word "alias" but were not in fact
aliases no longer are treated as aliases.
2014-09-19 19:19:59 -07:00
ridiculousfish
b8181f9eb8 Further support for term24bit. Teach output.cpp what to do with it. 2014-09-19 18:45:04 -07:00
ridiculousfish
555ff00a30 Initial work to support for term-24bit ("true color") 2014-09-19 18:45:04 -07:00
ridiculousfish
6083c6fc72 Incorporate attribute links for color themes in web_config 2014-09-19 18:44:50 -07:00
Kevin Ballard
940f264ee6 Decrement SHLVL when running exec
`exec` removes fish from the shell "stack", so SHLVL needs to be
decremented to match. This means `exec fish` will result in the same
SHLVL in the new fish instance.

Also tweak the SHLVL logic to interpret an environment SHLVL of "3foo"
as garbage instead of as the value "3".

Fixes #1693.
2014-09-19 17:38:54 -07:00
Kevin Ballard
761be8ab7f Fix intermittent crash in iothread.cpp
The wrong lock was being taken around the result queue, leading to the
occasional crash when processing interactive input. This didn't seem to
really affect normal day-to-day usage, but it did sometimes cause the
interactive tests to crash.

Fixes #1692.
2014-09-19 17:01:47 -07:00
Kevin Ballard
51c2005ea2 Tweak interactive debug output 2014-09-19 16:22:37 -07:00
Kevin Ballard
510ff6a689 Dump interactive logs on travis test failure
As far as I know we can't access the build artifacts from Travis, so we
can't check the interactive logs after a test failure. Add an
environment variable that causes the test runner to dump the logs
itself, and set that variable for Travis.
2014-09-19 14:52:02 -07:00
ridiculousfish
7229d7a326 Make redirections and pipes expand abbreviations too 2014-09-19 14:05:33 -07:00
ridiculousfish
1a7b33e8fb Expand abbreviations on semicolon per #731 2014-09-19 13:59:53 -07:00
Mark Griffiths
2d3f7babe3 Updated license in lexicon_fiter.in 2014-09-19 18:24:24 +08: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
David Adam
174f5ba99a Makefile/configure: detect and use sed from configure 2014-09-18 20:29:49 +08:00
David Adam
708e21f929 fish_indent: minor documention updated
[skip ci]
2014-09-17 10:18:27 +08:00
David Adam
eb40baacfc update completions for builtin commands 2014-09-17 10:17:48 +08: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
qjcg
7f4908b0db Fix webconfig URL generation for python3
Closes #1677.

Signed-off-by: David Adam <zanchey@ucc.gu.uwa.edu.au>
2014-09-15 16:41:15 +08:00
qjcg
9bfb4f1e11 Fix webconfig URL generation for python3
Closes #1677.

Signed-off-by: David Adam <zanchey@ucc.gu.uwa.edu.au>
2014-09-15 16:40:28 +08:00
Mark Griffiths
ea435d35ad After proofreading, fixes a few minor typos. 2014-09-12 16:45:47 +02:00
David Adam
5b709eb5df README.md: document minimum Doxygen version
[skip ci]
2014-09-12 21:35:20 +08:00
Konrad Borowski
5c25be51ea Merge pull request #1662 from MarkGriffiths/documentation-update
Documentation update: Fixes issue #1557
2014-09-12 13:36:26 +02:00
Kevin Ballard
f6da9d4d5d Add missing newline after bind -k foo error message 2014-09-08 23:37:34 -07:00
Kevin Ballard
f22864b813 Ensure type still works if $IFS is unset 2014-09-08 23:35:29 -07:00
Kevin Ballard
22fd8e65ad Disable fish_title on interactive tests
This was apparently what was interfering with the tests working on
Linux.

Tweak .travis.yml to install expect so the tests run on Linux.
2014-09-08 00:16:42 -07:00
Kevin Ballard
190712d4b0 Add a test harness for interactive behavior
Add a test harness that uses `expect` to drive Fish to test interactive
behavior.

Include some tests for `read`.
2014-09-07 23:56:59 -07:00
Kevin Ballard
efb1467e4e Cleanup fish tests a bit
Split `make test` into two targets `make test_low_level` and `make
test_fishscript`, primarily so fishscript tests can be rechecked quickly
after edits.

Reformat the test.fish file and update some of the code to be a little
more straightforward (e.g. `if not cmd` instead of `if cmd; else`).
2014-09-07 23:50:44 -07:00
Mark Griffiths
6b75a4593b Merge remote-tracking branch 'upstream/master' into documentation-update
Conflicts (resolved):
	doc_src/design.hdr - \c changed to backticks
2014-09-08 07:05:53 +01:00
Mark Griffiths
a04d5fd065 Makefile changes 2014-09-08 06:54:03 +01:00
Noah Frederick
8643a5e266 Clean up typos and style in design doc
This includes:

- Fixing some typos and misspellings
- Being consistent with pronouns (she/he)
- Hyphenating "built-in" and "command-line" where appropriate
2014-09-07 16:08:10 -07:00
Mark Griffiths
47f97bbdd5 Fixed a couple of typos 2014-09-07 17:43:58 +01:00
Mark Griffiths
2e034e767f Update menus for consistency
Widened 'Commands' menu + fish logo
fish logo added to FAQ menu
'Commands' menu content aligned with Docs menu
'FAQ' menu content aligned and made 1st order as all entires are long
and wrap.
2014-09-07 17:35:19 +01:00
Mark Griffiths
aed92b9a2c Merge branch 'master' into documentation-update 2014-09-07 16:37:31 +01:00
ridiculousfish
482e615fe0 Bump osx/config.h version number to 2.1.1 2014-09-07 10:51:11 +08:00
David Adam
cb46ed3701 make_tarball: build from the current checkout, ignore Travis 2014-09-07 09:37:43 +08:00
David Adam
9c78295a9a avoid symlink attacks in __fish_print_packages
* use $XDG_CACHE_HOME for __fish_print_packages completion caches

Fix for CVE-2014-3219.

Closes #1440.
2014-09-06 23:48:38 +08: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
Iuri Rezende Souza
93b296d899 translations: Add portuguese translation 2014-09-04 23:00:22 +08:00
Iuri Rezende Souza
6e133c90e8 pager: translate additional strings 2014-09-04 23:00:22 +08:00
Mark Griffiths
f1bd2b823d Strip working files 2014-09-04 13:13:57 +01:00
Mark Griffiths
ac92f54ca6 Updated Testing Info. Ready for PR.
Major documentation cleanup and update.
- Fixes Issue #1557
- Moves entire documentation to Markdown format. Much simpler.
- Fully supports Doxygen 1.8.7+
- All documentation targets updated: user_doc, share/man, doc and
doc/refman.pdf.
- Tested across Ubuntu, CentOS and Mac OS.

See doc_src/FORMATTING.md for in depth rationale and style guide.
2014-09-04 12:50:43 +01:00
Mark Griffiths
1b4c85eb69 Fixed Doxygen required version to 1.8.7
Doxygen 1.8.6 and lower do not have the \\htmlonly[block] directive
which fixes a multitude of problems in the rendering of the docs. In
Doxygen 1.8.7 the list of understood HTML entities was greatly
increased. I tested earlier versions and many little issues returned.
2014-09-04 12:07:07 +01:00
Mark Griffiths
fb792c60cd Fix missed conflict 2014-09-04 12:01:08 +01:00
Mark Griffiths
38e153f568 Remove CLANG options, for portability 2014-09-04 11:58:01 +01:00
Mark Griffiths
6821f5ef4a Portable Makefile fix 2014-09-04 11:34:43 +01:00
Mark Griffiths
ab433cfe65 Portable range fix 2014-09-04 11:32:22 +01:00
Mark Griffiths
6a57a50968 Fix comment collision in lexicon 2014-09-04 10:54:18 +01:00
Mark Griffiths
cb9ef98bed Fix Doxygen unresolved link error 2014-09-04 10:32:13 +01:00
Mark Griffiths
89f0b9abc3 Added Doxygen notes 2014-09-04 10:23:38 +01:00
Mark Griffiths
0e5ddfd9f5 Merge branch 'master' into documentation-update
Conflicts (fixed):
	doc_src/design.hdr
2014-09-04 10:00:52 +01:00
Mark Griffiths
0a249c84ce Added notes to Formatting doc 2014-09-04 09:48:30 +01:00
ridiculousfish
fd70ae0b61 Kill fishd after installing fish for OS X, to pick up fishd changes 2014-09-04 00:30:14 -07:00
Mark Griffiths
76aeae5db6 Synopsis tweaks 2014-09-04 08:10:42 +01:00
Mark Griffiths
1facdd30fb Formatting additions 2014-09-04 07:55:21 +01:00
Kevin Ballard
4b7dc525b8 Fix the fix for commandline -i in binds 2014-09-03 23:05:48 -07:00
Joseph Tannhuber
4acea72700 New -n option for read builtin
Usage: read -n nchars
Reads maximum of nchars characters. If nchars <= 0, there's no limit.
2014-09-03 22:48:37 -07:00
Mark Griffiths
cf688f6ba2 List fixes 2014-09-03 20:31:57 +01:00
Mark Griffiths
5f3b0d9f1e Merge branch 'master' into documentation-update
Conflicts:
	doc_src/design.hdr
2014-09-03 20:31:43 +01:00
Mark Griffiths
05848038db Index long line fixes 2014-09-03 19:39:22 +01:00
Mark Griffiths
664e2e5686 Rebase conflict resolution 2014-09-03 15:14:11 +01:00
Mark Griffiths
adbcecb456 Rebase documentation changes 2014-09-03 15:10:53 +01:00
Mark Griffiths
3df9e20ca7 Formatting updates 2014-09-03 14:43:27 +01:00
Mark Griffiths
3f005c928a Supporting files for development 2014-09-03 14:43:27 +01:00
Mark Griffiths
b3e28ac41a Addition of 'ascii fish' logo
+ small fixes
2014-09-03 14:43:27 +01:00
Mark Griffiths
c39fe3433b Various additions and fixes 2014-09-03 14:43:27 +01:00
Mark Griffiths
668fa66d78 Fish documentation formatting guidelines 2014-09-03 14:43:27 +01:00
Mark Griffiths
98ebb21489 Consistency fixes 2014-09-03 14:43:27 +01:00
Mark Griffiths
137abd0cfa Make line length, wrapping and spacing consistent 2014-09-03 14:43:26 +01:00
Mark Griffiths
d7308fecbe gitignore changes 2014-09-03 14:43:26 +01:00
Mark Griffiths
73fb9915fd Fixed a few more edge cases 2014-09-03 14:43:26 +01:00
Mark Griffiths
855a119654 Fix trailing backslash after complex options 2014-09-03 14:43:26 +01:00
Mark Griffiths
cf7a6a6a65 Fix ampersand redirector 2014-09-03 14:43:26 +01:00
Mark Griffiths
509d152e54 Tutorial auto colouring, Man page and Make fixes
Completely fixes #1557 and the underlying Doxygen changes that caused
it. Should make fish docs simpler and more robust, more consistent and
generally prettier.

todo:
- trap unmarked text as arguments in context
- test & fix sed portability - see in particular. (so far tested on BSD
(Mac) and GNU sed).
- test Makefile changes
- last round of aesthetic changes and getting that ascii fish in there…
2014-09-03 14:43:26 +01:00
Mark Griffiths
35e6fb3788 Updated build_doc…sh to run cleanly in Xcode build
If the lexicon input filter isn't specified (as is the case in the
current Xcode project, the script quietly continues without it.
2014-09-03 14:43:26 +01:00
Mark Griffiths
9b79931265 Update configure.ac and README for Doxygen 1.8 2014-09-03 14:43:26 +01:00
Mark Griffiths
14a7118499 Revert 60b9f8d..e4d6eaf
This rolls back to commit 60b9f8db18.
2014-09-03 14:43:26 +01:00
Mark Griffiths
afdabd97ff Revert Xcode project
This reverts accidentally included files in commit
60b9f8db18.
2014-09-03 14:43:25 +01:00
Mark Griffiths
07f8fc7697 Update autoconf and README for Doxygen 1.8 2014-09-03 14:43:25 +01:00
Mark Griffiths
def7666609 Fix missed escaped '--' inside /fish block 2014-09-03 14:43:25 +01:00
Mark Griffiths
c900f23662 Add lexicon filter to manpages.
Fixed manpage 'NAME'. Under Doxygen 1.8, the output format has
changed, so the old sed script was leaving man pages with two titles.
2014-09-03 14:43:25 +01:00
Mark Griffiths
7b093ee4b3 Lexicon filter: fix 'if' and 'for' special cases 2014-09-03 14:43:25 +01:00
Mark Griffiths
9f75cef5e5 Style fix for sub-line comments 2014-09-03 14:43:25 +01:00
Mark Griffiths
a410c31bf8 Fixes lexicon filter pipes '|" 2014-09-03 14:43:25 +01:00
Mark Griffiths
1cd50ba572 Merged in latest changes to docs and formatting tweaks
Addresses issue #1557 as well as fixing many typos, HTML errors and
inconsistencies. Also introduces automatic syntax colouring and enables
new documentation to be written in Markdown. TODO fix Tutorial.
2014-09-03 14:43:25 +01:00
Mark Griffiths
1052eeee8c Simplify styling 2014-09-03 14:43:25 +01:00
Mark Griffiths
e22f0dda32 Removed dupes from gitignore 2014-09-03 14:43:24 +01:00
Mark Griffiths
766a6b8309 Added some clutter
Subllime and a few temporary files.
2014-09-03 14:43:24 +01:00
Mark Griffiths
d282bc4625 Documentation update
Rework for Doxygen >1.8. Moved large parts of the documentation to a
simplified format, making use of Markdown enhancements and fixing bad
long options.
2014-09-03 14:43:24 +01:00
Chris Wolfe
677cee44ad failiure/failure
Fix misspelling of failure in the fish shell design doc
2014-09-03 14:48:21 +02:00
Mark Griffiths
60e7726832 Merge branch 'master' into documentation-update 2014-09-03 13:14:25 +01:00
Mark Griffiths
385b00a468 Formatting updates 2014-09-03 13:06:49 +01:00
Kevin Ballard
1c4223889b Fix test output for complete -e tests
GNU sort behaves stupidly when LC_ALL is not C. This caused the test
output to be sorted wrong.
2014-09-02 15:52:56 -07:00
Kevin Ballard
90a4fd34d2 Add tests for the various complete -e changes 2014-09-02 15:30:58 -07:00
Kevin Ballard
2820c7a9cd Erase all completions with complete -c foo -e
When passing `-e` to `complete -c foo` without any other options, all
options for the command should be erased.

Fixes #380.
2014-09-02 15:30:58 -07:00
Kevin Ballard
edd4f3d5ad Don't erase old-style options with complete -l foo -e
When erasing long option completions, distinguish between gnu-style and
old-style options, just like we do when adding and printing completions.
2014-09-02 15:30:58 -07:00
Kevin Ballard
aa7fe3b132 Don't erase all long opts with complete -e
When using `complete -c foo -l bar -e`, all long options for the command
were being erased because it was also comparing the short option, which
was 0.
2014-09-02 15:30:58 -07:00
Kevin Ballard
1d9886d0f7 Don't segfault when erasing short option completions
When using `complete -s x -e`, the long option is unspecified, which
makes it NULL. Comparing this to a `wcstring` segfaults.

Fixes #1182.
2014-09-02 15:30:51 -07:00
Mark Griffiths
6068e85ef2 Merge branch 'master' into documentation-update 2014-08-30 12:38:57 +01:00
Mark Griffiths
ced471d4ce Supporting files for development 2014-08-30 12:21:46 +01:00
Mark Griffiths
2445ac4a53 Addition of 'ascii fish' logo
+ small fixes
2014-08-30 11:03:02 +01:00
Konrad Borowski
1d0279eac5 Fix F1 binding to work with multiple tokens. 2014-08-30 11:18:56 +02:00
ridiculousfish
f8b21fe199 Merge pull request #1655 from xakon/master
Fix small typo in documentation
2014-08-29 23:21:34 -07:00
Christos Kontas
0f330d7226 Fix small typo in documentation 2014-08-30 08:03:24 +02:00
Nikolai Aleksandrovich Pavlov
cb29350954 Fix fish_vi_mode.fish 2014-08-29 13:15:13 -07:00
Kevin Ballard
7fce9e2411 Trim trailing newline on cmdsubst when IFS=''
When $IFS is empty, command substitution no longer splits on newlines.
However we still want to trim off a single trailing newline, as most
commands will emit a trailing newline and it makes it harder to work
with their output.
2014-08-29 12:48:45 -07:00
Kevin Ballard
cc52a59e1a Rework how screen size is tracked
The screen size is fetched after a SIGWINCH is delivered. The current
implementation has two issues:

* It calls ioctl() from the SIGWINCH signal handler, despite ioctl() not
  being a function that is known to be safe to call.
* It's not thread-safe.

Signals can be delivered on arbitrary threads, so we don't know if it's
actually safe to be modifying the cached winsize in response to a
signal. It's also plausible that the winsize may be requested from a
background thread.

To solve the first issue, we twiddle a volatile boolean flag in the
signal handler and defer the ioctl() call until we actually request the
screen size.

To solve the second issue, we introduce a pthread rwlock around the
cached winsize. A rwlock is used because it can be expected that there
are likely to be far more window size reads than window size writes. If
we were using C++11 we could probably get away with atomics, but since
we don't have that (or boost), a rwlock should suffice.

Fixes #1613.
2014-08-29 12:46:03 -07:00
Kevin Ballard
24ac7d2698 Fix commandline behavior in bind functions
When a key is bound to a fish function, if that function invokes
`commandline`, it gets a stale copy of the commandline. This is because
any keys passed to `self-insert` (the default) don't actually get added
to the commandline until a special character is processed, such as the
R_NULL that gets returned after running a binding for a fish command.

To fix this, don't allow fish commands to be run for bindings if we're
processing more than one key. When a key wants to invoke a fish command,
instead we push the invocation sequence back onto the input, followed by
an R_NULL, and return. This causes the input loop to break out and
update the commandline. When it starts up again, it will re-process the
keys and invoke the fish command.

This is primarily an issue with pasting text that includes bound keys in
it. Typed text is slow enough that fish will update the commandline
between each character.

---

I don't know of any way to write a test for this, but the issue can be
reproduced as follows:

    > bind _ 'commandline -i _'

This binds _ to a command that inserts _. Typing the following works:

    > echo wat_is_it

But if you copy that line and paste it instead of typing it, the end
result looks like

    > _echo wat_isit

With this fix in place, the pasted output correctly matches the typed
output.
2014-08-29 12:29:48 -07:00
Kevin Ballard
130619d6b0 Fix $SHLVL
Due to being read-only, SHLVL wasn't being incremented properly for
recursive invocations of fish.
2014-08-29 12:22:35 -07:00
Konrad Borowski
71ab40e536 Add Fossil command completions. 2014-08-29 14:19:55 +02:00
Philipp Klose
7638a7d531 Fix typo in German translation 2014-08-29 11:23:08 +02:00
Kevin Ballard
b92a09d5e7 Fix the assertion failure in expand_variables()
expand_variables() is slightly confused about how to handle last_idx. On
input, it expects it to be the index to start processing at, but when
called recursively it always passes the current index. This means that
it may sometimes pass an index 1 past the end of the input string.
Notably, that happens when typing something like

> echo "$foo

(where "foo" is any string that is not a prefix of some existing
variable name)

Fix this by explicitly defining last_idx as being the last processed
index, meaning the next index to process is actually last_idx-1. This
means we should call it with next.size() instead of next.size()-1.
2014-08-28 13:29:43 -07:00
Mark Griffiths
3d29cc8636 Various additions and fixes 2014-08-27 00:30:08 +01:00
Mark Griffiths
d6c5a1e0c4 Merge branch 'master' into documentation-update
Conflicts (FIXED):
	doc_src/command.txt
	doc_src/index.hdr.in
	doc_src/read.txt
	doc_src/type.txt
2014-08-26 20:05:46 +01:00
Mark Griffiths
9bcd4a6811 Merge remote-tracking branch 'upstream/master' 2014-08-26 19:23:50 +01:00
Mark Griffiths
e90b1651e4 Fish documentation formatting guidelines 2014-08-26 19:19:48 +01:00
Mark Griffiths
66ccae4bfe Consistency fixes 2014-08-26 19:19:24 +01:00
Kevin Ballard
02a07164f3 Make commandline -P actually work
`commandline --paging-mode` worked but the short flags list accidentally
omitted the documented `-P`.
2014-08-24 14:47:05 -07:00
ridiculousfish
9419191aa6 Clean up variable expansion, and properly handle embedded NULs 2014-08-24 14:39:56 -07:00
ridiculousfish
f71b10df8c Don't suggest after | & or in comments
Fixes #1631
2014-08-24 14:39:41 -07:00
ridiculousfish
0b7735d279 Merge pull request #1630 from kballard/expand_variables_in_quoted_strings
Fix various expansions issues with variables
2014-08-23 16:13:25 -07:00
Konrad Borowski
1f3a93a3af Fix the compilation under gcc 4.9.0.
gcc interpretes C99's compound literals more strictly by invalid the
compound literal on implicit to pointer cast (because of automatic
storage duration, 6.5.2.5.6 in C99 standard draft).

This fixes the issue by not using compound literals at all.
2014-08-22 21:52:41 +02:00
ridiculousfish
f9f773cc28 Comment on why we run 'false' in web_config.py 2014-08-22 12:04:23 -07:00
Kevin Ballard
d9bf53c6e5 Show a non-zero status in the fish_config prompt
When selecting a prompt with fish_config, render the prompt with a
non-zero status so the user knows what it looks like.
2014-08-22 12:00:16 -07:00
Kevin Ballard
f549ada16c Set up fish_{function,complete}_path properly
In the base config.fish, fish_function_path and fish_complete_path have
$__fish_datadir/{functions,completions} added to them if not already
present. For some reason they were replacing the final path component
instead of being added on to the end.
2014-08-22 11:54:58 -07:00
ridiculousfish
d8b955294a Add a test for syntax highlighting pipes 2014-08-22 11:53:20 -07:00
Kevin Ballard
8aad53556d Highlight pipe characters correctly
According to `fish_config`'s colors page, the pipe operator `|` is
supposed to be colored the same as a statement terminator.
2014-08-22 11:45:05 -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
2da435712a Merge branch 'master' of github.com:fish-shell/fish-shell 2014-08-22 11:39:41 -07:00
Andy Lutomirski
9079ec459c webconfig: fixes for token security
* Use 16-byte tokens
 * Use os.urandom (random.getrandbits shouldn't be used for security)
 * Convert to hex correctly
2014-08-22 15:44:43 +08:00
Andy Lutomirski
aaddccfdb1 webconfig: Use a constant-time token comparison
This prevents a linear-time attack to recover the auth token.
2014-08-22 15:39:13 +08: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
Kevin Ballard
d63db59ade Clean up the IFS handling in command substitution
Remove the useless ASCII test of the first byte of IFS. We don't split
on the first character, we only use a non-empty IFS as a signal to split
on newlines.
2014-08-21 20:57:23 -07:00
Kevin Ballard
20899f2df9 doc: Document how IFS affects command substitution
IFS is used for more than just the read builtin. Setting it to the empty
string also disables line-splitting in command substitution, and it's
done this for the past 7 years. Some day we may have a better way to do
this, but for now, document the current solution.
2014-08-21 20:57:23 -07:00
Kevin Ballard
b9948ca297 doc: Fix docs on $HOME/$USER
The docs claimed that the $HOME and $USER variables could only be
changed by the root user. This is untrue. They can be changed by
non-root users as well.
2014-08-21 20:57:23 -07:00
Kevin Ballard
f33e6a053e doc: Fix links in "Further help and development"
Hyperlink the mailing list to the proper info page.

Tweak the GitHub link to use https.
2014-08-21 19:15:58 -07:00
Kevin Ballard
9f725bee1f set: Print an error when setting umask to a bad value
Repurpose the ENV_INVALID return value for env_set(), which wasn't
currently used by anything. When a bad value is passed for the 'umask'
key, return ENV_INVALID to signal this and print a good error message
from the `set` builtin.

This makes `set umask foo` properly produce an error.
2014-08-21 19:06:21 -07:00
Andy Lutomirski
3e2d68a059 webconfig: fixes for token security
* Use 16-byte tokens
 * Use os.urandom (random.getrandbits shouldn't be used for security)
 * Convert to hex correctly
2014-08-22 01:43:30 +08:00
Kevin Ballard
2974025010 Fix error span for invalid slice indexes
The span now properly points at the token that was invalid, rather than
the start of the slice.

Also fix the span for `()[1]` and `()[d]`, which were previously
reporting no source location at all.
2014-08-21 01:10:07 -07:00
Kevin Ballard
9a90e041f3 Color "$foo[1" as an error
We can't color the whole argument as an error, since the tokenizer is
responsible for that and doesn't care abou this case, but we can color
the `$foo[` bit as an error.
2014-08-20 22:55:24 -07:00
Kevin Ballard
b0be15d4f7 Fix highlighting of "foo\"bar"
The backslash-escape wasn't being properly caught by the highlighter.

Also remove the highlighting of `"\'"`, as `\'` is not a valid escape in
double-quotes, and add highlighting for a backslash-escaped newline.
2014-08-20 22:34:18 -07:00
Kevin Ballard
a24998abac Highlight "$foo[1]" properly
Preserve the highlighting applied to the slice brackets when coloring
variables inside of double-quoted strings.
2014-08-20 22:28:42 -07:00
Kevin Ballard
cc49042294 Parse slices even for empty variables
When a variable is parsed as being empty, parse out the slice and
validate the indexes anyway, behaving for slicing purposes as if the
variable had a single empty value.

Besides providing errors when expected, this also fixes the following:

    set -l foo
    echo "$foo[1]"

This used to print "[1]", now it properly prints nothing.
2014-08-20 22:09:32 -07:00
Kevin Ballard
3981b644d6 Fix double expansions ($$foo)
Double expansions of variables had the following issues:

* `"$$foo"` threw an error no matter what the value of `$foo` was.
* `set -l foo ''; echo $$foo` threw an error because of the expansion of
  `$foo` to `''`.

With this change, double expansion always works properly. When
double-expanding a multi-valued variable, in a double-quoted string the
first word of the inner expansion is used for the outer expansion, and
outside of a quoted string every word is used for the double-expansion
in each of the arguments.

    > set -l foo bar baz
    > set -l bar one two
    > set -l baz three four
    > echo "$$foo"
    one two baz
    > echo $$foo
    one two three four
2014-08-20 21:45:07 -07:00
Mark Griffiths
4651919bd8 Make line length, wrapping and spacing consistent 2014-08-19 13:41:23 +01:00
Mark Griffiths
fed4bb5c07 Merge branch 'master' into documentation-update
Conflicts (FIXED):
	.gitignore
	doc_src/complete.txt
	doc_src/function.txt
2014-08-19 11:42:21 +01:00
Mark Griffiths
ec903ce625 gitignore changes 2014-08-19 11:04:19 +01:00
Mark Griffiths
3ea956a0b4 Fixed a few more edge cases 2014-08-19 10:58:22 +01:00
ridiculousfish
d0c85471b4 Make escape_string transform wildcard characters
The characters ANY_CHAR, ANY_STRING, and ANY_STRING_RECURSIVE are
currently transformed by unescape, but not by escape. Let's try escaping
them. Fixes #1614.
2014-08-16 19:25:36 -07:00
Mark Griffiths
3cc62c1fd2 Fix trailing backslash after complex options 2014-08-16 10:36:34 +01:00
Mark Griffiths
079e369e91 Fix ampersand redirector 2014-08-16 10:18:41 +01: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
fe68d30be9 Use sgrep instead of grep in ssh completion 2014-08-13 01:06:15 -07:00
ridiculousfish
a3a11c2e0c Strip users with leading underscores from ssh completions 2014-08-12 14:46:59 -07:00
ridiculousfish
3f526698ab Make __fish_print_users work on OS X via dscl 2014-08-12 14:42:49 -07:00
Andy Lutomirski
78e2b7cc08 webconfig: Use a constant-time token comparison
This prevents a linear-time attack to recover the auth token.
2014-08-11 18:04:03 -07:00
ridiculousfish
6ce74febc7 Accepting an autosuggestion should clear the pager 2014-08-11 10:17:41 -07:00
ridiculousfish
ede3d422a0 Don't show "and 1 more rows" in pager if that requires a row 2014-08-11 09:55:07 -07:00
Mark Griffiths
629a39b45b Tutorial auto colouring, Man page and Make fixes
Completely fixes #1557 and the underlying Doxygen changes that caused
it. Should make fish docs simpler and more robust, more consistent and
generally prettier.

todo:
- trap unmarked text as arguments in context
- test & fix sed portability - see in particular. (so far tested on BSD
(Mac) and GNU sed).
- test Makefile changes
- last round of aesthetic changes and getting that ascii fish in there…
2014-08-08 03:44:37 +01:00
David Adam
397249a8d5 Authenticate connections to web_config service
- Require all requests to use a session path.
 - Use a redirect file to avoid exposing the URL on the command line, as
   it contains the session path.

Fix for CVE-2014-2914.
Closes #1438.
2014-08-07 16:14:42 +08:00
David Adam
b44b624ca5 Documented Alt-Right to accept a single word of an autosuggestion
See https://github.com/fish-shell/fish-shell/issues/1262
2014-08-06 22:00:13 +08:00
Mark Griffiths
6513c7eab8 Updated build_doc…sh to run cleanly in Xcode build
If the lexicon input filter isn't specified (as is the case in the
current Xcode project, the script quietly continues without it.
2014-08-05 19:28:03 +01:00
Mark Griffiths
276d90a45d Update configure.ac and README for Doxygen 1.8 2014-08-05 18:46:14 +01:00
Mark Griffiths
c94b15a951 Revert 60b9f8d..e4d6eaf
This rolls back to commit 60b9f8db18.
2014-08-05 18:43:33 +01:00
Mark Griffiths
e4d6eaf17a Revert Xcode project
This reverts accidentally included files in commit
60b9f8db18.
2014-08-05 18:28:11 +01:00
Mark Griffiths
60b9f8db18 Update autoconf and README for Doxygen 1.8 2014-08-05 18:09:15 +01:00
Mark Griffiths
cff928e2dc Merge branch 'master' into documentation-update
Conflicts:
	doc_src/index.hdr.in -- UPDATED
	doc_src/license.hdr -- UPDATED
2014-08-05 13:50:21 +01:00
Mark Griffiths
6aa701b3ee Fix missed escaped '--' inside /fish block 2014-08-05 13:07:46 +01:00
ridiculousfish
cb480dddf6 Don't try to colorize errors when running in Xcode 2014-08-04 13:55:53 -07:00
ridiculousfish
33c714ca03 Add fish_tests target to Xcode build
Allows running the tests in Xcode
2014-08-04 13:32:23 -07:00
Gio d'Amelio
bcda3f1baa Set $CMD_DURATION to milliseconds. Fixes #1585 2014-08-04 13:36:39 +08:00
David Adam
4ae2753025 Authenticate connections to web_config service
- Require all requests to use a session path.
 - Use a redirect file to avoid exposing the '/start' URL on the
   command line, as it contains the cookie value.

Fix for CVE-2014-2914.
Closes #1438.
2014-08-04 13:34:26 +08:00
David Adam
b5cd21c337 Further fixes to universal variable server socket management
- Change fishd_path to std::string
- Warn, rather than exiting with an error, if the universal variable
  server path is not available, and provide more useful advice.
- Export the new __fishd_runtime_dir variable.
2014-08-04 13:26:14 +08:00
David Adam
8844f0c142 Clarify I/O redirection documentation
Fix the examples and try and improve the clarity of the section.

Closes #1409.
2014-08-03 18:54:10 +08:00
David Adam
4cb4fc3ef8 Fix for CVE-2014-2905 - fishd restart required.
- Use a secure path for sockets (some code used under license from
   tmux).
 - Provide the secure path in the environment as $__fish_runtime_dir.
 - Link the new path to the old path to ease migration from earlier
   versions.

Closes #1359.

After installing fish built from or after this commit, you MUST
terminate all running fishd processes (`killall fishd`, `pkill fishd`
or similar). Distributors are encouraged to do this from within their
packaging scripts. fishd will restart automatically, and no data should
be lost.
2014-08-03 17:00:14 +08:00
David Adam
6cabd42ed2 Remove getpeerid/getpeerucred and fallbacks 2014-08-03 15:40:44 +08:00
ridiculousfish
0daee33ad6 Document new fish_title behavior per #334 2014-08-03 00:00:26 -07:00
ridiculousfish
b97a94ccc8 Clean up reader_write_title to work with wcstring 2014-08-02 21:01:40 -07:00
Mark Griffiths
5cc3dcdbd8 Add lexicon filter to manpages.
Fixed manpage 'NAME'. Under Doxygen 1.8, the output format has
changed, so the old sed script was leaving man pages with two titles.
2014-08-03 02:25:47 +01:00
Mark Griffiths
7e3382340e Lexicon filter: fix 'if' and 'for' special cases 2014-08-03 02:22:23 +01:00
jianjun
87abcecca6 add command line string as $argv[1] for fish_title 2014-08-02 12:57:38 -07:00
Mark Griffiths
8ca88f14f7 Style fix for sub-line comments 2014-08-02 17:11:00 +01:00
Mark Griffiths
b4a4a7c611 Fixes lexicon filter pipes '|" 2014-08-02 17:10:28 +01:00
Kevin Stone
556680cf5e Update grunt.fish
Fixed command error when no local Gruntfile results in a command error.

Fixes #1592.
2014-08-02 00:04:26 -07:00
Mark Griffiths
f4077bd41f Merged in latest changes to docs and formatting tweaks
Addresses issue #1557 as well as fixing many typos, HTML errors and
inconsistencies. Also introduces automatic syntax colouring and enables
new documentation to be written in Markdown. TODO fix Tutorial.
2014-08-02 04:51:43 +01:00
Mark Griffiths
cb5c560688 Simplify styling 2014-08-01 13:25:41 +01:00
Mark Griffiths
8ac0fdfea7 Merge branch 'master' into documentation-update
Conflicts:
	doc_src/history.txt
	doc_src/test.txt
2014-08-01 05:16:02 +01:00
Mark Griffiths
6dfd71670a Removed dupes from gitignore 2014-08-01 04:21:04 +01:00
Mark Griffiths
4d4cc34aff Added some clutter
Subllime and a few temporary files.
2014-08-01 04:11:28 +01:00
Mark Griffiths
c070a2aa3e Documentation update
Rework for Doxygen >1.8. Moved large parts of the documentation to a
simplified format, making use of Markdown enhancements and fixing bad
long options.
2014-08-01 03:37:32 +01:00
David Adam
af14cf8f8b Revert "Check effective credentials of socket peers"
This reverts commit 8412c867a5.

Just checking the credentials of the peer turns out to be insufficient.
See https://github.com/fish-shell/fish-shell/issues/1436.
2014-07-31 16:57:42 +08:00
ridiculousfish
35ba97cbdf Fix up OSC / iTerm2 escape code parsing as part of #1565 2014-07-30 11:35:39 -07:00
George Nachman
9f59cf1468 Parse OSC codes in escape_code_length(). They begin with <esc> ] and are terminated with ST (<esc> backslash) or BEL (ASCII 7). 2014-07-30 11:35:39 -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
phette23
5591afff6e add completions for Node.js & NPM 2014-07-29 18:35:08 -07:00
ridiculousfish
8144725739 Fix bad example in docs for test -n $MANPATH
Fixes #1574
2014-07-29 14:44:51 -07:00
ridiculousfish
52ae5f885e Improve history robustness against corrupt files
Fixes #1581
2014-07-29 14:42:03 -07:00
ridiculousfish
b6658c5497 Render sample prompts faster in fish_config by using a thread pool 2014-07-29 12:12:32 -07:00
ridiculousfish
aad5163b49 Make prompt selection more like color selection in fish_config. Remove
the "show prompt source" button.
2014-07-29 11:00:39 -07: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
David Xia
adabc2d7a0 Fix fish_config error with python3
Closes #1253.
2014-07-28 22:02:55 +08:00
ridiculousfish
d07ea3b66a Teach fish to compute the length of more escape sequences.
Fixes #1243
2014-07-26 14:07:17 -07:00
ridiculousfish
2bb08a4ca0 Make abbreviations work correctly with type-ahead
Fixes #1434
2014-07-25 12:23:42 -07:00
ridiculousfish
30ae473d85 Clean up default environment variables.
This stops unconditionally setting values for HOME and USER,
if we find those values in the environment. It also saves about 16KB
on OS X, which getpwuid allocates.
2014-07-25 10:49:13 -07:00
ridiculousfish
e9f870e25a Add support for history --merge to incorporate history changes from
other sessions.

Fixes #825
2014-07-25 10:49:12 -07:00
Siteshwar Vashisht
317660c2fe Avoid using OptionParser to parse bindings in webconfig.py
OptionParser eats commaandline arguments passed to bind actions, so avoid using it.
2014-07-25 08:39:31 +05:30
ridiculousfish
5e60efefbf Allow parse_util_detect_errors to treat incomplete strings as errors
Fixes bug where sourcing a file with an unclosed quote would not have a
backtrace
2014-07-24 14:41:15 -07:00
ridiculousfish
f6a89d13c2 Merge branch 'master' of github.com:fish-shell/fish-shell 2014-07-23 22:27:37 -07:00
Siteshwar Vashisht
3e01dd955f Updated code to parse bindings in webconfig.py 2014-07-23 01:53:15 +05:30
adisbladis
27fa0ea9d7 "webconfig.py: Don't allow NoneType as buffer, fallback to bytes.
Fixes TypeErrors when using bindings tab"
2014-07-22 12:31:57 +02:00
Michishige Kaito
2de914d8c3 Select the 4th line of output, instead of the second to last line 2014-07-16 18:22:27 +01:00
Michishige Kaito
616fa85458 Add grunt completion 2014-07-16 16:53:18 +01:00
ridiculousfish
20ad496c00 Merge pull request #1559 from davidxia/add-vi-mode-docs-fixes
Fix minor syntax and capitalization mistakes in vi mode docs
2014-07-15 19:05:03 -07:00
David Xia
fa88c42cf1 Fix minor syntax and capitalization mistakes in vi mode docs 2014-07-15 21:59:08 -04:00
David Xia
e84a762171 Add docs for vi mode
fixes #1536
2014-07-15 21:29:02 -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
cce4265cef Fix make test to use local functions
When running `make test` we want to use the local function definitions,
not the ones installed on the system.

The system config.fish will still insert the system definitions at the
end, but at least ours will take precedence.
2014-07-14 00:46:38 -07:00
Kevin Ballard
973dd6ffbd read: Support arrays, character splitting
Enhance the `read` builtin to support creating an array with the --array
flag. With --array, only a single variable name is allowed and the
entire input is tokenized and placed into that variable as an array.

Also add custom behavior if IFS is empty or unset. In that event, split
the input on every character, instead of the previous behavior of doing
no splitting at all.
2014-07-14 00:46:38 -07:00
Kevin Ballard
72e8489d50 command: Rename -p/--path flag to -s/--search 2014-07-13 19:11:29 -07:00
Kevin Ballard
cfa13ed84c Update tests for new type behavior
One of the tests was using `>/dev/null` to suppress the `type` output.
That needs to be `^/dev/null` now, but instead just go ahead and use the
new `-q` flag.
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
Kevin Ballard
0933e5cab4 Fix typo in documentation for type builtin 2014-07-13 19:11:29 -07:00
Kevin Ballard
cc565fc16c Teach command builtin a -p/--path flag
Give the `command` builtin a single flag, -p/--path, that causes it to
print the full path that would be executed for the given command.
2014-07-13 19:11:29 -07:00
Kevin Ballard
62d86b3d18 Fix documentation on variable scopes for read
The `read` docs incorrectly asserted that -g was the default for
variables. In actuality it behaves the same way that `set` does.
2014-07-14 09:12:00 +08:00
xzfc
4bbbd2dde6 Fix segfault in status builtin 2014-07-14 09:07:35 +08:00
David Adam
b884117a9e Makefile: just build key_reader with the same objs as fish 2014-07-14 09:06:40 +08:00
ridiculousfish
7def139020 Turn the 'mode' parameter of environment variables into an enum 2014-07-13 17:30:48 -07:00
ridiculousfish
b667eee351 Merge branch 'fix_set_scopes' of github.com:kballard/fish-shell into kballard-fix_set_scopes 2014-07-13 14:12:51 -07:00
ridiculousfish
891f55b2b3 Fix for crash in kill-whole-line
Fixes #1548
2014-07-13 14:06:35 -07:00
Kevin Ballard
7b12fd26f3 Change how we separate toplevel and global scopes
Instead of introducing a new local scope at the point of `set`, merely
push a new local scope at the end of env_init(). This means we have a
single toplevel local scope across the lifetime of the fish process,
which means that

    set -l foo bar
    echo $foo

behaves as expected, without modifying the global environment.
2014-07-13 13:21:06 -07:00
Kevin Ballard
387ec5c06a set: Don't create empty var when erasing index
When using `set -e foo[1]` to erase an index, if the variable doesn't
already exist, return 1 instead of creating it as an empty variable.
2014-07-12 15:43:32 -07:00
Kevin Ballard
dcc043df3b Add an optional mode to env_get_string()
The mode restricts the scope in which the variable is searched for.

Use this new restricted scope functionality in the `set` builtin. This
fixes `set -g` to not show local shadowing variable values, and also
allows for scoped erasing of slices.
2014-07-12 15:35:34 -07:00
Kevin Ballard
2457997cd9 set: Print an error when setting a special var in the wrong scope
When attempting to set a readonly or electric variable in the local or
universal scopes, print an appropriate error. Similarly, print an error
when setting an electric variable as exported. In most cases this is
simply a nicer error instead of the 'read-only' one, but for the 'umask'
variable it prevents `set -l umask 0023` from silently changing the
global value.
2014-07-12 14:07:55 -07:00
Kevin Ballard
d9bed68fe9 Mark COLUMNS/LINES as electric vars
They're dynamically calculated, so they qualify. This also removes them
from the list of exported global variables, because they're actually not
exported.
2014-07-12 14:07:55 -07:00
Kevin Ballard
2eb65b3625 set: Don't treat toplevel scope the same as global
When using the `set` command with the -l flag, if we're at the top
level, create a temporary local scope. This makes query/assignment
behavior be consistent with the value-printing behavior.

This works by marking the current block as needing to pop the
environment if a local scope was pushed. I assume this is safe to do. I
also assume the current block is the right one to modify, rather than
trying to walk up the stack to the root.
2014-07-12 14:07:55 -07:00
Kevin Ballard
76fdfe6890 Rewrite env_exists() for better scope handling
env_exists() wasn't properly handling multiple scopes in some cases,
notably with readonly/electric variables. Rewrite it to operate in a
more straightforward fashion.
2014-07-12 14:07:55 -07:00
ridiculousfish
495adee269 Don't sanity_lose if INTERNAL_BLOCK_NODEs have a null argv
Fixes #1545
2014-07-12 11:01:00 -07:00
Kevin Ballard
383aaa236e Don't allow readonly/electric values to come in through the env
When initializing fish, ignore any inherited environment variables that
match any of the readonly or electric variable names.

This prevents really weird behavior when e.g. fish is launched with
COLUMNS already set to something. In that case, testing $COLUMNS within
fish behaves normally, but any subprocesses get the value that fish
itself had inherited.
2014-07-12 00:53:23 -07:00
Kevin Ballard
8c89e6bce5 Fix typo and tweak set docs
Move the docs for the `-n` flag to `set` out of the list of scopes.
2014-07-12 00:21:04 -07:00
ridiculousfish
98297e5234 Teach while loops to not hang forever with no-execute
Fixes #1543
2014-07-11 11:28:10 -07:00
ridiculousfish
3915faf382 bind should not show -k for bindings that are escape sequences, not keys 2014-07-07 10:45:26 -07:00
ridiculousfish
d5fa4b2ccb Remove errant debug line 2014-07-07 02:01:43 -07:00
ridiculousfish
3ff104ba30 Rename lock_t to mutex_lock_t to fix Solaris compilation
Fixes #1510
2014-07-07 00:38:37 -07:00
Daniel J. Hofmann
706286c289 Fixes use-after-free issue.
Calling writer() might fail in which case launch_buff gets freed.
This patch prevents the subsequent use of memory after it was freed.
2014-07-06 20:54:19 -07:00
ridiculousfish
18c1b12741 Switch variable name in tests from foo to something less likely to be
used accidentally
2014-07-06 20:41:21 -07:00
ridiculousfish
5cda1e55e0 Must load universal variables earlier, and issue a barrier after erasing
one.

Fixes #1526
2014-07-06 18:12:18 -07:00
ridiculousfish
195cd130f8 Fix sense of test in parse_execution to issue a barrier if an external
command has run
2014-07-06 18:12:18 -07:00
ridiculousfish
b19f45e15d Add test for issue 1526 2014-07-06 18:12:18 -07:00
Maxim Gonchar
3acd0dfe48 Add dropbox completion 2014-07-06 20:40:53 +08:00
ridiculousfish
74cedbf1c5 Hopeful fix for Cygwin build (#1530) 2014-07-05 10:22:20 -07:00
Siteshwar Vashisht
7d47ec4c46 Properly handle invalid arguments in builtins
Fixes #1522
2014-07-02 17:04:58 +05:30
callesg
14cdd24f78 Added better build description closes #70
The stuff nedded to build on Ubuntu
2014-07-01 16:08:37 +02:00
David Adam
1cfd055f82 env.cpp: allow all users to change $USER and $HOME
Closes 1425 (https://github.com/fish-shell/fish-shell/issues/1425)
2014-06-28 19:16:29 +08: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
ridiculousfish
3bc2dda00d Merge branch 'death_of_fishd'
Incorporates more removal and cleanup of fishd remnants.
2014-06-18 11:19:28 -07:00
ridiculousfish
ee8e9c0291 Remove env_universal.h and env_universal.cpp from project 2014-06-18 10:14:35 -07:00
David Adam
f4bc1ef4a2 docs: clarify fish_greeting function and variable in FAQ
Tidy fish_greeting section in main documentation.

Closes #1506.
2014-06-18 17:29:59 +08:00
ridiculousfish
3513ce3ac0 Universal variable callbacks should only be announced for changed
values, not every value. Also support erase notifications.
2014-06-16 12:27:28 -07:00
ridiculousfish
6277a2e4a4 Migrate global functions out of env_universal. Have env operate directly
on an env_universal_t.
2014-06-15 17:30:50 -07:00
ridiculousfish
84faa60c4e Fix Linux build of env_universal_common 2014-06-13 15:35:37 -07:00
ridiculousfish
735195e8ea Teach env_universal_remove to directly report whether the variable was
successfully removed.
2014-06-13 15:15:11 -07:00
Konrad Borowski
0f15ab8d05 Allow fast failure on Travis. 2014-06-11 20:44:41 +02:00
ridiculousfish
17c2d76c5e Removed connection_t and associated functions 2014-06-09 16:41:10 -07:00
ridiculousfish
11c1562512 Remove connection_t usage from write_to_fd 2014-06-09 12:57:44 -07:00
ridiculousfish
ef646f0f78 Removal of more fishd artifacts and headers 2014-06-09 12:07:40 -07:00
Siteshwar Vashisht
7b3132d39d Fixed code to parse bindings for webconfig 2014-06-08 16:05:00 +05:30
ridiculousfish
8345fc2b9e Fix indentation 2014-06-07 23:27:06 -07:00
Arjun AK
58f4182880 Fixes issue:1484
Make jobs builtin return 1 if there are no jobs running in the background
2014-06-08 11:25:37 +05:30
ridiculousfish
ecf56606dc Remove large parts of fishd interaction, including
env_universal_server
2014-06-06 10:34:42 -07:00
ridiculousfish
be3e64e5ea Remove fishd.cpp source, docs, and target from Makefile and Xcode
project
2014-06-05 11:49:05 -07:00
mehultikekar
741342ba1d Fix Makefile.in for building key_reader 2014-06-01 15:58:08 -04:00
Konrad Borowski
d97e31b4ab git prompt shouldn't export variables. 2014-06-01 09:39:28 +02:00
ridiculousfish
ce4081af93 Fix some warnings in Linux build 2014-05-31 13:46:28 -07:00
ridiculousfish
32f5edc9c5 Do not continue execution if argument expansion fails. Fixes #1488 2014-05-31 12:41:27 -07:00
Konrad Borowski
b481128a93 Fix small misspelling in comment in expand.cpp 2014-05-31 09:08:46 +02:00
ridiculousfish
ab62001b74 Implement correct error message for failed process expansion. 2014-05-30 13:50:13 -07:00
ridiculousfish
2dfd57bb8c Hopeful fix for hangs in iothread tests in travis-ci 2014-05-29 13:44:31 -07:00
ridiculousfish
20d7a142c5 Enable fishd-less mode by default.
Shell instances now synchronize universal variables using the
filesystem. fishd should no longer be launched by default.
2014-05-29 13:05:47 -07:00
ridiculousfish
9ae06c541f Remove inotify-based universal notifier
The inotify notifier is fragile, fails on travis, and fails to compile
on certain Linux kernels. It doesn't appear to work as well as the named
pipe mechanism. Best to just get rid of it.
2014-05-29 09:57:56 -07:00
ridiculousfish
655293ece9 input_readch must return R_EOF instead of WEOF. Fixes #1452 2014-05-25 15:22:44 -07:00
Konrad Borowski
a983318501 Silence other fallbacks
This removes Clang warnings
2014-05-25 12:47:36 +02:00
ridiculousfish
8769c06350 Fix some annoying warnings in fish_tests with gcc 4.8 2014-05-24 16:15:45 -07:00
Konrad Borowski
5066710e60 Use current version documentation links in README 2014-05-24 14:07:18 +02:00
ridiculousfish
451c97f35a Merges changes to support running fish without fishd.
In the new mode (not yet enabled), universal variables are set by reading and writing the fishd file directly, with some file locking for synchronization. This enables forwards and backwards compatibility. However there is no compatibility with simultaneous edits. Changes may be lost if fishd and the new mechanisms both attempt writes.

fishd is still enabled by default for now; it will be disabled in a future commit. You can opt into the new mechanism (disabling fishd) by setting the environment variable fish_use_fishd to 0 before starting fish. This cannot itself be a universal variable, because of bootstrapping: the value is needed to determine how we read universal variables in the first place.

Universal variable change notifications (i.e. reacting immediately to live edits) are tricky. Checking for changes is simple and relatively inexpensive (just a stat()), but relying solely on that would require frequent wakeups, and show up in fs_usage. So how do we get change notifications into an fd that we can monitor via select()? We support a few strategies, expressed as universal_notifier_t::notifier_strategy_t. By default we use notifyd on OS X and a named pipe on Linux / everywhere else. This is also configurable at runtime via the fish_universal_notifier variable.
2014-05-21 11:02:17 -07:00
ridiculousfish
8a577a9d4d Remove an errant system("ls") 2014-05-21 10:55:00 -07:00
ridiculousfish
950150469a Disable inotify tests pending investigation into why it fails on
travis-ci
2014-05-21 10:50:57 -07:00
ridiculousfish
3cbace98a7 'echo -' should output a dash instead of treating it as options
Fixes #1459
2014-05-16 15:19:07 +08:00
ridiculousfish
e214df8980 Try using IN_DELETE_SELF with inotify 2014-05-16 13:37:23 +08:00
ridiculousfish
e3cccdf571 Add check for kernel version to try to determine why travis-ci is
failing with inotify
2014-05-16 13:09:10 +08:00
ridiculousfish
a0bf841be2 Check for non-negative watch object in inotify_add_watch 2014-05-16 12:54:52 +08:00
ridiculousfish
73cbb0c65f Add a check to ensure the file really is deleted in inotify test 2014-05-16 12:35:07 +08:00
ridiculousfish
2f89ddbead Add test for inotify support to try to track down travis-ci is failing 2014-05-16 12:16:10 +08:00
ridiculousfish
a526693915 Refine test for enabling strategy_inotify in fish_tests 2014-05-15 17:25:13 +08:00
ridiculousfish
31f2a3a7d7 Fix a warning about missing enum in fish_tests.cpp 2014-05-15 14:44:17 +08:00
ridiculousfish
147403f958 Use mkostemp in universal variables when available 2014-05-15 14:37:44 +08:00
ridiculousfish
38c52cf9b5 Formatting fixes 2014-05-15 14:31:57 +08:00
ridiculousfish
64c1c75c42 Improve universal variable error messages 2014-05-15 14:27:06 +08:00
ridiculousfish
2b11d1060c Make initialize_synchronizes_via_fishd default to false. Add some
logging support to universal variables.
2014-05-15 10:49:06 +08:00
ridiculousfish
a73b903df9 Null notifier to support fishd synchronization, so we can select the
synchronization mechanism at runtime
2014-05-14 15:03:44 +08:00
ridiculousfish
30cfb3e795 Correct a comment and clean up code that listens for universal notifier
changes
2014-05-14 14:16:53 +08:00
ridiculousfish
a0e6d4375a Merge branch 'master' into death_of_fishd 2014-05-14 14:09:32 +08:00
ridiculousfish
c7aca5cc35 Hopefully better fix for prompt under Windows. Things that may store
NOT_A_WCHAR must be wint_t, not wchar_t
2014-05-14 13:30:41 +08: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
Konrad Borowski
6596d91c82 Fix prompt under Windows.
The fix is obviously a hack caused by that NOT_A_WCHAR
doesn't fit in wchar_t. Better fix would be nice.
2014-05-10 17:13:08 +02:00
ridiculousfish
d554b7da08 Merge branch 'master' into death_of_fishd 2014-05-09 16:07:11 -07:00
Philipp Schroer
cd7f1a15f8 Automatically add include paths for ncurses on Cygwin 2014-05-09 14:43:23 -07:00
ridiculousfish
fa68c2619f Use parm_left_cursor and parm_right_cursor for bulk cursor motions.
Fixes #1448
2014-05-09 14:37:23 -07:00
ridiculousfish
e97bec10ea Remove needs_polling from universal_notifier_t. Add some expository
comments.
2014-05-07 14:22:05 -07:00
ridiculousfish
7763718b60 Further cleanup and rationalization of named pipe universal notifier. 2014-05-06 14:10:55 -07:00
Konrad Borowski
7f2c4cbf8a Move the empty function test to tests. 2014-05-06 12:31:44 +02:00
Konrad Borowski
91ebe12fc2 Add test for empty function name. 2014-05-06 12:18:09 +02:00
Konrad Borowski
13e1e7e1e9 Fix NULL dereference when function name is not specified
It was possible to type `function ""; end`, and this caused fish to
crash because of NULL pointer.
2014-05-06 12:07:16 +02:00
ridiculousfish
8a263952ad Fix named pipe universal notifier. No more threads. Tests now pass. 2014-05-05 23:33:05 -07:00
ridiculousfish
f27232bd0a Initial work on strategy_named_pipe universal notifier. 2014-05-04 15:06:40 -07:00
Konrad Borowski
16534ec644 Improve test_wchar2utf8().
Currently it contains strange code like using `do` loop in order to
avoid `goto`s (they aren't evil, honestly), the pointless `if (mem)`
conditional which doesn't even work (had semicolon for some reason).

You may think this code had a bug where the code didn't check for
the pointer to be null before calling `free`, but this is not the case,
as according to C and C++ standard, `free` should allow `NULL` pointers,
and ignore them.
2014-05-04 15:48:50 +02:00
ridiculousfish
7e44bcfd8a Make inotify-based universal variable notifier tests pass 2014-05-03 19:57:20 -07:00
ridiculousfish
8cbd66b0f9 Merge branch 'death_of_fishd' of https://github.com/fish-shell/fish-shell into death_of_fishd 2014-05-03 19:36:22 -07:00
ridiculousfish
47a81c2b39 Re-establish inotify watch when file is deleted 2014-05-03 16:31:11 -07:00
ridiculousfish
56bf209f84 Merge branch 'master' into death_of_fishd
Conflicts:
	configure.ac
2014-05-03 15:33:48 -07:00
ridiculousfish
333fb1bf97 Use mkostemp instead of mktemp where available 2014-05-03 15:27:58 -07: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
SanskritFritz
cf89d9bfb0 Fixed an unintended result of some copy paste. 2014-05-03 12:30:41 -07:00
SanskritFritz
f49848c8a4 Removed unnecessary comments. 2014-05-03 12:30:41 -07:00
SanskritFritz
0101b39f6c Completions added/updated. 2014-05-03 12:30:41 -07:00
Maurizio De Santis
4285baa6e1 Prompt sample: Debian chroot environment
When you chroot in Debian, bash shows the chroot environment in the prompt:

```bash

...

if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

...
```

This is the effect:

```
(chroot_env) user@host:~#
```

It is useful when chrooting, since usually the hostname remains the same and thus you can't distinguish where you are.
2014-05-03 12:28:38 -07:00
ridiculousfish
e530af1ff7 Use adjusted_pos when determining the token for tab completing
redirecitons, per #1296
2014-05-03 00:15:13 -07:00
ridiculousfish
60e94a4ec8 fishd to link against fish_version.o in Xcode build 2014-05-02 23:36:47 -07:00
ridiculousfish
c66a574fa0 Simple test for completing redirections 2014-05-02 23:25:54 -07:00
Konrad Borowski
ef3259035d Use precompiled parse files. 2014-05-02 10:31:04 +02:00
Konrad Borowski
4226f4412b fishd requires fish_version.o. 2014-05-02 10:30:01 +02:00
Konrad Borowski
368983d8da Fix header name in fishd.cpp. 2014-05-02 10:26:22 +02:00
ridiculousfish
16b982958b Correctly complete redirections. Fixes #1296 2014-05-02 01:22:39 -07:00
ridiculousfish
0c4819131c Add fish_version to Xcode project 2014-05-02 00:22:19 -07:00
ridiculousfish
186b0f62eb Early implementation of inotify-based universal variable notifier for
Linux
2014-05-01 16:44:37 -07:00
Konrad Borowski
77bc4c5725 Properly check for miliseconds during screen update
This removes undefined behavior in the previous code by properly
checking for miliseconds (actually typing proper names, not abusing
pointer arithmetics).
2014-05-01 11:00:13 +02:00
Konrad Borowski
dd47da92f5 Fix handle leak in get_description() 2014-05-01 10:14:12 +02:00
Konrad Borowski
f8e35de18d Shorten compilation times
Now fish shell stores version is a small file called by other files.
This means that a slight change which modifies one file won't cause
many of files to recompile.

The compilation unit is intentionally small, this is by design. The
smaller it is, the faster it will recompile, and it will be compiled
a lot.
2014-05-01 09:46:27 +02:00
Konrad Borowski
a7facfb760 Fix memory leak when displaying bind list.
This also removes duplication from the code.
2014-05-01 09:23:23 +02:00
ridiculousfish
f5e62f28bc Save a memory allocation in append_formatv 2014-04-30 16:29:52 -07:00
ridiculousfish
60c8012e9e Implement notifyd-based notification strategy for universal variables
(OS X specific)
2014-04-30 15:50:03 -07:00
ridiculousfish
08d6e515c7 Merge remote-tracking branch 'origin/death_of_fishd' into death_of_fishd 2014-04-30 12:03:07 -07:00
ridiculousfish
fac2f27dd3 Implement deletion of universal variables. Add tests for them. 2014-04-30 10:17:36 -07:00
Konrad Borowski
ed37427f9e White is not identical to normal
This makes white work properly in white terminals when used for
`fish_color_*` variables. It's probably silly thing this small
mistake breaks, to be honest, but it's still a bug.
2014-04-30 15:44:51 +02:00
ridiculousfish
7a5a277c29 Implement universal variable deletion. Adopt shared memory uvar notification. 2014-04-29 17:03:00 -07:00
ridiculousfish
38da76804e Implement shared memory strategy for universal variable notifications 2014-04-29 14:14:50 -07:00
ridiculousfish
a949f0b0c3 Move universal variable callbacks out from under the lock, to avoid a
possible deadlock on reentrancy
2014-04-29 11:28:00 -07:00
ridiculousfish
ffc23046a2 Include a missing header for uint64_t 2014-04-29 10:09:38 -07:00
Alan Thompson
07944cfd20 Change terminology in docs from 'environment variables' -> 'shell variables' 2014-04-29 07:27:56 +02:00
ridiculousfish
91aadab3dd Enhance file_id_t to have richer information, to guard against inode
recycling on Linux filesystems
2014-04-28 15:14:33 -07:00
ridiculousfish
c3425bc55f Include a header to permit building on Linux 2014-04-27 23:52:09 -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
David Adam
ba1b5e34a7 Check effective credentials of socket peers
Fix for CVE-2014-2905.

Code for getpeereid() on non-BSD systems imported from the PostgreSQL
project under a BSD-style license.

Closes #1436
2014-04-28 10:41:27 +08:00
ridiculousfish
753c42a3d5 Merge branch 'master' into death_of_fishd 2014-04-27 18:53:35 -07:00
ridiculousfish
97c2ec8dcf Fix a duplicated variable, and defeat some warnings in fish_tests 2014-04-27 18:44:21 -07:00
ridiculousfish
4948508277 Squelch some more warnings on Linux 2014-04-27 18:27:34 -07:00
ridiculousfish
fb89c762fc Silence unused return value warning in FATAL_EXIT 2014-04-27 17:28:57 -07:00
ridiculousfish
58ebdd4a7e Attempt to silence some warnings 2014-04-27 17:23:19 -07:00
ridiculousfish
d7f22a0c27 Correctly invoke callbacks with fishd-less universal variables. All
tests now pass.
2014-04-27 16:53:07 -07:00
ridiculousfish
3b4794ae94 Implement atomic loading/saving of fishd file within fish, eventually
permitting removal of fishd. Universal variables test passes, others
fail.
2014-04-27 13:35:32 -07:00
David Adam
c0989dce2d 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.
2014-04-27 12:26:21 +08:00
David Adam
8412c867a5 Check effective credentials of socket peers
Fix for CVE-2014-2905.

Code for getpeereid() on non-BSD systems imported from the PostgreSQL
project under a BSD-style license.
2014-04-27 12:26:17 +08:00
Anders Bergh
10642a34f1 fish_config: Listen on both IPv6 and IPv4.
A subclass of TCPServer was created to deny any non-local connections and to
listen using an IPv6 socket.
2014-04-27 11:32:26 +08:00
ridiculousfish
6a94b51cba Beginning steps towards teaching the universal variable system to read
the fishd file directly, instead of fetching it through fishd
2014-04-26 11:41:34 -07:00
Konrad Borowski
36ef521c0e Fix filehandle leak in proc_get_jiffies 2014-04-26 17:36:20 +02:00
ridiculousfish
bf14668b2a Migrate machine and hostname identification from fishd.cpp to
env_universal_common.cpp, so that fish can use it
2014-04-25 17:45:22 -07:00
ridiculousfish
a475dd15e6 Migrate universal variables to env_var_t structure. Encapsulate
universal variable storage into a class for better testability.
2014-04-25 16:09:26 -07:00
Konrad Borowski
bb0b82a110 Remove useless return. 2014-04-22 18:54:26 +02:00
David Flores
2bbb59964f functions on top 2014-04-19 14:50:15 -07:00
David Flores
4fd32eb48e added docker completion file 2014-04-19 14:50:15 -07: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
ridiculousfish
023af5585f Remove a debugging statement (oops) 2014-04-18 01:13:28 -07:00
ridiculousfish
3d85000f13 Reduce the iterations in the iothread test to something more reasonable.
Remove an unnecessary lock.
2014-04-17 16:39:41 -07:00
ridiculousfish
3d1a204c83 Simplify threading implementation. Removed iothread array. Threads now
run detached (no more pthread_join), and will not exit until they see
that all requests have been dequeued.
2014-04-17 16:07:50 -07:00
ridiculousfish
1ce30deec3 Remove the close_old field from io_fd_t, which is never actually
respected - a bug dating back to fish 1.x! The fd that would be closed
is actually closed in io_cleanup_fds().
2014-04-16 15:31:28 -07:00
ridiculousfish
8ed08872b9 Remove the now-unused parser_t::job_create 2014-04-14 12:40:17 -07:00
ridiculousfish
7a75e7341b Eliminate the parser_use_ast switch, which does nothing, and
exec_no_exec, which also does nothing in the new parser
2014-04-14 11:12:40 -07:00
ridiculousfish
ec6dee8bd1 Minor cleanup of redirection functions 2014-04-11 09:50:12 -07:00
Fabian Ruff
f2a507c4a7 fix gem --version/--help tab completions 2014-04-06 12:58:22 -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
ridiculousfish
7ef9e4d8e7 Remove an unnecessary parse pass in highlight.cpp (oops) 2014-04-05 16:09:02 -07:00
Konrad Borowski
3180910fd1 Use source instead of . in autoload.cpp. 2014-04-04 15:59:41 +02:00
ridiculousfish
b01d09d704 Set the job property of block_t before expanding arguments associated
with the job, fixing psub. Fixes #1394
2014-04-02 00:32:08 -07:00
Daniel Matz
2f6551b3b1 Properly detect when MQ is enabled for Mercurial completion. 2014-03-31 10:08:10 -07:00
Daniel Matz
50ae14cf7b Properly complete Mercurial bookmarks when only one bookmark exists.
The if statement checking the output of hg bookmarks uses two conditions
joined by the or keyword.  However, only the first part was being used.
Wrapping the two statements with begin and end properly combines them.
2014-03-31 10:08:10 -07:00
Daniel Matz
79b7cd69bb Add fallback for label completion in older versions of Mercurial. 2014-03-31 10:08:10 -07:00
Daniel Matz
cf237a0e4f Replace use of xargs with command substitution in Mercurial completion. 2014-03-31 10:08:10 -07:00
Daniel Matz
c0d147c5c4 Add the __fish prefix to all Mercurial completion functions. 2014-03-31 10:08:10 -07:00
Daniel Matz
bd707b4a96 Remove unnecessary use of uniq in Mercurial completion.
Fish already takes care of duplicate completions.
2014-03-31 10:08:10 -07:00
Daniel Matz
daaed863da Use the current commandline token for Mercurial filename completion.
The token variable was being used, but I must have accidentally deleted its
definition while I was working on the original version of the file.
2014-03-31 10:08:10 -07:00
Daniel Matz
2bdfac2036 Use local scope for variables in Mercurial completion functions. 2014-03-31 10:08:10 -07:00
Daniel Matz
d74a23e583 Improve Mercurial command completion.
Rewrote the completion file by hand.  Added completion of files, bookmarks,
revision labels, etc.
2014-03-31 10:08:09 -07:00
Anders Bergh
44b35f7735 fish_config: Listen on both IPv6 and IPv4.
A subclass of TCPServer was created to deny any non-local connections and to
listen using an IPv6 socket.
2014-03-31 10:06:46 -07:00
ridiculousfish
0d3169ef70 Run restyle.sh to enforce style rules. 2014-03-31 10:01:39 -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
Lukas Stabe
6c987d6708 add pacsrv completion 2014-03-31 09:54:28 -07:00
ridiculousfish
28fd1a4c5d Merge branch 'master' of github.com:fish-shell/fish-shell 2014-03-30 21:58:32 -07:00
ridiculousfish
bd895aa76c Changes to bind_mode implementation based on code review and merge
errors
2014-03-30 16:58:46 -07:00
David Adam
1177daecde configure: turn off automatic searches through non-standard directories
configure will no longer check for the existence of extra include, lib
and bin directories in /usr/pkg /sw /opt /opt/local /usr/local.

The check was not done in a particularly sensible manner and there are
now no mandatory dependencies that not shipped in the main system trees
on virtually every system in existence.

If building with Fink, follow these directions as suggested by the fink
project:
  http://www.finkproject.org/faq/usage-general.php#compile-myself

Closes #1185, and closes #1186.
2014-03-30 13:11:41 +08:00
David Adam
42813eeb84 configure/Makefile: remove unused $LIBS and $LDFLAGS complications 2014-03-30 13:11:41 +08: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
ridiculousfish
aa1b065dd1 Allow appending path hints to history items after they have been added,
allowing us to avoid the delay before items appear in history. Should
fix #984
2014-03-28 23:22:03 -07:00
ridiculousfish
7248b2213d Fix switch statement syntax highlighting so that the arguemnt to switch
is colored as a parameter, not a command. Promote this from a tok_string
to a symbol_argument in the grammar too.
2014-03-28 17:09:08 -07:00
ridiculousfish
74b28f0a86 Fix for crash with malformed switch statement. Fixes #1376 2014-03-28 16:56:44 -07:00
ridiculousfish
005edf71a8 Fix initially backgrounded jobs. Fixes #1373 2014-03-28 14:39:47 -07:00
ridiculousfish
c1f64ba017 Make set_color fail silently if there is no argument (reintroducing
469743c). Fixes #1335
2014-03-27 13:46:33 -07:00
ridiculousfish
42166be22e Make the argument list parsing in complete -a robust against weird
tokens like &. Improve the error message when such tokens are found.
2014-03-27 11:34:18 -07:00
ridiculousfish
62b3ed17ba Teach parser_t how to parse an argument list that contains newlines, for
complete -a support. Fixes #1369
2014-03-27 11:17:05 -07:00
ridiculousfish
31bf50b2d4 Equip syntax highlighting with a variant that does no disk I/O. Invoke
it after expanding an abbreviation, so that the expanded abbreviation
appears with (some) syntax highlighting.
2014-03-26 18:49:09 -07:00
ridiculousfish
0325c1ba65 Teach parse_util_detect_errors to report invalid builtins, as found in
issue #1252
2014-03-26 18:20:38 -07:00
ridiculousfish
f2a437bd3b Merge branch 'master' into parser_cleanup
Conflicts:
	parse_constants.h
	parse_tree.h
2014-03-26 13:59:14 -07:00
ridiculousfish
7a7fb423b3 Remove some unused function declarations 2014-03-26 10:00:32 -07:00
ridiculousfish
d533c1b1c8 Second attempt to fix the build. config.h.in changes need to go in
configure.ac.
2014-03-25 20:23:58 -07:00
ridiculousfish
2db013a5fa Hopeful fix for the build 2014-03-25 20:13:33 -07:00
ridiculousfish
9fece3fdf1 Space and time optimizations for parse_node_t. Reduced size from 48
bytes to 20 bytes.
2014-03-25 20:06:34 -07:00
ridiculousfish
b520a03c57 Prefer swap() member function to std::swap. We were hitting the
inefficient generic std::swap for some derived types.
2014-03-25 12:44:21 -07:00
ridiculousfish
a4cafaad2e Turn on the new "ast" parser by default for execution.
This change replaces fish's execution model, and obviates much of
parser_t. Instead of parsing fish code into a sequence of
commands-arguments, this reifies syntactic constructs into a grammar,
builds a parse tree, and executes that. This provides a big
simplification and (sometimes) performance boost. fish while loops
become C++ while loops, etc.

There are some known regressions in error reporting, which ought to be
fixed in the soon-to-be-merged parser_cleanup branch. There's also
legitimate changes in edge cases. For example, `command builtin ...` now
executes a command called "builtin" instead of doing something else
weird. The most significant change is that syntactic elements must be
unexpected: for example, single quoting 'command' will now cause it to
not be recognized. This should be fixed soon.

Please open issues for any regressions you find!
2014-03-25 00:34:22 -07:00
ridiculousfish
0d64bbed46 Stop linking iconv, now that we have our own utf8 conversion routines 2014-03-23 13:29:57 -07:00
ridiculousfish
9718e70260 Naive reimplementation of utf2wcs and wcs2utf in
env_universal_common.cpp. These use the new utf8 functions exposed in
utf8.h. This will allow us to drop the iconv dependency.
2014-03-23 13:06:24 -07:00
Siteshwar Vashisht
a67dd9fbdd Included missing stdint.h header in utf8.cpp 2014-03-23 15:09:43 +05:30
ridiculousfish
aabed8279e Incorporate a modified UTF8 <-> wchar_t implementation from Alexey
Vatchenko (http://www.bsdua.org/libbsdua.html) in preparation for
eliminating our dependency on iconv
2014-03-22 23:46:58 -07:00
ridiculousfish
06eb271bda Changes full_escape to not generate \x escapes for non-ASCII characters.
Partially reverts 51de269 . Fixes #1225
2014-03-22 14:46:23 -07:00
ridiculousfish
12025e3050 Remove unused err_buff variable from parser_t 2014-03-22 01:04:49 -07:00
ridiculousfish
ad6367018b Excise use of parser_t's error() functionality. Thread a
parse_error_list_t through all of the expand functions, enabling them to
report errors more directly. Improve aspects of error reporting for
expansion failures.
2014-03-21 17:13:33 -07:00
ridiculousfish
c71b168402 Remove current_tokenizer and current_tokenizer_pos from old parser 2014-03-20 21:32:03 -07:00
ridiculousfish
4deb46290d Remove additional dead code from old parser 2014-03-20 21:32:03 -07:00
ridiculousfish
e5ef45e4c0 Rewrite parser_t::test_args and parser_t::eval_args to use new parser 2014-03-20 21:32:02 -07:00
ridiculousfish
e780637cf4 Add some tests for parse_util_detect_errors_in_argument 2014-03-20 21:32:02 -07:00
ridiculousfish
d659e55646 Correct the last keyword enum to reflect the actual last keyword 2014-03-20 21:32:02 -07:00
ridiculousfish
1c58b6d83e Rewrite parser_t::eval_args to use new AST parser 2014-03-20 21:32:02 -07:00
ridiculousfish
1305c02579 Rewrite parser_t::current_line() to respect new parser 2014-03-20 21:32:02 -07:00
ridiculousfish
2c19ca0dbf Fix for issue where pager contents may stay around if you executed a
command with pager contents visible
2014-03-20 21:32:02 -07:00
ridiculousfish
3cfdc6d126 Fix line number reporting in new parser 2014-03-20 21:32:02 -07:00
ridiculousfish
8ec73b2dd4 Removing some variables from parser_t that are no longer used in the new
execution model
2014-03-20 21:32:02 -07:00
jer-gentoo
5f11854286 Check for libtinfo after libncurses
See Gentoo bug 459768 (https://bugs.gentoo.org/show_bug.cgi?id=459768)

Closes #1322 (https://github.com/fish-shell/fish-shell/pull/1322).
2014-03-19 11:29:22 +08:00
ridiculousfish
14f4e0e271 Fix for issue where pager contents may stay around if you executed a
command with pager contents visible
2014-03-16 16:49:31 -07:00
ridiculousfish
5c54ef7b0d Merge branch 'master' into parser_cleanup 2014-03-15 20:24:25 -07:00
ridiculousfish
73c2846d64 Remove support for input IO_BUFFERs, which were only used by fish_pager 2014-03-15 19:49:55 -07:00
ridiculousfish
acd2038407 Remove old pager remnants, including documentation and references in the
build system
2014-03-15 14:24:05 -07:00
ridiculousfish
2442ae60db Remove old fish_pager source and implementation 2014-03-15 14:00:18 -07:00
ridiculousfish
6c096191ba Remove support for invoking old pager 2014-03-15 13:46:15 -07:00
ridiculousfish
20f9dd9a6b Fix for extra newline that gets appended if a command is not found in
the new parser
2014-03-15 13:07:19 -07:00
David Adam
44e94b8cfa ignore (generated) messages.pot 2014-03-13 21:56:56 +08:00
David Adam
8c21cf7761 translations: update new strings, convert all to UTF-8 2014-03-13 21:56:04 +08:00
David Adam
d2851cf5c5 translations: correct strings for fish_greeting default message 2014-03-13 21:16:35 +08:00
David Adam
b0716253a2 Makefile: assume UTF-8 in our codebase for translation generation 2014-03-13 21:16:35 +08:00
David Adam
eaf023b4d8 Makefile: separate messages.pot error lines 2014-03-13 21:16:35 +08:00
ridiculousfish
e47ad09130 Make contains take the string by const reference again, for performance reasons 2014-03-11 12:43:52 +08:00
David Adam
689d0082d8 README.md: document build and runtime dependencies even better. 2014-03-10 10:09:52 +08:00
ridiculousfish
390a49072d Reorganize keyword recognition in the parser to use a single table 2014-03-10 07:38:14 +08:00
Daniel J. Hofmann
7dc0b6f40b Fixed various Undefined Behavior occurrences.
Conditionally uninitialized:
 - builtin_commandline.cpp:577
 - expand.cpp:869
 - parse_util.cpp:1036

Initialization of POD structs:
 - event.cpp:61
 - autoload.cpp:22

References used with va_start:
 - common.cpp:608:18

Found with clang-3.4's awesome -Wconditional-uninitialized,
-Wmissing-field-initializers and -Wvarargs.
2014-03-07 18:28:16 +01:00
ridiculousfish
79d14521db Support for error detection in arguments in new parser. Restores error
reporting for bad arguments (e.g. with bad variable names)
2014-03-04 02:54:08 -08:00
ridiculousfish
8d6b0c8d76 Allow the caller to specify the goal node when parsing a string via the
new parser. This enables parsing either a job list or an argument list.
2014-03-04 02:54:08 -08: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
1fa9167f25 Allow the caller to specify the goal node when parsing a string via the
new parser. This enables parsing either a job list or an argument list.
2014-03-02 16:03:05 -08:00
ridiculousfish
cc12225142 Clean up various block types and state as part of new parser 2014-03-02 13:46:30 -08:00
ridiculousfish
6b3a37c597 Remove obviated builtins and additional cleanup of old parser 2014-03-02 13:11:17 -08:00
ridiculousfish
b187125b63 Merge branch 'master' into parser_cleanup 2014-03-01 20:33:26 -08:00
ridiculousfish
d232a0f951 Implement status -n (line number) with new parser 2014-03-01 16:04:13 -08:00
ridiculousfish
84ea96f383 Begin removing remnants of old parser 2014-02-28 20:01:04 -08:00
ridiculousfish
be33d3f2a4 Revert "Merge pull request #1317 from pullreq/cpp"
This reverts commit 74135c0600, reversing
changes made to 6d749789ce.

See discussion in #1317
2014-02-28 02:16:48 -08:00
ridiculousfish
0e991c596f Enable new parser by default (!). Fixes #557.
This entirely replaces fish's execution model. Bugs are likely. See commit 290aae80 for what this is about.
2014-02-27 21:06:39 -08:00
ridiculousfish
858b6aa257 Correct some mistakes in the fish grammar comment 2014-02-27 20:34:42 -08:00
Konrad Borowski
74135c0600 Merge pull request #1317 from pullreq/cpp
Fixup filenames in comments; remove dead code found with scan-build.
2014-02-27 17:18:18 +01:00
Geoff Nixon
18dd6f58e3 Fixes .c -> .cpp in comments. For doxygen. 2014-02-27 06:23:40 -08:00
Geoff Nixon
ddcd2b0810 Dead stores 2014-02-27 06:23:40 -08:00
Konrad Borowski
6d749789ce Use 127.0.0.1 for fish config.
Before this change, fish config used 0 as its address. However, this
isn't a good idea from security point of view, as web service can be
accessed from everywhere, and do anything on the account it was ran on.

This also deals with firewalls which block the access to 0 even from
the host machine itself. It possibly might fix #673, but I'm not sure.
2014-02-27 14:47:08 +01:00
ridiculousfish
3224062b32 Optimize some fast paths in autoload loading. Use an iterator to avoid
doing multiple set lookups, and cache the tokenized path to avoid
multiple memory allocations.
2014-02-24 13:06:54 -08:00
ridiculousfish
688ea28bed Optimize the tokenize_variable_array hot spot to do less string copying 2014-02-24 09:54:30 -08:00
ridiculousfish
5e7c01c251 Rework color editing in fish_config. Bury customization mode a bit:
initially the user only sees the various themes, and has to activate
customization mode to change colors. Tweak the appearance as well.
2014-02-24 01:56:02 -08:00
ridiculousfish
de2eea05b4 Turn on the new pager by default, as described in #291 2014-02-22 22:24:23 -08:00
ridiculousfish
1de819e3de Fix for busted tab completions in for loop arguments, switch statements,
and other syntactic constructs. Fixes #1309
2014-02-21 19:55:55 -08:00
ridiculousfish
bc43409624 Expand the variable name as an ordinary parameter in for loops. Added
test for it too.
2014-02-21 18:20:51 -08:00
ridiculousfish
a57077aba3 Correctly color "end" command, and variable name in for loop. 2014-02-21 18:01:40 -08:00
ridiculousfish
8eaabacf44 Allow double-tapping tab to fully disclose pager, per #291 2014-02-20 13:30:26 -08:00
ridiculousfish
adf5b036d6 Fix to stop reporting config.fish execution as coming from "standard
input" within backtraces
2014-02-20 10:57:13 -08: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
ridiculousfish
64953e26fc Clean up Xcode project and remove unnecessary ARCHS settings 2014-02-17 15:02:13 -08:00
ridiculousfish
2e1024d275 Tweak error reporting in new parser to use fewer lines 2014-02-17 14:52:08 -08:00
ridiculousfish
2253c57628 Remove the reader_selected_completion_changed callback. Fix a hang when
the pager gets empty, as reported in 291
2014-02-16 19:59:00 -08:00
ridiculousfish
9c7d1dbb6f Make the pager search field allow searching on the prefix 2014-02-16 19:59:00 -08:00
Mandeep Sandhu
ef9f2ab31f Add completions for git stash sub-commands
Closes #1102.

Signed-off-by: David Adam <zanchey@ucc.gu.uwa.edu.au>
2014-02-16 21:58:21 +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
ridiculousfish
de8bae3f0f Ignore SIGPIPE in fishd. Fixes #1084 2014-02-14 16:38:44 -08:00
ridiculousfish
1fbf633817 Reimplement exec parsing. Instead of special-casing exec as a command,
promote it to a decoration (like 'command' or 'builtin'). This makes tab
completion and syntax highlighting treat exec's first argument as a
command and is otherwise a nice simplification. Fixes #1300
2014-02-13 10:10:49 -08:00
ridiculousfish
f733dc5eae Fix the build by including <algorithm> header 2014-02-12 21:08:22 -08:00
ridiculousfish
503bbd85b5 Test and fix issue where, if binding X is a prefix of binding Y, and X
is specified before Y, then Y will never be invoked because X will
always get there first. Now instead we order bindings in descending
order by length, so that we always test the binding before any others that
prefixes it. Fixes #1283.
2014-02-12 12:52:31 -08:00
ridiculousfish
29ddb68da4 Tests and fix to allow return to work correctly within if statements. Closes #1297. 2014-02-12 01:39:06 -08:00
David Adam
dd49399e45 .travis.yml: reduce verbosity of IRC notifications 2014-02-11 09:47:29 +08:00
David Adam
3678f134d9 document Alt-F as well for accepting part of autosuggestion
Closes #1290.
2014-02-10 17:28:47 +08:00
ridiculousfish
bbd784a2e8 Clean up old syntax highlighting code now that the new parser seems to work 2014-02-09 21:21:59 -08:00
ridiculousfish
77dbaf3aef Fix for Python out-of-range exception when accessing Bindings tab 2014-02-09 20:19:04 -08:00
ridiculousfish
9b9ee338c1 Fix for miscoloring quote following variable name 2014-02-09 15:33:34 -08:00
ridiculousfish
5ea7f52df2 Don't complete variables when single quoted. Fixes #1023 2014-02-09 15:27:04 -08:00
ridiculousfish
414530c9c2 Partially rework profiling. Fix profiling crash with new parser. Fixes
1295
2014-02-09 14:04:43 -08:00
ridiculousfish
e632d39b1f Make if statements always return success at the end, matching other
shells. Fixes #1061.
2014-02-07 17:57:53 -08:00
David Adam
09054a09fa README.md: document build and runtime dependencies better. 2014-02-06 17:51:18 +08:00
David Adam
01ec55366d README.md: update build status image
(oops!)
2014-02-06 17:09:31 +08:00
ridiculousfish
e2388344b2 Use type int instead of type short 2014-02-05 19:28:27 -08:00
ridiculousfish
fd10844c2b Unbreak C++11 due to narrowing; use non-conflicting declaration FISH_COLORS instead of COLORS; remove deprecated register type. 2014-02-05 19:23:13 -08:00
ridiculousfish
35f2302352 Pass --always to git describe to ensure we always get a version
number. Hopefully fixes travis-ci. See #1287
2014-02-05 16:20:09 -08:00
David Adam
e908b731ab .travis.yml: add https://travis-ci.org/ automatic builds 2014-02-05 11:25:59 -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
7e769252e7 Make builtin_complete output escaped completions. Fixes #1127 2014-02-04 11:55:56 -08:00
ridiculousfish
699d78bcfe Make the test harness output file diffs on failure 2014-02-04 11:28:29 -08:00
ridiculousfish
7d345018af Redirect stderr of initial call to __fish_reload_key_bindings. Fixes ##1155 2014-02-03 16:46:01 -08:00
ridiculousfish
bac3b39227 Highlight the entire variable name, not just the dollar sign. Fixes #1201 2014-02-03 14:16:00 -08:00
David Adam
c168e6f870 Documented Alt-Right to accept a single word of an autosuggestion
See https://github.com/fish-shell/fish-shell/issues/1262
2014-02-02 21:45:03 +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
Siteshwar Vashisht
a1b43b7a09 Fix for opening bindings tab as initial tab
'fish_config bindings' command should open bindings tab as initially active tab
2014-01-30 23:53:49 +05:30
ridiculousfish
bfc78186f5 Correctly initialize search_field_shown to avoid phantom search field
after the prompt
2014-01-30 07:59:45 -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
8490aac025 sshfs completions: use all directories as mount points
Closes #1268.
2014-01-29 13:33:27 +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
d5cb16aa1f NULL -> false 2014-01-28 08:19:24 -08:00
ridiculousfish
afd6ca314c Make COMPLETE_AND_SEARCH always show the search field. Also end paging upon
modifying the command line contents.
2014-01-28 07:30:05 -08:00
ridiculousfish
441522f97b Make return not execute the selected completion in the pager, instead
just accept it
2014-01-27 22:01:38 -08:00
ridiculousfish
369229ea71 Make escape clear the current completion 2014-01-27 02:28:19 -08:00
ridiculousfish
15a63805d9 Make arrow keys navigate completions instead of manipulate completion
search field
2014-01-27 02:22:34 -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
ce4c145f1c Eliminate dangerous command_length() function. Use editable_line_t in a
few places we missed.
2014-01-26 14:55:41 -08:00
ridiculousfish
b9372944f5 Refactor reader to work on selectable 'editable_line_t' so that most
commands can operate on pager search field
2014-01-26 14:47:15 -08:00
ridiculousfish
f58dff62c7 Beginnings of work for search field feature of new pager 2014-01-26 00:41:30 -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
ridiculousfish
67bb12e569 Attempt to fix the Linux build by including stdint.h 2014-01-24 18:53:12 -08:00
ridiculousfish
2d43517914 Run 'make depend' to update header dependencies 2014-01-24 18:37:04 -08:00
ridiculousfish
df60c00d16 Experimental new "inline pager" implementation, reminiscent of zsh. Pager contents now appear below the prompt and disappear when no longer needed. They can also be navigated with arrow keys or tab.
New pager is disabled by default for now. It can be enabled by setting the fish_new_pager variable to 1.

Work and discussed is tracked in https://github.com/fish-shell/fish-shell/issues/1264
2014-01-24 18:12:46 -08:00
ridiculousfish
0fbddb0df1 Add fish_new_pager variable to enable new pager on request, disabled by default. 2014-01-24 18:10:42 -08:00
ridiculousfish
4c5c1fc9ef Suppress the pager progress message if the listing fits onscreen 2014-01-24 18:10:42 -08:00
ridiculousfish
4ffd2380c3 Remove yet more unnecessary fish_pager.cpp specific code from the new pager 2014-01-24 18:10:42 -08:00
ridiculousfish
5849cd3a2e Remove some unnecessary fish_pager.cpp specific code from the new pager 2014-01-24 18:10:41 -08:00
ridiculousfish
0a1960865e Support for "merged completions" (multiple completions on the same line)
in new pager. Support for using up-arrow to end pager navigation.
2014-01-24 18:10:41 -08:00
ridiculousfish
830ab99e6e Merge branch 'master' into pager 2014-01-24 18:10:41 -08:00
ridiculousfish
2e4b7b3d19 Fix pager to correctly join completions with the same description.
Closes #1263
2014-01-24 10:47:49 -08:00
David Adam
8cb051d44d use annotated tags only for version checking
Note: if you have previously cloned the repository, the tags for
previous versions have been edited. Use `git fetch --tags` to
synchronise your local copy.
2014-01-24 20:51:06 +08:00
ridiculousfish
535445a555 Replace assertions with new do_test macro in fish_tests.cpp 2014-01-23 18:19:52 -08:00
ridiculousfish
f6afddd94b Fix for tab-completing arguments. Closes #1261 2014-01-23 18:07:21 -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
ridiculousfish
0f2ee308de Use ellipsis in pager progress message 2014-01-22 17:50:03 -08:00
ridiculousfish
7d3f808e4c Various tweaks and improvements to new pager, including disclosure
feature
2014-01-22 17:45:27 -08: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
ridiculousfish
ee9a4082b6 Allow down arrow to enter pager. Clean up repainting within
reader_readline
2014-01-21 16:25:55 -08:00
ridiculousfish
e6c70bf392 Merge branch 'master' into pager 2014-01-21 16:09:03 -08:00
ridiculousfish
9edf9ad2ac Correct the correspondence between name_arr and the input codes. 2014-01-21 16:08:35 -08:00
ridiculousfish
f714d80c93 Support for scrolling through the pager 2014-01-21 14:35:18 -08:00
ridiculousfish
605c306bef Correctly clear pager contents on ctrl-C 2014-01-20 13:05:18 -08:00
furunkel
5e2cda183a Merge pull request #8 from maxfl/bind_mode
Add tmux support
2014-01-20 09:52:12 -08:00
Maxim Gonchar
f284f00935 Add tmux support 2014-01-20 21:28:54 +04:00
Maxim Gonchar
777e4fe49e Merge branch 'bind_mode' of https://github.com/furunkel/fish-shell into bind_mode 2014-01-20 21:28:36 +04:00
furunkel
8daf0223dc Merge pull request #7 from maxfl/bind_mode
More clear way of setting cursor shape
2014-01-20 05:25:33 -08:00
Maxim Gonchar
f77fb0b948 Merge branch 'bind_mode' of https://github.com/furunkel/fish-shell into bind_mode 2014-01-20 17:13:51 +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
Julian Aron Prenner
fd8ab78372 Update $fish_bind_mode only if necessary 2014-01-20 14:03:48 +01: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
furunkel
7df4a966ea Merge pull request #6 from maxfl/bind_mode
Add cursor shape handler
2014-01-20 01:07:56 -08:00
ridiculousfish
998ce1fe89 Support for correctly resizing pager contents. 2014-01-19 23:52:35 -08:00
Maxim Gonchar
1279888567 Add cursor shape handler 2014-01-20 10:19:41 +04:00
ridiculousfish
d9d65577f4 Improved navigation of pager list. Added tests for it too. 2014-01-19 16:41:40 -08:00
Julian Aron Prenner
f2f6055109 Merge branch 'bind_mode' of github.com:furunkel/fish-shell into bind_mode 2014-01-19 17:56:43 +01:00
furunkel
db0506c1df Merge pull request #5 from Gonzih/bind_mode
Add x and X bindings in visual mode, fix e and E in visual mode.
2014-01-19 06:36:34 -08: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
1157d330a6 Merge remote-tracking branch 'upstream/master' into bind_mode 2014-01-19 11:01:24 +01: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
ridiculousfish
9920047b34 Merge branch 'master' into pager 2014-01-17 14:21:08 -08:00
ridiculousfish
b758c0c335 Relax the requirement that we find a working 'doc' directory in order
for fish to be relocatable. Instead we only look for data and
configuration path
2014-01-17 14:19:00 -08:00
ridiculousfish
32054b6f32 Implement and document new -P / --paging-mode flags to commandline, to support new
pager
2014-01-17 12:53:01 -08:00
ridiculousfish
c6e5201e15 Initial support for navigating completions that appear under the
commandline using arrow keys
2014-01-17 12:04:03 -08: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
ridiculousfish
64b1b5ca38 Merge branch 'master' into pager 2014-01-15 23:43:00 -08:00
ridiculousfish
8e77aca854 Fix for recent issue where random text might appear underlined. 2014-01-15 23:33:34 -08:00
ridiculousfish
0627ae82fb Clean up pager on exit from interactive read 2014-01-15 18:21:38 -08: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
furunkel
d0c3cc6016 Merge pull request #3 from maxfl/bind_mode
Add dirty bindings for *iw, *aw
2014-01-15 09:01:46 -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
David Adam
bd313b0b3d configure/Makefile: remove unused variables and unneeded declarations 2014-01-15 23:50:42 +08:00
David Adam
568de7e818 fish_tests.cpp: set return value if tests fail 2014-01-15 23:50:42 +08:00
David Adam
3106cffb65 Makefile/tests: use return values to communicate errors 2014-01-15 23:50:42 +08:00
Julian Aron Prenner
21e9615243 Remove unused #defines 2014-01-15 15:59:13 +01:00
Julian Aron Prenner
9e27ba5109 Pull from upstream 2014-01-15 15:44:27 +01:00
Konrad Borowski
7874cdf52a Replace size_t with unsigned long.
size_t is not compatible type for `%lu`.
2014-01-15 15:36:50 +01: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
Julian Aron Prenner
3a9173858b Merge branch 'bind_mode' of github.com:furunkel/fish-shell into bind_mode 2014-01-15 11:40:00 +01:00
Julian Aron Prenner
dede320630 Rename 'new-mode' to 'sets-mode', prepare for selection support. 2014-01-15 11:39:19 +01:00
furunkel
c25e2e611d Merge pull request #2 from maxfl/bind_mode
Add optional arguments to fish_default_key_bindings
2014-01-15 02:29:37 -08:00
ridiculousfish
54689f6087 Merge branch 'master' into pager
Conflicts:
	highlight.h
2014-01-15 02:05:46 -08:00
ridiculousfish
370b47d23f Make RESOLVE(statement) correctly handle any keyword. Fixes #1242. 2014-01-15 01:53:40 -08:00
ridiculousfish
53814983ff Update style and formatting to conform to fish style guide. 2014-01-15 01:40:40 -08:00
ridiculousfish
5953170f14 Update pager colors to use new non-bitmask architecture. 2014-01-15 01:36:09 -08:00
ridiculousfish
40897cd7da Merge branch 'master' into pager
Conflicts:
	screen.h
2014-01-15 01:23:30 -08:00
ridiculousfish
e2fe873049 Change highlight colors from a bitmask into a combination enum / bitmask
so that we can support more than 16 color specifications.
2014-01-15 01:01:25 -08:00
ridiculousfish
9f3a16a4ae Merge branch 'master' into pager 2014-01-15 00:10:19 -08:00
ridiculousfish
9da3d890e4 Fix for indentation test failures 2014-01-15 00:07:25 -08: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
ridiculousfish
295c8f48a6 Teach screen how to render completion page. Correct spacing in
completion page contents.
2014-01-14 15:39:53 -08:00
furunkel
7be8147b80 Merge pull request #1 from maxfl/bind_mode
Update vi bindings
2014-01-14 15:38:19 -08:00
ridiculousfish
c22d94bba6 Fix for extra space when tab completing directories. Fixes #1241 2014-01-14 14:28:06 -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
ridiculousfish
4a20febe96 Merge branch 'master' into pager 2014-01-14 02:39:14 -08:00
ridiculousfish
28c7094f5b Fix for issue where 'function' would not define a function if the
arguments came before its name. Fixes #1240
2014-01-14 02:29:53 -08:00
ridiculousfish
ff5e2746da Fix for issue in new parser where no error would be reported if the very
first token is an error. Fixes #1239.
2014-01-14 00:38:55 -08:00
ridiculousfish
dc8014562b Fix for issue where unterminated quotes would attempt to be executed,
instead of continuing edit onto the next line.
2014-01-14 00:02:18 -08:00
Konrad Borowski
b9394b9599 Rename __fish_complete_usb function. 2014-01-14 08:28:15 +01:00
ridiculousfish
899dafb33f Migrating new pager implementation into a class. Further work on
constructing a screen_data_t from it.
2014-01-13 16:41:22 -08:00
ridiculousfish
104cf87b89 Merge branch 'master' into pager 2014-01-13 14:38:13 -08:00
ridiculousfish
290aae80e1 Merge of "ast" branch, providing fish with a unified parser, used for execution, syntax coloring, completions, abbreviations, etc. This also bestows fish with a formalized grammar, which is 'documented' in a comment in parse_tree.h.
The parser here is a LL(2) parser, which is handwritten (to avoid complicating the build process and to maintain good control over error reporting, thread safety, etc). Later it's worth exploring using parser generators (lemon, etc) or other tools to simplify things.

This commit enables the new parser for syntax highlighting, completions, and abbreviations. Syntax highlighting retains the old implementation (disabled), which will be removed shortly. There is also support for a new execution model, based on the new parser, but it is disabled by default (can be enabled by setting the fish_new_parser variable to 1).

There's also lots of new tests, and some machinery for selecting which tests to run.

After living on this commit for a while, we'll enable the new execution model by default, and then begin to tear down the machinery of the old one (the block types, builtin_end, the parser_t junk, etc.). After that we can pursue even more exotic execution models, like multithreaded ones.

(The branch name is really a misnomer - the tree here is a parse tree, or concrete syntax tree, not an abstract one.)

Fixes #557
2014-01-13 13:57:35 -08:00
ridiculousfish
212eeaa77c Correctly report errors for 'and' and 'or' in pipelines with new parser 2014-01-13 13:19:58 -08:00
ridiculousfish
eb28c710ba Improve the 'This command can not be used in a pipeline' message to
actually name the command
2014-01-13 12:51:09 -08:00
ridiculousfish
6fc1d7dc77 Further cleanup and improvements to error messages 2014-01-13 03:57:59 -08:00
ridiculousfish
d9056081e7 Added tests for piping an fd other than stdout 2014-01-13 02:49:41 -08:00
ridiculousfish
95f87cdd56 Support for special && and || error messages in new parser 2014-01-13 02:24:11 -08:00
ridiculousfish
746cc4c10b Rename highlight_shell_magic to highlight_shell_new_parser 2014-01-13 00:31:25 -08:00
ridiculousfish
51c18e3f9a Turn off new parser for execution by default in preparation for merge
with trunk
2014-01-13 00:05:43 -08:00
ridiculousfish
25b25e3e49 Include missing algorithm header in parse_execution.cpp 2014-01-12 23:52:33 -08:00
ridiculousfish
096f850433 Eliminate class parse_t 2014-01-12 22:39:12 -08:00
ridiculousfish
ec469782c8 Improvements to error messages with new parser. In particular, "naked
builtins" now print their help (e.g. just 'while')
2014-01-12 15:10:59 -08:00
ridiculousfish
40e223c12d Additional miscellaneous fixes based on cppcheck static analysis 2014-01-12 13:53:59 -08:00
ridiculousfish
b2c78dbd57 Fix for issue where we compute a default USER variable, but never set
its value.
2014-01-12 13:42:26 -08:00
ridiculousfish
89069fdaa4 Miscellaneous minor fixes based on cppcheck static analyzer 2014-01-12 13:33:35 -08:00
ridiculousfish
1130e4782d Remove some unused defines 2014-01-12 00:11:29 -08:00
ridiculousfish
0e9d159bc2 Improvements to error reporting. In particular, we now append a newline
in reader_shell_test, so that there's always a statement terminator.
Otherwise commands like 'echo |' would not be considered an error (just
incomplete).
2014-01-08 18:20:55 -08:00
ridiculousfish
d69f408b14 Rename builtin parse to __fish_parse 2014-01-08 15:13:08 -08:00
ridiculousfish
e8d6c96c1e Merge branch 'master' into ast 2014-01-08 15:07:56 -08:00
ridiculousfish
b34721b3f4 Miscellaneous optimizations to reduce string copying 2014-01-07 14:57:58 -08:00
ridiculousfish
cb6be2a50d Support for "simple block" optimization, where we can run blocks
directly if there are no arguments or redirections to the block itself
2014-01-07 10:45:36 -08:00
ridiculousfish
45852f0497 Add a convenience method next_node_in_node_list which can be used for
iterating over lists in a parse tree
2014-01-05 15:23:42 -08:00
ridiculousfish
426f58aa61 Merge branch 'master' into ast 2014-01-03 18:12:29 -08:00
ridiculousfish
bf75731bbe Fix for wrong syntax highlighting in the face of tokenizer errors, e.g.
"echo 'hi"
2014-01-03 17:42:25 -08:00
ridiculousfish
c8eec109b2 Support in parse_dump_tree for "forests", which occur when there's a
parse error
2014-01-03 16:54:34 -08:00
ridiculousfish
b8079953d8 Fix for cross-test interference where cancellation from one test would
lead to failure in expansion test
2014-01-03 15:27:39 -08:00
ridiculousfish
993148552e Support for Ctrl-C cancellation in new parser. Added tests for it too. 2014-01-02 16:19:33 -08:00
ridiculousfish
1863be7be4 Fix some warnings 2014-01-01 15:49:41 -08:00
ridiculousfish
358145c4bd Merge branch 'master' into ast 2014-01-01 15:32:50 -08:00
ridiculousfish
fb882f0b69 Support for stack overflow and infinite recursion detection in new
parser
2014-01-01 15:29:56 -08:00
ridiculousfish
27cba56761 Further improvements to error reporting with new parser 2014-01-01 00:04:02 -08:00
ridiculousfish
e2da73bf4f Fix for issue where 'while |' would be incorrectly interpreted as a
"naked statement" causing a wonky error message
2013-12-31 16:38:15 -08:00
ridiculousfish
4402f73bf7 Improve error reporting for tokens ending with newlines 2013-12-31 16:37:15 -08:00
Julian Aron Prenner
dc90cd6bc4 Better input handling; add support multiple binding commands 2014-01-01 00:11:32 +01:00
ridiculousfish
7356a0f6c8 Clean up and rationalize error handling in parse_execution.cpp 2013-12-31 14:37:37 -08: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
ridiculousfish
a9787b769f Support for implicit cd, no-exec, and the exit builtin. All tests now
pass (!). Error reporting still unsteady.
2013-12-29 16:23:26 -08:00
ridiculousfish
a42711e31c Support for break/continue with new parser execution 2013-12-28 22:52:06 -08:00
ridiculousfish
c632307eaa Make eval_node_at_offset return an error indication instead of the exit
status of the last command
2013-12-28 16:33:26 -08:00
ridiculousfish
0f9de11a67 Fix issues related to redirections and block level IO with new parser 2013-12-28 16:18:38 -08:00
ridiculousfish
715823a666 Bringup of function definitions, switch statements with new parser 2013-12-27 03:58:42 -08:00
ridiculousfish
6ce4b344e4 Hook up for statements, if statements, and function definition in new
parser
2013-12-27 01:38:43 -08:00
ridiculousfish
a6ca809a4e Fix for issue where last job_list in tree would have a -1 production_idx
because we never actually sent the terminal token type
2013-12-26 14:52:15 -08:00
ridiculousfish
c1a13ae8bc Fix a few errors identified by testing new parser 2013-12-26 13:36:43 -08:00
ridiculousfish
6536ffe178 Facilities for turning on new AST-based parser. 2013-12-26 13:24:10 -08:00
ridiculousfish
562946d055 Cleanup thrashing around in parser_t. New parser execution lives in
parse_execution.cpp
2013-12-26 12:55:10 -08:00
ridiculousfish
924b8cbe24 New ideas about how to use new parser for execution. Beginnings of
implementation.
2013-12-26 12:24:00 -08:00
ridiculousfish
5b1a532652 Factor execution aspects from parser_t to parse_execution_context_t .
Still searching for best way to use new parser for execution.
2013-12-24 13:17:24 -08:00
ridiculousfish
b6af3e51ab Very early work in adopting new parser for actual execution of commands.
Not turned on yet.
2013-12-23 14:53:56 -08:00
ridiculousfish
ebc8bd6ff5 Update the backtrace call to pass a block index instead of a block,
fixing the build
2013-12-20 17:47:07 -08:00
ridiculousfish
ed70195c7e Merge branch 'master' into ast
Conflicts:
	function.cpp
	parser.cpp
	parser.h
2013-12-20 17:44:37 -08:00
ridiculousfish
739e529416 Initial flailing around trying to adopt new parser for actual execution 2013-12-20 14:37:40 -08:00
ridiculousfish
384987cd5b Remove detect_errors2 2013-12-16 22:32:08 -08:00
ridiculousfish
af21dfd294 Make the tests compile again 2013-12-16 17:18:32 -08:00
ridiculousfish
3e9153d955 Clean up some error messages. Don't show the line in the error message
if it's the first line and we're interactive, since then it's obvious
2013-12-16 16:52:23 -08:00
ridiculousfish
0e421ea31d Various cleanup and tweaking of backtrace messages 2013-12-16 15:33:20 -08:00
ridiculousfish
471f7f06f7 Fix for a busted assertion 2013-12-15 16:44:05 -08:00
ridiculousfish
ddb37a47da Stop using realpath() in builtin_source, so as to preserve relative path
reporting in backtraces
2013-12-15 16:43:22 -08:00
ridiculousfish
5b24aac266 Initial work on backtrace support with new parser 2013-12-15 16:05:37 -08:00
ridiculousfish
5cf59de676 Finish rewriting detect_errors to use new parser. All tests now pass (!) 2013-12-12 18:18:07 -08:00
ridiculousfish
e25d49b80b Make builtin_parse output to stdout 2013-12-12 18:17:30 -08:00
ridiculousfish
d5d9b9284a Initial work towards rewriting detect_errors to use new parser.
Low-level tests currently pass; high level tests fail.
2013-12-11 18:34:28 -08:00
ridiculousfish
383b6aabf5 Improve error reporting in new parser. Tests now pass. 2013-12-08 22:29:02 -08:00
ridiculousfish
7a3f5afee7 Initial work towars improved error reporting. Tests currently fail. 2013-12-08 21:54:06 -08:00
ridiculousfish
5769fa6aed Fix for off-by-one error in tokenizer error message reporting 2013-12-08 18:16:55 -08:00
ridiculousfish
925fe65dd8 Remove the indentation part of parser_t::test(). Rename it to
detect_errors().
2013-12-08 16:25:07 -08:00
ridiculousfish
67b1f14a6f Better support for parse errors in indenting 2013-12-08 14:13:23 -08:00
ridiculousfish
dd0cc5ed9f Rewriting indenting functionality to use new parser 2013-12-08 13:41:12 -08:00
ridiculousfish
a23441109d Merge branch 'master' into ast
Conflicts:
	complete.cpp
	fish_tests.cpp
	highlight.cpp
2013-12-07 12:54:43 -08:00
ridiculousfish
ef4465efdb More work on builtin pager 2013-12-07 12:43:40 -08:00
ridiculousfish
76ecf897ce First round of changes to migrate pager inside fish, in preparation for
presenting completions underneath.
2013-12-01 15:11:25 -08:00
ridiculousfish
f2211ff3ad Update some tests 2013-11-26 00:01:23 -08:00
ridiculousfish
2a1fd421bd Correctly detect unbalanced 'end' in syntax highlighting 2013-11-25 00:48:01 -08:00
ridiculousfish
920adb8296 Merge branch 'master' into ast 2013-11-24 23:45:59 -08:00
ridiculousfish
34540babdb Merge branch 'master' into ast
Conflicts:
	complete.cpp
	fish_tests.cpp
2013-11-24 23:21:00 -08:00
ridiculousfish
5d84e86d89 Merge branch 'master' into ast 2013-11-06 13:14:52 -08:00
ridiculousfish
964c7e6f3b Merge branch 'master' into ast
Conflicts:
	complete.cpp
2013-10-27 13:37:14 -07:00
ridiculousfish
630b0515ad Merge branch 'master' into ast
Conflicts:
	parse_util.cpp
2013-10-16 01:48:21 -07:00
ridiculousfish
b06e798373 Revert "Remove undefined behavior from parse_error()."
Per my understanding this is not undefined behavior. No ABI depends on the called function reading
variadic arguments, nor does any standard require it. So if this is crashing something else must be going
on.

This reverts commit 22d22f6aa8.
2013-10-16 01:25:47 -07:00
Konrad Borowski
22d22f6aa8 Remove undefined behavior from parse_error().
Having function that takes arbitrary number of arguments without
actually reading them is undefined behavior, as it could cause stack
to be in the corrupted state. Now arguments after token are parsed,
even if they aren't needed.

See also: http://asciinema.org/a/5904
2013-10-14 11:45:29 +02:00
Konrad Borowski
e8ba3c2f4d Fix compilation errors under Clang. 2013-10-14 09:12:45 +02:00
ridiculousfish
ce857b0770 Syntax highlighting for file redirections 2013-10-13 16:58:40 -07:00
ridiculousfish
ce7c681462 Fix for bogus completions for function names 2013-10-13 16:46:02 -07:00
ridiculousfish
41e562ebc2 Clean up redirection parsing in the tokenizer. 2013-10-13 13:28:01 -07:00
ridiculousfish
ddf98661e4 Adopt new parser in tab completions 2013-10-12 18:17:03 -07:00
ridiculousfish
cbd8a27a6d Beef up completion tests 2013-10-12 12:04:31 -07:00
ridiculousfish
b60db79866 Modify fish_tests to support specifying the tests to run via arguments 2013-10-12 11:32:34 -07:00
ridiculousfish
ddec870d25 Rework decision process for whether to interpret keywords as structural
or as commands (for LL parser). Will allow 'builtin --' to parse as a
plain statement, instead of a decorated statement '--'
2013-10-12 02:46:49 -07:00
ridiculousfish
77e358a001 Support for parsing e.g. 'command --' as a plain statement, instead of
executing the command '--'.
2013-10-12 01:47:31 -07:00
ridiculousfish
5490f54d00 Make parse_t::parse a static method so we don't have to create lots of
useless parse_t objects
2013-10-12 01:17:55 -07:00
ridiculousfish
58447c147f Make the new parser LL(2). Support for correct handling of e.g. 'command
--help'
2013-10-09 20:37:07 -07:00
ridiculousfish
e763345f25 Reduce child_count in node structure to 8 bits 2013-10-09 03:45:58 -07:00
ridiculousfish
7b86b2e05a Adoption of new parser in abbreviations 2013-10-09 02:03:50 -07:00
ridiculousfish
a51bd03a5c Remove parse_exec stuff 2013-10-08 18:48:01 -07:00
ridiculousfish
54d7c29221 Syntax highlighting for command substitutions 2013-10-08 18:41:35 -07:00
ridiculousfish
997e3e16dd Merge branch 'master' into ast_no_templates 2013-10-08 15:06:27 -07:00
ridiculousfish
c6eef16664 Autosuggestion adoption of new parser 2013-10-08 15:05:30 -07:00
ridiculousfish
4f718e83b3 Syntax highlighting now correctly handles cd 2013-10-07 03:56:09 -07:00
ridiculousfish
20ccda69f4 Command highlighting works 2013-10-07 01:04:37 -07:00
ridiculousfish
14741518a7 Command highlighting now works 2013-10-06 16:23:45 -07:00
ridiculousfish
dd91779442 Merge branch 'master' into ast_no_templates
Conflicts:
	configure.ac
	exec.cpp
2013-10-06 13:08:57 -07:00
ridiculousfish
e58b73179f More work on new parser 2013-08-11 00:35:00 -07:00
ridiculousfish
8e07e55c1f More work on new parser 2013-08-08 15:06:46 -07:00
ridiculousfish
6a6593335d Teach fish_tests about new parsing files in Makefile 2013-08-08 15:06:32 -07:00
ridiculousfish
876b9d49b4 Added fish_tests target to fish.xcodeproj 2013-08-08 14:44:52 -07:00
ridiculousfish
680ac41bb1 Clean up some error handling 2013-07-28 15:44:09 -07:00
ridiculousfish
b133137a1f Removed templates (yay) 2013-07-28 15:19:38 -07:00
ridiculousfish
9dc91925e7 Fewer templates 2013-07-26 23:59:12 -07:00
ridiculousfish
4f8d4f378c AST no templates 2013-07-25 15:24:22 -07:00
ridiculousfish
3e3eefc2dc Improvements to new parser. All functions and completions now parse. 2013-07-22 18:26:15 -07:00
ridiculousfish
77b6b0a9b2 Move production logic into templates 2013-07-21 15:22:11 -07:00
ridiculousfish
551d2dfebd Merge branch 'master' into ast_templates
Conflicts:
	fish_tests.cpp
2013-07-21 14:04:06 -07:00
ridiculousfish
93f27666db More work 2013-07-10 23:45:09 -07:00
ridiculousfish
66d5436789 Fix for extra token_end 2013-07-04 14:05:42 -07:00
ridiculousfish
70b83a3bbb Implement support for switch 2013-06-30 15:38:31 -07:00
ridiculousfish
eba5b0e4c5 If statements parse 2013-06-27 15:12:27 -07:00
ridiculousfish
66af0c1a53 More work on the AST. block statements worked out a bit more. 2013-06-24 12:33:40 -07:00
ridiculousfish
70c6ca76cb Merge branch 'master' into ast 2013-06-23 11:51:40 -07:00
ridiculousfish
d840643cb3 More work on new parser 2013-06-23 02:09:46 -07:00
ridiculousfish
b771e97ac6 More work on simulating execution of parse trees. Pipes are totally screwed up. 2013-06-18 23:35:04 -07:00
ridiculousfish
bdd8ef5a52 Merge branch 'master' into ast 2013-06-17 00:43:12 -07:00
ridiculousfish
2ffc2a288c Merge branch 'master' into ast 2013-06-16 03:23:31 -07:00
ridiculousfish
4ca46b7883 Beginning support for new parser error messages 2013-06-15 15:21:35 -07:00
ridiculousfish
827a9d640c Added parse builtin for testing. Lots of work on simulated execution. 2013-06-15 14:32:38 -07:00
ridiculousfish
e2a506e54a More work on new parser 2013-06-11 09:37:51 -07:00
ridiculousfish
048f08080d Rename expression.h to parse_tree.h and parse_exec.h 2013-06-09 14:21:24 -07:00
ridiculousfish
0a02e0db4b Merge branch 'master' into parsed 2013-06-09 13:52:18 -07:00
ridiculousfish
f3e5262dc0 Parser limps into existence 2013-06-08 19:20:26 -07:00
ridiculousfish
99494afd08 Parser work. Not sure whether to have a different class for each node or not. 2013-06-06 21:49:40 -07:00
ridiculousfish
d54346b205 Stuff 2013-06-01 22:14:47 -07:00
ridiculousfish
54f683fc6b Initial work on parser bringup (squash) 2013-05-26 12:12:16 -07:00
849 changed files with 273917 additions and 60234 deletions

8
.clang-format Normal file
View File

@@ -0,0 +1,8 @@
# Use the Google style with these modifications:
#
# 1) lines can be up to 100 chars long rather than 80, and
# 2) use a four space indent rather than two spaces.
#
BasedOnStyle: Google
ColumnLimit: 100
IndentWidth: 4

7
.gitattributes vendored
View File

@@ -1,5 +1,7 @@
.gitattributes export-ignore
.gitignore export-ignore
.travis.yml export-ignore
fish.spec.in export-ignore
/build_tools/make_svn_completions.fish export-ignore
/build_tools/description-pak export-ignore
/build_tools/make_hg_completions.fish export-ignore
@@ -17,4 +19,7 @@
/build_tools/osx_package_scripts/postinstall export-ignore
/build_tools/make_pkg.sh export-ignore
/build_tools/make_darcs_completions.fish export-ignore
/debian export-ignore
/debian/* export-ignore
/.github export-ignore
/.github/* export-ignore

40
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,40 @@
<!--
Thanks for helping to make fish better!
If you are asking for help with fish, or you've found a bug:
- Make sure it's not a known or solved issue, by searching https://github.com/fish-shell/fish-shell/issues
- Fill in the following information carefully:
-->
[Please include a short description of the problem here]
### Reproduction Steps:
1. [First Step]
2. [Second Step]
3. [Other Steps...]
### Expected behavior:
[Describe expected behavior here]
### Observed behavior:
[Describe observed behavior here]
### Additional information:
[ Other useful information, such as:
When did this problem start?
Does this happen all the time?
Has anything changed on your system recently?
]
---
Fish version: [from the output of fish --version]
Operating system: [your operating system and how you installed fish e.g. Homebrew, Ubuntu PPA, distribution package]
Terminal or terminal emulator: [e.g. PuTTy, iTerm2, GNOME Terminal, VT220]

18
.gitignore vendored
View File

@@ -1,7 +1,9 @@
*.o
*~
*.exe
*.xccheckout
.DS_Store
Makefile
autom4te.cache/
build/
@@ -20,18 +22,22 @@ doc_src/index.hdr
po/*.gmo
fish
fish_indent
fish_pager
fish_tests
fishd
mimedb
fish.pc
seq
set_color
share/config.fish
share/__fish_build_paths.fish
share/man/
toc.txt
user_doc/
xcuserdata
tests/*tmp.*
tests/foo.txt
test/
FISH-BUILD-VERSION-FILE
version
messages.pot
lexicon.txt
lexicon_filter
lexicon.log
DerivedData/
compile_commands.json
xcodebuild.log

8
.oclint Normal file
View File

@@ -0,0 +1,8 @@
rules:
rule-configurations:
# This is the default value (as of the time I wrote this) but I'm making
# it explicit since it needs to agree with the value used by clang-format.
# Thus, if we ever change the fish style to allow longer lines this should
# be changed (as well as the corresponding clang-format config).
- key: LONG_LINE
value: 100

63
.travis.yml Normal file
View File

@@ -0,0 +1,63 @@
language: cpp
sudo: false
matrix:
include:
- os: linux
compiler: gcc
addons:
apt:
packages:
- bc
- expect
- gettext
- libncurses5-dev
- os: linux
compiler: clang
addons:
apt:
sources:
- llvm-toolchain-precise-3.8
- ubuntu-toolchain-r-test
packages:
- clang-3.8
- llvm-3.8 # for llvm-symbolizer
- bc
- expect
- gettext
- libncurses5-dev
env:
- CXXFLAGS="-g -fno-omit-frame-pointer -fsanitize=address"
- ASAN_OPTIONS=check_initialization_order=1:detect_stack_use_after_return=1:detect_leaks=1
before_install: export CXX=clang++-3.8
- os: osx
before_install:
- brew update
- brew install pcre2 # use system PCRE2
fast_finish: true
script:
- autoreconf
- ./configure --prefix=$HOME/prefix || cat config.log
- make -j2
- make install
- make test DESTDIR=$HOME/prefix/ SHOW_INTERACTIVE_LOG=1
notifications:
# Some items are encrypted so that notifications from other repositories
# don't flood the official repositories.
irc:
channels:
#- "irc.oftc.net#fish"
secure: "eRk9KGZ5+mrlD2SoI8yg2Sp8OYrh7YPyGe3WCDQUwTnNgNDII34rbM9a6UOA/l7AeWSNY8joLq5xVLCU4wpFgUcJ11SYIpMnLosZK29OW4ubDOHmdBDvJ971rLgAVG9cXngZtIxEVVxN/jnS1Qr8GKZx4DjkaTMgz1pemb4WxCc="
template:
- "%{repository}#%{build_number} (%{commit} on %{branch} by %{author}): %{message} Details at %{build_url}"
use_notice: true
skip_join: true
webhooks:
urls:
#- https://webhooks.gitter.im/e/61821cec3015bf0f8bb1
secure: fPfOmxnC3MCsfR1oocVFeWLawGcRZkn+8fNHlSOeZ+SqqoZfcCHgQTvQ22TqmVl1yvkXbNlaXjo6dbVzTOAh7r7H0bRMEKBVh3dQS7wqjB1sKivpXd8PAS3BTj5MQpGeJzdHnDuwVlwDktGtfHfhGeq1Go/4IosOq8u+6RTe28g=

View File

@@ -1,3 +0,0 @@
24-01-2012 Jan Kanis
* Added a changelog file
* removed unescaping if the 'commandline' builtin is called without the -o (tokenise) flag

364
CHANGELOG.md Normal file
View File

@@ -0,0 +1,364 @@
# fish 2.3b1
## Significant Changes
- A new `string` builtin to handle... strings! (#2296)
- Allow using escape as the Meta modifier key, by waiting after seeing an escape character wait up to 300ms for an additional character. This is consistent with readline (e.g. bash) and can be configured via the fish_escape_delay_ms variable. This allows using escape as the Meta modifier. (#1356)
- Add new directories for vendor functions and configuration snippets (#2500)
# Backward-incompatible changes
- Unmatched globs will now cause an error, except when used with `for`, `set` or `count` (#2719)
- `and` and `or` will now bind to the closest `if` or `while`, allowing compound conditions without `begin` and `end` (#1428)
- `set -ql` now searches up to function scope for variables (#2502)
- `status -f` will now behave the same when run as the main script or using `source` (#2643)
- `source` no longer puts the file name in `$argv` if no arguments are given (#139)
# Other notable fixes and improvements
- Fish no longer silences errors in config.fish (#2702)
- Move the history file to $XDG_DATA_HOME/fish (or ~/.local/share if it has not been set)
- Directory autosuggestions will now descend as far as possible if there is only one child directory (#2531)
- Add support for bright colors (#1464)
- Allow Ctrl-J (\cj) to be bound separately from Ctrl-M (\cm) (#217)
- psub now has a "-s"/"&#x2013;suffix" option to name the temporary file with that suffix
- Enable 24-bit colors on select terminals (#2495)
- Support for SVN status in the prompt (#2582)
- Mercurial and SVN support have been added to the Classic + Git (now Classic + VCS) prompt (via the new \__fish_vcs_prompt function) (#2592)
- export now handles variables with a "=" in the value (#2403)
- New completions for:
- alsactl
- Archlinux's asp, makepkg
- Atom's apm (#2390)
- entr - the "Event Notify Test Runner" (#2265)
- Fedora's dnf (#2638)
- OSX diskutil (#2738)
- pkgng (#2395)
- pulseaudio's pacmd and pactl
- rust's rustc and cargo (#2409)
- sysctl (#2214)
- systemd's machinectl (#2158), busctl (#2144), systemd-nspawn, systemd-analyze, localectl, timedatectl
- and more
- Fish no longer has a function called sgrep, freeing it for user customization (#2245)
- A rewrite of the completions for cd, fixing a few bugs (#2299, #2300, #562)
- Linux VTs now run in a simplified mode to avoid issues (#2311)
- The vi-bindings now inherit from the emacs bindings
- Fish will also execute fish_user_key_bindings when in vi-mode
- `funced` will now also check $VISUAL (#2268)
- A new `suspend` function (#2269)
- Subcommand completion now works better with split /usr (#2141)
- The command-not-found-handler can now be overridden by defining a function called __fish_command_not_found_handler in config.fish (#2332)
- A few fixes to the Sorin theme
- PWD shortening in the prompt can now be configured via the fish_prompt_pwd_dir_length variable, set to the length per path component (#2473)
- fish now ships a skeleton file for /etc/fish/config.fish that only contains some documentation, the included code has been moved to the corresponding file in /usr (#2799)
# fish 2.2.0 (released July 12, 2015)
### Significant changes ###
* Abbreviations: the new `abbr` command allows for interactively-expanded abbreviations, allowing quick access to frequently-used commands (#731).
* Vi mode: run `fish_vi_mode` to switch fish into the key bindings and prompt familiar to users of the Vi editor (#65).
* New inline and interactive pager, which will be familiar to users of zsh (#291).
* Underlying architectural changes: the `fishd` universal variable server has been removed as it was a source of many bugs and security problems. Notably, old fish sessions will not be able to communicate universal variable changes with new fish sessions. For best results, restart all running instances of `fish`.
* The web-based configuration tool has been redesigned, featuring a prompt theme chooser and other improvements.
* New German, Brazilian Portuguese, and Chinese translations.
### Backward-incompatible changes ###
These are kept to a minimum, but either change undocumented features or are too hard to use in their existing forms. These changes may break existing scripts.
* `commandline` no longer interprets functions "in reverse", instead behaving as expected (#1567).
* The previously-undocumented `CMD_DURATION` variable is now set for all commands and contains the execution time of the last command in milliseconds (#1585). It is no longer exported to other commands (#1896).
* `if` / `else` conditional statements now return values consistent with the Single Unix Specification, like other shells (#1443).
* A new "top-level" local scope has been added, allowing local variables declared on the commandline to be visible to subsequent commands. (#1908)
### Other notable fixes and improvements ###
* New documentation design (#1662), which requires a Doxygen version 1.8.7 or newer to build.
* Fish now defines a default directory for other packages to provide completions. By default this is `/usr/share/fish/vendor-completions.d`; on systems with `pkgconfig` installed this path is discoverable with `pkg-config --variable completionsdir fish`.
* A new parser removes many bugs; all existing syntax should keep working.
* New `fish_preexec` and `fish_postexec` events are fired before and after job execution respectively (#1549).
* Unmatched wildcards no longer prevent a job from running. Wildcards used interactively will still print an error, but the job will proceed and the wildcard will expand to zero arguments (#1482).
* The `.` command is deprecated and the `source` command is preferred (#310).
* `bind` supports "bind modes", which allows bindings to be set for a particular named mode, to support the implementation of Vi mode.
* A new `export` alias, which behaves like other shells (#1833).
* `command` has a new `--search` option to print the name of the disk file that would be executed, like other shells' `command -v` (#1540).
* `commandline` has a new `--paging-mode` option to support the new pager.
* `complete` has a new `--wraps` option, which allows a command to (recursively) inherit the completions of a wrapped command (#393), and `complete -e` now correctly erases completions (#380).
* Completions are now generated from manual pages by default on the first run of fish (#997).
* `fish_indent` can now produce colorized (`--ansi`) and HTML (`--html`) output (#1827).
* `functions --erase` now prevents autoloaded functions from being reloaded in the current session.
* `history` has a new `--merge` option, to incorporate history from other sessions into the current session (#825).
* `jobs` returns 1 if there are no active jobs (#1484).
* `read` has several new options:
* `--array` to break input into an array (#1540)
* `--null` to break lines on NUL characters rather than newlines (#1694)
* `--nchars` to read a specific number of characters (#1616)
* `--right-prompt` to display a right-hand-side prompt during interactive read (#1698).
* `type` has a new `-q` option to suppress output (#1540 and, like other shells, `type -a` now prints all matches for a command (#261).
* Pressing F1 now shows the manual page for the current command (#1063).
* `fish_title` functions have access to the arguments of the currently running argument as `$argv[1]` (#1542).
* The OS command-not-found handler is used on Arch Linux (#1925), nixOS (#1852), openSUSE and Fedora (#1280).
* `Alt`+`.` searches backwards in the token history, mapping to the same behavior as inserting the last argument of the previous command, like other shells (#89).
* The `SHLVL` environment variable is incremented correctly (#1634 & #1693).
* Added completions for `adb` (#1165 & #1211), `apt` (#2018), `aura` (#1292), `composer` (#1607), `cygport` (#1841), `dropbox` (#1533), `elixir` (#1167), `fossil`, `heroku` (#1790), `iex` (#1167), `kitchen` (#2000), `nix` (#1167), `node`/`npm` (#1566), `opam` (#1615), `setfacl` (#1752), `tmuxinator` (#1863), and `yast2` (#1739).
* Improved completions for `brew` (#1090 & #1810), `bundler` (#1779), `cd` (#1135), `emerge` (#1840),`git` (#1680, #1834 & #1951), `man` (#960), `modprobe` (#1124), `pacman` (#1292), `rpm` (#1236), `rsync` (#1872), `scp` (#1145), `ssh` (#1234), `sshfs` (#1268), `systemctl` (#1462, #1950 & #1972), `tmux` (#1853), `vagrant` (#1748), `yum` (#1269), and `zypper` (#1787).
---
# fish 2.1.2 (released Feb 24, 2015)
fish 2.1.2 contains a workaround for a filesystem bug in Mac OS X Yosemite. #1859
Specifically, after installing fish 2.1.1 and then rebooting, "Verify Disk" in Disk Utility will report "Invalid number of hard links." We don't have any reports of data loss or other adverse consequences. fish 2.1.2 avoids triggering the bug, but does not repair an already affected filesystem. To repair the filesystem, you can boot into Recovery Mode and use Repair Disk from Disk Utility. Linux and versions of OS X prior to Yosemite are believed to be unaffected.
There are no other changes in this release.
---
# fish 2.1.1 (released September 26, 2014)
__Important:__ if you are upgrading, stop all running instances of `fishd` as soon as possible after installing this release; it will be restarted automatically. On most systems, there will be no further action required. Note that some environments (where `XDG_RUNTIME_DIR` is set), such as Fedora 20, will require a restart of all running fish processes before universal variables work as intended.
Distributors are highly encouraged to call `killall fishd`, `pkill fishd` or similar in installation scripts, or to warn their users to do so.
### Security fixes
* The fish_config web interface now uses an authentication token to protect requests and only responds to requests from the local machine with this token, preventing a remote code execution attack. (closing CVE-2014-2914). #1438
* `psub` and `funced` are no longer vulnerable to attacks which allow local privilege escalation and data tampering (closing CVE-2014-2906 and CVE-2014-3856). #1437
* `fishd` uses a secure path for its socket, preventing a local privilege escalation attack (closing CVE-2014-2905). #1436
* `__fish_print_packages` is no longer vulnerable to attacks which would allow local privilege escalation and data tampering (closing CVE-2014-3219). #1440
### Other fixes
* `fishd` now ignores SIGPIPE, fixing crashes using tools like GNU Parallel and which occurred more often as a result of the other `fishd` changes. #1084 & #1690
---
# fish 2.1.0
Significant Changes
-------------------
* **Tab completions will fuzzy-match files.** #568
When tab-completing a file, fish will first attempt prefix matches (`foo` matches `foobar`), then substring matches (`ooba` matches `foobar`), and lastly subsequence matches (`fbr` matches `foobar`). For example, in a directory with files foo1.txt, foo2.txt, foo3.txt…, you can type only the numeric part and hit tab to fill in the rest.
This feature is implemented for files and executables. It is not yet implemented for options (like `--foobar`), and not yet implemented across path components (like `/u/l/b` to match `/usr/local/bin`).
* **Redirections now work better across pipelines.** #110, #877
In particular, you can pipe stderr and stdout together, for example, with `cmd ^&1 | tee log.txt`, or the more familiar `cmd 2>&1 | tee log.txt`.
* **A single `%` now expands to the last job backgrounded.** #1008
Previously, a single `%` would pid-expand to either all backgrounded jobs, or all jobs owned by your user. Now it expands to the last job backgrounded. If no job is in the background, it will fail to expand. In particular, `fg %` can be used to put the most recent background job in the foreground.
Other Notable Fixes
-------------------
* alt-U and alt+C now uppercase and capitalize words, respectively. #995
* VTE based terminals should now know the working directory. #906
* The autotools build now works on Mavericks. #968
* The end-of-line binding (ctrl+E) now accepts autosuggestions. #932
* Directories in `/etc/paths` (used on OS X) are now prepended instead of appended, similar to other shells. #927
* Option-right-arrow (used for partial autosuggestion completion) now works on iTerm2. #920
* Tab completions now work properly within nested subcommands. #913
* `printf` supports \e, the escape character. #910
* `fish_config history` no longer shows duplicate items. #900
* `$fish_user_paths` is now prepended to $PATH instead of appended. #888
* Jobs complete when all processes complete. #876
For example, in previous versions of fish, `sleep 10 | echo Done` returns control immediately, because echo does not read from stdin. Now it does not complete until sleep exits (presumably after 10 seconds).
* Better error reporting for square brackets. #875
* fish no longer tries to add `/bin` to `$PATH` unless PATH is totally empty. #852
* History token substitution (alt-up) now works correctly inside subshells. #833
* Flow control is now disabled, freeing up ctrl-S and ctrl-Q for other uses. #814
* sh-style variable setting like `foo=bar` now produces better error messages. #809
* Commands with wildcards no longer produce autosuggestions. #785
* funced no longer freaks out when supplied with no arguments. #780
* fish.app now works correctly in a directory containing spaces. #774
* Tab completion cycling no longer occasionally fails to repaint. #765
* Comments now work in eval'd strings. #684
* History search (up-arrow) now shows the item matching the autosuggestion, if that autosuggestion was truncated. #650
* Ctrl-T now transposes characters, as in other shells. #128
---
# fish 2.0.0
Significant Changes
-------------------
* **Command substitutions now modify `$status` #547.**
Previously the exit status of command substitutions (like `(pwd)`) was ignored; however now it modifies $status. Furthermore, the `set` command now only sets $status on failure; it is untouched on success. This allows for the following pattern:
```sh
if set python_path (which python)
...
end
```
Because set does not modify $status on success, the if branch effectively tests whether `which` succeeded, and if so, whether the `set` also succeeded.
* **Improvements to $PATH handling.**
* There is a new variable, `$fish_user_paths`, which can be set universally, and whose contents are appended to $PATH #527
* /etc/paths and /etc/paths.d are now respected on OS X
* fish no longer modifies $PATH to find its own binaries
* **Long lines no longer use ellipsis for line breaks**, and copy and paste
should no longer include a newline even if the line was broken #300
* **New syntax for index ranges** (sometimes known as "slices") #212
* **fish now supports an `else if` statement** #134
* **Process and pid completion now works on OS X** #129
* **fish is now relocatable**, and no longer depends on compiled-in paths #125
* **fish now supports a right prompt (RPROMPT)** through the fish_right_prompt function #80
* **fish now uses posix_spawn instead of fork when possible**, which is much faster on BSD and OS X #11
Other Notable Fixes
-------------------
* Updated VCS completions (darcs, cvs, svn, etc.)
* Avoid calling getcwd on the main thread, as it can hang #696
* Control-D (forward delete) no longer stops at a period #667
* Completions for many new commands
* fish now respects rxvt's unique keybindings #657
* xsel is no longer built as part of fish. It will still be invoked if installed separately #633
* __fish_filter_mime no longer spews #628
* The --no-execute option to fish no longer falls over when reaching the end of a block #624
* fish_config knows how to find fish even if it's not in the $PATH #621
* A leading space now prevents writing to history, as is done in bash and zsh #615
* Hitting enter after a backslash only goes to a new line if it is followed by whitespace or the end of the line #613
* printf is now a builtin #611
* Event handlers should no longer fire if signals are blocked #608
* set_color is now a builtin #578
* man page completions are now located in a new generated_completions directory, instead of your completions directory #576
* tab now clears autosuggestions #561
* tab completion from within a pair of quotes now attempts to "appropriate" the closing quote #552
* $EDITOR can now be a list: for example, `set EDITOR gvim -f`) #541
* `case` bodies are now indented #530
* The profile switch `-p` no longer crashes #517
* You can now control-C out of `read` #516
* `umask` is now functional on OS X #515
* Avoid calling getpwnam on the main thread, as it can hang #512
* Alt-F or Alt-right-arrow (Option-F or option-right-arrow) now accepts one word of an autosuggestion #435
* Setting fish as your login shell no longer kills OpenSUSE #367
* Backslashes now join lines, instead of creating multiple commands #347
* echo now implements the -e flag to interpret escapes #337
* When the last token in the user's input contains capital letters, use its case in preference to that of the autosuggestion #335
* Descriptions now have their own muted color #279
* Wildcards beginning with a . (for example, `ls .*`) no longer match . and .. #270
* Recursive wildcards now handle symlink loops #268
* You can now delete history items from the fish_config web interface #250
* The OS X build now weak links `wcsdup` and `wcscasecmp` #240
* fish now saves and restores the process group, which prevents certain processes from being erroneously reported as stopped #197
* funced now takes an editor option #187
* Alternating row colors are available in fish pager through `fish_pager_color_secondary` #186
* Universal variable values are now stored based on your MAC address, not your hostname #183
* The caret ^ now only does a stderr redirection if it is the first character of a token, making git users happy #168
* Autosuggestions will no longer cause line wrapping #167
* Better handling of Unicode combining characters #155
* fish SIGHUPs processes more often #138
* fish no longer causes `sudo` to ask for a password every time
* fish behaves better under Midnight Commander #121
* `set -e` no longer crashes #100
* fish now will automatically import history from bash, if there is no fish history #66
* Backslashed-newlines inside quoted strings now behave more intuitively #52
* Tab titles should be shown correctly in iTerm2 #47
* scp remote path completion now sometimes works #42
* The `read` builtin no longer shows autosuggestions #29
* Custom key bindings can now be set via the `fish_user_key_bindings` function #21
* All Python scripts now run correctly under both Python 2 and Python 3 #14
* The "accept autosuggestion" key can now be configured #19
* Autosuggestions will no longer suggest invalid commands #6
---
# fishfish Beta r2
Bug Fixes
---------
* **Implicit cd** is back, for paths that start with one or two dots, a slash, or a tilde.
* **Overrides of default functions should be fixed.** The "internalized scripts" feature is disabled for now.
* **Disabled delayed suspend.** This is a strange job-control feature of BSD systems, including OS X. Disabling it frees up Control Y for other purposes; in particular, for yank, which now works on OS X.
* **fish_indent is fixed.** In particular, the `funced` and `funcsave` functions work again.
* A SIGTERM now ends the whole execution stack again (resolving #13).
* Bumped the __fish_config_interactive version number so the default fish_color_autosuggestion kicks in.
* fish_config better handles combined term256 and classic colors like "555 yellow".
New Features
------------
* **A history builtin**, and associated interactive function that enables deleting history items. Example usage:
* Print all history items beginning with echo: `history --prefix echo`
* Print all history items containing foo: `history --contains foo`
* Interactively delete some items containing foo: `history --delete --contains foo`
Credit to @siteshwar for implementation. Thanks @siteshwar!
---
# fishfish Beta r1
## Scripting
* No changes! All existing fish scripts, config files, completions, etc. from trunk should continue to work.
## New Features
* **Autosuggestions**. Think URL fields in browsers. When you type a command, fish will suggest the rest of the command after the cursor, in a muted gray when possible. You can accept the suggestion with the right arrow key or Ctrl-F. Suggestions come from command history, completions, and some custom code for cd; there's a lot of potential for improvement here. The suggestions are computed on a background pthread, so they never slow down your typing. The autosuggestion feature is incredible. I miss it dearly every time I use anything else.
* **term256 support** where available, specifically modern xterms and OS X Lion. You can specify colors the old way ('set_color cyan') or by specifying RGB hex values ('set_color FF3333'); fish will pick the closest supported color. Some xterms do not advertise term256 support either in the $TERM or terminfo max_colors field, but nevertheless support it. For that reason, fish will default into using it on any xterm (but it can be disabled with an environment variable).
* **Web-based configuration** page. There is a new function 'fish_config'. This spins up a simple Python web server and opens a browser window to it. From this web page, you can set your shell colors and view your functions, variables, and history; all changes apply immediately to all running shells. Eventually all configuration ought to be supported via this mechanism (but in addition to, not instead of, command line mechanisms).
* **Man page completions**. There is a new function 'fish_update_completions'. This function reads all the man1 files from your manpath, removes the roff formatting, parses them to find the commands and options, and outputs fish completions into ~/.config/fish/completions. It won't overwrite existing completion files (except ones that it generated itself).
## Programmatic Changes
* fish is now entirely in C++. I have no particular love for C++, but it provides a ready memory-model to replace halloc. We've made an effort to keep it to a sane and portable subset (no C++11, no boost, no going crazy with templates or smart pointers), but we do use the STL and a little tr1.
* halloc is entirely gone, replaced by normal C++ ownership semantics. If you don't know what halloc is, well, now you have two reasons to be happy.
* All the crufty C data structures are entirely gone. array_list_t, priority_queue_t, hash_table_t, string_buffer_t have been removed and replaced by STL equivalents like std::vector, std::map, and std::wstring. A lot of the string handling now uses std::wstring instead of wchar_t *
* fish now spawns pthreads for tasks like syntax highlighting that require blocking I/O.
* History has been completely rewritten. History files now use an extensible YAML-style syntax. History "merging" (multiple shells writing to the same history file) now works better. There is now a maximum history length of about 250k items (256 * 1024).
* The parser has been "instanced," so you can now create more than one.
* Total #LoC has shrunk slightly even with the new features.
## Performance
* fish now runs syntax highlighting in a background thread, so typing commands is always responsive even on slow filesystems.
* echo, test, and pwd are now builtins, which eliminates many forks.
* The files in share/functions and share/completions now get 'internalized' into C strings that get compiled in with fish. This substantially reduces the number of files touched at startup. A consequence is that you cannot change these functions without recompiling, but often other functions depend on these "standard" functions, so changing them is perhaps not a good idea anyways.
Here are some system call counts for launching and then exiting fish with the default configuration, on OS X. The first column is fish trunk, the next column is with our changes, and the last column is bash for comparison. This data was collected via dtrace.
<table>
<tr> <th> <th> before <th> after <th> bash
<tr> <th> open <td> 9 <td> 4 <td> 5
<tr> <th> fork <td> 28 <td> 14 <td> 0
<tr> <th> stat <td> 131 <td> 85 <td> 11
<tr> <th> lstat <td> 670 <td> 0 <td> 0
<tr> <th> read <td> 332 <td> 80 <td> 4
<tr> <th> write <td> 172 <td> 149 <td> 0
</table>
The large number of forks relative to bash are due to fish's insanely expensive default prompt, which is unchanged in my version. If we switch to a prompt comparable to bash's (lame) default, the forks drop to 16 with trunk, 4 after our changes.
The large reduction in lstat() numbers is due to fish no longer needing to call ttyname() on OS X.
We've got some work to do to be as lean as bash, but we're on the right track.

View File

@@ -1,105 +1,153 @@
# Style guide
# Guidelines For Developers
This is style guide for fish contributors. You should use it for any new code
that you would add to this project and try to format existing code to use this
style.
This document provides guidelines for making changes to the fish-shell project. This includes rules for how to format the code, naming conventions, etc. It also includes recommended best practices such as creating a Travis-CI account so you can verify your changes pass all the tests before making a pull-request.
## Formatting
See the bottom of this document for help on installing the linting and style reformatting tools discussed in the following sections.
1. fish uses the Allman/BSD style of indentation.
2. Indent with spaces, not tabs.
3. Use 4 spaces per indent (unless needed like `Makefile`).
4. Opening curly bracket is on the following line:
## Lint Free Code
// ✔:
struct name
{
// code
};
Automated analysis tools like cppcheck and oclint can point out potential bugs. They also help ensure the code has a consistent style and that it avoids patterns that tend to confuse people.
void func()
{
// code
}
Ultimately we want lint free code. However, at the moment a lot of cleanup is required to reach that goal. For now simply try to avoid introducing new lint.
if (...)
{
// code
}
To make linting the code easy there are two make targets: `lint` and `lint-all`. The latter does just what the name implies. The former will lint any modified but not committed `*.cpp` files. If there is no uncommitted work it will lint the files in the most recent commit.
// ✗:
void func() {
// code
}
### Dealing With Lint Warnings
5. Put space after `if`, `while` and `for` before conditions.
You are strongly encouraged to address a lint warning by refactoring the code, changing variable names, or whatever action is implied by the warning.
// ✔:
if () {}
### Suppressing Lint Warnings
// ✗:
if() {}
Once in a while the lint tools emit a false positive warning. For example, cppcheck might suggest a memory leak is present when that is not the case. To suppress that cppcheck warning you should insert a line like the following immediately prior to the line cppcheck warned about:
6. Put spaces before and after operators excluding increment and decrement;
```
// cppcheck-suppress memleak // addr not really leaked
```
// ✔:
int a = 1 + 2 * 3;
a++;
The explanatory portion of the suppression comment is optional. For other types of warnings replace "memleak" with the value inside the parenthesis (e.g., "nullPointerRedundantCheck") from a warning like the following:
// ✗:
int a=1+2*3;
a ++;
```
[src/complete.cpp:1727]: warning (nullPointerRedundantCheck): Either the condition 'cmd_node' is redundant or there is possible null pointer dereference: cmd_node.
```
7. Never put spaces between function name and parameters list.
Suppressing oclint warnings is more complicated to describe so I'll refer you to the [OCLint HowTo](http://docs.oclint.org/en/latest/howto/suppress.html#annotations) on the topic.
// ✔:
func(args);
## Ensuring Your Changes Conform to the Style Guides
// ✗:
func (args);
The following sections discuss the specific rules for the style that should be used when writing fish code. To ensure your changes conform to the style rules you simply need to run
8. Never put spaces after `(` and before `)`.
9. Always put space after comma and semicolon.
```
make style
```
// ✔:
func(arg1, arg2);
before commiting your change. If you've already committed your changes that's okay since it will then check the files in the most recent commit. This can be useful after you've merged someone elses change and want to check that it's style is acceptable.
for (int i = 0; i < LENGTH; i++) {}
If you want to check the style of the entire code base run
// ✗:
func(arg1,arg2);
```
make style-all
```
for (int i = 0;i<LENGTH;i++) {}
### Suppressing Reformatting of the Code
## Documentation
If you have a good reason for doing so you can tell `clang-format` to not reformat a block of code by enclosing it in comments like this:
Document your code using [Doxygen][dox].
```
// clang-format off
code to ignore
// clang-format on
```
1. Documentation comment should use double star notation or tripple slash:
## Fish Script Style Guide
// ✔:
/// Some var
int var;
Fish scripts such as those in the *share/functions* and *tests* directories should be formatted using the `fish_indent` command.
/**
* Some func
*/
void func();
Function names should be all lowercase with undescores separating words. Private functions should begin with an underscore. The first word should be `fish` if the function is unique to fish.
2. Use slash as tag mark:
The first word of global variable names should generally be `fish` for public vars or `_fish` for private vars to minimize the possibility of name clashes with user defined vars.
// ✔:
## C++ Style Guide
/**
* \param a an integer argument.
* \param s a constant character pointer.
* \return The results
*/
int foo(int a, const char *s);
1. The [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) forms the basis of the fish C++ style guide. There are two major deviations for the fish project. First, a four, rather than two, space indent. Second, line lengths up to 100, rather than 80, characters.
## Naming
1. The `clang-format` command is authoritative with respect to indentation, whitespace around operators, etc. **Note**: this rule should be ignored at this time. After the code is cleaned up this rule will become mandatory.
All names in code should be `small_snake_case`. No Hungarian notation is used.
Classes and structs names should be followed by `_t`.
1. All names in code should be `small_snake_case`. No Hungarian notation is used. Classes and structs names should be followed by `_t`.
[dox]: http://www.stack.nl/~dimitri/doxygen/ "Doxygen homepage"
1. Always attach braces to the surrounding context.
1. Indent with spaces, not tabs and use four spaces per indent.
1. Comments should always use the C++ style; i.e., each line of the comment should begin with a `//` and should be limited to 100 characters. Comments that do not begin a line should be separated from the previous text by two spaces.
## Testing
The source code for fish includes a large collection of tests. If you are making any changes to fish, running these tests is highly recommended to make sure the behaviour remains consistent.
You are also strongly encouraged to add tests when changing the functionality of fish. Especially if you are fixing a bug to help ensure there are no regressions in the future (i.e., we don't reintroduce the bug).
### Local testing
The tests can be run on your local computer on all operating systems.
Running the tests is only supported from the autotools build and not xcodebuild. On OS X, you will need to install autoconf &mdash; we suggest using [Homebrew](http://brew.sh/) to install these tools.
autoconf
./configure
make test [gmake on BSD]
### Travis CI Build and Test
The Travis Continuous Integration services can be used to test your changes using multiple configurations. This is the same service that the fish shell project uses to ensure new changes haven't broken anything. Thus it is a really good idea that you leverage Travis CI before making a pull-request to avoid embarrasment at breaking the build.
You will need to [fork the fish-shell repository on GitHub](https://help.github.com/articles/fork-a-repo/). Then setup Travis to test your changes before you make a pull-request:
1. [Sign in to Travis CI](https://travis-ci.org/auth) with your GitHub account, accepting the GitHub access permissions confirmation.
1. Once you're signed in, and your repositories are synchronised, go to your [profile page](https://travis-ci.org/profile) and enable the fish-shell repository.
1. Push your changes to GitHub.
You'll receive an email when the tests are complete telling you whether or not any tests failed.
You'll find the configuration used to control Travis in the `.travis.yml` file.
## Installing the Required Tools
### Installing the Linting Tools
To install the lint checkers on Mac OS X using HomeBrew:
```
brew tap oclint/formulae
brew install oclint
brew install cppcheck
```
To install the lint checkers on Linux distros that use Apt:
```
sudo apt-get install clang
sudo apt-get install oclint
sudo apt-get install cppcheck
```
### Installing the Reformatting Tools
To install the reformatting tool on Mac OS X using HomeBrew:
```
brew install clang-format
```
To install the reformatting tool on Linux distros that use Apt:
```
apt-cache search clang-format
```
That will list the versions available. Pick the newest one available (3.6 for Ubuntu 14.04 as I write this) and install it:
```
sudo apt-get install clang-format-3.6
sudo ln -s /usr/bin/clang-format-3.6 /usr/bin/clang-format
```

19
COPYING Normal file
View File

@@ -0,0 +1,19 @@
Fish is a smart and user-friendly command line shell.
Copyright (C) 2005-2009 Axel Liljencrantz
fish is free software.
Most of fish is licensed under the GNU General Public License version 2, and
you can redistribute it and/or modify it under the terms of the GNU GPL as
published by the Free Software Foundation.
fish also includes software licensed under the GNU Lesser General Public
License version 2, the OpenBSD license and the ISC license.
Full licensing information is contained in doc_src/license.hdr.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.

19
Dockerfile Normal file
View File

@@ -0,0 +1,19 @@
FROM centos:latest
# Build dependency
RUN yum update -y &&\
yum install -y autoconf automake bc clang gcc-c++ make ncurses-devel &&\
yum clean all
# Test dependency
RUN yum install -y expect vim-common
ADD . /src
WORKDIR /src
# Build fish
RUN autoreconf &&\
./configure &&\
make &&\
make install

2408
Doxyfile

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,27 +1,33 @@
[fish](http://fishshell.com/) - the friendly interactive shell
[fish](http://fishshell.com/) - the friendly interactive shell [![Build Status](https://travis-ci.org/fish-shell/fish-shell.svg?branch=master)](https://travis-ci.org/fish-shell/fish-shell)
================================================
fish is a smart and user-friendly command line shell for OS X, Linux, and the rest of the family. fish includes features like syntax highlighting, autosuggest-as-you-type, and fancy tab completions that just work, with no configuration required.
For more on fish's design philosophy, see the [design document](http://fishshell.com/docs/2.0/design.html).
For more on fish's design philosophy, see the [design document](http://fishshell.com/docs/current/design.html).
## Quick Start
fish generally works like other shells, like bash or zsh. A few important differences can be found at <http://fishshell.com/tutorial.html> by searching for magic phrase 'unlike other shells'.
fish generally works like other shells, like bash or zsh. A few important differences can be found at <http://fishshell.com/docs/current/tutorial.html> by searching for the magic phrase "unlike other shells".
Detailed user documentation is available by running `help` within fish, and also at <http://fishshell.com/docs/2.0/index.html>
Detailed user documentation is available by running `help` within fish, and also at <http://fishshell.com/docs/current/index.html>
## Building
fish is written in a sane subset of C++98, with a few components from C++TR1. It builds successfully with g++ 4.2 or later, and with clang. It also will build as C++11.
fish can be built using autotools or Xcode. autoconf 2.60 or later is required.
fish can be built using autotools or Xcode. autoconf 2.60 or later is required to build from git versions, but is not required for releases.
fish depends on a curses implementation, such as ncurses. The headers and libraries are required for building.
fish requires PCRE2 due to the regular expression support contained in the `string` builtin. A copy is included with the source code, and will be used automatically if it does not already exist on your system.
fish requires gettext for translation support.
Building the documentation requires Doxygen 1.8.7 or newer.
### Autotools Build
autoconf
autoconf [if building from Git]
./configure
make [gmake on BSD]
sudo make install
@@ -42,12 +48,26 @@ If fish reports that it could not find curses, try installing a curses developme
On Debian or Ubuntu you want:
sudo apt-get install libncurses5-dev
sudo apt-get install build-essential ncurses-dev libncurses5-dev gettext autoconf
on RedHat, CentOS, or Amazon EC2:
On RedHat, CentOS, or Amazon EC2:
sudo yum install ncurses-devel
## Runtime Dependencies
fish requires a curses implementation, such as ncurses, to run.
fish requires PCRE2 due to the regular expression support contained in the `string` builtin. A bundled version will be compiled in automatically at build time if required.
fish requires a number of utilities to operate, which should be present on any Unix, GNU/Linux or OS X system. These include (but are not limited to) hostname, grep, awk, sed, which, and getopt. fish also requires the bc program.
Translation support requires the gettext program.
Some optional features of fish, such as the manual page completion parser and the web configuration tool, require Python.
In order to generate completions from man pages compressed with either lzma or xz, you may need to install an extra Python package. Python versions prior to 2.6 are not supported. For Python versions 2.6 to 3.2 you need to install the module `backports.lzma`. How to install it depends on your system and how you installed Python. Most Linux distributions should include it as a package named `backports-lzma` (or similar). From version 3.3 onwards, Python already includes the required module.
## Packages for Linux
Instructions on how to find builds for several Linux distros are at <https://github.com/fish-shell/fish-shell/wiki/Nightly-builds>
@@ -58,7 +78,11 @@ If you wish to use fish as your default shell, use the following command:
chsh -s /usr/local/bin/fish
chsh will prompt you for your password, and change your default shell.
chsh will prompt you for your password, and change your default shell. Substitute "/usr/local/bin/fish" with whatever path to fish is in your /etc/shells file.
Use the following command if you didn't already add your fish path to /etc/shells.
echo /usr/local/bin/fish | sudo tee -a /etc/shells
To switch your default shell back, you can run:
@@ -66,14 +90,12 @@ To switch your default shell back, you can run:
Substitute /bin/bash with /bin/tcsh or /bin/zsh as appropriate.
## Optional Dependencies
## Contributing Changes to the Code
In order to generate completions from man pages compressed with either lzma or xz, you may need to install an extra Python package.
Python versions prior to 2.6 are not supported. For Python versions 2.6 to 3.2 you need to install the module `backports.lzma`. How to install it depends on your system and how you installed Python. Most Linux distributions should include it as a package named `backports-lzma` (or similar). From version 3.3 onwards, Python already includes the required module.
See the [Guide for Developers](CONTRIBUTING.md).
## Contact Us
Questions, comments, rants and raves can be posted to the official fish mailing list at <https://lists.sourceforge.net/lists/listinfo/fish-users> or join us on our IRC channel [#fish at irc.oftc.net](https://webchat.oftc.net/?channels=fish).
Questions, comments, rants and raves can be posted to the official fish mailing list at <https://lists.sourceforge.net/lists/listinfo/fish-users> or join us on our [gitter.im channel](https://gitter.im/fish-shell/fish-shell) or IRC channel [#fish at irc.oftc.net](https://webchat.oftc.net/?channels=fish). Or use the [fish tag on Stackoverflow](https://stackoverflow.com/questions/tagged/fish).
Found a bug? Have an awesome idea? Please open an issue on this github page.

View File

@@ -37,10 +37,12 @@ resolve_path()
# Expand relative paths
DOXYFILE=`resolve_path "$DOXYFILE"`
INPUTDIR=`resolve_path "$INPUTDIR"`
INPUTFILTER=`resolve_path "$INPUT_FILTER"`
OUTPUTDIR=`resolve_path "$OUTPUTDIR"`
echo " doxygen file: $DOXYFILE"
echo " input directory: $INPUTDIR"
echo " input filter: $INPUTFILTER"
echo " output directory: $OUTPUTDIR"
echo " skipping: $CONDEMNED_PAGES"
@@ -66,6 +68,12 @@ if test -z "$DOXYGENPATH"; then
exit 0
fi
# Check we have the lexicon filter
if test -z "$INPUT_FILTER"; then
echo >&2 "Lexicon filter is not available. Continuing without."
INPUTFILTER=''
fi
# Determine where our output should go
if ! mkdir -p "${OUTPUTDIR}" ; then
echo "Could not create output directory '${OUTPUTDIR}'"
@@ -87,6 +95,7 @@ done
# This prevents doxygen from generating "documentation" for intermediate directories
DOXYPARAMS=$(cat <<EOF
PROJECT_NUMBER=$PROJECT_NUMBER
INPUT_FILTER=$INPUTFILTER
INPUT=.
OUTPUT_DIRECTORY=$OUTPUTDIR
QUIET=YES
@@ -100,7 +109,7 @@ find "${OUTPUTDIR}" -name "*.1" -delete
# Run doxygen
cd "$TMPLOC"
(cat "${DOXYFILE}" ; echo "$DOXYPARAMS";) | "$DOXYGENPATH" -
(cat "${DOXYFILE}" ; echo "$DOXYPARAMS";) | "$DOXYGENPATH" -
# Remember errors
RESULT=$?
@@ -110,15 +119,16 @@ if test "$RESULT" = 0 ; then
# Postprocess the files
for i in "$INPUTDIR"/*.txt; do
# It would be nice to use -i here for edit in place, but that is not portable
# It would be nice to use -i here for edit in place, but that is not portable
CMD_NAME=`basename "$i" .txt`;
sed -e "s/\(.\)\\.SH/\1/" -e "s/$CMD_NAME *\\\\- *\"\(.*\)\"/\1/" "${CMD_NAME}.1" > "${CMD_NAME}.1.tmp"
sed < ${CMD_NAME}.1 > ${CMD_NAME}.1.tmp \
-e "/.SH \"$CMD_NAME/d" \
-e "s/^$CMD_NAME * \\\- \([^ ]*\) /\\\fB\1\\\fP -/"
mv "${CMD_NAME}.1.tmp" "${CMD_NAME}.1"
done
# Erase condemned pages
rm -f $CONDEMNED_PAGES
fi
# Destroy TMPLOC

3
build_tools/cppcheck.sh Executable file
View File

@@ -0,0 +1,3 @@
#!/usr/local/bin/fish
cppcheck --enable=all --std=posix --quiet .

View File

@@ -5,17 +5,14 @@
# Modified for fish by David Adam <zanchey@ucc.gu.uwa.edu.au>
FBVF=FISH-BUILD-VERSION-FILE
DEF_VER=2.0.GIT
DEF_VER=unknown
# First see if there is a version file (included in release tarballs),
# then try git-describe, then default.
if test -f version
then
VN=$(cat version) || VN="$DEF_VER"
elif test -d .git -o -f .git && type git >/dev/null
then
VN=$(git describe --tags --dirty 2>/dev/null)
else
elif ! VN=$(git describe --always --dirty 2>/dev/null); then
VN="$DEF_VER"
fi

4
build_tools/iwyu.sh Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/sh
# Reminder of how to run Include What You Use
make iwyu

100
build_tools/lint.fish Executable file
View File

@@ -0,0 +1,100 @@
#!/usr/bin/env fish
#
# This is meant to be run by "make lint" or "make lint-all". It is not meant to
# be run directly from a shell prompt.
#
set cppchecks warning,performance,portability,information,missingInclude
set cppcheck_args
set c_files
set all no
set -gx CXX $argv[1]
set -e argv[1]
if test "$argv[1]" = "--all"
set all yes
set cppchecks "$cppchecks,unusedFunction"
set -e argv[1]
end
# We only want -D and -I options to be passed thru to cppcheck.
for arg in $argv
if string match -q -- '-D*' $arg
set cppcheck_args $cppcheck_args $arg
else if string match -q -- '-I*' $arg
set cppcheck_args $cppcheck_args $arg
end
end
if test (uname -m) = "x86_64"
set cppcheck_args -D__x86_64__ -D__LP64__ $cppcheck_args
end
if test $all = yes
set c_files src/*.cpp
else
# We haven't been asked to lint all the source. If there are uncommitted
# changes lint those, else lint the files in the most recent commit.
set pending (git status --porcelain --short --untracked-files=all | sed -e 's/^ *//')
if set -q pending[1]
# There are pending changes so lint those files.
for arg in $pending
set files $files (string split -m 1 ' ' $arg)[2]
end
else
# No pending changes so lint the files in the most recent commit.
set files (git show --word-diff=porcelain --name-only --pretty=oneline head)[2..-1]
end
# Extract just the C/C++ files.
set c_files (string match -r '.*\.c(?:pp)?$' -- $files)
end
# We now have a list of files to check so run the linters.
if set -q c_files[1]
if type -q cppcheck
echo
echo ========================================
echo Running cppcheck
echo ========================================
# The stderr to stdout redirection is because cppcheck, incorrectly
# IMHO, writes its diagnostic messages to stderr. Anyone running
# this who wants to capture its output will expect those messages to be
# written to stdout.
cppcheck -q --verbose --std=posix --std=c11 --language=c++ --template "[{file}:{line}]: {severity} ({id}): {message}" --suppress=missingIncludeSystem --inline-suppr --enable=$cppchecks $cppcheck_args $c_files 2>& 1
end
if type -q oclint
echo
echo ========================================
echo Running oclint
echo ========================================
# The stderr to stdout redirection is because oclint, incorrectly
# writes its final summary counts of the errors detected to stderr.
# Anyone running this who wants to capture its output will expect those
# messages to be written to stdout.
if test (uname -s) = "Darwin"
if not test -f compile_commands.json
xcodebuild > xcodebuild.log
oclint-xcodebuild xcodebuild.log > /dev/null
end
if test $all = yes
oclint-json-compilation-database -e '/pcre2-10.21/' -- -enable-global-analysis 2>& 1
else
set i_files
for f in $c_files
set i_files $i_files -i $f
end
echo oclint-json-compilation-database -e '/pcre2-10.21/' $i_files
oclint-json-compilation-database -e '/pcre2-10.21/' $i_files 2>& 1
end
else
# Presumably we're on Linux or other platform not requiring special
# handling for oclint to work.
oclint $c_files -- $argv 2>& 1
end
end
else
echo
echo 'WARNING: No C/C++ files to check'
echo
end

View File

@@ -20,7 +20,7 @@ wd="$PWD"
prefix="fish"
# Get the version from git-describe
VERSION=`git describe --tags --dirty 2>/dev/null`
VERSION=`git describe --dirty 2>/dev/null`
prefix="$prefix-$VERSION"
# The path where we will output the tar file
@@ -30,14 +30,14 @@ path=~/fish_built/$prefix.tar
rm -f "$path" "$path".gz
# git starts the archive
git archive --format=tar --prefix="$prefix"/ master > "$path"
git archive --format=tar --prefix="$prefix"/ HEAD > "$path"
# tarball out the documentation, generate a configure script and version file
# Don't use autoreconf since it invokes commands that may not be installed, like aclocal
# Don't run autoheader since configure.ac runs it. autoconf is enough.
autoconf
./configure --with-doxygen
make user_doc share/man
make doc share/man
echo $VERSION > version
cd /tmp
rm -f "$prefix"

90
build_tools/style.fish Executable file
View File

@@ -0,0 +1,90 @@
#!/usr/bin/env fish
#
# This is meant to be run by "make style" or "make style-all". It is not meant to
# be run directly from a shell prompt although it can be.
#
# This runs C++ files and fish scripts (*.fish) through their respective code
# formatting programs.
#
set c_files
set f_files
set all no
if test "$argv[1]" = "--all"
set all yes
set -e argv[1]
end
if set -q argv[1]
echo "Unexpected arguments: '$argv'"
exit 1
end
if test $all = yes
set c_files src/*.h src/*.cpp
set f_files ***.fish
else
# We haven't been asked to reformat all the source. If there are uncommitted
# changes reformat those, else reformat the files in the most recent commit.
set pending (git status --porcelain --short --untracked-files=all | sed -e 's/^ *//')
if count $pending > /dev/null
# There are pending changes so lint those files.
for arg in $pending
set files $files (string split -m 1 ' ' $arg)[2]
end
else
# No pending changes so lint the files in the most recent commit.
set files (git show --name-only --pretty=oneline head | tail --lines=+2)
end
# Extract just the C/C++ files.
set c_files (string match -r '^.*\.(?:c|cpp|h)$' -- $files)
# Extract just the fish files.
set f_files (string match -r '^.*\.fish$' -- $files)
end
# Run the C++ reformatter if we have any C++ files.
if set -q c_files[1]
if type -q clang-format
echo
echo ========================================
echo Running clang-format
echo ========================================
for file in $c_files
clang-format $file > $file.new
if cmp --quiet $file $file.new
echo $file was correctly formatted
rm $file.new
else
echo $file was NOT correctly formatted
mv $file.new $file
end
end
else
echo
echo 'WARNING: Cannot find clang-format command'
echo
end
end
# Run the fish reformatter if we have any fish files.
if set -q f_files[1]
if not type -q fish_indent
make fish_indent
set PATH . $PATH
end
echo
echo ========================================
echo Running fish_indent
echo ========================================
for file in $f_files
fish_indent < $file > $file.new
if cmp --quiet $file $file.new
echo $file was correctly formatted
rm $file.new
else
echo $file was NOT correctly formatted
mv $file.new $file
end
end
end

View File

@@ -0,0 +1,17 @@
#!/bin/bash
# Expects to be called from Xcode (Run Script build phase),
# write version number C preprocessor macro to header file.
tmp="$SCRIPT_OUTPUT_FILE_1"
ver="$SCRIPT_OUTPUT_FILE_0"
./build_tools/git_version_gen.sh
cat FISH-BUILD-VERSION-FILE | awk '{printf("#define %s \"%s\"\n",$1,$3)}' > "$tmp"
cmp --quiet "$tmp" "$ver"
if [ $? -ne 0 ]; then
/bin/mv "$tmp" "$ver"
else
/bin/rm "$tmp"
fi

376
config.guess vendored
View File

@@ -1,14 +1,12 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
# 2011, 2012 Free Software Foundation, Inc.
# Copyright 1992-2015 Free Software Foundation, Inc.
timestamp='2012-02-10'
timestamp='2015-03-04'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
@@ -22,19 +20,17 @@ timestamp='2012-02-10'
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Per Bothner. Please send patches (context
# diff format) to <config-patches@gnu.org> and include a ChangeLog
# entry.
# the same distribution terms that you use for the rest of that
# program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
#
# This script attempts to guess a canonical system name similar to
# config.sub. If it succeeds, it prints the system name on stdout, and
# exits with 0. Otherwise, it exits with 1.
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
#
# Please send patches to <config-patches@gnu.org>.
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -54,9 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Copyright 1992-2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -138,6 +132,27 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
case "${UNAME_SYSTEM}" in
Linux|GNU|GNU/*)
# If the system lacks a compiler, then just pick glibc.
# We could probably try harder.
LIBC=gnu
eval $set_cc_for_build
cat <<-EOF > $dummy.c
#include <features.h>
#if defined(__UCLIBC__)
LIBC=uclibc
#elif defined(__dietlibc__)
LIBC=dietlibc
#else
LIBC=gnu
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
;;
esac
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
@@ -153,20 +168,27 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# Note: NetBSD doesn't particularly care about the vendor
# portion of the name. We always set it to "unknown".
sysctl="sysctl -n hw.machine_arch"
UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
/usr/sbin/$sysctl 2>/dev/null || echo unknown)`
UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
/sbin/$sysctl 2>/dev/null || \
/usr/sbin/$sysctl 2>/dev/null || \
echo unknown)`
case "${UNAME_MACHINE_ARCH}" in
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;;
earmv*)
arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
machine=${arch}${endian}-unknown
;;
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
esac
# The Operating System including object format, if it has switched
# to ELF recently, or will in the future.
case "${UNAME_MACHINE_ARCH}" in
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__
@@ -182,6 +204,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
os=netbsd
;;
esac
# Determine ABI tags.
case "${UNAME_MACHINE_ARCH}" in
earm*)
expr='s/^earmv[0-9]/-eabi/;s/eb$//'
abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
;;
esac
# The OS release
# Debian GNU/NetBSD machines have a different userland, and
# thus, need a distinct triplet. However, they do not need
@@ -198,7 +227,11 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
echo "${machine}-${os}${release}${abi}"
exit ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
@@ -302,7 +335,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit ;;
arm:riscos:*:*|arm:RISCOS:*:*)
arm*:riscos:*:*|arm*:RISCOS:*:*)
echo arm-unknown-riscos
exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
@@ -560,8 +593,9 @@ EOF
else
IBM_ARCH=powerpc
fi
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
if [ -x /usr/bin/lslpp ] ; then
IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
else
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
@@ -801,10 +835,13 @@ EOF
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
*:MINGW64*:*)
echo ${UNAME_MACHINE}-pc-mingw64
exit ;;
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
i*:MSYS*:*)
*:MSYS*:*)
echo ${UNAME_MACHINE}-pc-msys
exit ;;
i*:windows32*:*)
@@ -852,21 +889,21 @@ EOF
exit ;;
*:GNU:*:*)
# the GNU system
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
aarch64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -879,59 +916,57 @@ EOF
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
arc:Linux:*:* | arceb:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
arm*:Linux:*:*)
eval $set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
echo ${UNAME_MACHINE}-unknown-linux-gnueabi
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
else
echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
fi
fi
exit ;;
avr32*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
cris:Linux:*:*)
echo ${UNAME_MACHINE}-axis-linux-gnu
echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
crisv32:Linux:*:*)
echo ${UNAME_MACHINE}-axis-linux-gnu
echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
e2k:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
frv:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
hexagon:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:Linux:*:*)
LIBC=gnu
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#ifdef __dietlibc__
LIBC=dietlibc
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
echo ${UNAME_MACHINE}-pc-linux-${LIBC}
exit ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m32r*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
eval $set_cc_for_build
@@ -950,54 +985,63 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
;;
or32:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
openrisc*:Linux:*:*)
echo or1k-unknown-linux-${LIBC}
exit ;;
or32:Linux:*:* | or1k*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
padre:Linux:*:*)
echo sparc-unknown-linux-gnu
echo sparc-unknown-linux-${LIBC}
exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
echo hppa64-unknown-linux-gnu
echo hppa64-unknown-linux-${LIBC}
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
PA7*) echo hppa1.1-unknown-linux-gnu ;;
PA8*) echo hppa2.0-unknown-linux-gnu ;;
*) echo hppa-unknown-linux-gnu ;;
PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
*) echo hppa-unknown-linux-${LIBC} ;;
esac
exit ;;
ppc64:Linux:*:*)
echo powerpc64-unknown-linux-gnu
echo powerpc64-unknown-linux-${LIBC}
exit ;;
ppc:Linux:*:*)
echo powerpc-unknown-linux-gnu
echo powerpc-unknown-linux-${LIBC}
exit ;;
ppc64le:Linux:*:*)
echo powerpc64le-unknown-linux-${LIBC}
exit ;;
ppcle:Linux:*:*)
echo powerpcle-unknown-linux-${LIBC}
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux
echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
exit ;;
sh64*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sh*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
tile*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
vax:Linux:*:*)
echo ${UNAME_MACHINE}-dec-linux-gnu
echo ${UNAME_MACHINE}-dec-linux-${LIBC}
exit ;;
x86_64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
xtensa*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1201,6 +1245,9 @@ EOF
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
echo i586-pc-haiku
exit ;;
x86_64:Haiku:*:*)
echo x86_64-unknown-haiku
exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;
@@ -1227,19 +1274,31 @@ EOF
exit ;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
case $UNAME_PROCESSOR in
i386)
eval $set_cc_for_build
if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
UNAME_PROCESSOR="x86_64"
fi
fi ;;
unknown) UNAME_PROCESSOR=powerpc ;;
esac
eval $set_cc_for_build
if test "$UNAME_PROCESSOR" = unknown ; then
UNAME_PROCESSOR=powerpc
fi
if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
case $UNAME_PROCESSOR in
i386) UNAME_PROCESSOR=x86_64 ;;
powerpc) UNAME_PROCESSOR=powerpc64 ;;
esac
fi
fi
elif test "$UNAME_PROCESSOR" = i386 ; then
# Avoid executing cc on OS X 10.9, as it ships with a stub
# that puts up a graphical alert prompting to install
# developer tools. Any system running Mac OS X 10.7 or
# later (Darwin 11 and later) is required to have a 64-bit
# processor. This is not true of the ARM version of Darwin
# that Apple uses in portable devices.
UNAME_PROCESSOR=x86_64
fi
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
@@ -1256,7 +1315,7 @@ EOF
NEO-?:NONSTOP_KERNEL:*:*)
echo neo-tandem-nsk${UNAME_RELEASE}
exit ;;
NSE-?:NONSTOP_KERNEL:*:*)
NSE-*:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
NSR-?:NONSTOP_KERNEL:*:*)
@@ -1330,157 +1389,6 @@ EOF
exit ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
eval $set_cc_for_build
cat >$dummy.c <<EOF
#ifdef _SEQUENT_
# include <sys/types.h>
# include <sys/utsname.h>
#endif
main ()
{
#if defined (sony)
#if defined (MIPSEB)
/* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
I don't know.... */
printf ("mips-sony-bsd\n"); exit (0);
#else
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
"4"
#else
""
#endif
); exit (0);
#endif
#endif
#if defined (__arm) && defined (__acorn) && defined (__unix)
printf ("arm-acorn-riscix\n"); exit (0);
#endif
#if defined (hp300) && !defined (hpux)
printf ("m68k-hp-bsd\n"); exit (0);
#endif
#if defined (NeXT)
#if !defined (__ARCHITECTURE__)
#define __ARCHITECTURE__ "m68k"
#endif
int version;
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
if (version < 4)
printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
else
printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
exit (0);
#endif
#if defined (MULTIMAX) || defined (n16)
#if defined (UMAXV)
printf ("ns32k-encore-sysv\n"); exit (0);
#else
#if defined (CMU)
printf ("ns32k-encore-mach\n"); exit (0);
#else
printf ("ns32k-encore-bsd\n"); exit (0);
#endif
#endif
#endif
#if defined (__386BSD__)
printf ("i386-pc-bsd\n"); exit (0);
#endif
#if defined (sequent)
#if defined (i386)
printf ("i386-sequent-dynix\n"); exit (0);
#endif
#if defined (ns32000)
printf ("ns32k-sequent-dynix\n"); exit (0);
#endif
#endif
#if defined (_SEQUENT_)
struct utsname un;
uname(&un);
if (strncmp(un.version, "V2", 2) == 0) {
printf ("i386-sequent-ptx2\n"); exit (0);
}
if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
printf ("i386-sequent-ptx1\n"); exit (0);
}
printf ("i386-sequent-ptx\n"); exit (0);
#endif
#if defined (vax)
# if !defined (ultrix)
# include <sys/param.h>
# if defined (BSD)
# if BSD == 43
printf ("vax-dec-bsd4.3\n"); exit (0);
# else
# if BSD == 199006
printf ("vax-dec-bsd4.3reno\n"); exit (0);
# else
printf ("vax-dec-bsd\n"); exit (0);
# endif
# endif
# else
printf ("vax-dec-bsd\n"); exit (0);
# endif
# else
printf ("vax-dec-ultrix\n"); exit (0);
# endif
#endif
#if defined (alliant) && defined (i860)
printf ("i860-alliant-bsd\n"); exit (0);
#endif
exit (1);
}
EOF
$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
{ echo "$SYSTEM_NAME"; exit; }
# Apollos put the system type in the environment.
test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
# Convex versions that predate uname can use getsysinfo(1)
if [ -x /usr/convex/getsysinfo ]
then
case `getsysinfo -f cpu_type` in
c1*)
echo c1-convex-bsd
exit ;;
c2*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
exit ;;
c34*)
echo c34-convex-bsd
exit ;;
c38*)
echo c38-convex-bsd
exit ;;
c4*)
echo c4-convex-bsd
exit ;;
esac
fi
cat >&2 <<EOF
$0: unable to guess system type

134
config.sub vendored
View File

@@ -1,24 +1,18 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
# 2011, 2012 Free Software Foundation, Inc.
# Copyright 1992-2015 Free Software Foundation, Inc.
timestamp='2012-04-18'
timestamp='2015-03-08'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
# can handle that machine. It does not imply ALL GNU software can.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
@@ -26,11 +20,12 @@ timestamp='2012-04-18'
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# the same distribution terms that you use for the rest of that
# program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
# Please send patches to <config-patches@gnu.org>. Submit a context
# diff and a properly formatted GNU ChangeLog entry.
# Please send patches to <config-patches@gnu.org>.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
@@ -73,9 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Copyright 1992-2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -123,8 +116,8 @@ esac
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | \
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
@@ -156,7 +149,7 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-apple | -axis | -knuth | -cray | -microblaze)
-apple | -axis | -knuth | -cray | -microblaze*)
os=
basic_machine=$1
;;
@@ -259,21 +252,24 @@ case $basic_machine in
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
| be32 | be64 \
| arc | arceb \
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
| avr | avr32 \
| be32 | be64 \
| bfin \
| c4x | clipper \
| c4x | c8051 | clipper \
| d10v | d30v | dlx | dsp16xx \
| epiphany \
| fido | fr30 | frv \
| e2k | epiphany \
| fido | fr30 | frv | ft32 \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
| k1om \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
| maxq | mb | microblaze | mcore | mep | metag \
| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -287,23 +283,26 @@ case $basic_machine in
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
| mipsisa32r6 | mipsisa32r6el \
| mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \
| mipsisa64r6 | mipsisa64r6el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
| mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
| moxie \
| mt \
| msp430 \
| nds32 | nds32le | nds32be \
| nios | nios2 \
| nios | nios2 | nios2eb | nios2el \
| ns16k | ns32k \
| open8 \
| or32 \
| open8 | or1k | or1knd | or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
| riscv32 | riscv64 \
| rl78 | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
@@ -314,6 +313,7 @@ case $basic_machine in
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| ubicom32 \
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| visium \
| we32k \
| x86 | xc16x | xstormy16 | xtensa \
| z8k | z80)
@@ -328,7 +328,10 @@ case $basic_machine in
c6x)
basic_machine=tic6x-unknown
;;
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
leon|leon[3-9])
basic_machine=sparc-$basic_machine
;;
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
@@ -370,26 +373,28 @@ case $basic_machine in
| aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
| be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
| clipper-* | craynv-* | cydra-* \
| c8051-* | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| e2k-* | elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
| k1om-* \
| le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
| microblaze-* | microblazeel-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
@@ -403,18 +408,22 @@ case $basic_machine in
| mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \
| mipsisa32r6-* | mipsisa32r6el-* \
| mipsisa64-* | mipsisa64el-* \
| mipsisa64r2-* | mipsisa64r2el-* \
| mipsisa64r6-* | mipsisa64r6el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
| mipsr5900-* | mipsr5900el-* \
| mipstx39-* | mipstx39el-* \
| mmix-* \
| mt-* \
| msp430-* \
| nds32-* | nds32le-* | nds32be-* \
| nios-* | nios2-* \
| nios-* | nios2-* | nios2eb-* | nios2el-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| open8-* \
| or1k*-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
@@ -432,6 +441,7 @@ case $basic_machine in
| ubicom32-* \
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
| vax-* \
| visium-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \
@@ -508,6 +518,9 @@ case $basic_machine in
basic_machine=i386-pc
os=-aros
;;
asmjs)
basic_machine=asmjs-unknown
;;
aux)
basic_machine=m68k-apple
os=-aux
@@ -769,6 +782,9 @@ case $basic_machine in
basic_machine=m68k-isi
os=-sysv
;;
leon-*|leon[3-9]-*)
basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
;;
m68knommu)
basic_machine=m68k-unknown
os=-linux
@@ -788,11 +804,15 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
microblaze)
microblaze*)
basic_machine=microblaze-xilinx
;;
mingw64)
basic_machine=x86_64-pc
os=-mingw64
;;
mingw32)
basic_machine=i386-pc
basic_machine=i686-pc
os=-mingw32
;;
mingw32ce)
@@ -820,6 +840,10 @@ case $basic_machine in
basic_machine=powerpc-unknown
os=-morphos
;;
moxiebox)
basic_machine=moxie-unknown
os=-moxiebox
;;
msdos)
basic_machine=i386-pc
os=-msdos
@@ -828,7 +852,7 @@ case $basic_machine in
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
msys)
basic_machine=i386-pc
basic_machine=i686-pc
os=-msys
;;
mvs)
@@ -1019,7 +1043,11 @@ case $basic_machine in
basic_machine=i586-unknown
os=-pw32
;;
rdos)
rdos | rdos64)
basic_machine=x86_64-pc
os=-rdos
;;
rdos32)
basic_machine=i386-pc
os=-rdos
;;
@@ -1346,29 +1374,29 @@ case $os in
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
| -sym* | -kopensolaris* \
| -sym* | -kopensolaris* | -plan9* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \
| -aos* | -aros* | -cloudabi* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
| -openbsd* | -solidbsd* \
| -bitrig* | -openbsd* | -solidbsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -linux-android* \
| -linux-newlib* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1492,9 +1520,6 @@ case $os in
-aros*)
os=-aros
;;
-kaos*)
os=-kaos
;;
-zvmoe)
os=-zvmoe
;;
@@ -1543,6 +1568,9 @@ case $basic_machine in
c4x-* | tic4x-*)
os=-coff
;;
c8051-*)
os=-elf
;;
hexagon-*)
os=-elf
;;

View File

@@ -13,26 +13,17 @@ m4_syscmd([build_tools/git_version_gen.sh 2>/dev/null])
AC_PREREQ([2.60])
AC_INIT(fish,
m4_esyscmd([cut -f 3 -d ' ' FISH-BUILD-VERSION-FILE | tr -d '\n']),
fish-users@lists.sf.net)
conf_arg=$@
fish-users@lists.sourceforge.net)
#
# List of output variables produced by this configure script
#
AC_SUBST(docdir)
AC_SUBST(HAVE_GETTEXT)
AC_SUBST(HAVE_DOXYGEN)
AC_SUBST(LDFLAGS_FISH)
AC_SUBST(LIBS_FISH)
AC_SUBST(LIBS_FISH_INDENT)
AC_SUBST(LIBS_FISH_PAGER)
AC_SUBST(LIBS_FISHD)
AC_SUBST(LIBS_MIMEDB)
AC_SUBST(localedir)
AC_SUBST(optbindirs)
AC_SUBST(prefix)
AC_SUBST(WCHAR_T_BITS)
AC_SUBST(EXTRA_PCRE2)
#
@@ -99,49 +90,11 @@ fi
AC_PROG_CXX([g++ c++])
AC_PROG_INSTALL
AC_PROG_SED
AC_LANG(C++)
echo "CXXFLAGS: $CXXFLAGS"
#
# Detect directories which may contain additional headers, libraries
# and commands. This needs to be done early - before Autoconf starts
# to mess with CXXFLAGS and all the other environemnt variables.
#
# This mostly helps OS X users, since fink usually installs out of
# tree and doesn't update CXXFLAGS.
#
# It also helps FreeBSD which puts libiconv in /usr/local/lib
for i in /usr/pkg /sw /opt /opt/local /usr/local; do
AC_MSG_CHECKING([for $i/include include directory])
if test -d $i/include; then
AC_MSG_RESULT(yes)
CXXFLAGS="$CXXFLAGS -I$i/include/"
else
AC_MSG_RESULT(no)
fi
AC_MSG_CHECKING([for $i/lib library directory])
if test -d $i/lib; then
AC_MSG_RESULT(yes)
LDFLAGS="$LDFLAGS -L$i/lib/"
else
AC_MSG_RESULT(no)
fi
AC_MSG_CHECKING([for $i/bin command directory])
if test -d $i/bin; then
AC_MSG_RESULT(yes)
optbindirs="$optbindirs $i/bin"
else
AC_MSG_RESULT(no)
fi
done
#
# Tell autoconf to create config.h header
#
@@ -154,11 +107,19 @@ AC_CONFIG_HEADERS(config.h)
#
AH_BOTTOM([#if __GNUC__ >= 3
#ifndef __warn_unused
#define __warn_unused __attribute__ ((warn_unused_result))
#endif
#ifndef __sentinel
#define __sentinel __attribute__ ((sentinel))
#endif
#ifndef __packed
#define __packed __attribute__ ((packed))
#endif
#else
#define __warn_unused
#define __sentinel
#define __packed
#endif])
@@ -192,7 +153,7 @@ AS_IF([test x$local_gettext != xno],
# Build/clean the documentation only if Doxygen is available
#
doxygen_minimum=1.5
doxygen_minimum=1.8.7
AC_ARG_WITH(
doxygen,
@@ -246,17 +207,27 @@ CXXFLAGS="$CXXFLAGS -fno-exceptions"
#
# -Wall is there to keep me on my toes
# But signed comparison warnings are way too aggressive
#
CXXFLAGS="$CXXFLAGS -Wall"
CXXFLAGS="$CXXFLAGS -Wall -Wno-sign-compare"
#
# This is needed in order to get the really cool backtraces on Linux
#
if test `uname` != "Darwin"; then
LDFLAGS_FISH="$LDFLAGS_FISH -rdynamic"
fi
AC_MSG_CHECKING([for -rdynamic linker flag])
prev_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -rdynamic"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],
[
AC_MSG_RESULT([yes])
LDFLAGS_FISH="$LDFLAGS_FISH -rdynamic"
], [
AC_MSG_RESULT([no])
LDFLAGS_FISH="$LDFLAGS_FISH"
])
LDFLAGS="$prev_LDFLAGS"
#
@@ -335,35 +306,6 @@ case $target_os in
;;
esac
# Check for Solaris curses tputs having fixed length parameter list.
AC_MSG_CHECKING([if we are using non varargs tparm.])
AC_COMPILE_IFELSE(
[
AC_LANG_PROGRAM(
[
#include <curses.h>
#include <term.h>
],
[
tparm( "" );
]
)
],
[tparm_solaris_kludge=no],
[tparm_solaris_kludge=yes]
)
if test "x$tparm_solaris_kludge" = "xyes"; then
AC_MSG_RESULT(yes)
AC_DEFINE(
[TPARM_SOLARIS_KLUDGE],
[1],
[Define to 1 if tparm accepts a fixed amount of paramters.]
)
else
AC_MSG_RESULT(no)
fi
#
# BSD-specific flags go here
#
@@ -381,40 +323,6 @@ case $target_os in
esac
#
# Set up PREFIX and related preprocessor symbols. Fish needs to know
# where it will be installed. One of the reasons for this is so that
# it can make sure the fish installation directory is in the path
# during startup.
#
if [[ "$prefix" = NONE ]]; then
prefix=/usr/local
fi
#
# Set up the directory where the documentation files should be
# installed
#
AC_ARG_VAR( [docdir], [Documentation directory] )
if test -z $docdir; then
docdir=$datadir/doc/fish
else
docdir=$docdir
fi
#
# Set up locale directory. This is where the .po files will be
# installed.
#
localedir=$datadir/locale
#
# See if Linux procfs is present. This is used to get extra
# information about running processes.
@@ -434,6 +342,9 @@ AC_DEFINE(
[Define to 1 if the wgettext function should be used for translating strings.]
)
# Disable curses macros that conflict with the STL
AC_DEFINE([NCURSES_NOMACROS], [1], [Define to 1 to disable ncurses macros that conflict with the STL])
AC_DEFINE([NOMACROS], [1], [Define to 1 to disable curses macros that conflict with the STL])
#
# Check presense of various libraries. This is done on a per-binary
@@ -445,79 +356,35 @@ AC_DEFINE(
# Check for os dependant libraries for all binaries.
AC_SEARCH_LIBS( connect, socket, , [AC_MSG_ERROR([Cannot find the socket library, needed to build this package.] )] )
AC_SEARCH_LIBS( nanosleep, rt, , [AC_MSG_ERROR([Cannot find the rt library, needed to build this package.] )] )
AC_SEARCH_LIBS( shm_open, rt, , [AC_MSG_ERROR([Cannot find the rt library, needed to build this package.] )] )
AC_SEARCH_LIBS( pthread_create, pthread, , [AC_MSG_ERROR([Cannot find the pthread library, needed to build this package.] )] )
AC_SEARCH_LIBS( setupterm, [ncurses curses], , [AC_MSG_ERROR([Could not find a curses implementation, needed to build fish. If this is Linux, try running 'sudo apt-get install libncurses5-dev' or 'sudo yum install ncurses-devel'])] )
AC_SEARCH_LIBS( setupterm, [ncurses tinfo curses], , [AC_MSG_ERROR([Could not find a curses implementation, needed to build fish. If this is Linux, try running 'sudo apt-get install libncurses5-dev' or 'sudo yum install ncurses-devel'])] )
AC_SEARCH_LIBS( [nan], [m], [AC_DEFINE( [HAVE_NAN], [1], [Define to 1 if you have the nan function])] )
AC_SEARCH_LIBS( [backtrace_symbols_fd], [execinfo] )
if test x$local_gettext != xno; then
AC_SEARCH_LIBS( gettext, intl,,)
fi
LIBS_SHARED=$LIBS
#
# Check for libraries needed by fish.
#
LIBS="$LIBS_SHARED"
# Check for libiconv_open if we can't find iconv_open. Silly OS X does
# weird macro magic for the sole purpose of amusing me.
AC_SEARCH_LIBS( iconv_open, iconv, , [AC_SEARCH_LIBS( libiconv_open, iconv, , [AC_MSG_ERROR([Could not find an iconv implementation, needed to build fish])] )] )
LIBS_FISH=$LIBS
#
# Check for libraries needed by fish_indent.
#
LIBS="$LIBS_SHARED"
LIBS_FISH_INDENT=$LIBS
#
# Check for libraries needed by fish_pager.
#
LIBS="$LIBS_SHARED"
AC_SEARCH_LIBS( iconv_open, iconv, , [AC_SEARCH_LIBS( libiconv_open, iconv, , [AC_MSG_ERROR([Could not find an iconv implementation, needed to build fish])] )] )
LIBS_FISH_PAGER=$LIBS
#
# Check for libraries needed by fishd.
#
LIBS="$LIBS_SHARED"
AC_SEARCH_LIBS( iconv_open, iconv, , [AC_SEARCH_LIBS( libiconv_open, iconv, , [AC_MSG_ERROR([Could not find an iconv implementation, needed to build fish])] )] )
LIBS_FISHD=$LIBS
#
# Check for libraries needed by mimedb.
#
LIBS="$LIBS_SHARED"
LIBS_MIMEDB=$LIBS
#
# Check presense of various header files
#
AC_CHECK_HEADERS([getopt.h termios.h sys/resource.h term.h ncurses/term.h ncurses.h curses.h stropts.h siginfo.h sys/select.h sys/ioctl.h execinfo.h spawn.h sys/sysctl.h])
AC_CHECK_HEADERS([getopt.h termios.h sys/resource.h term.h ncurses/term.h ncurses.h ncurses/curses.h curses.h stropts.h siginfo.h sys/select.h sys/ioctl.h execinfo.h spawn.h sys/sysctl.h])
if test x$local_gettext != xno; then
AC_CHECK_HEADERS([libintl.h])
fi
AC_CHECK_HEADER(
[regex.h],
[
AC_DEFINE(
[HAVE_REGEX_H],
[1],
[Define to 1 if you have the <regex.h> header file.]
)
],
[AC_MSG_ERROR([Could not find the header regex.h, needed to build fish])]
)
#
# Get the size in bits of wchar_t, needed for configuring the pcre2 build
# and for code that #includes pcre2.h
#
AC_CHECK_SIZEOF(wchar_t)
WCHAR_T_BITS=`expr 8 \* $ac_cv_sizeof_wchar_t`
AC_DEFINE_UNQUOTED([WCHAR_T_BITS], [$WCHAR_T_BITS], [The size of wchar_t in bits.])
#
@@ -588,6 +455,10 @@ for i in "" "-D_POSIX_C_SOURCE=200112L" "-D_XOPEN_SOURCE=600 -D_POSIX_C_SOURCE=2
/* As above (under at least Linux and FreeBSD). */
#include <sys/ioctl.h>
#endif
#ifdef HAVE_TERMIOS_H
#include <termios.h>
#endif
],
[
/* Avert high-level optimisation, by making the program's
@@ -634,6 +505,16 @@ if test ! x$local_found_posix_switch = xyes; then
CXXFLAGS="$XCXXFLAGS"
fi
#
# Detect nanoseconds fields in struct stat
#
AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec])
AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec])
#
# Check for D_TYPE in dirent, only on BSD and Linux
#
AC_STRUCT_DIRENT_D_TYPE
#
# Check for presense of various functions used by fish
@@ -641,8 +522,9 @@ fi
AC_CHECK_FUNCS( wcsdup wcsndup wcslen wcscasecmp wcsncasecmp fwprintf )
AC_CHECK_FUNCS( futimes wcwidth wcswidth wcstok fputwc fgetwc )
AC_CHECK_FUNCS( wcstol wcslcat wcslcpy lrand48_r killpg )
AC_CHECK_FUNCS( backtrace backtrace_symbols sysconf getifaddrs )
AC_CHECK_FUNCS( wcstol wcslcat wcslcpy lrand48_r killpg mkostemp )
AC_CHECK_FUNCS( backtrace backtrace_symbols_fd sysconf getifaddrs )
AC_CHECK_FUNCS( futimens clock_gettime )
if test x$local_gettext != xno; then
AC_CHECK_FUNCS( gettext dcgettext )
@@ -733,7 +615,7 @@ AC_LINK_IFELSE(
#
# If we have a fwprintf in libc, test that it actually works. As of
# March 2006, it is broken under Dragonfly BSD.
# March 2006, it is broken under DragonFly BSD.
#
if test "$ac_cv_func_fwprintf" = yes; then
@@ -818,61 +700,189 @@ else
AC_MSG_RESULT(no)
fi
# Check if getopt_long exists and works
AC_MSG_CHECKING([if getopt_long exists and works])
# Check for sys_errlist
AC_MSG_CHECKING([for sys_errlist array])
AC_TRY_LINK(
[
#if HAVE_GETOPT_H
#include <getopt.h>
#endif
#include <stdio.h>
],
[
static struct option
long_options[] =
{
0, 0, 0, 0
}
;
int opt = getopt_long( 0,
0,
0,
long_options,
0 );
const char *p;
p = sys_errlist[sys_nerr];
],
have_working_getopt_long=yes,
have_working_getopt_long=no
have_sys_errlist=yes,
have_sys_errlist=no
)
if test "$have_working_getopt_long" = yes; then
if test "$have_sys_errlist" = yes; then
AC_MSG_RESULT(yes)
AC_DEFINE(
[HAVE_WORKING_GETOPT_LONG],
[HAVE_SYS_ERRLIST],
[1],
[Define to 1 if getopt_long exists and works.]
[Define to 1 if the sys_errlist array is available.]
)
else
AC_MSG_RESULT(no)
fi
# Check if del_curterm is broken - in that case we redefine
# del_curterm as a no-op, to avoid a double-free
# Check for _sys_errs
AC_MSG_CHECKING([for _sys_errs array])
AC_TRY_LINK(
[
#include <string>
],
[
std::string p;
extern const char _sys_errs[];
extern const int _sys_index[];
p = _sys_errs[_sys_index[0]];
],
have__sys__errs=yes,
have__sys__errs=no
)
if test "$have__sys__errs" = yes; then
AC_MSG_RESULT(yes)
AC_DEFINE(
[HAVE__SYS__ERRS],
[1],
[Define to 1 if the _sys_errs array is available.]
)
else
AC_MSG_RESULT(no)
fi
AC_MSG_CHECKING([If del_curterm is broken])
case $target_os in
*bsd*)
AC_MSG_RESULT(yes)
AC_DEFINE(
[HAVE_BROKEN_DEL_CURTERM],
[1],
[del_curterm is broken, redefine it to a no-op to avoid a double-free bug]
# Check for Solaris curses tputs having fixed length parameter list.
AC_MSG_CHECKING([if we are using non varargs tparm.])
AC_COMPILE_IFELSE(
[
AC_LANG_PROGRAM(
[
#if HAVE_NCURSES_H
#include <ncurses.h>
#elif HAVE_NCURSES_CURSES_H
#include <ncurses/curses.h>
#else
#include <curses.h>
#endif
#if HAVE_TERM_H
#include <term.h>
#elif HAVE_NCURSES_TERM_H
#include <ncurses/term.h>
#endif
],
[
tparm( "" );
]
)
;;
*)
AC_MSG_RESULT(no)
;;
esac
],
[tparm_solaris_kludge=no],
[tparm_solaris_kludge=yes]
)
if test "x$tparm_solaris_kludge" = "xyes"; then
AC_MSG_RESULT(yes)
AC_DEFINE(
[TPARM_SOLARIS_KLUDGE],
[1],
[Define to 1 if tparm accepts a fixed amount of paramters.]
)
else
AC_MSG_RESULT(no)
fi
# Tell the world what we know
EXTRA_PCRE2=
AC_ARG_WITH(
included-pcre2,
AS_HELP_STRING(
[--without-included-pcre2],
[build against the system PCRE2 library instead of the bundled version]
),
[included_pcre2=$withval],
[included_pcre2=auto]
)
if test "x$included_pcre2" != "xyes"; then
# test for pcre2-config
# can use either pcre2-config or pkgconfig here but only implement the former for now
AC_CHECK_PROG(PCRE2_CONFIG, pcre2-config, pcre2-config)
if test "x$PCRE2_CONFIG" != "x"; then
dnl AC_MSG_CHECKING([for $WCHAR_T_BITS-bit PCRE2])
XLIBS="$LIBS"
LIBS="$LIBS "`$PCRE2_CONFIG --libs$WCHAR_T_BITS 2>/dev/null`
XCXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS"`$PCRE2_CONFIG --cflags`
# cheat a bit here. the exact library is determined by $WCHAR_T_BITS,
# and so AC_CHECK_LIB won't work (can't use a variable as library name)
# AC_SEARCH_LIBS will use the existing $LIBS flags with no additional library first
AC_SEARCH_LIBS([pcre2_compile_$WCHAR_T_BITS], [],
[ working_pcre2=yes
AC_MSG_NOTICE([using system PCRE2 library])
],
[ # fail case; undo the changes to LIBS/CXXFLAGS
working_pcre2=no
LIBS="$XLIBS"
CXXFLAGS="$XCXXFLAGS"
]
)
fi
if test "x$working_pcre2" != "xyes"; then
# pcre2 size wrong or pcre2-config not found
# is it OK to use the included version?
if test "x$included_pcre2" = "xno"; then
# complain
AC_MSG_ERROR([cannot find system pcre2-config, but --without-included-pcre2 was given.
Make sure pcre2-config is installed and available in PATH.
You may need to install the PCRE2 development library for your system.])
else
# use the internal version
included_pcre2=yes
fi
fi
fi
# Re-test as value may have changed.
if test "x$included_pcre2" = "xyes"; then
# Build configure/Makefile for pcre2
AC_MSG_NOTICE([using included PCRE2 library])
# unfortunately these get added to the global configuration
ac_configure_args="$ac_configure_args --disable-pcre2-8 --enable-pcre2-$WCHAR_T_BITS --disable-shared"
AC_CONFIG_SUBDIRS([pcre2-10.21])
PCRE2_CXXFLAGS='-I$(PCRE2_DIR)/src'
PCRE2_LIBS='-L$(PCRE2_LIBDIR) -lpcre2-$(PCRE2_WIDTH)'
# Make the binary depend on the PCRE2 libraries so they get built
EXTRA_PCRE2='$(PCRE2_LIB)'
CXXFLAGS="$CXXFLAGS $PCRE2_CXXFLAGS"
LIBS="$LIBS $PCRE2_LIBS"
fi
# Allow configurable extra directories.
AC_SUBST(extra_completionsdir)
AC_ARG_WITH([extra-completionsdir],
AS_HELP_STRING([--with-extra-completionsdir=DIR],
[path for extra completions]),
[extra_completionsdir=$withval],
[extra_completionsdir='${datadir}/fish/vendor_completions.d'])
AC_SUBST(extra_functionsdir)
AC_ARG_WITH([extra_functionsdir],
AS_HELP_STRING([--with-extra-functionsdir=DIR],
[path for extra functions]),
[extra_functionsdir=$withval],
[extra_functionsdir='${datadir}/fish/vendor_functions.d'])
AC_SUBST(extra_confdir)
AC_ARG_WITH([extra-confdir],
AS_HELP_STRING([--with-extra-confdir=DIR],
[path for extra conf]),
[extra_confdir=$withval],
[extra_confdir='${datadir}/fish/vendor_conf.d'])
# Tell the world what we know.
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

View File

@@ -1,121 +0,0 @@
#!/usr/bin/env python
# -*- python -*-
# Program to generate fish completion function for wajig.
# It runs 'wajig command' and analyzes the output to build a
# completion file which it writes to stdout.
# To use the result, direct stdout to
# ~/.fish.d/completions/wajig.fish.
# Author Reuben Thomas, from Don Rozenberg's bash_completion.py and
# fish's apt-get.fish.
import os
import re
import pprint
pp = pprint.PrettyPrinter()
def escape_quotes(s):
return re.sub('\'', '\\\'', s)
# Run wajig command
f = os.popen('wajig commands', 'r')
lines = f.readlines()
option_patt = r'^-([a-z]*)\|--([a-z]*) +([^ ].*)'
option_patt_r = re.compile(option_patt)
command_patt = r'^([a-z-]*) +([^ ].*)'
command_patt_r = re.compile(command_patt)
os_str = []
os_str.append('')
ol_str = []
ol_str.append('')
oh_str = []
oh_str.append('')
o_i = 0
c_str = []
c_str.append('')
ch_str = []
ch_str.append('')
c_i = 0
for l in lines:
l = l.strip()
if l == '' or l.find(':') > -1 or l.find('Run') == 0:
continue
if l.find('-') == 0:
mo = option_patt_r.search(l)
if mo == None:
continue
os_str[o_i] = mo.group(1)
os_str.append('')
ol_str[o_i] = mo.group(2)
ol_str.append('')
oh_str[o_i] = escape_quotes(mo.group(3))
oh_str.append('')
o_i += 1
else:
mo = command_patt_r.search(l)
if mo == None:
continue
c_str[c_i] = mo.group(1)
c_str.append('')
ch_str[c_i] = escape_quotes(mo.group(2))
ch_str.append('')
c_i += 1
# For debugging, print the commands and options.
#print
#pp.pprint(c_str)
#print
#pp.pprint(os_str)
#print
#pp.pprint(ol_str)
part1 = '''function __fish_wajig_no_subcommand -d (N_ 'Test if wajig has yet to be given the subcommand')
for i in (commandline -opc)
if contains -- $i'''
part2 = '''
return 1
end
end
return 0
end
function __fish_wajig_use_package -d (N_ 'Test if wajig command should have packages as potential completion')
for i in (commandline -opc)
if contains -- $i contains bug build build-depend changelog dependents describe detail hold install installr installrs installs list list-files news package purge purge-depend readme recursive recommended reconfigure reinstall remove remove-depend repackage show showinstall showremove showupgrade size sizes source suggested unhold upgrade versions whatis
return 0
end
end
return 1
end
complete -c wajig -n '__fish_wajig_use_package' -a '(__fish_print_packages)' -d (N_ 'Package')'''
wajig = part1
#add the commands.
for i in range(0, len(c_str) - 1):
wajig = "%s %s" % (wajig, c_str[i])
#add part2
wajig = "%s%s" % (wajig, part2)
#add the options.
wajig = "%s%s" % (wajig, os_str[0].lstrip())
for i in range(1, len(os_str) - 1):
wajig = "%s\ncomplete -c apt-get -s %s -l %s -d (N_ '%s')" % (wajig, os_str[i], ol_str[i], oh_str[i])
#add the commands.
for i in range(0, len(c_str) - 1):
wajig = "%s\ncomplete -f -n '__fish_wajig_no_subcommand' -c wajig -a '%s' -d(N_ '%s')" % (wajig, c_str[i], ch_str[i])
#print it all
print wajig

1
debian/compat vendored Normal file
View File

@@ -0,0 +1 @@
8

31
debian/control vendored Normal file
View File

@@ -0,0 +1,31 @@
Source: fish
Section: shells
Priority: extra
Maintainer: ridiculous_fish <corydoras@ridiculousfish.com>
Uploaders: David Adam <zanchey@ucc.gu.uwa.edu.au>, Siteshwar Vashisht <siteshwar@gmail.com>
Build-Depends: debhelper (>= 8.0.0), libncurses5-dev, autoconf, autotools-dev, dh-autoreconf, gettext
Standards-Version: 3.9.4
Homepage: http://fishshell.com/
Vcs-Git: git://github.com/fish-shell/fish-shell.git
Vcs-Browser: https://github.com/fish-shell/fish-shell
Package: fish
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, passwd (>= 4.0.3-10), bc, gettext-base, man-db
Recommends: python (>=2.6), xsel (>=1.2.0), xdg-utils
Description: friendly interactive shell
Fish is a command-line shell for modern systems, focusing on user-friendliness,
sensibility and discoverability in interactive use. The syntax is simple, but
not POSIX compliant.
Package: fish-dbg
Architecture: any
Section: debug
Priority: extra
Depends: fish (= ${binary:Version}), ${misc:Depends}
Description: debugging symbols for friendly interactive shell
Fish is a command-line shell for modern systems, focusing on user-friendliness,
sensibility and discoverability in interactive use. The syntax is simple, but
not POSIX compliant.
.
This package contains the debugging symbols for fish.

83
debian/copyright vendored Normal file
View File

@@ -0,0 +1,83 @@
This work was packaged for Debian by David Adam <zanchey@ucc.gu.uwa.edu.au>
on Thu, 14 Jun 2012 20:33:34 +0800, based on work by James Vega
<jamessan@jamessan.com>.
It was downloaded from:
https://github.com/fish-shell/fish-shell
Upstream Authors:
Axel Liljencrantz
ridiculous_fish
Copyright:
Copyright (C) 2005-2008 Axel Liljencrantz
Copyright (C) 2011-2012 ridiculous_fish
License:
Copyright (C) 2005-2008 Axel Liljencrantz
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 as
published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
MA 02110-1301, USA.
On Debian systems, the complete text of the GNU General
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
Fish contains code under the BSD license, namely versions of the
two functions strlcat and strlcpy, modified for use with wide
character strings.
Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
The XSel command, written and copyrighted by Conrad Parker, is
distributed together with, and used by fish. It is released under the MIT
license.
It is Copyright (C) 2001 Conrad Parker <conrad@vergenet.net>
Permission to use, copy, modify, distribute, and sell this software
and its documentation for any purpose is hereby granted without fee,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation. No representations are made about the
suitability of this software for any purpose. It is provided "as is"
without express or implied warranty.
Fish contains code from the glibc library, namely the wcstok function
in fallback.c. This code is licensed under the LGPL.
On Debian systems, the complete text of the GNU Lesser General
Public License can be found in `/usr/share/common-licenses/LGPL'.
The Debian packaging is:
Copyright (C) 2005 James Vega <jamessan@jamessan.com>
Copyright (C) 2012 David Adam <zanchey@ucc.gu.uwa.edu.au>
and is licensed under the GPL version 2, see above.

12
debian/fish.doc-base vendored Normal file
View File

@@ -0,0 +1,12 @@
Document: fish
Title: Debian fish Manual
Author: Axel Liljencrantz <axel@liljencrantz.se>
Abstract: This guide documents fish, a shell
geared towards interactive use.
Section: Shells
Format: HTML
Index: /usr/share/doc/fish/index.html
Files: /usr/share/doc/fish/*.html

2
debian/menu vendored Normal file
View File

@@ -0,0 +1,2 @@
?package(fish):needs="text" section="Applications/Shells"\
title="fish" command="/usr/bin/fish"

47
debian/postinst vendored Normal file
View File

@@ -0,0 +1,47 @@
#!/bin/sh
# postinst script for fish
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <postinst> `abort-remove'
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
add_shell() {
if ! type add-shell > /dev/null 2>&1; then
return
fi
add-shell /usr/bin/fish
}
case "$1" in
configure)
add_shell
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0

37
debian/postrm vendored Normal file
View File

@@ -0,0 +1,37 @@
#!/bin/sh
# postrm script for fish
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postrm> `remove'
# * <postrm> `purge'
# * <old-postrm> `upgrade' <new-version>
# * <new-postrm> `failed-upgrade' <old-version>
# * <new-postrm> `abort-install'
# * <new-postrm> `abort-install' <old-version>
# * <new-postrm> `abort-upgrade' <old-version>
# * <disappearer's-postrm> `disappear' <overwriter>
# <overwriter-version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
;;
*)
echo "postrm called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0

46
debian/prerm vendored Normal file
View File

@@ -0,0 +1,46 @@
#!/bin/sh
# prerm script for fish
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <prerm> `remove'
# * <old-prerm> `upgrade' <new-version>
# * <new-prerm> `failed-upgrade' <old-version>
# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
# * <deconfigured's-prerm> `deconfigure' `in-favour'
# <package-being-installed> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
remove_shell() {
if ! type remove-shell > /dev/null 2>&1; then
return
fi
remove-shell /usr/bin/fish
}
case "$1" in
remove|deconfigure)
remove_shell
;;
upgrade|failed-upgrade)
;;
*)
echo "prerm called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0

25
debian/rules vendored Executable file
View File

@@ -0,0 +1,25 @@
#!/usr/bin/make -f
# -*- makefile -*-
# Uncomment this to turn on verbose mode.
export DH_VERBOSE=1
# dpkg-dev 1.16.1 doesn't export buildflags
# can be removed once on dh compat level 9
DPKG_EXPORT_BUILDFLAGS = 1
-include /usr/share/dpkg/buildflags.mk
%:
dh $@ --with autotools-dev,autoreconf
override_dh_auto_install:
dh_auto_install --destdir=debian/fish
override_dh_installdocs:
dh_installdocs --link-doc=fish
override_dh_strip:
dh_strip --dbg-package=fish-dbg
# Don't run tests; they don't work until fish is installed
override_dh_auto_test:

1
debian/source/format vendored Normal file
View File

@@ -0,0 +1 @@
3.0 (quilt)

264
doc_src/FORMATTING.md Normal file
View File

@@ -0,0 +1,264 @@
# Formatting guide for fish docs
The fish documentation has been updated to support Doxygen 1.8.7+, and while the main benefit of this change is extensive Markdown support, the addition of a fish lexicon and syntax filter, combined with semantic markup rules allows for automatic formatting enhancements across the HTML user_docs, the developer docs and the man pages.
Initially my motivation was to fix a problem with long options ([Issue #1557](https://github.com/fish-shell/fish-shell/issues/1557) on GitHub), but as I worked on fixing the issue I realised there was an opportunity to simplify, reinforce and clarify the current documentation, hopefully making further contribution easier and cleaner, while allowing the documentation examples to presented more clearly with less author effort.
While the documentation is pretty robust to variations in the documentation source, adherence to the following style guide will help keep the already excellent documention in good shape moving forward.
## Line breaks and wrapping
Contrary to the rest of the fish source code, the documentation greatly benefits from the use of long lines and soft wrapping. It allows paragraphs to be treated as complete blocks by Doxygen, means that the semantic filter can see complete lines when deciding on how to apply syntax highlighting, and means that man pages will consistently wrap to the width of the users console in advanced pagers, such as 'most'.
## Doxygen special commands and aliases
While Markdown syntax forms the basis of the documentation content, there are some exceptions that require the use of Doxygen special commands. On the whole, Doxygen commands should be avoided, especially inline word formatting such as \\c as this would allow Doxygen to make unhelpful assumptions, such as converting double dashes (\--) to n-dashes ().
### Structure: \\page, \\section and \\subsection
Use of Doxygen sections markers are important, as these determine what will be eventually output as a web page, man page or included in the developer docs.
Currently the make process for the documentation is quite convoluted, but basically the HTML docs are produced from a single, compiled file, doc.h. This contains a number of \\page markers that produce the various pages used in the documentation. The format of a \\page mark is:
\page universally_unique_page_id Page title
The source files that contain the page markers are currently:
- __index.hdr.in__: Core documentation
- __commands.hdr.in__: Individual commands
- __tutorial.hdr__: Tutorial
- __design.hdr__: Design document
- __faq.hdr__: Frequently Asked Questions
- __license.hdr__: Fish and 3rd party licences
Unless there is a _VERY_ good reason and developer consensus, new pages should never be added.
The rest of the documentation is structured using \\section and \\subsection markers. Most of the source files (listed above) contain their full content, the exception being commands, which are separated out into source text files in the doc_src directory. These files are concatenated into one file, so each one starts with a \\section declaration. The synopsis, description and examples (if present) are declared as \\subsections. The format of these marks is practically identical to the page mark.
\section universally_unique_section_id Section title
\subsection universally_unique_subsection_id Subsection title
Each page, section and subsection id _must_ be unique across the whole of the documentation, otherwise Doxygen will issue a warning.
### Semantic markup: the \\fish .. \\endfish block
While Doxygen has support for \\code..\\endcode blocks with enhanced markup and syntax colouring, it only understands the core Doxygen languages: C, C++, Objective C, Java, PHP, Python, Tcl and Fortran. To enhance Fish's syntax presentation, use the special \\fish..\\endfish blocks instead.
Text placed in this block will be parsed by Doxygen using the included lexicon filter (see lexicon_filter.in) as a Doxygen input filter. The filter is built during make so that it can pick up information on builtins, functions and shell commands mentioned in completions and apply markup to keywords found inside the \\fish block.
Basically, preformatted plain text inside the \\fish block is fed through the filter and is returned marked up so that Doxygen aliases can convert it back to a presentable form, according to the output document type.
For instance:
`echo hello world`
is transformed into:
`@cmnd{echo} @args{hello} @args{world}`
which is then transformed by Doxygen into an HTML version (`make doc`):
`<span class="command">echo</span> <span class="argument">hello</span> <span class="argument">world</span>`
A man page version (`make share/man`):
__echo__ hello world
And a simple HTML version for the developer docs (`make doc`) and the LATEX/PDF manual (`make doc/refman.pdf`):
`echo hello world`
### Fonts
In older browsers, it was easy to set the fonts used for the three basic type styles (serif, sans-serif and monospace). Modern browsers have removed these options in their respective quests for simplification, assuming the content author will provide suitable styles for the content in the site's CSS, or the end user will provide overriding styles manually. Doxygen's default styling is very simple and most users will just accept this default.
I've tried to use a sensible set of fonts in the documentation's CSS based on 'good' terminal fonts and as a result the firt preference font used throughout the documentation is '[DejaVu](http://dejavu-fonts.org)'. The rationale behaind this is that while DejaVu is getting a little long in the tooth, it still provides the most complete support across serif, sans-serif and monospace styles (giving a well balanced feel and consistent [x-height](http://en.wikipedia.org/wiki/X-height)), has the widest support for extended Unicode characters and has a free, permissive licenses (though it's still incompatible with GPLv2, though arguably less so than the SIL Open Font license, though this is a moot point when using it solely in the docs).
#### Fonts inside \\fish blocks and \`backticks\`
As the point of these contructs is to make fish's syntax clearer to the user, it makes sense to mimic what the user will see in the console, therefore any content is formatted using the monospaced style, specifically monospaced fonts are chosen in the following order:
1. __DejaVu Sans Mono__: Explained above. [[&darr;](http://dejavu-fonts.org)]
2. __Source Code Pro__: Monospaced code font, part of Adobe's free Edge Web Fonts. [[&darr;](https://edgewebfonts.adobe.com)]
3. __Menlo__: Apple supplied variant of DejaVu.
4. __Ubuntu Mono__: Ubuntu Linux's default monospaced font. [[&darr;](http://font.ubuntu.com)]
5. __Consolas__: Modern Microsoft supplied console font.
6. __Monaco__: Apple supplied console font since 1984!
7. __Lucida Console__: Generic mono terminal font, standard in many OS's and distros.
8. __monospace__: Catchall style. Chooses default monospaced font, often Courier.
9. __fixed__: As above, more often used on mobile devices.
#### General Fonts
1. __DejaVu Sans__: As above.[[&darr;](http://dejavu-fonts.org)]
2. __Roboto__: Elegant Google free font and is Doxygen's default [[&darr;](http://www.google.com/fonts/specimen/Roboto)]
3. __Lucida Grande__: Default Apple OS X content font.
4. __Calibri__: Default Microsoft Office font (since 2007).
5. __Verdana__: Good general font found in a lot of OSs.
6. __Helvetica Neue__: Better spaced and balanced Helvetica/Arial variant.
7. __Helvetica__: Standard humanist typeface found almost everywhere.
8. __Arial__: Microsoft's Helvetica.
9. __sans-serif__: Catchall style. Chooses default sans-serif typeface, often Helvetica.
The ordering of the fonts is important as it's designed to allow the documentation to settle into a number of different identities according to the fonts available. If you have the complete DejaVu family installed, then the docs are presented using that, and if your Console is set up to use the same fonts, presentation will be completely consistent.
On OS X, with nothing extra installed, the docs will default to Menlo and Lucida Grande giving a Mac feel. Under Windows, it will default to using Consolas and Calibri on recent versions, giving a modern Windows style.
#### Other sources:
- [Font Squirrel](http://www.fontsquirrel.com): Good source of open source font packages.
### Choosing a CLI style: using a \\fish{style} block
By default, when output as HTML, a \\fish block uses syntax colouring suited to the style of the documentation rather than trying to mimic the terminal. The block has a light, bordered background and a colour scheme that 'suggests' what the user would see in a console.
Additional stying can be applied adding a style declaration:
\fish{additional_style [another_style...]}
...
\endfish
This will translate to classes applied to the `<div>` tag, like so:
<div class="fish additional_style another_style">
...
</div>
The various classes are defined in `doc_src/user_doc.css` and new style can be simply added
The documentation currently defines a couple of additional styles:
- __cli-dark__: Used in the _tutorial_ and _FAQ_ to simulate a dark background terminal, with fish's default colours (slightly tweaked for legibility in the browser).
- __synopsis__: A simple colour theme helpful for displaying the logical 'summary' of a command's syntax, options and structure.
## Markdown
Apart from the exceptions discussed above, the rest of the documentation now supports the use of Markdown. As such the use of Doxygen special commands for HTML tags is unnecessary.
There are a few exceptions and extensions to the Markdown [standard](http://daringfireball.net/projects/markdown/) that are documented in the Doxygen [documentation](http://www.stack.nl/~dimitri/doxygen/manual/markdown.html).
### \`Backticks\`
As is standard in Markdown and 'Github Flavoured Markdown' (GFM), backticks can be used to denote inline technical terms in the documentation, `like so`. In the documentation this will set the font to the monospaced 'console' typeface and will cause the enclosed term to stand out.
However, fenced code blocks using 4 spaces or 3 backticks (\`\`\`) should be avoided as Doxygen will interpret these as \\code blocks and try to apply standard syntax colouring, which doesn't work so well for fish examples. Use `\fish..\endfish` blocks instead.
### Lists
Standard Markdown list rules apply, but as Doxygen will collapse white space on output, combined with the use of long lines, it's a good idea to include an extra new line between long list items to assist future editing.
## Special cases
The following can be used in \\fish blocks to render some fish scenarios. These are mostly used in the tutorial when an interactive situation needs to be displayed.
### Custom formatting tags
- `<s>`: auto\<s\>suggestion\</s\>.
- `<m>`: \<m\>Matched\</m\> items, such as tab completions.
- `<sm>`: Matched items \<sm\>searched\<sm\> for, like grep results.
- `<error>`: \<error\>This would be shown as an error.\</error\>
- `<asis>`: \<asis\>This test will not be parsed for fish markup.\</asis\>
- `<outp>`: \<outp\>This would be rendered as command/script output.\</outp\>
- `<bs>`: Render the contents with a preceding backslash. Useful when presenting output.
- `{{` and `}}`: Required when wanting curly braces in regular expression example.
### Prompts and cursors
- `>_`: Display a basic prompt.
- `~>_`: Display a prompt with a the home directory as the current working directory.
- `___` (3 underscores): Display a cursor.
### Keyboard shortcuts: @key{} and @cursor_key{}
Graphical keyboard shortcuts can be defined using the following special commands. These allow for the different text requirements across the html and man pages. The HTML uses CSS to create a keyboard style, whereas the man page would display the key as text.
- `@key{lable}`
Displays a key with a purely textual lable, such as: 'Tab', 'Page Up', 'Page Down', 'Home', 'End', 'F1', 'F19' and so on.
- `@key{modifier,lable}`
Displays a keystroke requiring the use of a 'modifier' key, such as 'Control-A', 'Shift-X', 'Alt-Tab' etc.
- `@key{modifier,entity,lable}`
Displays a keystroke using a graphical entity, such as an arrow symbol for cursor key based shortcuts.
- `@cursor_key{entity,lable}`
A special case for cursor keys, when no modifier is needed. i.e. `@cursor_key{&uarr;,up}` for the up arrow key.
Some useful Unicode/HTML5 entities:
- Up arrow: `&uarr;`
- Down arrow: `&darr;`
- Left arrow: `&larr;`
- Right arrow `&rarr;`
- Shift: `&#8679;`
- Tab: `&rarrb;`
- Mac option: `&#8997;`
- Mac command: `&#8984;`
## Notes
### Doxygen
Tested on:
- Ubuntu 14.04 with Doxygen 1.8.8, built from [GitHub source](https://github.com/doxygen/doxygen.git).
- CentOS 6.5 with Doxygen 1.8.8, built from [GitHub source](https://github.com/doxygen/doxygen.git).
- Mac OS X 10.9 with Homebrew install Doxygen 1.8.7 and 1.8.8.
Graphviz was also installed in all the above testing.
Doxygen 1.8.6 and lower do not have the \\htmlonly[block] directive which fixes a multitude of problems in the rendering of the docs. In Doxygen 1.8.7 the list of understood HTML entities was greatly increased. I tested earlier versions and many little issues returned.
As fish ships with pre-built documentation, I don't see this as an issue.
### Updated Configure/Makefile
- Tested on Ubuntu 14.04, CentOS 6.5 and Mac OS X 10.9.
- Makefile has GNU/BSD sed/grep detection.
### HTML output
- The output HTML is HTML5 compliant, but should quickly and elegantly degrade on older browsers without losing basic structure.
- The CSS avoids the use or browser specific extenstions (i.e. -webkit, -moz etc), using the W3C HTML5 standard instead.
- It's been tested in Chrome 37.0 and Firefox 32.0 on Mac OS X 10.9 (+Safari 7), Windows 8.1 (+Internet Explorer 11) and Ubuntu Desktop 14.04.
- My assumption is basically that if someone cares enough to want to install fish, they'll be keeping a browser current.
### Man page output
- Tested on Ubuntu 14.04, CentOS 6.5 and Mac OS X 10.9.
- Output is substantially cleaner.
- Tested in cat, less, more and most pagers using the following fish script:
```
function manTest --description 'Test manpage' --argument page
set -l pager
for i in $argv
switch $i
case "-l"
set pager -P '/usr/bin/less -is'
case "-m"
set pager -P '/usr/bin/more -s'
case "-c"
set pager -P '/bin/cat'
end
end
man $pager ~/Projects/OpenSource/fish-shell/share/man/man1/$page.1
end
# Assumes 'most' is the default system pager.
# NOT PORTABLE! Paths would be need to be updated on other systems.
```
### Developer docs and LATEX/PDF output
- HTML developer docs tested on Ubuntu 14.04, CentOS 6.5 and Mac OS X 10.9.
- LATEX/PDF reference manual tested on Mac OS X 10.9 using MacTEX. PDF production returns an error (due to Doxygen's use of an outdated 'float' package), but manual PDF output is ok.
### Future changes
1. The documentation creation process would be better if it could be modularised further and moved out of the makefile into a number of supporting scripts. This would allow both the automake and Xcode build processes to use the documentation scripts directly.
2. Remove the Doxygen dependency entirely for the user documentation. This would be very acheivable now that the bulk of the documentation is in Markdown.
3. It would be useful to gauge what parts of the documentation are actually used by users. Judging by the amount of 'missing comment' errors during the developer docs build phase, this aspect of the docs has been rather neglected. If it is not longer used or useful, then this could change the future direction of the documentation and significantly streamline the process.
#### Author: Mark Griffiths [@GitHub](https://github.com/MarkGriffiths)

46
doc_src/abbr.txt Normal file
View File

@@ -0,0 +1,46 @@
\section abbr abbr - manage fish abbreviations
\subsection abbr-synopsis Synopsis
\fish{synopsis}
abbr -a word phrase...
abbr -s
abbr -l
abbr -e word
\endfish
\subsection abbr-description Description
`abbr` manipulates the list of abbreviations that fish will expand.
Abbreviations are user-defined character sequences or words that are replaced with longer phrases after they are entered. For example, a frequently-run command such as `git checkout` can be abbreviated to `gco`. After entering `gco` and pressing @key{Space} or @key{Enter}, the full text `git checkout` will appear in the command line.
Abbreviations are stored using universal variables. You can create abbreviations directly on the command line, and they will be saved automatically. Calling `abbr -a` in config.fish will lead to slightly worse startup performance.
The following parameters are available:
- `-a WORD PHRASE` or `--add WORD PHRASE` Adds a new abbreviation, where WORD will be expanded to PHRASE.
- `-s` or `--show` Show all abbreviated words and their expanded phrases in a manner suitable for export and import.
- `-l` or `--list` Lists all abbreviated words.
- `-e WORD` or `--erase WORD` Erase the abbreviation WORD.
Note: fish version 2.1 supported `-a WORD=PHRASE`. This syntax is now deprecated but will still be converted.
\subsection abbr-example Examples
\fish
abbr -a gco git checkout
\endfish
Add a new abbreviation where `gco` will be replaced with `git checkout`.
\fish
abbr -e gco
\endfish
Erase the `gco` abbreviation.
\fish
ssh another_host abbr -s | source
\endfish
Import the abbreviations defined on another_host over SSH.

View File

@@ -1,34 +1,40 @@
\section alias alias - create a function
\subsection alias-synopsis Synopsis
<pre>alias NAME DEFINITION
alias NAME=DEFINITION</pre>
\fish{synopsis}
alias NAME DEFINITION
alias NAME=DEFINITION
\endfish
\subsection alias-description Description
\c alias is a simple wrapper for the \c function builtin.
It exists for backwards compatibility with Posix
shells. For other uses, it is recommended to define a <a
href='#function'>function</a>.
`alias` is a simple wrapper for the `function` builtin. It exists for backwards compatibility with Posix shells. For other uses, it is recommended to define a <a href='#function'>function</a>.
\c fish does not keep track of which functions have been defined using
\c alias. They must be erased using <code>functions -e</code>.
`fish` does not keep track of which functions have been defined using `alias`. They must be erased using `functions -e`.
- NAME is the name of the alias
- DEFINITION is the actual command to execute. The string " $argv" will be appended.
- `NAME` is the name of the alias
- `DEFINITION` is the actual command to execute. The string `$argv` will be appended.
You cannot create an alias to a function with the same name.
Note that spaces need to be escaped in the call to alias just like in the commandline _even inside the quotes_.
\subsection alias-example Example
The following code will create \c rmi, which runs \c rm with additional
arguments on every invocation.
The following code will create `rmi`, which runs `rm` with additional arguments on every invocation.
<code>alias rmi "rm -i"</code>
\fish
alias rmi "rm -i"
This is equivalent to entering the following function:
# This is equivalent to entering the following function:
<pre>function rmi
function rmi
rm -i $argv
end</pre>
end
# This needs to have the spaces escaped or "Chrome.app..." will be seen as an argument to "/Applications/Google":
alias chrome='/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome banana'
\endfish

View File

@@ -1,27 +1,24 @@
\section and and - conditionally execute a command
\subsection and-synopsis Synopsis
<tt>COMMAND1; and COMMAND2</tt>
\fish{synopsis}
COMMAND1; and COMMAND2
\endfish
\subsection and-description Description
\c and is used to execute a command if the current exit
status (as set by the last previous command) is 0.
`and` is used to execute a command if the current exit status (as set by the last previous command) is 0.
\c and does not change the current exit status.
`and` does not change the current exit status.
The exit status of the last foreground command to exit can always be accessed using the <a href="index.html#variables-status">$status</a> variable.
The exit status of the last foreground command to exit can always be
accessed using the <a href="index.html#variables-status">$status</a>
variable.
\subsection and-example Example
The following code runs the \c make command to build a program. If the
build succeeds, <code>make</code>'s exit status is 0, and the program is installed. If either step fails,
the exit status is 1, and <tt>make clean</tt> is run, which removes the files created by the.
build process.
The following code runs the `make` command to build a program. If the build succeeds, `make`'s exit status is 0, and the program is installed. If either step fails, the exit status is 1, and `make clean` is run, which removes the files created by the build process.
<pre>
\fish
make; and make install; or make clean
</pre>
\endfish

BIN
doc_src/ascii_fish.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -1,49 +1,45 @@
\section begin begin - start a new block of code
\subsection begin-synopsis Synopsis
<tt>begin; [COMMANDS...;] end</tt>
\fish{synopsis}
begin; [COMMANDS...;] end
\endfish
\subsection begin-description Description
\c begin is used to create a new block of code.
`begin` is used to create a new block of code.
The block
is unconditionally executed. <code>begin; ...; end</tt> is equivalent
to <tt>if true; ...; end</tt>.
The block is unconditionally executed. `begin; ...; end` is equivalent to `if true; ...; end`.
\c begin is used to group a number of commands into a block.
This allows the introduction of a new variable scope, redirection of the input or
output of a set of commands as a group, or to specify precedence when
using the conditional commands like \c and.
`begin` is used to group a number of commands into a block. This allows the introduction of a new variable scope, redirection of the input or output of a set of commands as a group, or to specify precedence when using the conditional commands like `and`.
`begin` does not change the current exit status.
\c begin does not change the current exit status.
\subsection begin-example Example
The following code sets a number of variables inside of a block
scope. Since the variables are set inside the block and have local
scope, they will be automatically deleted when the block ends.
The following code sets a number of variables inside of a block scope. Since the variables are set inside the block and have local scope, they will be automatically deleted when the block ends.
<pre>
\fish
begin
set -l PIRATE Yarrr
...
set -l PIRATE Yarrr
...
end
# This will not output anything, since the PIRATE variable went out
# of scope at the end of the block
echo $PIRATE
</pre>
# This will not output anything, since the PIRATE variable
# went out of scope at the end of the block
\endfish
In the following code, all output is redirected to the file out.html.
<pre>
\fish
begin
echo $xml_header
echo $html_header
if test -e $file
...
end
...
end &gt; out.html
</pre>
echo $xml_header
echo $html_header
if test -e $file
...
end
...
end > out.html
\endfish

View File

@@ -1,17 +1,17 @@
\section bg bg - send jobs to background
\subsection bg-synopsis Synopsis
<tt>bg [PID...]</tt>
\fish{synopsis}
bg [PID...]
\endfish
\subsection bg-description Description
\c bg sends <a href="index.html#syntax-job-control">jobs</a> to the background, resuming them if they are stopped. A background job is
executed simultaneously with fish, and does not have access to the
keyboard. If no job is specified, the last job to be used is put in the background. If PID is specified, the jobs with the specified process group IDs are put in the background.
`bg` sends <a href="index.html#syntax-job-control">jobs</a> to the background, resuming them if they are stopped. A background job is executed simultaneously with fish, and does not have access to the keyboard. If no job is specified, the last job to be used is put in the background. If PID is specified, the jobs with the specified process group IDs are put in the background.
The PID of the desired process is usually found by using <a href="index.html#expand-process">process expansion</a>.
\subsection bg-example Example
<tt>bg \%1</tt> will put the job with job ID 1 in the background.
`bg %1` will put the job with job ID 1 in the background.

View File

@@ -1,97 +1,156 @@
\section bind bind - handle fish key bindings
\subsection bind-synopsis Synopsis
<tt>bind [OPTIONS] SEQUENCE COMMAND</tt>
\fish{synopsis}
bind [(-M | --mode) MODE] [(-m | --sets-mode) NEW_MODE]
[(-k | --key)] SEQUENCE COMMAND [COMMAND...]
bind [(-M | --mode) MODE] [(-k | --key)] SEQUENCE
bind (-K | --key-names) [(-a | --all)]
bind (-f | --function-names)
bind (-e | --erase) [(-M | --mode) MODE]
(-a | --all | [(-k | --key)] SEQUENCE [SEQUENCE...])
\endfish
\subsection bind-description Description
<tt>bind</tt> adds a binding for the specified key sequence to the
specified command.
`bind` adds a binding for the specified key sequence to the specified command.
SEQUENCE is the character sequence to bind to. These should be written as
<a href="index.html#escapes">fish escape sequences</a>. For example, because pressing
the Alt key and another character sends that character prefixed with
an escape character, Alt-based key bindings can be written using the
\c \\e escape. For example, Alt-w can be written as
<tt>\\ew</tt>. The control character can be written in much the same way
using the \c \\c escape, for example Control-x (^X) can be written as
<tt>\\cx</tt>. Note that Alt-based key bindings are case sensitive and
Control-based key bindings are not. This is a constraint of text-based
terminals, not \c fish.
SEQUENCE is the character sequence to bind to. These should be written as <a href="index.html#escapes">fish escape sequences</a>. For example, because pressing the Alt key and another character sends that character prefixed with an escape character, Alt-based key bindings can be written using the `\e` escape. For example, @key{Alt,w} can be written as `\ew`. The control character can be written in much the same way using the `\c` escape, for example @key{Control,X} (^X) can be written as `\cx`. Note that Alt-based key bindings are case sensitive and Control-based key bindings are not. This is a constraint of text-based terminals, not `fish`.
The default key binding can be set by specifying a SEQUENCE of the empty
string (that is, <code>''</code>). It will be used whenever no
other binding matches. For most key bindings, it makes sense to use
the \c self-insert function (i.e. <tt>bind '' self-insert</tt> as the
default keybinding. This will insert any keystrokes not specifically
bound to into the editor. Non-printable characters are ignored by the
editor, so this will not result in control sequences being
printable.
The default key binding can be set by specifying a `SEQUENCE` of the empty string (that is, ```''``` ). It will be used whenever no other binding matches. For most key bindings, it makes sense to use the `self-insert` function (i.e. ```bind '' self-insert```) as the default keybinding. This will insert any keystrokes not specifically bound to into the editor. Non- printable characters are ignored by the editor, so this will not result in control sequences being printable.
If the -k switch is used, the name of the key (such as down, up or
backspace) is used instead of a sequence. The names used are the same
as the corresponding curses variables, but without the 'key_'
prefix. (See \c terminfo(5) for more information, or use <tt>bind
--key-names</tt> for a list of all available named keys.)
If the `-k` switch is used, the name of the key (such as 'down', 'up' or 'backspace') is used instead of a sequence. The names used are the same as the corresponding curses variables, but without the 'key_' prefix. (See `terminfo(5)` for more information, or use `bind --key-names` for a list of all available named keys.)
COMMAND can be any fish command, but it can also be one of a set of
special input functions. These include functions for moving the
cursor, operating on the kill-ring, performing tab completion,
etc. Use 'bind --function-names' for a complete list of these input
functions.
`COMMAND` can be any fish command, but it can also be one of a set of special input functions. These include functions for moving the cursor, operating on the kill-ring, performing tab completion, etc. Use `bind --function-names` for a complete list of these input functions.
When COMMAND is a shellscript command, it is a good practice to put
the actual code into a <a href="#function">function</a> and simply
bind to the function name. This way it becomes significantly easier to
test the function while editing, and the result is usually more
readable as well.
When `COMMAND` is a shellscript command, it is a good practice to put the actual code into a <a href="#function">function</a> and simply bind to the function name. This way it becomes significantly easier to test the function while editing, and the result is usually more readable as well.
If such a script produces output, the script needs to finish by
calling 'commandline -f repaint' in order to tell fish that a repaint
is in order.
If such a script produces output, the script needs to finish by calling `commandline -f repaint` in order to tell fish that a repaint is in order.
Key bindings are not saved between sessions by default. To save custom
keybindings, edit the \c fish_user_key_bindings function and insert the
appropriate \c bind statements.
When multiple `COMMAND`s are provided, they are all run in the specified order when the key is pressed.
If no `SEQUENCE` is provided, all bindings (or just the bindings in the specified `MODE`) are printed. If `SEQUENCE` is provided without `COMMAND`, just the binding matching that sequence is printed.
Key bindings are not saved between sessions by default. **Bare `bind` statements in <a href="index.html#initialization">config.fish</a> won't have any effect because it is sourced before the default keybindings are setup.** To save custom keybindings, put the `bind` statements into a function called `fish_user_key_bindings`, which will be <a href="tutorial.html#tut_autoload">autoloaded</a>.
Key bindings may use "modes", which mimics Vi's modal input behavior. The default mode is "default", and every bind applies to a single mode. The mode can be viewed/changed with the `$fish_bind_mode` variable.
The following parameters are available:
- <tt>-k</tt> or <tt>--key</tt> Specify a key name, such as 'left' or 'backspace' instead of a character sequence
- <tt>-K</tt> or <tt>--key-names</tt> Display a list of available key names
- <tt>-f</tt> or <tt>--function-names</tt> Display a list of available input functions
- `-k` or `--key` Specify a key name, such as 'left' or 'backspace' instead of a character sequence
- `-K` or `--key-names` Display a list of available key names. Specifying `-a` or `--all` includes keys that don't have a known mapping
- `-f` or `--function-names` Display a list of available input functions
- `-M MODE` or `--mode MODE` Specify a bind mode that the bind is used in. Defaults to "default"
- `-m NEW_MODE` or `--sets-mode NEW_MODE` Change the current mode to `NEW_MODE` after this binding is executed
- `-e` or `--erase` Erase the binding with the given sequence and mode instead of defining a new one. Multiple sequences can be specified with this flag. Specifying `-a` or `--all` with `-M` or `--mode` erases all binds in the given mode regardless of sequence. Specifying `-a` or `--all` without `-M` or `--mode` erases all binds in all modes regardless of sequence.
- `-a` or `--all` See `--erase` and `--key-names`
The following special input functions are available:
- \c backward-char, moves one character to the left
- \c backward-delete-char, deletes one character of input to the left of the cursor
- \c backward-kill-line, move everything from the beginning of the line to the cursor to the killring
- \c backward-kill-word, move the word to the left of the cursor to the killring
- \c backward-word, move one word to the left
- \c beginning-of-history, move to the beginning of the history
- \c beginning-of-line, move to the beginning of the line
- \c capitalize-word, make the current word begin with a capital letter
- \c complete, guess the remainder of the current token
- \c delete-char, delete one character to the right of the cursor
- \c delete-line, delete the entire line
- \c downcase-word, make the current word lowercase
- \c dump-functions, print a list of all key-bindings
- \c end-of-history, move to the end of the history
- \c end-of-line, move to the end of the line
- \c explain, print a description of possible problems with the current command
- \c forward-char, move one character to the right
- \c forward-word, move one word to the right
- \c history-search-backward, search the history for the previous match
- \c history-search-forward, search the history for the next match
- \c kill-line, move everything from the cursor to the end of the line to the killring
- \c kill-whole-line, move the line to the killring
- \c kill-word, move the next word to the killring
- \c upcase-word, make the current word uppercase
- \c yank, insert the latest entry of the killring into the buffer
- \c yank-pop, rotate to the previous entry of the killring
- `accept-autosuggestion`, accept the current autosuggestion completely
- `backward-char`, moves one character to the left
- `backward-bigword`, move one whitespace-delimited word to the left
- `backward-delete-char`, deletes one character of input to the left of the cursor
- `backward-kill-bigword`, move the whitespace-delimited word to the left of the cursor to the killring
- `backward-kill-line`, move everything from the beginning of the line to the cursor to the killring
- `backward-kill-path-component`, move one path component to the left of the cursor (everything from the last "/" or whitespace exclusive) to the killring
- `backward-kill-word`, move the word to the left of the cursor to the killring
- `backward-word`, move one word to the left
- `beginning-of-history`, move to the beginning of the history
- `beginning-of-line`, move to the beginning of the line
- `begin-selection`, start selecting text
- `capitalize-word`, make the current word begin with a capital letter
- `complete`, guess the remainder of the current token
- `complete-and-search`, invoke the searchable pager on completion options
- `delete-char`, delete one character to the right of the cursor
- `downcase-word`, make the current word lowercase
- `end-of-history`, move to the end of the history
- `end-of-line`, move to the end of the line
- `end-selection`, end selecting text
- `forward-bigword`, move one whitespace-delimited word to the right
- `forward-char`, move one character to the right
- `forward-word`, move one word to the right
- `history-search-backward`, search the history for the previous match
- `history-search-forward`, search the history for the next match
- `kill-bigword`, move the next whitespace-delimited word to the killring
- `kill-line`, move everything from the cursor to the end of the line to the killring
- `kill-selection`, move the selected text to the killring
- `kill-whole-line`, move the line to the killring
- `kill-word`, move the next word to the killring
- `suppress-autosuggestion`, remove the current autosuggestion
- `swap-selection-start-stop`, go to the other end of the highlighted text without changing the selection
- `transpose-chars`, transpose two characters to the left of the cursor
- `transpose-words`, transpose two words to the left of the cursor
- `upcase-word`, make the current word uppercase
- `yank`, insert the latest entry of the killring into the buffer
- `yank-pop`, rotate to the previous entry of the killring
\subsection bind-example Examples
<tt>bind \\cd 'exit'</tt> causes \c fish to exit when Control-d is pressed.
\fish
bind \cd 'exit'
\endfish
Causes `fish` to exit when @key{Control,D} is pressed.
<tt>bind -k ppage history-search-backward</tt> performs a history search when the Page Up key is pressed.
\fish
bind -k ppage history-search-backward
\endfish
Performs a history search when the @key{Page Up} key is pressed.
\fish
set -g fish_key_bindings fish_vi_key_bindings
bind -M insert \cc kill-whole-line force-repaint
\endfish
Turns on Vi key bindings and rebinds @key{Control,C} to clear the input line.
\subsection special-case-escape Special Case: The escape Character
The escape key can be used standalone, for example, to switch from insertion mode to normal mode when using Vi keybindings. Escape may also be used as a "meta" key, to indicate the start of an escape sequence, such as function or arrow keys. Custom bindings can also be defined that begin with an escape character.
fish waits for a period after receiving the escape character, to determine whether it is standalone or part of an escape sequence. While waiting, additional key presses make the escape key behave as a meta key. If no other key presses come in, it is handled as a standalone escape. The waiting period is set to 300 milliseconds (0.3 seconds) in the default key bindings and 10 milliseconds in the vi key bindings. It can be configured by setting the `fish_escape_delay_ms` variable to a value between 10 and 5000 ms. It is recommended that this be a universal variable that you set once from an interactive session.
Note: fish 2.2.0 and earlier used a default of 10 milliseconds, and provided no way to configure it. That effectively made it impossible to use escape as a meta key.

View File

@@ -1,40 +1,41 @@
\section block block - temporarily block delivery of events
\subsection block-synopsis Synopsis
<tt>block [OPTIONS...]</tt>
\fish{synopsis}
block [OPTIONS...]
\endfish
\subsection block-description Description
\c block prevents events triggered by \c fish or the
<a href="commands.html#emit"><code>emit</code></a> command from
being delivered and acted upon while the block is in place.
`block` prevents events triggered by `fish` or the <a href="commands.html#emit">`emit`</a> command from being delivered and acted upon while the block is in place.
In functions, \c block can be useful while performing work that
should not be interrupted by the shell.
In functions, `block` can be useful while performing work that should not be interrupted by the shell.
The block can be removed. Any events which triggered while the
block was in place will then be delivered.
The block can be removed. Any events which triggered while the block was in place will then be delivered.
Event blocks should not be confused with code blocks, which are created
with <code>begin</code>, <code>if</code>, <code>while</code> or
<code>for</code>
Event blocks should not be confused with code blocks, which are created with `begin`, `if`, `while` or `for`
The following parameters are available:
- <tt>-l</tt> or <tt>--local</tt> Release the block automatically at the end of the current innermost code block scope
- <tt>-g</tt> or <tt>--global</tt> Never automatically release the lock
- <tt>-e</tt> or <tt>--erase</tt> Release global block
- `-l` or `--local` Release the block automatically at the end of the current innermost code block scope
- `-g` or `--global` Never automatically release the lock
- `-e` or `--erase` Release global block
\subsection block-example Example
<pre>
\fish
# Create a function that listens for events
function --on-event foo foo; echo 'foo fired'; end
# Block the delivery of events
block -g
emit foo
# No output will be produced
block -e
# 'foo fired' will now be printed
</pre>
\endfish

9
doc_src/branding/README Normal file
View File

@@ -0,0 +1,9 @@
This directory is for images relevant to the fish brand.
The logo.psd and logo.svg files were created by Steve Stagg
(http://github.com/stestagg). They were uploaded to SickerMule by Andrei
Zvonimir Crnković (https://github.com/andreicek). See
https://www.stickermule.com/marketplace/tags/shell
https://www.stickermule.com/marketplace/3507-fish-shell-sticker-die-cut
https://www.stickermule.com/marketplace/3508-fish-shell-sticker-square-cut

BIN
doc_src/branding/logo.psd Normal file

Binary file not shown.

33
doc_src/branding/logo.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 109 KiB

View File

@@ -1,22 +1,25 @@
\section break break - stop the current inner loop
\subsection break-synopsis Synopsis
<tt>LOOP_CONSTRUCT; [COMMANDS...] break; [COMMANDS...] end</tt>
\fish{synopsis}
LOOP_CONSTRUCT; [COMMANDS...] break; [COMMANDS...] end
\endfish
\subsection break-description Description
\c break halts a currently running loop, such as a <a href="#for">for</a> loop or a <a href="#while">while</a> loop. It is usually added inside of a conditional block such as an <a href="#if">if</a> statement or a <a href="#switch">switch</a> statement.
`break` halts a currently running loop, such as a <a href="#for">for</a> loop or a <a href="#while">while</a> loop. It is usually added inside of a conditional block such as an <a href="#if">if</a> statement or a <a href="#switch">switch</a> statement.
There are no parameters for `break`.
There are no parameters for <code>break</code>.
\subsection break-example Example
The following code searches all .c files for "smurf", and halts at the first occurrence.
<pre>
\fish
for i in *.c
if grep smurf $i
echo Smurfs are present in $i
break
end
end
</pre>
\endfish

View File

@@ -1,14 +1,14 @@
\section breakpoint breakpoint - Launch debug mode
\subsection breakpoint-synopsis Synopsis
<tt>breakpoint</tt>
\fish{synopsis}
breakpoint
\endfish
\subsection breakpoint-description Description
\c breakpoint is used to halt a running script and launch
an interactive debugging prompt.
`breakpoint` is used to halt a running script and launch an interactive debugging prompt.
For more details, see <a href="index.html#debugging">Debugging fish
scripts</a> in the \c fish manual.
For more details, see <a href="index.html#debugging">Debugging fish scripts</a> in the `fish` manual.
There are no parameters for <code>breakpoint</code>.
There are no parameters for `breakpoint`.

View File

@@ -1,16 +1,22 @@
\section builtin builtin - run a builtin command
\subsection builtin-synopsis Synopsis
<tt>builtin BUILTINNAME [OPTIONS...]</tt>
\fish{synopsis}
builtin BUILTINNAME [OPTIONS...]
\endfish
\subsection builtin-description Description
\c builtin forces the shell to use a builtin command, rather than a function or program.
`builtin` forces the shell to use a builtin command, rather than a function or program.
The following parameters are available:
- <tt>-n</tt> or <tt>--names</tt> List the names of all defined builtins
- `-n` or `--names` List the names of all defined builtins
\subsection builtin-example Example
<tt>builtin jobs</tt> executes the jobs builtin, even if a function named jobs exists.
\fish
builtin jobs
# executes the jobs builtin, even if a function named jobs exists
\endfish

View File

@@ -1,35 +1,27 @@
\section case case - conditionally execute a block of commands
\subsection case-synopsis Synopsis
<tt>switch VALUE; [case [WILDCARD...]; [COMMANDS...]; ...] end</tt>
\fish{synopsis}
switch VALUE; [case [WILDCARD...]; [COMMANDS...]; ...] end
\endfish
\subsection case-description Description
\c switch performs one of several blocks of commands, depending on whether
a specified value equals one of several wildcarded values. \c case is used
together with the \c switch statement in order to determine which block should
be executed.
`switch` performs one of several blocks of commands, depending on whether a specified value equals one of several wildcarded values. `case` is used together with the `switch` statement in order to determine which block should be executed.
Each \c case command is given one or more parameters. The first \c case
command with a parameter that matches the string specified in the
switch command will be evaluated. \c case parameters may contain
wildcards. These need to be escaped or quoted in order to avoid
regular wildcard expansion using filenames.
Each `case` command is given one or more parameters. The first `case` command with a parameter that matches the string specified in the switch command will be evaluated. `case` parameters may contain wildcards. These need to be escaped or quoted in order to avoid regular wildcard expansion using filenames.
Note that fish does not fall through on case statements. Only the
first matching case is executed.
Note that fish does not fall through on case statements. Only the first matching case is executed.
Note that command substitutions in a case statement will be evaluated even if its body is not taken. All substitutions, including command substitutions, must be performed before the value can be compared against the parameter.
Note that command substitutions in a case statement will be
evaluated even if its body is not taken. All substitutions, including
command substitutions, must be performed before the value can be compared
against the parameter.
\subsection case-example Example
If the variable \$animal contains the name of an animal, the following
code would attempt to classify it:
<pre>
\fish
switch $animal
case cat
echo evil
@@ -43,8 +35,8 @@ switch $animal
case '*'
echo I have no idea what a $animal is
end
</pre>
\endfish
If the above code was run with \c \$animal set to \c whale, the output
would be \c mammal.
If the above code was run with `$animal` set to `whale`, the output
would be `mammal`.

View File

@@ -1,25 +1,27 @@
\section cd cd - change directory
\subsection cd-synopsis Synopsis
<tt>cd [DIRECTORY]</tt>
\fish{synopsis}
cd [DIRECTORY]
\endfish
\subsection cd-description Description
\c cd changes the current working directory.
`cd` changes the current working directory.
If \c DIRECTORY is supplied, it will become the new directory. If no parameter
is given, the contents of the \c HOME environment variable will be used.
If `DIRECTORY` is supplied, it will become the new directory. If no parameter is given, the contents of the `HOME` environment variable will be used.
If \c DIRECTORY is a relative path, the paths found in the
\c CDPATH environment variable array will be tried as prefixes for the specified
path.
If `DIRECTORY` is a relative path, the paths found in the `CDPATH` environment variable array will be tried as prefixes for the specified path.
Note that the shell will attempt to change directory without requiring \c cd
if the name of a directory is provided (starting with '.', '/' or '~', or ending
with '/').
Note that the shell will attempt to change directory without requiring `cd` if the name of a directory is provided (starting with `.`, `/` or `~`, or ending with `/`).
Fish also ships a wrapper function around the builtin `cd` that understands `cd -` as changing to the previous directory. See also <a href="commands.html#prevd">`prevd`</a>. This wrapper function maintains a history of the 25 most recently visited directories in the `$dirprev` and `$dirnext` global variables.
\subsection cd-example Examples
\c cd changes the working directory to your home directory.
\fish
cd
# changes the working directory to your home directory.
<code>cd /usr/src/fish-shell</code> changes the working directory to
<code>/usr/src/fish-shell</code>.
cd /usr/src/fish-shell
# changes the working directory to /usr/src/fish-shell
\endfish

View File

@@ -1,12 +1,24 @@
\section command command - run a program
\subsection command-synopsis Synopsis
<tt>command COMMANDNAME [OPTIONS...]</tt>
\fish{synopsis}
command [OPTIONS] COMMANDNAME [ARGS...]
\endfish
\subsection command-description Description
\c command forces the shell to execute the program \c COMMANDNAME and ignore any functions or builtins with the same name.
`command` forces the shell to execute the program `COMMANDNAME` and ignore any functions or builtins with the same name.
\subsection command-example Example
The following options are available:
<tt>command ls</tt> causes fish to execute the \c ls program, even if an 'ls' function exists.
- `-s` or `--search` returns the name of the disk file that would be executed, or nothing if no file with the specified name could be found in the `$PATH`.
With the `-s` option, `command` treats every argument as a separate command to look up and sets the exit status to 0 if any of the specified commands were found, or 1 if no commands could be found.
For basic compatibility with POSIX `command`, the `-v` flag is recognized as an alias for `-s`.
\subsection command-example Examples
`command ls` causes fish to execute the `ls` program, even if an `ls` function exists.
`command -s ls` returns the path to the `ls` program.

View File

@@ -1,63 +1,80 @@
\section commandline commandline - set or get the current command line buffer
\subsection commandline-synopsis Synopsis
<tt>commandline [OPTIONS] [CMD]</tt>
\fish{synopsis}
commandline [OPTIONS] [CMD]
\endfish
\subsection commandline-description Description
\c commandline can be used to set or get the current contents of the command
line buffer.
`commandline` can be used to set or get the current contents of the command line buffer.
With no parameters, \c commandline returns the current value of the command
line.
With no parameters, `commandline` returns the current value of the command line.
With \c CMD specified, the command line buffer is erased and replaced with
the contents of \c CMD.
With `CMD` specified, the command line buffer is erased and replaced with the contents of `CMD`.
The following options are available:
- \c -C or \c --cursor set or get the current cursor position, not
the contents of the buffer. If no argument is given, the current
cursor position is printed, otherwise the argument is interpreted
as the new cursor position.
- \c -f or \c --function inject readline functions into the
reader. This option cannot be combined with any other option. It
will cause any additional arguments to be interpreted as readline
functions, and these functions will be injected into the reader, so
that they will be returned to the reader before any additional
actual key presses are read.
- `-C` or `--cursor` set or get the current cursor position, not the contents of the buffer. If no argument is given, the current cursor position is printed, otherwise the argument is interpreted as the new cursor position.
The following options change the way \c commandline updates the
command line buffer:
- `-f` or `--function` inject readline functions into the reader. This option cannot be combined with any other option. It will cause any additional arguments to be interpreted as readline functions, and these functions will be injected into the reader, so that they will be returned to the reader before any additional actual key presses are read.
- \c -a or \c --append do not remove the current commandline, append
the specified string at the end of it
- \c -i or \c --insert do not remove the current commandline, insert
the specified string at the current cursor position
- \c -r or \c --replace remove the current commandline and replace it
with the specified string (default)
The following options change the way `commandline` updates the command line buffer:
The following options change what part of the commandline is printed
or updated:
- `-a` or `--append` do not remove the current commandline, append the specified string at the end of it
- \c -b or \c --current-buffer select the entire buffer (default)
- \c -j or \c --current-job select the current job
- \c -p or \c --current-process select the current process
- \c -t or \c --current-token select the current token.
- `-i` or `--insert` do not remove the current commandline, insert the specified string at the current cursor position
The following options change the way \c commandline prints the current
commandline buffer:
- `-r` or `--replace` remove the current commandline and replace it with the specified string (default)
- \c -c or \c --cut-at-cursor only print selection up until the
current cursor position
- \c -o or \c --tokenize tokenize the selection and print one string-type token per line
The following options change what part of the commandline is printed or updated:
- `-b` or `--current-buffer` select the entire buffer (default)
- `-j` or `--current-job` select the current job
- `-p` or `--current-process` select the current process
- `-t` or `--current-token` select the current token.
The following options change the way `commandline` prints the current commandline buffer:
- `-c` or `--cut-at-cursor` only print selection up until the current cursor position
- `-o` or `--tokenize` tokenize the selection and print one string-type token per line
If `commandline` is called during a call to complete a given string using `complete -C STRING`, `commandline` will consider the specified string to be the current contents of the command line.
The following options output metadata about the commandline state:
- `-L` or `--line` print the line that the cursor is on, with the topmost line starting at 1
- `-S` or `--search-mode` evaluates to true if the commandline is performing a history search
- `-P` or `--paging-mode` evaluates to true if the commandline is showing pager contents, such as tab completions
If \c commandline is called during a call to complete a given string
using <code>complete -C STRING</code>, \c commandline will consider the
specified string to be the current contents of the command line.
\subsection commandline-example Example
<tt>commandline -j $history[3]</tt> replaces the job under the cursor with the
third item from the command line history.
`commandline -j $history[3]` replaces the job under the cursor with the third item from the command line history.
If the commandline contains
\fish
>_ echo $fl___ounder >&2 | less; and echo $catfish
\endfish
(with the cursor on the "o" of "flounder")
Then the following invocations behave like this:
\fish
>_ commandline -t
$flounder
>_ commandline -ct
$fl
>_ commandline -b # or just commandline
echo $flounder >&2 | less; and echo $catfish
>_ commandline -p
echo $flounder >&2
>_ commandline -j
echo $flounder >&2 | less
\endfish

View File

@@ -1,15 +1,38 @@
/** \page commands Commands bundled with fish
\htmlonly <div class="fish_left_bar fish_left_little"> \endhtmlonly
@command_list_toc@
\htmlonly </div> \endhtmlonly
\htmlonly
<div class="fish_right_bar fish_right_big">
<h1 class="interior_title_borderless">Commands</h1>
Fish ships with a large number of builtin commands, shellscript functions and external commands. These are all described below.
/**
\page commands Commands
\htmlonly[block]
<div class="fish_left_bar">
<div class="logo"></div>
<div class="menu commands_menu">
\endhtmlonly
@command_list@
\htmlonly </div> \endhtmlonly
@command_list_toc@
\htmlonly[block]
</div>
</div>
<div class="commands fish_right_bar">
<h1 class="interior_title">Command reference</h1>
\endhtmlonly
`fish` ships with a large number of builtin commands, shellscript functions and external commands. These are all described below.
Almost all fish commands respond to the `-h` or `--help` options to display their relevant help, also accessible using the `help` and `man` commands, like so:
\fish
echo -h
echo --help
# Prints help to the terminal window
man echo
# Displays the man page in the system pager
# (normally 'less', 'more' or 'most').
help echo
# Open a web browser to show the relevant documentation
\endfish
@command_list@
\htmlonly[block]
</div>
\endhtmlonly
*/

View File

@@ -1,7 +1,21 @@
\section complete complete - edit command specific tab-completions
\subsection complete-synopsis Synopsis
<tt>complete (-c|--command|-p|--path) COMMAND [(-s|--short-option) SHORT_OPTION] [(-l|--long-option|-o|--old-option) LONG_OPTION [(-a||--arguments) OPTION_ARGUMENTS] [(-d|--description) DESCRIPTION] </tt>
\fish{synopsis}
complete ( -c | --command | -p | --path ) COMMAND
[( -c | --command | -p | --path ) COMMAND]...
[( -e | --erase )]
[( -s | --short-option ) SHORT_OPTION]...
[( -l | --long-option | -o | --old-option ) LONG_OPTION]...
[( -a | --arguments ) OPTION_ARGUMENTS]
[( -f | --no-files )]
[( -r | --require-parameter )]
[( -x | --exclusive )]
[( -w | --wraps ) WRAPPED_COMMAND]...
[( -n | --condition ) CONDITION]
[( -d | --description ) DESCRIPTION]
complete ( -C[STRING] | --do-complete[=STRING] )
\endfish
\subsection complete-description Description
@@ -9,69 +23,102 @@ For an introduction to specifying completions, see <a
href='index.html#completion-own'>Writing your own completions</a> in
the fish manual.
- <tt>COMMAND</tt> is the name of the command for which to add a completion
- <tt>SHORT_OPTION</tt> is a one character option for the command
- <tt>LONG_OPTION</tt> is a multi character option for the command
- <tt>OPTION_ARGUMENTS</tt> is parameter containing a space-separated list of possible option-arguments, which may contain subshells
- <tt>DESCRIPTION</tt> is a description of what the option and/or option arguments do
- <tt>-C STRING</tt> or <tt>--do-complete=STRING</tt> makes complete try to find all possible completions for the specified string
- <tt>-e</tt> or <tt>--erase</tt> implies that the specified completion should be deleted
- <tt>-f</tt> or <tt>--no-files</tt> specifies that the option specified by this completion may not be followed by a filename
- <tt>-n</tt> or <tt>--condition</tt> specifies a shell command that must return 0 if the completion is to be used. This makes it possible to specify completions that should only be used in some cases.
- <tt>-o</tt> or <tt>--old-option</tt> implies that the command uses old long style options with only one dash
- <tt>-p</tt> or <tt>--path</tt> implies that the string COMMAND is the full path of the command
- <tt>-r</tt> or <tt>--require-parameter</tt> specifies that the option specified by this completion always must have an option argument, i.e. may not be followed by another option
- <tt>-u</tt> or <tt>--unauthoritative</tt> implies that there may be more options than the ones specified, and that fish should not assume that options not listed are spelling errors
- <tt>-A</tt> or <tt>--authoritative</tt> implies that there may be no more options than the ones specified, and that fish should assume that options not listed are spelling errors
- <tt>-x</tt> or <tt>--exclusive</tt> implies both <tt>-r</tt> and <tt>-f</tt>
- `COMMAND` is the name of the command for which to add a completion.
Command specific tab-completions in \c fish are based on the notion
of options and arguments. An option is a parameter which begins with a
hyphen, such as '-h', '-help' or '--help'. Arguments are parameters
that do not begin with a hyphen. Fish recognizes three styles of
options, the same styles as the GNU version of the getopt
library. These styles are:
- `SHORT_OPTION` is a one character option for the command.
- Short options, like '-a'. Short options are a single character long, are preceded by a single hyphen and may be grouped together (like '-la', which is equivalent to '-l -a'). Option arguments may be specified in the following parameter ('-w 32') or by appending the option with the value ('-w32').
- Old style long options, like '-Wall'. Old style long options can be more than one character long, are preceded by a single hyphen and may not be grouped together. Option arguments are specified in the following parameter ('-ao null').
- GNU style long options, like '--colors'. GNU style long options can be more than one character long, are preceded by two hyphens, and may not be grouped together. Option arguments may be specified in the following parameter ('--quoting-style shell') or by appending the option with a '=' and the value ('--quoting-style=shell'). GNU style long options may be abbreviated so long as the abbreviation is unique ('--h' is equivalent to '--help' if help is the only long option beginning with an 'h').
- `LONG_OPTION` is a multi character option for the command.
The options for specifying command name, command path, or command
switches may all be used multiple times to specify multiple commands
which have the same completion or multiple switches accepted by a
command.
- `OPTION_ARGUMENTS` is parameter containing a space-separated list of possible option-arguments, which may contain command substitutions.
- `DESCRIPTION` is a description of what the option and/or option arguments do.
- `-c COMMAND` or `--command COMMAND` specifies that `COMMAND` is the name of the command.
- `-p COMMAND` or `--path COMMAND` specifies that `COMMAND` is the absolute path of the program (optionally containing wildcards).
- `-e` or `--erase` deletes the specified completion.
- `-s SHORT_OPTION` or `--short-option=SHORT_OPTION` adds a short option to the completions list.
- `-l LONG_OPTION` or `--long-option=LONG_OPTION` adds a GNU style long option to the completions list.
- `-o LONG_OPTION` or `--old-option=LONG_OPTION` adds an old style long option to the completions list (See below for details).
- `-a OPTION_ARGUMENTS` or `--arguments=OPTION_ARGUMENTS` adds the specified option arguments to the completions list.
- `-f` or `--no-files` specifies that the options specified by this completion may not be followed by a filename.
- `-r` or `--require-parameter` specifies that the options specified by this completion always must have an option argument, i.e. may not be followed by another option.
- `-x` or `--exclusive` implies both `-r` and `-f`.
- `-w WRAPPED_COMMAND` or `--wraps=WRAPPED_COMMAND` causes the specified command to inherit completions from the wrapped command (See blow for details).
- `-n` or `--condition` specifies a shell command that must return 0 if the completion is to be used. This makes it possible to specify completions that should only be used in some cases.
- `-CSTRING` or `--do-complete=STRING` makes complete try to find all possible completions for the specified string.
- `-C` or `--do-complete` with no argument makes complete try to find all possible completions for the current command line buffer. If the shell is not in interactive mode, an error is returned.
Command specific tab-completions in `fish` are based on the notion of options and arguments. An option is a parameter which begins with a hyphen, such as '`-h`', '`-help`' or '`--help`'. Arguments are parameters that do not begin with a hyphen. Fish recognizes three styles of options, the same styles as the GNU version of the getopt library. These styles are:
- Short options, like '`-a`'. Short options are a single character long, are preceded by a single hyphen and may be grouped together (like '`-la`', which is equivalent to '`-l -a`'). Option arguments may be specified in the following parameter ('`-w 32`') or by appending the option with the value ('`-w32`').
- Old style long options, like '`-Wall`'. Old style long options can be more than one character long, are preceded by a single hyphen and may not be grouped together. Option arguments are specified in the following parameter ('`-ao null`').
- GNU style long options, like '`--colors`'. GNU style long options can be more than one character long, are preceded by two hyphens, and may not be grouped together. Option arguments may be specified in the following parameter ('`--quoting-style shell`') or by appending the option with a '`=`' and the value ('`--quoting-style=shell`'). GNU style long options may be abbreviated so long as the abbreviation is unique ('`--h`') is equivalent to '`--help`' if help is the only long option beginning with an 'h').
The options for specifying command name and command path may be used multiple times to define the same completions for multiple commands.
The options for specifying command switches and wrapped commands may be used multiple times to define multiple completions for the command(s) in a single call.
Invoking `complete` multiple times for the same command adds the new definitions on top of any existing completions defined for the command.
When `-a` or `--arguments` is specified in conjunction with long, short, or old style options, the specified arguments are only used as completions when attempting to complete an argument for any of the specified options. If `-a` or `--arguments` is specified without any long, short, or old style options, the specified arguments are used when completing any argument to the command (except when completing an option argument that was specified with `-r` or `--require-parameter`).
Command substitutions found in `OPTION_ARGUMENTS` are not expected to return a space-separated list of arguments. Instead they must return a newline-separated list of arguments, and each argument may optionally have a tab character followed by the argument description. Any description provided in this way overrides a description given with `-d` or `--description`.
The `-w` or `--wraps` options causes the specified command to inherit completions from another command. The inheriting command is said to "wrap" the inherited command. The wrapping command may have its own completions in addition to inherited ones. A command may wrap multiple commands, and wrapping is transitive: if A wraps B, and B wraps C, then A automatically inherits all of C's completions. Wrapping can be removed using the `-e` or `--erase` options. Note that wrapping only works for completions specified with `-c` or `--command` and are ignored when specifying completions with `-p` or `--path`.
When erasing completions, it is possible to either erase all completions for a specific command by specifying `complete -c COMMAND -e`, or by specifying a specific completion option to delete by specifying either a long, short or old style option.
When erasing completions, it is possible to either erase all
completions for a specific command by specifying <tt>complete -e -c
COMMAND</tt>, or by specifying a specific completion option to delete
by specifying either a long, short or old style option.
\subsection complete-example Example
The short style option <tt>-o</tt> for the \c gcc command requires
that a file follows it. This can be done using writing <tt>complete
-c gcc -s o -r</tt>.
The short style option `-o` for the `gcc` command requires that a file follows it. This can be done using writing:
The short style option <tt>-d</tt> for the \c grep command requires
that one of the strings 'read', 'skip' or 'recurse' is used. This can
be specified writing <tt>complete -c grep -s d -x -a "read skip
recurse"</tt>.
\fish
complete -c gcc -s o -r
\endfish
The \c su command takes any username as an argument. Usernames are
given as the first colon-separated field in the file /etc/passwd. This
can be specified as: <tt>complete -x -c su -d "Username" -a "(cat
/etc/passwd|cut -d : -f 1)" </tt>.
The short style option `-d` for the `grep` command requires that one of the strings '`read`', '`skip`' or '`recurse`' is used. This can be specified writing:
The \c rpm command has several different modes. If the \c -e or \c
--erase flag has been specified, \c rpm should delete one or more
packages, in which case several switches related to deleting packages
are valid, like the \c nodeps switch.
\fish
complete -c grep -s d -x -a "read skip recurse"
\endfish
The `su` command takes any username as an argument. Usernames are given as the first colon-separated field in the file /etc/passwd. This can be specified as:
\fish
complete -x -c su -d "Username" -a "(cat /etc/passwd | cut -d : -f 1)"
\endfish
The `rpm` command has several different modes. If the `-e` or `--erase` flag has been specified, `rpm` should delete one or more packages, in which case several switches related to deleting packages are valid, like the `nodeps` switch.
This can be written as:
<tt>complete -c rpm -n "__fish_contains_opt -s e erase" -l nodeps -d
"Don't check dependencies"</tt>
\fish
complete -c rpm -n "__fish_contains_opt -s e erase" -l nodeps -d "Don't check dependencies"
\endfish
where \c __fish_contains_opt is a function that checks the commandline
buffer for the presence of a specified set of options.
where `__fish_contains_opt` is a function that checks the command line buffer for the presence of a specified set of options.
To implement an alias, use the `-w` or `--wraps` option:
\fish
complete -c hub -w git
\endfish
Now hub inherits all of the completions from git. Note this can also be specified in a function declaration.

View File

@@ -1,26 +1,38 @@
\section contains contains - test if a word is present in a list
\subsection contains-synopsis Synopsis
<code>contains [OPTIONS] KEY [VALUES...]</code>
\fish{synopsis}
contains [OPTIONS] KEY [VALUES...]
\endfish
\subsection contains-description Description
\c contains tests whether the set \c VALUES contains the string
<code>KEY</code>. If so, \c contains exits with status 0; if not, it exits
with status 1.
`contains` tests whether the set `VALUES` contains the string `KEY`. If so, `contains` exits with status 0; if not, it exits with status 1.
The following options are available:
- \c -i or \c --index print the word index
- \c -h or \c --help display this message
- `-i` or `--index` print the word index
Note that, like GNU tools, `contains` interprets all arguments starting with a `-` as options to contains, until it reaches an argument that is `--` (two dashes). See the examples below.
\subsection contains-example Example
<pre>
for i in ~/bin /usr/local/bin
if not contains \$i \$PATH
set PATH \$PATH \$i
end
end
</pre>
The above code tests if \c ~/bin and \c /usr/local/bin are in the path and adds them if not.
\fish
for i in ~/bin /usr/local/bin
if not contains $i $PATH
set PATH $PATH $i
end
end
\endfish
The above code tests if `~/bin` and `/usr/local/bin` are in the path and adds them if not.
\fish
function hasargs
if contains -- -q $argv
echo '$argv contains a -q option'
end
end
\endfish
The above code checks for `-q` in the argument list, using the `--` argument to demarcate options to `contains` from the key to search for.

View File

@@ -1,19 +1,23 @@
\section continue continue - skip the remainder of the current iteration of the current inner loop
\subsection continue-synopsis Synopsis
<tt>LOOP_CONSTRUCT; [COMMANDS...;] continue; [COMMANDS...;] end</tt>
\fish{synopsis}
LOOP_CONSTRUCT; [COMMANDS...;] continue; [COMMANDS...;] end
\endfish
\subsection continue-description Description
\c continue skips the remainder of the current iteration of the current inner loop, such as a <a href="#for">for</a> loop or a <a href="#while">while</a> loop. It is usually added inside of a conditional block such as an <a href="#if">if</a> statement or a <a href="#switch">switch</a> statement.
`continue` skips the remainder of the current iteration of the current inner loop, such as a <a href="#for">for</a> loop or a <a href="#while">while</a> loop. It is usually added inside of a conditional block such as an <a href="#if">if</a> statement or a <a href="#switch">switch</a> statement.
\subsection continue-example Example
The following code removes all tmp files that do not contain the word smurf.
<pre>
\fish
for i in *.tmp
if grep smurf $i
continue
end
rm $i
end
</pre>
\endfish

View File

@@ -1,29 +1,25 @@
\section count count - count the number of elements of an array
\subsection count-synopsis Synopsis
<tt>count $VARIABLE</tt>
\fish{synopsis}
count $VARIABLE
\endfish
\subsection count-description Description
<tt>count</tt> prints the number of arguments that were
passed to it. This is usually used to find out how many elements an
environment variable array contains.
`count` prints the number of arguments that were passed to it. This is usually used to find out how many elements an environment variable array contains.
\c count does not accept any options, including '-h'.
`count` does not accept any options, including `-h` or `--help`.
`count` exits with a non-zero exit status if no arguments were passed to it, and with zero if at least one argument was passed.
\c count exits with a non-zero exit status if no arguments were passed
to it, and with zero if at least one argument was passed.
\subsection count-example Example
<pre>
\fish
count $PATH
</pre>
# Returns the number of directories in the users PATH variable.
returns the number of directories in the users PATH variable.
<pre>
count *.txt
</pre>
returns the number of files in the current working directory ending with the suffix '.txt'.
# Returns the number of files in the current working directory ending with the suffix '.txt'.
\endfish

View File

@@ -1,138 +1,110 @@
/** \page design Design document
\htmlonly <div class="fish_only_bar"> \endhtmlonly
/**
\page design Design document
\htmlonly[block]
<div class="fish_only_bar">
<div class="design">
<h1 class="interior_title">Design documentation</h1>
\endhtmlonly
\section design-overview Overview
This is a description of the design principles that have been used to
design fish. The fish design has three high level goals. These are:
This is a description of the design principles that have been used to design fish. The fish design has three high level goals. These are:
-# Everything that can be done in other shell languages should be
possible to do in fish, though fish may rely on external commands in
doing so.
-# Fish should be user friendly, but not at the expense of expressiveness.
Most tradeoffs between power and ease of use can be avoided with careful design.
-# Whenever possible without breaking the above goals, fish should
follow the Posix syntax.
-# Everything that can be done in other shell languages should be possible to do in fish, though fish may rely on external commands in doing so.
-# Fish should be user friendly, but not at the expense of expressiveness. Most tradeoffs between power and ease of use can be avoided with careful design.
-# Whenever possible without breaking the above goals, fish should follow the Posix syntax.
To achieve these high-level goals, the fish design relies on a number of more specific design principles. These are presented below, together with a rationale and a few examples for each.
To achieve these high-level goals, the fish design relies on a number
of more specific design principles. These are presented below,
together with a rationale and a few examples for each.
\section ortho The law of orthogonality
The shell language should have a small set of orthogonal features. Any
situation where two features are related but not identical, one of them
should be removed, and the other should be made powerful and general
enough to handle all common use cases of either feature.
The shell language should have a small set of orthogonal features. Any situation where two features are related but not identical, one of them should be removed, and the other should be made powerful and general enough to handle all common use cases of either feature.
Rationale:
Related features make the language larger, which makes it harder to
learn. It also increases the size of the sourcecode, making the
program harder to maintain and update.
Related features make the language larger, which makes it harder to learn. It also increases the size of the source code, making the program harder to maintain and update.
Examples:
- Here documents are too similar to using echo inside of a pipeline.
- Subshells, command substitution and process substitution are strongly related. \c fish only supports command substitution, the others can be achieved either using a block or the psub shellscript function.
- Having both aliases and functions is confusing, especially since both of them have limitations and problems. \c fish functions have none of the drawbacks of either syntax.
- The many Posix quoting styles are silly, especially \$''.
\section sep The law of responsiveness
- Subshells, command substitution and process substitution are strongly related. `fish` only supports command substitution, the others can be achieved either using a block or the psub shellscript function.
- Having both aliases and functions is confusing, especially since both of them have limitations and problems. `fish` functions have none of the drawbacks of either syntax.
- The many Posix quoting styles are silly, especially $''.
\section design-response The law of responsiveness
The shell should attempt to remain responsive to the user at all times, even in the face of contended or unresponsive filesystems. It is only acceptable to block in response to a user initiated action, such as running a command.
Rationale:
Bad performance increases user-facing complexity, because it trains users to recognize and route around slow use cases. It is also incredibly frustrating.
Examples:
- Features like syntax highlighting and autosuggestions must perform all of their disk I/O asynchronously.
- Startup should minimize forks and disk I/O, so that fish can be started even if the system is under load.
\section conf Configurability is the root of all evil
\section design-configurability Configurability is the root of all evil
Every configuration option in a program is a place where the program
is too stupid to figure out for itself what the user really wants, and
should be considered a failiure of both the program and the programmer
who implemented it.
Every configuration option in a program is a place where the program is too stupid to figure out for itself what the user really wants, and should be considered a failure of both the program and the programmer who implemented it.
Rationale:
Different configuration options are a nightmare to maintain, since the
number of potential bugs caused by specific configuration combinations
quickly becomes an issue. Configuration options often imply
assumptions about the code which change when reimplementing the code,
causing issues with backwards compatibility. But mostly, configuration
options should be avoided since they simply should not exist, as the
program should be smart enough to do what is best, or at least a good
enough approximation of it.
Different configuration options are a nightmare to maintain, since the number of potential bugs caused by specific configuration combinations quickly becomes an issue. Configuration options often imply assumptions about the code which change when reimplementing the code, causing issues with backwards compatibility. But mostly, configuration options should be avoided since they simply should not exist, as the program should be smart enough to do what is best, or at least a good enough approximation of it.
Examples:
- Fish allows the user to set various syntax highlighting colors. This is needed because fish does not know what colors the terminal uses by default, which might make some things unreadable. The proper solution would be for text color preferences to be defined centrally by the user for all programs, and for the terminal emulator to send these color properties to fish.
- Fish does not allow you to set the history filename, the number of history entries, different language substyles or any number of other common shell configuration options.
A special note on the evils of configurability is the long list of
very useful features found in some shells, that are not turned on by
default. Both zsh and bash support command specific completions, but
no such completions are shipped with bash by default, and they are
turned off by default in zsh. Other features that zsh support that are
disabled by default include tab-completion of strings containing
wildcards, a sane completion pager and a history file.
A special note on the evils of configurability is the long list of very useful features found in some shells, that are not turned on by default. Both zsh and bash support command-specific completions, but no such completions are shipped with bash by default, and they are turned off by default in zsh. Other features that zsh supports that are disabled by default include tab-completion of strings containing wildcards, a sane completion pager and a history file.
\section user The law of user focus
When designing a program, one should first think about how to make a
intuitive and powerful program. Implementation issues should only be
considered once a user interface has been designed.
When designing a program, one should first think about how to make a intuitive and powerful program. Implementation issues should only be considered once a user interface has been designed.
Rationale:
This design rule is different than the others, since it describes how
one should go about designing new features, not what the features
should be. The problem with focusing on what can be done, and what is
easy to do, is that to much of the implementation is exposed. This
means that the user must know a great deal about the underlying system
to be able to guess how the shell works, it also means that the
language will often be rather low-level.
This design rule is different than the others, since it describes how one should go about designing new features, not what the features should be. The problem with focusing on what can be done, and what is easy to do, is that too much of the implementation is exposed. This means that the user must know a great deal about the underlying system to be able to guess how the shell works, it also means that the language will often be rather low-level.
Examples:
- There should only be one type of input to the shell, lists of commands. Loops, conditionals and variable assignments are all performed through regular commands.
- The differences between builtin commands and shellscript functions should be made as small as possible. Builtins and shellscript functions should have exactly the same types of argument expansion as other commands, should be possible to use in any position in a pipeline, and should support any io redirection.
- The differences between built-in commands and shellscript functions should be made as small as possible. Built-ins and shellscript functions should have exactly the same types of argument expansion as other commands, should be possible to use in any position in a pipeline, and should support any I/O redirection.
- Instead of forking when performing command substitution to provide a fake variable scope, all fish commands are performed from the same process, and fish instead supports true scoping.
- All blocks end with the \c end builtin.
- All blocks end with the `end` built-in.
\section disc The law of discoverability
A program should be designed to make its features as
easy as possible to discover for the user.
A program should be designed to make its features as easy as possible to discover for the user.
Rationale:
A program whose features are discoverable turns a new user into an expert in a shorter span of time, since the user will become an expert on the program simply by using it.
A program whose features are discoverable turns a new user into an
expert in a shorter span of time, since the user will become an expert
on the program simply by using it.
The main benefit of a graphical program over a command line-based
program is discoverability. In a graphical program, one can discover
all the common features by simply looking at the user interface and
guessing what the different buttons, menus and other widgets do. The
traditional way to discover features in commandline programs is
through manual pages. This requires both that the user starts to use a
different program, and the she/he then remembers the new information
until the next time she/he uses the same program.
The main benefit of a graphical program over a command-line-based program is discoverability. In a graphical program, one can discover all the common features by simply looking at the user interface and guessing what the different buttons, menus and other widgets do. The traditional way to discover features in command-line programs is through manual pages. This requires both that the user starts to use a different program, and then they remember the new information until the next time they use the same program.
Examples:
- Everything should be tab-completable, and every tab completion should have a description.
- Every syntax error and error in a builtin command should contain an error message describing what went wrong and a relevant help page. Whenever possible, errors should be flagged red by the syntax highlighter.
- Every syntax error and error in a built-in command should contain an error message describing what went wrong and a relevant help page. Whenever possible, errors should be flagged red by the syntax highlighter.
- The help manual should be easy to read, easily available from the shell, complete and contain many examples
- The language should be uniform, so that once the user understands the command/argument syntax, he will know the whole language, and be able to use tab-completion to discover new featues.
- The language should be uniform, so that once the user understands the command/argument syntax, they will know the whole language, and be able to use tab-completion to discover new features.
\htmlonly[block]
</div>
</div>
\endhtmlonly
*/
\htmlonly </div> \endhtmlonly

View File

@@ -1,12 +1,14 @@
\section dirh dirh - print directory history
\subsection dirh-synopsis Synopsis
<tt>dirh</tt>
\fish{synopsis}
dirh
\endfish
\subsection dirh-description Description
<tt>dirh</tt> prints the current directory history. The current position in the
history is highlighted using the color defined in the
<tt>fish_color_history_current</tt> environment variable.
`dirh` prints the current directory history. The current position in the history is highlighted using the color defined in the `fish_color_history_current` environment variable.
\c dirh does not accept any parameters.
`dirh` does not accept any parameters.
Note that the `cd` command limits directory history to the 25 most recently visited directories. The history is stored in the `$dirprev` and `$dirnext` variables.

View File

@@ -1,10 +1,15 @@
\section dirs dirs - print directory stack
\subsection dirs-synopsis Synopsis
<tt>dirs</tt>
\fish{synopsis}
dirs
dirs -c
\endfish
\subsection dirs-description Description
<tt>dirs</tt> prints the current directory stack, as created by the
<code><a href="#pushd">pushd</a></code> command.
\c dirs does not accept any parameters.
`dirs` prints the current directory stack, as created by the <a href="#pushd">`pushd`</a> command.
With "-c", it clears the directory stack instead.
`dirs` does not accept any parameters.

View File

@@ -1,39 +1,60 @@
\section echo echo - display a line of text
\subsection echo-synopsis Synopsis
<tt>echo [STRING]</tt>
\fish{synopsis}
echo [OPTIONS] [STRING]
\endfish
\subsection echo-description Description
\c echo displays a string of text.
`echo` displays a string of text.
The following options are available:
- \c -n, \c Do not output a newline
- \c -s, \c Do not separate arguments with spaces
- \c -E, \c Disable interpretation of backslash escapes (default)
- \c -e, \c Enable interpretation of backslash escapes
- \c -h, \c --help Display this help
- `-n`, Do not output a newline
- `-s`, Do not separate arguments with spaces
- `-E`, Disable interpretation of backslash escapes (default)
- `-e`, Enable interpretation of backslash escapes
\subsection echo-escapes Escape Sequences
If \c -e is used, the following sequences are recognized:
If `-e` is used, the following sequences are recognized:
- \c \\\\ \c backslash
- \\a alert (BEL)
- \\b backspace
- \\c produce no further output
- \\e escape
- \\f form feed
- \\n new line
- \\r carriage return
- \\t horizontal tab
- \\v vertical tab
- \\0NNN byte with octal value NNN (1 to 3 digits)
- \\xHH byte with hexadecimal value HH (1 to 2 digits)
- `\` backslash
- `\a` alert (BEL)
- `\b` backspace
- `\c` produce no further output
- `\e` escape
- `\f` form feed
- `\n` new line
- `\r` carriage return
- `\t` horizontal tab
- `\v` vertical tab
- `\0NNN` byte with octal value NNN (1 to 3 digits)
- `\xHH` byte with hexadecimal value HH (1 to 2 digits)
\subsection echo-example Example
<tt>echo 'Hello World'</tt> Print hello world to stdout
\fish
echo 'Hello World'
\endfish
Print hello world to stdout
<tt>echo -e 'Top\\nBottom'</tt> Print Top and Bottom on separate lines, using an escape sequence
\fish
echo -e 'Top\nBottom'
\endfish
Print Top and Bottom on separate lines, using an escape sequence

View File

@@ -1,21 +1,23 @@
\section else else - execute command if a condition is not met
\subsection else-synopsis Synopsis
<tt>if CONDITION; COMMANDS_TRUE...; [else; COMMANDS_FALSE...;] end</tt>
\fish{synopsis}
if CONDITION; COMMANDS_TRUE...; [else; COMMANDS_FALSE...;] end
\endfish
\subsection else-description Description
<tt>if</tt> will execute the command \c CONDITION. If the condition's exit
status is 0, the commands \c COMMANDS_TRUE will execute. If it is not 0 and
<tt>else</tt> is given, \c COMMANDS_FALSE will be executed.
`if` will execute the command `CONDITION`. If the condition's exit status is 0, the commands `COMMANDS_TRUE` will execute. If it is not 0 and `else` is given, `COMMANDS_FALSE` will be executed.
\subsection else-example Example
The following code tests whether a file \c foo.txt exists as a regular file.
The following code tests whether a file `foo.txt` exists as a regular file.
<pre>
\fish
if test -f foo.txt
echo foo.txt exists
else
echo foo.txt does not exist
end
</pre>
\endfish

View File

@@ -1,20 +1,23 @@
\section emit emit - Emit a generic event
\subsection block-synopsis Synopsis
<tt>emit EVENT_NAME [ARGUMENTS...]</tt>
\subsection emit-synopsis Synopsis
\fish{synopsis}
emit EVENT_NAME [ARGUMENTS...]
\endfish
\subsection emit-description Description
\c emit emits, or fires, an event. Events are delivered to, or caught by, special functions called event handlers. The arguments are passed to the event handlers as function arguments.
`emit` emits, or fires, an event. Events are delivered to, or caught by, special functions called event handlers. The arguments are passed to the event handlers as function arguments.
\subsection emit-example Example
The following code first defines an event handler for the generic
event named 'test_event', and then emits an event of that type.
The following code first defines an event handler for the generic event named 'test_event', and then emits an event of that type.
<pre>function event_test --on-event test_event
\fish
function event_test --on-event test_event
echo event test: $argv
end
emit test_event something
</pre>
\endfish

View File

@@ -1,19 +1,19 @@
\section end end - end a block of commands.
\subsection end-synopsis Synopsis
<pre>
\fish{synopsis}
begin; [COMMANDS...] end
if CONDITION; COMMANDS_TRUE...; [else; COMMANDS_FALSE...;] end
while CONDITION; COMMANDS...; end
for VARNAME in [VALUES...]; COMMANDS...; end
switch VALUE; [case [WILDCARD...]; [COMMANDS...]; ...] end
</pre>
\endfish
\subsection end-description Description
<tt>end</tt> ends a block of commands.
`end` ends a block of commands.
For more information, read the
documentation for the block constructs, such as \c if, \c for and \c
while.
documentation for the block constructs, such as `if`, `for` and `while`.
The \c end command does not change the current exit status.
The `end` command does not change the current exit status.

View File

@@ -1,19 +1,20 @@
\section eval eval - evaluate the specified commands
\subsection eval-synopsis Synopsis
<tt>eval [COMMANDS...]</tt>
\fish{synopsis}
eval [COMMANDS...]
\endfish
\subsection eval-description Description
<tt>eval</tt> evaluates the specified parameters as a command. If more than one parameter is specified, all parameters will be joined using a space character as a separator.
`eval` evaluates the specified parameters as a command. If more than one parameter is specified, all parameters will be joined using a space character as a separator.
\subsection eval-example Example
The following code will call the ls command. Note that \c fish does not
support the use of environment variables as direct commands; \c eval can
be used to work around this.
The following code will call the ls command. Note that `fish` does not support the use of shell variables as direct commands; `eval` can be used to work around this.
<pre>
\fish
set cmd ls
eval $cmd
</pre>
\endfish

View File

@@ -1,15 +1,15 @@
\section exec exec - execute command in current process
\subsection exec-synopsis Synopsis
<tt>exec COMMAND [OPTIONS...]</tt>
\fish{synopsis}
exec COMMAND [OPTIONS...]
\endfish
\subsection exec-description Description
\c exec replaces the currently running shell with a new command.
On successful completion, \c exec never returns. \c exec cannot be used
inside a pipeline.
`exec` replaces the currently running shell with a new command. On successful completion, `exec` never returns. `exec` cannot be used inside a pipeline.
\subsection exec-example Example
<tt>exec emacs</tt> starts up the emacs text editor, and exits \c fish.
When emacs exits, the session will terminate.
`exec emacs` starts up the emacs text editor, and exits `fish`. When emacs exits, the session will terminate.

View File

@@ -1,14 +1,12 @@
\section exit exit - exit the shell
\subsection exit-synopsis Synopsis
<tt>exit [STATUS]</tt>
\fish{synopsis}
exit [STATUS]
\endfish
\subsection exit-description Description
\c exit causes fish to exit. If <tt>STATUS</tt> is
supplied, it will be converted to an integer and used as the exit
code. Otherwise, the exit code will be that of the last command executed.
`exit` causes fish to exit. If `STATUS` is supplied, it will be converted to an integer and used as the exit code. Otherwise, the exit code will be that of the last command executed.
If exit is called while sourcing a file (using the <a
href="#source">.</a> builtin) the rest of the file will be skipped,
but the shell itself will not exit.
If exit is called while sourcing a file (using the <a href="#source">source</a> builtin) the rest of the file will be skipped, but the shell itself will not exit.

10
doc_src/false.txt Normal file
View File

@@ -0,0 +1,10 @@
\section false false - return an unsuccessful result
\subsection false-synopsis Synopsis
\fish{synopsis}
false
\endfish
\subsection false-description Description
`false` sets the exit status to 1.

View File

@@ -1,9 +1,14 @@
/** \page faq Frequently asked questions
/**
\page faq Frequently asked questions
\htmlonly[block]
<div class="fish_left_bar">
<div class="logo"></div>
<div class="menu faq_menu">
\htmlonly <div class="fish_left_bar fish_left_big"> \endhtmlonly
\endhtmlonly
- <a href='#faq-envvar'>How do I set or clear an environment variable?</a>
- <a href='#faq-login-cmd'>How do I run a command every login? What's fish's equivalent to <tt>.bashrc</tt>?</a>
- <a href='#faq-login-cmd'>How do I run a command every login? What's fish's equivalent to `.bashrc`?</a>
- <a href='#faq-prompt'>How do I set my prompt?</a>
- <a href='#faq-cmd-history'>How do I run a command from history?</a>
- <a href='#faq-subcommand'>How do I run a subcommand? The backtick doesn't work!</a>
@@ -20,257 +25,203 @@
- <a href='#faq-history'>Why doesn't history substitution ("!$" etc.) work?</a>
- <a href='#faq-uninstalling'>How do I uninstall fish?</a>
\htmlonly
\htmlonly[block]
</div>
<div class="fish_right_bar fish_right_little">
</div>
<div class="faq fish_right_bar">
<h1 class="interior_title">Frequently Asked Questions</h1>
\endhtmlonly
\section faq-envvar How do I set or clear an environment variable?
Use the <a href="commands.html#set"><code>set</code></a> command:
Use the <a href="commands.html#set">`set`</a> command:
<pre>set -x key value
set -e key</pre>
\fish{cli-dark}
set -x key value
set -e key
\endfish
<hr>
\section faq-login-cmd How do I run a command every login? What's fish's equivalent to .bashrc?
Edit the file <tt>~/.config/fish/config.fish</tt>, creating it if it does not
exist. (Note the leading period.)
Edit the file `~/.config/fish/config.fish`, creating it if it does not exist (Note the leading period).
<hr>
\section faq-prompt How do I set my prompt?
The prompt is the output of the \c fish_prompt function. Put it in
<tt>~/.config/fish/functions/fish_prompt.fish</tt>. For example, a simple
prompt is:
<pre>function fish_prompt
set_color $fish_color_cwd
echo -n (prompt_pwd)
set_color normal
echo -n ' > '
end</pre>
The prompt is the output of the `fish_prompt` function. Put it in `~/.config/fish/functions/fish_prompt.fish`. For example, a simple prompt is:
You can also use the Web configuration tool,
<a href="commands.html#fish_config"><code>fish_config</code></a>, to preview
and choose from a gallery of sample prompts.
\fish{cli-dark}
function fish_prompt
set_color $fish_color_cwd
echo -n (prompt_pwd)
set_color normal
echo -n ' > '
end
\endfish
You can also use the Web configuration tool, <a href="commands.html#fish_config">`fish_config`</a>, to preview and choose from a gallery of sample prompts.
<hr>
\section faq-cmd-history How do I run a command from history?
Type some part of the command, and then hit the up or down arrow keys to
navigate through history matches.
Type some part of the command, and then hit the @cursor_key{&uarr;,up} or @cursor_key{&darr;,down} arrow keys to navigate through history matches.
<hr>
\section faq-subcommand How do I run a subcommand? The backtick doesn't work!
\c fish uses parentheses for subcommands. For example:
`fish` uses parentheses for subcommands. For example:
<pre>for i in (ls)
echo $i
end</pre>
\fish{cli-dark}
for i in (ls)
echo $i
end
\endfish
<hr>
\section faq-exit-status How do I get the exit status of a command?
Use the \c $status variable. This replaces the \c $? variable used in some
other shells.
Use the `$status` variable. This replaces the `$?` variable used in some other shells.
<hr>
\section faq-single-env How do I set an environment variable for just one command?
<i><tt>SOME_VAR=1 command</tt> produces an error: <tt>Unknown command "SOME_VAR=1"</tt>.</i>
<i>`SOME_VAR=1 command` produces an error: `Unknown command "SOME_VAR=1"`.</i>
Use the \c env command.
Use the `env` command.
<tt>env SOME_VAR=1 command</tt>
`env SOME_VAR=1 command`
You can also declare a local variable in a block:
<pre>begin
set -lx SOME_VAR 1
command
end</pre>
\fish{cli-dark}
begin
set -lx SOME_VAR 1
command
end
\endfish
<hr>
\section faq-customize-colors How do I customize my syntax highlighting colors?
Use the web configuration tool,
<a href="commands.html#fish_config"><code>fish_config</code></a>, or alter the
<a href="index.html#variables-color">\c fish_color family of environment variables</a>.
Use the web configuration tool, <a href="commands.html#fish_config">`fish_config`</a>, or alter the <a href="index.html#variables-color">`fish_color` family of environment variables</a>.
<hr>
\section faq-update-manpage-completions How do I update man page completions?
Use the
<a href="commands.html#fish_update_completions"><tt>fish_update_completions</tt></a>
command.
Use the <a href="commands.html#fish_update_completions">`fish_update_completions`</a> command.
<hr>
\section faq-cwd-symlink Why does cd, $PWD and and various fish commands always resolve symlinked directories to their canonical path?
<i>
For example if ~/images is a symlink to ~/Documents/Images, if I write
'cd images', my prompt will say ~/D/Images, not ~/images.
</i>
<i>For example if `~/images` is a symlink to `~/Documents/Images`, if I write '`cd images`', my prompt will say `~/Documents/Images`, not `~/images`.</i>
Because it is impossible to consistently keep symlinked directories
unresolved. It is indeed possible to do this partially, and many other
shells do so. But it was felt there are enough serious corner cases
that this is a bad idea. Most such issues have to do with how '..' is
handled, and are varitations of the following example:
Because it is impossible to consistently keep symlinked directories unresolved. It is indeed possible to do this partially, and many other shells do so. But it was felt there are enough serious corner cases that this is a bad idea. Most such issues have to do with how '..' is handled, and are variations of the following example:
Writing <code>cd images; ls ..</code> given the above directory
structure would list the contents of ~/Documents, not of ~, even
though using <code>cd ..</code> changes the current directory to ~,
and the prompt, the pwd builtin and many other directory information
sources suggest that the current directory is ~/images and its
parent is ~. This issue is not possible to fix without either making
every single command into a builtin, breaking Unix semantics or
implementing kludges in every single command.
Writing `cd images; ls ..` given the above directory structure would list the contents of `~/Documents`, not of `~`, even though using `cd ..` changes the current directory to `~`, and the prompt, the `pwd` builtin and many other directory information sources suggest that the current directory is `~/images` and its parent is `~`. This issue is not possible to fix without either making every single command into a builtin, breaking Unix semantics or implementing kludges in every single command. This issue can also be seen when doing IO redirection.
This issue can also be seen when doing IO redirection.
Another related issue is that many programs that operate on recursive
directory trees, like the find command, silently ignore symlinked
directories. For example, <code>find $PWD -name '*.txt'</code>
silently fails in shells that don't resolve symlinked paths.
Another related issue is that many programs that operate on recursive directory trees, like the find command, silently ignore symlinked directories. For example, ```find $PWD -name '*.txt'``` silently fails in shells that don't resolve symlinked paths.
<hr>
\section faq-cd-implicit I accidentally entered a directory path and fish changed directory. What happened?
If fish is unable to locate a command with a given name, and it starts with '.', '/' or '~', fish will
test if a directory of that name exists. If it does, it is implicitly
assumed that you want to change working directory. For example, the
fastest way to switch to your home directory is to simply press
<code>~</code> and enter.
If fish is unable to locate a command with a given name, and it starts with '`.`', '`/`' or '`~`', fish will test if a directory of that name exists. If it does, it is implicitly assumed that you want to change working directory. For example, the fastest way to switch to your home directory is to simply press `~` and enter.
<hr>
\section faq-open The open command doesn't work.
The \c open command uses the MIME type database and the <code>.desktop</code> files
used by Gnome and KDE to identify filetypes and default actions. If
at least one of these environments is installed, but the open command is
not working, this probably means that the relevant files are installed
in a non-standard location. Consider <a href="index.html#more-help">asking for
more help</a>.
The `open` command uses the MIME type database and the `.desktop` files used by Gnome and KDE to identify filetypes and default actions. If at least one of these environments is installed, but the open command is not working, this probably means that the relevant files are installed in a non-standard location. Consider <a href="index.html#more-help">asking for more help</a>.
<hr>
\section faq-default How do I make fish my default shell?
If you installed fish manually (e.g. by compiling it, not by using a
package manager), you first need to add fish to the list of shells by
executing the following command (assuming you installed fish in
/usr/local) as root:
If you installed fish manually (e.g. by compiling it, not by using a package manager), you first need to add fish to the list of shells by executing the following command (assuming you installed fish in /usr/local) as root:
\fish{cli-dark}
echo /usr/local/bin/fish >>/etc/shells
\endfish
<code>echo /usr/local/bin/fish >>/etc/shells</code>
If you installed a prepackaged version of fish, the package manager
should have already done this for you.
If you installed a prepackaged version of fish, the package manager should have already done this for you.
In order to change your default shell, type:
<code>chsh -s /usr/local/bin/fish</code>
\fish{cli-dark}
chsh -s /usr/local/bin/fish
\endfish
You may need to adjust the above path to e.g. \c /usr/bin/fish. Use the command <code>which fish</code> if you are unsure of where fish is installed.
You may need to adjust the above path to e.g. `/usr/bin/fish`. Use the command `which fish` if you are unsure of where fish is installed.
Unfortunately, there is no way to make the changes take effect at once.
You will need to log out and back in again.
Unfortunately, there is no way to make the changes take effect at once. You will need to log out and back in again.
<hr>
\section faq-titlebar I'm seeing weird output before each prompt when using screen. What's wrong?
Quick answer:
Run the following command in fish:
<pre>
echo 'function fish_title;end' &gt; ~/.config/fish/config.fish
</pre>
\fish{cli-dark}
function fish_title; end; funcsave fish_title
\endfish
Problem solved!
The long answer:
Fish is trying to set the titlebar message of your terminal. While
screen itself supports this feature, your terminal does
not. Unfortunately, when the underlying terminal doesn't support
setting the titlebar, screen simply passes through the escape codes
and text to the underlying terminal instead of ignoring them. It is
impossible detect and resolve this problem from inside fish since fish
has no way of knowing what the underlying terminal type is. For now,
the only way to fix this is to unset the titlebar message, as
suggested above.
Fish is trying to set the titlebar message of your terminal. While screen itself supports this feature, your terminal does not. Unfortunately, when the underlying terminal doesn't support setting the titlebar, screen simply passes through the escape codes and text to the underlying terminal instead of ignoring them. It is impossible to detect and resolve this problem from inside fish since fish has no way of knowing what the underlying terminal type is. For now, the only way to fix this is to unset the titlebar message, as suggested above.
Note that fish has a default titlebar message, which will be used if
the fish_title function is undefined. So simply unsetting the
fish_title function will not work.
Note that fish has a default titlebar message, which will be used if the fish_title function is undefined. So simply unsetting the fish_title function will not work.
<hr>
\section faq-greeting How do I change the greeting message?
Change the value of the variable fish_greeting. For example, to remove
the greeting use:
Change the value of the variable `fish_greeting` or create a `fish_greeting` function. For example, to remove the greeting use:
<pre>
\fish{cli-dark}
set fish_greeting
</pre>
\endfish
<hr>
\section faq-history Why doesn't history substitution ("!$" etc.) work?
Because history substitution is an awkward interface that was invented before
interactive line editing was even possible. Fish drops it in favor of
perfecting the interactive history recall interface. Switching requires a
small change of habits: if you want to modify an old line/word, first recall
it, then edit. E.g. don't type "sudo !!" - first press Up, then Home, then
type "sudo ".
Because history substitution is an awkward interface that was invented before interactive line editing was even possible. Fish drops it in favor of perfecting the interactive history recall interface. Switching requires a small change of habits: if you want to modify an old line/word, first recall it, then edit. E.g. don't type "sudo !!" - first press Up, then Home, then type "sudo ".
Fish history recall is very simple yet effective:
- As in any modern shell, the Up arrow recalls whole lines, starting from the last line executed. A single press replaces "!!", later presses replace "!-3" and the like.
- If the line you want is far back in the history, type any part of the line and then press Up one or more times. This will constrain the recall to lines that include this text, and you will get to the line you want much faster. This replaces "!vi", "!?bar.c" and the like.
- Alt+Up recalls individual arguments, starting from the last argument in the last line executed. A single press replaces "!$", later presses replace "!!:4" and the like.
- If the argument you want is far back in history (e.g. 2 lines back - that's a lot of words!), type any part of it and then press Alt+Up. This will show only arguments containing that part and you will get what you want much faster. Try it out, this is very convenient!
- If you want to reuse several arguments from the same line ("!!:3*" and the like), consider recalling the whole line and removing what you don't need (Alt+D and Alt+Backspace are your friends).
- As in any modern shell, the Up arrow, @cursor_key{&uarr;,Up} recalls whole lines, starting from the last line executed. A single press replaces "!!", later presses replace "!-3" and the like.
- If the line you want is far back in the history, type any part of the line and then press Up one or more times. This will constrain the recall to lines that include this text, and you will get to the line you want much faster. This replaces "!vi", "!?bar.c" and the like.
- @key{Alt,&uarr;,Up} recalls individual arguments, starting from the last argument in the last line executed. A single press replaces "!$", later presses replace "!!:4" and the like.
- If the argument you want is far back in history (e.g. 2 lines back - that's a lot of words!), type any part of it and then press @key{Alt,&uarr;,Up}. This will show only arguments containing that part and you will get what you want much faster. Try it out, this is very convenient!
- If you want to reuse several arguments from the same line ("!!:3*" and the like), consider recalling the whole line and removing what you don't need (@key{Alt,D} and @key{Alt,Backspace} are your friends).
See <a href='index.html#editor'>documentation</a> for more details about line editing in fish.
<hr>
\section faq-uninstalling Uninstalling fish
Should you wish to uninstall fish, first ensure fish is not set as your shell. Run <code>chsh -s /bin/bash</code> if you are not sure.
Should you wish to uninstall fish, first ensure fish is not set as your shell. Run `chsh -s /bin/bash` if you are not sure.
Next, do the following (assuming fish was installed to /usr/local):
<pre>
\fish{cli-dark}
rm -Rf /usr/local/etc/fish /usr/local/share/fish ~/.config/fish
rm /usr/local/share/man/man1/fish*.1
cd /usr/local/bin
rm -f fish mimedb fish_pager fishd fish_indent
</pre>
rm -f fish fish_indent
\endfish
*/
<hr>
\section faq-reserved-chars Unicode private-use characters reserved by fish
\htmlonly
Fish reserves the <a href="http://www.unicode.org/faq/private_use.html">Unicode private-use character range</a> from U+F600 thru U+F73F for internal use. Any attempt to feed characters in that range to fish will result in them being replaced by the Unicode "replacement character" U+FFFD. This includes both interactive input as well as any file read by fish (but not programs run by fish).
\htmlonly[block]
</div>
\endhtmlonly
*/

View File

@@ -1,14 +1,17 @@
\section fg fg - bring job to foreground
\subsection fg-synopsis Synopsis
<tt>fg [PID]</tt>
\fish{synopsis}
fg [PID]
\endfish
\subsection fg-description Description
\c fg brings the specified <a href="index.html#syntax-job-control">job</a> to the foreground, resuming it if it is stopped. While a foreground job is
executed, fish is suspended. If no job is specified, the last job to be used is put in the foreground. If PID is specified, the job with the specified group ID is put in the foreground.
`fg` brings the specified <a href="index.html#syntax-job-control">job</a> to the foreground, resuming it if it is stopped. While a foreground job is executed, fish is suspended. If no job is specified, the last job to be used is put in the foreground. If PID is specified, the job with the specified group ID is put in the foreground.
The PID of the desired process is usually found by using <a href="index.html#expand-process">process expansion</a>.
\subsection fg-example Example
<tt>fg \%1</tt> will put the job with job ID 1 in the foreground.
`fg %1` will put the job with job ID 1 in the foreground.

View File

@@ -1,25 +1,28 @@
\section fish fish - the friendly interactive shell
\subsection fish-synopsis Synopsis
fish [-h] [-v] [-c command] [FILE [ARGUMENTS...]]
\fish{synopsis}
fish [OPTIONS] [-c command] [FILE [ARGUMENTS...]]
\endfish
\subsection fish-description Description
\c fish is a command-line shell written mainly with interactive use in mind. The
full manual is available <a href='index.html'>in HTML</a> by using the
<a href='#help'>help</a> command from inside fish.
`fish` is a command-line shell written mainly with interactive use in mind. The full manual is available <a href='index.html'>in HTML</a> by using the <a href='#help'>help</a> command from inside fish.
The following options are available:
- <code>-c</code> or <code>--command=COMMANDS</code> evaluate the specified commands instead of reading from the commandline
- <code>-d</code> or <code>--debug-level=DEBUG_LEVEL</code> specify the verbosity level of fish. A higher number means higher verbosity. The default level is 1.
- <code>-h</code> or <code>--help</code> display help and exit
- <code>-i</code> or <code>--interactive</code> specify that fish is to run in interactive mode
- <code>-l</code> or <code>--login</code> specify that fish is to run as a login shell
- <code>-n</code> or <code>--no-execute</code> do not execute any commands, only perform syntax checking
- <code>-p</code> or <code>--profile=PROFILE_FILE</code> when fish exits, output timing information on all executed commands to the specified file
- <code>-v</code> or <code>--version</code> display version and exit
- `-c` or `--command=COMMANDS` evaluate the specified commands instead of reading from the commandline
The fish exit status is generally the exit status of the last
foreground command. If fish is exiting because of a parse error, the
exit status is 127.
- `-d` or `--debug-level=DEBUG_LEVEL` specify the verbosity level of fish. A higher number means higher verbosity. The default level is 1.
- `-i` or `--interactive` specify that fish is to run in interactive mode
- `-l` or `--login` specify that fish is to run as a login shell
- `-n` or `--no-execute` do not execute any commands, only perform syntax checking
- `-p` or `--profile=PROFILE_FILE` when fish exits, output timing information on all executed commands to the specified file
- `-v` or `--version` display version and exit
The fish exit status is generally the exit status of the last foreground command. If fish is exiting because of a parse error, the exit status is 127.

View File

@@ -2,21 +2,17 @@
\subsection fish_config-description Description
\c fish_config starts the web-based configuration interface.
`fish_config` starts the web-based configuration interface.
The web interface allows you to view your functions, variables and history, and
to make changes to your prompt and color configuration.
The web interface allows you to view your functions, variables and history, and to make changes to your prompt and color configuration.
\c fish_config starts a local web server and then opens a web browser window; when
you have finished, close the browser window and then press the Enter key to
terminate the configuration session.
`fish_config` starts a local web server and then opens a web browser window; when you have finished, close the browser window and then press the Enter key to terminate the configuration session.
<code>fish_config</code> optionally accepts name of the initial configuration tab. For e.g. <code>fish_config history</code> will start configuration interface with history tab.
`fish_config` optionally accepts name of the initial configuration tab. For e.g. `fish_config history` will start configuration interface with history tab.
If the `BROWSER` environment variable is set, it will be used as the name of the web browser to open instead of the system default.
If the \c BROWSER environment variable is set, it will be used as the name
of the web browser to open instead of the system default.
\subsection fish_config-example Example
\c fish_config opens a new web browser window and allows you to configure certain
fish settings.
`fish_config` opens a new web browser window and allows you to configure certain fish settings.

View File

@@ -1,17 +1,22 @@
\section fish_indent fish_indent - indenter and prettifier
\subsection fish_indent-synopsis Synopsis
<tt>fish_indent [options]</tt>
\fish{synopsis}
fish_indent [OPTIONS]
\endfish
\subsection fish_indent-description Description
\c fish_indent is used to indent a piece of fish
code. \c fish_indent reads commands from standard input and outputs
them to standard output.
`fish_indent` is used to indent a piece of fish code. `fish_indent` reads commands from standard input and outputs them to standard output.
The following options are available:
- <tt>-h</tt> or <tt>--help</tt> displays this help message and then exits
- <tt>-i</tt> or <tt>--no-indent</tt> do not indent commands
- <tt>-v</tt> or <tt>--version</tt> displays the current fish version and then exits
- `-d` or `--dump` dumps information about the parsed fish commands to stderr
- `-i` or `--no-indent` do not indent commands; only reformat to one job per line
- `-v` or `--version` displays the current fish version and then exits
- `--ansi` colorizes the output using ANSI escape sequences, appropriate for the current $TERM, using the colors defined in the environment (such as `$fish_color_command`).
- `--html` outputs HTML, which supports syntax highlighting if the appropriate CSS is defined. The CSS class names are the same as the variable names, such as `fish_color_command`

View File

@@ -1,7 +0,0 @@
\section fish_pager fish_pager - internal command used by fish
\subsection fish_pager-description Description
\c fish_pager is used internally by fish. It should not be used by other
commands, as its interface is liable to change in the future.

View File

@@ -1,28 +1,29 @@
\section fish_prompt fish_prompt - define the appearance of the command line prompt
\subsection fish_prompt-synopsis Synopsis
<pre>function fish_prompt
\fish{synopsis}
function fish_prompt
...
end</pre>
end
\endfish
\subsection fish_prompt-description Description
By defining the \c fish_prompt function, the user can choose a custom
prompt. The \c fish_prompt function is executed when the prompt is to
be shown, and the output is used as a prompt.
By defining the `fish_prompt` function, the user can choose a custom prompt. The `fish_prompt` function is executed when the prompt is to be shown, and the output is used as a prompt.
The exit status of commands within \c fish_prompt will not modify the value of <a href="index.html#variables-status">$status</a> outside of the \c fish_prompt function.
The exit status of commands within `fish_prompt` will not modify the value of <a href="index.html#variables-status">$status</a> outside of the `fish_prompt` function.
`fish` ships with a number of example prompts that can be chosen with the `fish_config` command.
\c fish ships with a number of example prompts that can be chosen with the
\c fish_config command.
\subsection fish_prompt-example Example
A simple prompt:
<pre>
\fish
function fish_prompt -d "Write out the prompt"
printf '\%s\@\%s\%s\%s\%s> ' (whoami) (hostname|cut -d . -f 1) (set_color \$fish_color_cwd) (prompt_pwd) (set_color normal)
printf '%s@%s%s%s%s> ' (whoami) (hostname | cut -d . -f 1) \
(set_color $fish_color_cwd) (prompt_pwd) (set_color normal)
end
</pre>
\endfish

View File

@@ -1,23 +1,26 @@
\section fish_right_prompt fish_right_prompt - define the appearance of the right-side command line prompt
\subsection fish_right_prompt-synopsis Synopsis
<pre>function fish_right_prompt
\fish{synopsis}
function fish_right_prompt
...
end</pre>
end
\endfish
\subsection fish_right_prompt-description Description
\c fish_right_prompt is similar to \c fish_prompt, except that it appears on the right side of the terminal window.
`fish_right_prompt` is similar to `fish_prompt`, except that it appears on the right side of the terminal window.
Multiple lines are not supported in \c fish_right_prompt.
Multiple lines are not supported in `fish_right_prompt`.
\subsection fish_prompt-example Example
\subsection fish_right_prompt-example Example
A simple right prompt:
<pre>
\fish
function fish_right_prompt -d "Write out the right prompt"
date "+%m/%d/%y"
date '+%m/%d/%y'
end
</pre>
\endfish

View File

@@ -2,8 +2,8 @@
\subsection fish_update_completions-description Description
\c fish_update_completions parses manual pages installed on the system, and attempts to create completion files in the \c fish configuration directory.
`fish_update_completions` parses manual pages installed on the system, and attempts to create completion files in the `fish` configuration directory.
This does not overwrite custom completions.
There are no parameters for <code>fish_update_completions</code>.
There are no parameters for `fish_update_completions`.

10
doc_src/fish_vi_mode.txt Normal file
View File

@@ -0,0 +1,10 @@
\section fish_vi_mode fish_vi_mode - Enable vi mode
\subsection fish_vi_mode-synopsis Synopsis
\fish{synopsis}
fish_vi_mode
\endfish
\subsection fish_vi_mode-description Description
`fish_vi_mode` enters a vi-like command editing mode. To always start in vi mode, add `fish_vi_mode` to your `config.fish` file.

View File

@@ -1,33 +0,0 @@
\section fishd fishd - universal variable daemon
\subsection fishd-synopsis Synopsis
<tt>fishd [(-h|--help|-v|--version)]</tt>
\subsection fishd-description Description
The \c fishd daemon is used to load, save and distribute universal
variable information. \c fish automatically connects to \c fishd via a socket
on startup.
\c fishd is started and stopped automatically.
The following options are available if starting \c fishd manually:
- <tt>-h</tt> or <tt>--help</tt> displays this help message and then exits
- <tt>-v</tt> or <tt>--version</tt> displays the current fish version and then exits
\subsection fishd-files Files
- \c ~/.config/fish/fishd.MACHINE_ID - permanent storage location for universal
variable data. \c MACHINE_ID is generally based on the machine's MAC address.
The data is stored as a set of \c set and \c set_export commands such as
would be parsed by fishd. The file must always be stored in YAML format.
If an instance of fishd is running (which is generally the case), manual
modifications to \c ~/.fishd.MACHINE_ID will be lost. Do NOT edit this file manually!
- \c /tmp/fishd.socket.USERNAME - the socket which fishd uses to communicate
with all clients.
- /tmp/fishd.log.USERNAME - the fishd log file

View File

@@ -1,25 +1,21 @@
\section for for - perform a set of commands multiple times.
\subsection for-synopsis Synopsis
<tt>for VARNAME in [VALUES...]; COMMANDS...; end</tt>
\fish{synopsis}
for VARNAME in [VALUES...]; COMMANDS...; end
\endfish
\subsection for-description Description
<tt>for</tt> is a loop construct. It will perform the commands specified by
\c COMMANDS multiple times. On each iteration, the environment variable specified by
\c VARNAME is assigned a new value from \c VALUES. If \c VALUES is empty, \c COMMANDS will
not be executed at all.
`for` is a loop construct. It will perform the commands specified by `COMMANDS` multiple times. On each iteration, the local variable specified by `VARNAME` is assigned a new value from `VALUES`. If `VALUES` is empty, `COMMANDS` will not be executed at all.
\subsection for-example Example
The command
\fish
for i in foo bar baz; echo $i; end
<tt>for i in foo bar baz; echo $i; end</tt>
would output:
<pre>
# would output:
foo
bar
baz
</pre>
\endfish

View File

@@ -1,21 +1,18 @@
\section funced funced - edit a function interactively
\subsection funced-synopsis Synopsis
<code>funced [OPTIONS] NAME</code>
\fish{synopsis}
funced [OPTIONS] NAME
\endfish
\subsection funced-description Description
\c funced provides an interface to edit the definition of the function
<code>NAME</code>.
`funced` provides an interface to edit the definition of the function `NAME`.
If the \c $EDITOR environment variable is set, it will be used as the program
to edit the function. Otherwise, a built-in editor will be used.
If the `$VISUAL` environment variable is set, it will be used as the program to edit the function. If `$VISUAL` is unset but `$EDITOR` is set, that will be used. Otherwise, a built-in editor will be used.
If there is no function called \c NAME a new function will be created with
the specified name
If there is no function called `NAME` a new function will be created with the specified name
- <code>-e command</code> or <code>--editor command</code> Open the function
body inside the text editor given by the command (for example, "vi"). The
command 'fish' will use the built-in editor.
- <code>-i</code> or <code>--interactive</code> Open function body in the
built-in editor.
- `-e command` or `--editor command` Open the function body inside the text editor given by the command (for example, "vi"). The command 'fish' will use the built-in editor.
- `-i` or `--interactive` Open function body in the built-in editor.

View File

@@ -1,13 +1,12 @@
\section funcsave funcsave - save the definition of a function to the user's autoload directory
\subsection funcsave-synopsis Synopsis
<tt>funcsave FUNCTION_NAME</tt>
\fish{synopsis}
funcsave FUNCTION_NAME
\endfish
\subsection funcsave-description Description
\c funcsave saves the current definition of a function to
a file in the fish configuration directory. This function will be automatically
loaded by current and future fish
sessions. This can be useful if you have interactively created a new
function and wish to save it for later use.
`funcsave` saves the current definition of a function to a file in the fish configuration directory. This function will be automatically loaded by current and future fish sessions. This can be useful if you have interactively created a new function and wish to save it for later use.
Note that because fish loads functions on-demand, saved functions will not function as <a href="index.html#event">event handlers</a> until they are run or sourced otherwise. To activate an event handler for every new shell, add the function to your <a href="index.html#initialization">shell initialization file</a> instead of using `funcsave`.

View File

@@ -1,61 +1,93 @@
\section function function - create a function
\subsection function-synopsis Synopsis
<code>function [OPTIONS] NAME; BODY; end </code>
\fish{synopsis}
function NAME [OPTIONS]; BODY; end
\endfish
\subsection function-description Description
\c function creates a new function \c NAME with the body <code>BODY</code>.
`function` creates a new function `NAME` with the body `BODY`.
A function is a list of commands that will be executed when the name of the
function is given as a command.
A function is a list of commands that will be executed when the name of the function is given as a command.
The following options are available:
- <code>-a NAMES</code> or <code>--argument-names NAMES</code> assigns the value of successive command-line arguments to the names given in NAMES.
- <code>-d DESCRIPTION</code> or \c --description=DESCRIPTION is a description of what the function does, suitable as a completion description.
- <code>-e</code> or <code>--on-event EVENT_NAME</code> tells fish to run this function when the specified named event is emitted. Fish internally generates named events e.g. when showing the prompt.
- <code>-j PID</code> or <code> --on-job-exit PID</code> tells fish to run this function when the job with group ID PID exits. Instead of PID, the string 'caller' can be specified. This is only legal when in a command substitution, and will result in the handler being triggered by the exit of the job which created this command substitution.
- <code>-p PID</code> or <code> --on-process-exit PID</code> tells fish to run this function when the fish child process with process ID PID exits.
- <code>-s</code> or <code>--on-signal SIGSPEC</code> tells fish to run this function when the signal SIGSPEC is delivered. SIGSPEC can be a signal number, or the signal name, such as SIGHUP (or just HUP).
- \c -S or \c --no-scope-shadowing allows the function to access the variables of calling functions. Normally, any variables inside the function that have the same name as variables from the calling function are "shadowed", and their contents is independent of the calling function.
- <code>-v</code> or <code>--on-variable VARIABLE_NAME</code> tells fish to run this function when the variable VARIABLE_NAME changes value.
- `-a NAMES` or `--argument-names NAMES` assigns the value of successive command-line arguments to the names given in NAMES.
If the user enters any additional arguments after the function, they
are inserted into the environment <a href="index.html#variables-arrays">variable array</a>
<code>$argv</code>. If the \c --argument-names option is provided, the arguments are
also assigned to names specified in that option.
- `-d DESCRIPTION` or `--description=DESCRIPTION` is a description of what the function does, suitable as a completion description.
- `-w WRAPPED_COMMAND` or `--wraps=WRAPPED_COMMAND` causes the function to inherit completions from the given wrapped command. See the documentation for <a href="#complete">`complete`</a> for more information.
- `-e` or `--on-event EVENT_NAME` tells fish to run this function when the specified named event is emitted. Fish internally generates named events e.g. when showing the prompt.
- `-v` or `--on-variable VARIABLE_NAME` tells fish to run this function when the variable VARIABLE_NAME changes value.
- `-j PGID` or `--on-job-exit PGID` tells fish to run this function when the job with group ID PGID exits. Instead of PGID, the string 'caller' can be specified. This is only legal when in a command substitution, and will result in the handler being triggered by the exit of the job which created this command substitution.
- `-p PID` or `--on-process-exit PID` tells fish to run this function when the fish child process with process ID PID exits.
- `-s` or `--on-signal SIGSPEC` tells fish to run this function when the signal SIGSPEC is delivered. SIGSPEC can be a signal number, or the signal name, such as SIGHUP (or just HUP).
- `-S` or `--no-scope-shadowing` allows the function to access the variables of calling functions. Normally, any variables inside the function that have the same name as variables from the calling function are "shadowed", and their contents is independent of the calling function.
- `-V` or `--inherit-variable NAME` snapshots the value of the variable `NAME` and defines a local variable with that same name and value when the function is executed.
If the user enters any additional arguments after the function, they are inserted into the environment <a href="index.html#variables-arrays">variable array</a> `$argv`. If the `--argument-names` option is provided, the arguments are also assigned to names specified in that option.
By using one of the event handler switches, a function can be made to run automatically at specific events. The user may generate new events using the <a href="#emit">emit</a> builtin. Fish generates the following named events:
- \c fish_prompt, which is emitted whenever a new fish prompt is about to be displayed.
- \c fish_command_not_found, which is emitted whenever a command lookup failed.
- `fish_prompt`, which is emitted whenever a new fish prompt is about to be displayed.
- `fish_command_not_found`, which is emitted whenever a command lookup failed.
- `fish_preexec`, which is emitted right before executing an interactive command. The commandline is passed as the first parameter.
Note: This event will be emitted even if the command is invalid. The commandline parameter includes the entire commandline verbatim, and may potentially include newlines.
- `fish_postexec`, which is emitted right after executing an interactive command. The commandline is passed as the first parameter.
Note: This event will be emitted even if the command is invalid. The commandline parameter includes the entire commandline verbatim, and may potentially include newlines.
\subsection function-example Example
<pre>
\fish
function ll
ls -l $argv
ls -l $argv
end
</pre>
\endfish
will run the \c ls command, using the \c -l option, while passing on any additional files and switches to \c ls.
will run the `ls` command, using the `-l` option, while passing on any additional files and switches to `ls`.
<pre>
\fish
function mkdir -d "Create a directory and set CWD"
command mkdir $argv
if test $status = 0
switch $argv[(count $argv)]
case '-*'
command mkdir $argv
if test $status = 0
switch $argv[(count $argv)]
case '-*'
case '*'
cd $argv[(count $argv)]
return
end
end
case '*'
cd $argv[(count $argv)]
return
end
end
end
</pre>
\endfish
will run the mkdir command, and if it is successful, change the
current working directory to the one just created.
This will run the `mkdir` command, and if it is successful, change the current working directory to the one just created.
\fish
function notify
set -l job (jobs -l -g)
or begin; echo "There are no jobs" >&2; return 1; end
function _notify_job_$job --on-job-exit $job --inherit-variable job
echo -n \a # beep
functions -e _notify_job_$job
end
end
\endfish
This will beep when the most recent job completes.

View File

@@ -1,51 +1,52 @@
\section functions functions - print or erase functions
\subsection function-synopsis Synopsis
<pre>functions [-n]
\subsection functions-synopsis Synopsis
\fish{synopsis}
functions [ -a | --all ] [ -n | --names ]
functions -c OLDNAME NEWNAME
functions -d DESCRIPTION FUNCTION
functions [-eq] FUNCTIONS...</pre>
functions [ -e | -q ] FUNCTIONS...
\endfish
\subsection functions-description Description
\c functions prints or erases functions.
`functions` prints or erases functions.
The following options are available:
- <code>-a</code> or <code>--all</code> lists all functions, even those whose name start with an underscore.
- <code>-c OLDNAME NEWNAME</code> or <code>--copy OLDNAME NEWNAME</code> creates a new function named NEWNAME, using the definition of the OLDNAME function.
- <code>-d DESCRIPTION</code> or <code>--description=DESCRIPTION</code> changes the description of this function.
- <code>-e</code> or <code>--erase</code> causes the specified functions to be erased.
- <code>-h</code> or <code>--help</code> displays a help message and exits.
- <code>-n</code> or <code>--names</code> lists the names of all defined functions.
- <code>-q</code> or <code>--query</code> tests if the specified functions exist.
- `-a` or `--all` lists all functions, even those whose name start with an underscore.
The default behavior of <code>functions</code>, when called with no arguments,
is to print the names of all defined functions. Unless the \c -a option is
given, no functions starting with underscores are not included in the output.
- `-c OLDNAME NEWNAME` or `--copy OLDNAME NEWNAME` creates a new function named NEWNAME, using the definition of the OLDNAME function.
If any non-option parameters are given, the definition of the specified
functions are printed.
- `-d DESCRIPTION` or `--description=DESCRIPTION` changes the description of this function.
Automatically loaded functions cannot be removed using <code>functions
-e</code>. Either remove the definition file or change the
$fish_function_path variable to remove autoloaded functions.
- `-e` or `--erase` causes the specified functions to be erased.
Copying a function using \c -c copies only the body of the function, and
does not attach any event notifications from the original function.
- `-n` or `--names` lists the names of all defined functions.
Only one function's description can be changed in a single invocation
of <code>functions -d</code>.
- `-q` or `--query` tests if the specified functions exist.
The default behavior of `functions`, when called with no arguments, is to print the names of all defined functions. Unless the `-a` option is given, no functions starting with underscores are not included in the output.
If any non-option parameters are given, the definition of the specified functions are printed.
Automatically loaded functions cannot be removed using `functions -e`. Either remove the definition file or change the $fish_function_path variable to remove autoloaded functions.
Copying a function using `-c` copies only the body of the function, and does not attach any event notifications from the original function.
Only one function's description can be changed in a single invocation of `functions -d`.
The exit status of `functions` is the number of functions specified in the argument list that do not exist, which can be used in concert with the `-q` option.
The exit status of \c functions is the number of functions
specified in the argument list that do not exist, which can be used in
concert with the \c -q option.
\subsection functions-example Examples
\fish
functions -n
# Displays a list of currently-defined functions
<code>functions -n</code> displays a list of currently-defined functions.
functions -c foo bar
# Copies the 'foo' function to a new function called 'bar'
<code>functions -c foo bar</code> copies the \c foo function to a new function called
<code>bar</code>.
<code>functions -e bar</code> erases the function <code>bar</code>.
functions -e bar
# Erases the function `bar`
\endfish

View File

@@ -1,20 +1,21 @@
\section help help - display fish documentation
\subsection help-synopsis Synopsis
<tt>help [SECTION]</tt>
\fish{synopsis}
help [SECTION]
\endfish
\subsection help-description Description
\c help displays the fish help documentation.
`help` displays the fish help documentation.
If a \c SECTION is specified, the help for that command is shown.
If a `SECTION` is specified, the help for that command is shown.
If the BROWSER environment variable is set, it will be used to display the
documentation. Otherwise, fish will search for a suitable browser.
If the BROWSER environment variable is set, it will be used to display the documentation. Otherwise, fish will search for a suitable browser.
Note that most builtin commands display their help in the terminal when given the `--help` option.
Note that most builtin commands display their help in the terminal when
given the <tt>--help</tt> option.
\subsection help-example Example
<tt>help fg</tt> shows the documentation for the \c fg builtin.
`help fg` shows the documentation for the `fg` builtin.

View File

@@ -1,44 +1,44 @@
\section history history - Show and manipulate command history
\subsection history-synopsis Synopsis
<pre>
history (--save | --clear)
history (--search | --delete ) (--prefix "prefix string" | --contains "search string")
</pre>
\fish{synopsis}
history ( --merge | --save | --clear )
history ( --search | --delete ) [ --prefix "prefix string" | --contains "search string" ]
\endfish
\subsection history-description Description
\c history is used to list, search and delete the history of commands used.
`history` is used to list, search and delete the history of commands used.
The following options are available:
- `--merge` immediately incorporates history changes from other sessions. Ordinarily `fish` ignores history changes from sessions started after the current one. This command applies those changes immediately.
- \c --save saves all changes in the history file. The shell automatically
saves the history file; this option is provided for internal use.
- \c --clear clears the history file. A prompt is displayed before the history
is erased.
- \c --search returns history items in keeping with the \c --prefix or
\c --contains options.
- \c --delete deletes history items.
- \c --prefix searches or deletes items in the history that begin with the
specified text string.
- \c --contains searches or deletes items in the history that contain the
specified text string.
- `--save` saves all changes in the history file. The shell automatically saves the history file; this option is provided for internal use.
If \c --search is specified without \c --contains or <code>--prefix</code>,
\c --contains will be assumed.
- `--clear` clears the history file. A prompt is displayed before the history is erased.
- `--search` returns history items in keeping with the `--prefix` or `--contains` options.
- `--delete` deletes history items.
- `--prefix` searches or deletes items in the history that begin with the specified text string.
- `--contains` searches or deletes items in the history that contain the specified text string.
If `--search` is specified without `--contains` or `--prefix`, `--contains` will be assumed.
If `--delete` is specified without `--contains` or `--prefix`, only a history item which exactly matches the parameter will be erased. No prompt will be given. If `--delete` is specified with either of these parameters, an interactive prompt will be displayed before any items are deleted.
If \c --delete is specified without \c --contains or <code>--prefix</code>,
only a history item which exactly matches the parameter will be erased. No
prompt will be given. If \c --delete is specified with either of these
parameters, an interactive prompt will be displayed before any items are
deleted.
\subsection history-examples Example
<code>history --clear</code> deletes all history items
\fish
history --clear
# Deletes all history items
<code>history --search --contains "foo"</code> outputs a list of all previous
commands containing the string "foo".
history --search --contains "foo"
# Outputs a list of all previous commands containing the string "foo".
<code>history --delete --prefix "foo"</code> interactively deletes the record
of previous commands which start with "foo".
history --delete --prefix "foo"
# Interactively deletes the record of previous commands which start with "foo".
\endfish

View File

@@ -1,36 +1,41 @@
\section if if - conditionally execute a command
\subsection if-synopsis Synopsis
<tt>if CONDITION; COMMANDS_TRUE...; [else if CONDITION2; COMMANDS_TRUE2...;] [else; COMMANDS_FALSE...;] end</tt>
\fish{synopsis}
if CONDITION; COMMANDS_TRUE...;
[else if CONDITION2; COMMANDS_TRUE2...;]
[else; COMMANDS_FALSE...;]
end
\endfish
\subsection if-description Description
<tt>if</tt> will execute the command \c CONDITION. If the condition's
exit status is 0, the commands \c COMMANDS_TRUE will execute. If the
exit status is not 0 and <tt>else</tt> is given, \c COMMANDS_FALSE will
be executed.
`if` will execute the command `CONDITION`. If the condition's exit status is 0, the commands `COMMANDS_TRUE` will execute. If the exit status is not 0 and `else` is given, `COMMANDS_FALSE` will be executed.
In order to use the exit status of multiple commands as the condition
of an if block, use <a href="#begin"><tt>begin; ...; end</tt></a> and
the short circuit commands <a href="commands.html#and"><tt>and</tt></a>
and <a href="commands.html#or"><tt>or</tt></a>.
In order to use the exit status of multiple commands as the condition of an if block, use <a href="#begin">`begin; ...; end`</a> and the short circuit commands <a href="commands.html#and">`and`</a> and <a href="commands.html#or">`or`</a>.
The exit status of the last foreground command to exit can always be accessed using the <a href="index.html#variables-status">$status</a> variable.
The exit status of the last foreground command to exit can always be
accessed using the <a href="index.html#variables-status">$status</a>
variable.
\subsection if-example Example
<pre>
The following code will print `foo.txt exists` if the file foo.txt exists and is a regular file, otherwise it will print `bar.txt exists` if the file bar.txt exists and is a regular file, otherwise it will print `foo.txt and bar.txt do not exist`.
\fish
if test -f foo.txt
echo foo.txt exists
echo foo.txt exists
else if test -f bar.txt
echo bar.txt exists
echo bar.txt exists
else
echo foo.txt and bar.txt do not exist
echo foo.txt and bar.txt do not exist
end
</pre>will print <tt>foo.txt exists</tt> if the file foo.txt
exists and is a regular file, otherwise it will print
<tt>bar.txt exists</tt> if the file bar.txt exists
and is a regular file, otherwise it will print
<tt>foo.txt and bar.txt do not exist</tt>.
\endfish
The following code will print "foo.txt exists and is readable" if foo.txt is a regular file and readable
\fish
if begin test -f foo.txt
and test -r foo.txt
end
echo "foo.txt exists and is readable"
end
\endfish

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +1,35 @@
\section isatty isatty - test if the specified file descriptor is a tty
\section isatty isatty - test if a file descriptor is a tty.
\subsection isatty-synopsis Synopsis
<tt>isatty [FILE DESCRIPTOR]</tt>
\fish{synopsis}
isatty [FILE DESCRIPTOR]
\endfish
\subsection isatty-description Description
<tt>isatty</tt> tests if a file descriptor is a tty.
<tt>FILE DESCRIPTOR</tt> may be either the number of a file descriptor, or one of the
strings <tt>stdin</tt>, \c stdout and <tt>stderr</tt>.
`isatty` tests if a file descriptor is a tty.
If the specified file descriptor is a tty, the exit status of the command is
zero. Otherwise, it is non-zero.
`FILE DESCRIPTOR` may be either the number of a file descriptor, or one of the strings `stdin`, `stdout`, or `stderr`.
If the specified file descriptor is a tty, the exit status of the command is zero. Otherwise, the exit status is non-zero. No messages are printed to standard error.
\subsection isatty-examples Examples
From an interactive shell, the commands below exit with a return value of zero:
\fish
isatty
isatty stdout
isatty 2
echo | isatty 1
\endfish
And these will exit non-zero:
\fish
echo | isatty
isatty 9
isatty stdout > file
isatty 2 2> file
\endfish

View File

@@ -1,25 +1,27 @@
\section jobs jobs - print currently running jobs
\subsection jobs-synopsis Synopsis
<code>jobs [OPTIONS] [PID]</code>
\fish{synopsis}
jobs [OPTIONS] [PID]
\endfish
\subsection jobs-description Description
<code>jobs</code> prints a list of the currently
running <a href="index.html#syntax-job-control">jobs</a> and their status.
`jobs` prints a list of the currently running <a href="index.html#syntax-job-control">jobs</a> and their status.
jobs accepts the following switches:
- <code>-c</code> or <code>--command</code> prints the command name for each process in jobs.
- <code>-g</code> or <code>--group</code> only prints the group ID of each job.
- <code>-h</code> or <code>--help</code> displays a help message and exits.
- <code>-l</code> or <code>--last</code> prints only the last job to be started.
- <code>-p</code> or <code>--pid</code> prints the process ID for each process in all jobs.
- `-c` or `--command` prints the command name for each process in jobs.
- `-g` or `--group` only prints the group ID of each job.
- `-l` or `--last` prints only the last job to be started.
- `-p` or `--pid` prints the process ID for each process in all jobs.
On systems that supports this feature, jobs will print the CPU usage of each job since the last command was executed. The CPU usage is expressed as a percentage of full CPU activity. Note that on multiprocessor systems, the total activity may be more than 100\%.
On systems that supports this feature, jobs will print the CPU usage
of each job since the last command was executed. The CPU usage is
expressed as a percentage of full CPU activity. Note that on
multiprocessor systems, the total activity may be more than 100\%.
\subsection jobs-example Example
<code>jobs</code> outputs a summary of the current jobs.
`jobs` outputs a summary of the current jobs.

File diff suppressed because it is too large Load Diff

View File

@@ -2,25 +2,19 @@
\section math math - Perform mathematics calculations
\subsection math-synopsis Synopsis
<tt>math EXPRESSION</tt>
\fish{synopsis}
math EXPRESSION
\endfish
\subsection math-description Description
\c math is used to perform mathematical calculations. It is a very
thin wrapper for the bc program, which makes it possible to specify an
expression from the command line without using non-standard extensions
or a pipeline.
`math` is used to perform mathematical calculations. It is a very thin wrapper for the bc program, which makes it possible to specify an expression from the command line without using non-standard extensions or a pipeline.
For a description of the syntax supported by math, see the manual for the bc program. Keep in mind that parameter expansion takes place on any expressions before they are evaluated. This can be very useful in order to perform calculations involving shell variables or the output of command substitutions, but it also means that parenthesis have to be escaped.
For a description of the syntax supported by math, see the manual for
the bc program. Keep in mind that parameter expansion takes place on
any expressions before they are evaluated. This can be very useful in
order to perform calculations involving environment variables or the
output of command substitutions, but it also means that parenthesis
have to be escaped.
\subsection math-example Examples
<code>math 1+1</code> outputs 2.
`math 1+1` outputs 2.
<code>math $status-128</code> outputs the numerical exit status of the
last command minus 128.
`math $status-128` outputs the numerical exit status of the last command minus 128.

View File

@@ -1,26 +0,0 @@
\section mimedb mimedb - lookup file information via the mime database
\subsection mimedb-synopsis Synopsis
<tt>mimedb [OPTIONS] FILES...</tt>
\subsection mimedb-description Description
\c mimedb queries the MIME type database and the \c .desktop files
installed on the system in order to find information on
the files listed in <code>FILES</code>. The information that \c mimedb
can retrieve includes the MIME type for a file, a description of the type,
and the default action that can be performed on the file. \c mimedb can also
be used to launch the default action for this file.
The following options are available:
- \c -t, \c --input-file-data determines the files' type both by their filename and by their contents (default behaviour).
- \c -f, \c --input-filename determines the files' type by their filename.
- \c -i, \c --input-mime specifies that the arguments are not files, but MIME types.
- \c -m, \c --output-mime outputs the MIME type of each file (default behaviour).
- \c -f, \c --output-description outputs the description of each MIME type.
- \c -a, \c --output-action outputs the default action of each MIME type.
- \c -l, \c --launch launches the default action for the specified files.
- \c -h, \c --help displays a help message and exit.
- \c -v, \c --version displays the version number and exits.

View File

@@ -1,24 +1,30 @@
\section nextd nextd - move forward through directory history
\subsection nextd-synopsis Synopsis
<tt>nextd [-l | --list] [POS]</tt>
\fish{synopsis}
nextd [ -l | --list ] [POS]
\endfish
\subsection nextd-description Description
<tt>nextd</tt> moves forwards <tt>POS</tt> positions in the history of visited
directories; if the end of the history has been hit, a warning is printed.
If the <code>-l></code> or <code>--list</code> flag is specified, the current
directory history is also displayed.
`nextd` moves forwards `POS` positions in the history of visited directories; if the end of the history has been hit, a warning is printed.
If the `-l` or `--list` flag is specified, the current directory history is also displayed.
Note that the `cd` command limits directory history to the 25 most recently visited directories. The history is stored in the `$dirprev` and `$dirnext` variables which this command manipulates.
\subsection nextd-example Example
\code
\fish
cd /usr/src
# Working directory is now /usr/src
cd /usr/src/fish-shell
# Working directory is now /usr/src/fish-shell
prevd
# Working directory is now /usr/src
nextd
# Working directory is now /usr/src/fish-shell</pre>
\endcode
# Working directory is now /usr/src/fish-shell
\endfish

View File

@@ -1,21 +1,23 @@
\section not not - negate the exit status of a job
\subsection not-synopsis Synopsis
<tt>not COMMAND [OPTIONS...]</tt>
\fish{synopsis}
not COMMAND [OPTIONS...]
\endfish
\subsection not-description Description
\c not negates the exit status of another command. If the exit status
is zero, \c not returns 1. Otherwise, \c not returns 0.
`not` negates the exit status of another command. If the exit status is zero, `not` returns 1. Otherwise, `not` returns 0.
\subsection not-example Example
The following code reports an error and exits if no file named spoon can be found.
<pre>
\fish
if not test -f spoon
echo There is no spoon
exit 1
echo There is no spoon
exit 1
end
</pre>
\endfish

Some files were not shown because too many files have changed in this diff Show More