Commit graph

10070 commits

Author SHA1 Message Date
Mahmoud Al-Qudsi
a1cba81d13 Add note about console session improvements to CHANGELOG 2019-03-20 21:47:34 -05:00
Mahmoud Al-Qudsi
c50cce298d Allow the omitted new line character to be more than one char
The code already allowed for variable width (multicell) *display* of the
newline omitted character, but there was no way to define it as being
more than one `wchar_t`.

This lets us use a string on console sessions (^J aka newline feed)
instead of an ambiguous character like `@` (used in some versions of
vim for ^M) or `~` (what we were using).
2019-03-20 21:47:34 -05:00
Mahmoud Al-Qudsi
753d489376 Fall back to simpler special characters in console sessions 2019-03-20 21:47:34 -05:00
Mahmoud Al-Qudsi
da8e343076 Use is_console_session() to signal using system wcwidth()
The system version of `wcwidth()` reflects the capabilities of the
system's own virtual terminal's view of the width of the character in
question, while fish's enhanced version (`widechar_wcwidth`) is much too
smart for most login terminals, which generally barely support anything
beyond ASCII text.

If, at startup, it is detected that we are running under a physical
console rather than within a terminal emulator running in a desktop
environment, take that as a hint to use the system-provided `wcwidth`.
2019-03-20 21:47:34 -05:00
Mahmoud Al-Qudsi
4aded78fc9 Add is_console_session() to detect physical vty 2019-03-20 21:47:32 -05:00
Mahmoud Al-Qudsi
f2896b2d83 Fix junk memory read introduced in 1cd5b2f4e1
The commit began passing the length of the wide string rather than the
length of the narrowed string after conversion via `wcstombs`. We *do*
have the actual length, but it's not (necessarily) the same as the
original value. We need to pass the result of `wcstombs` instead.
2019-03-20 20:51:22 -05:00
Fabian Homborg
a8b01e1c99 src/output: Unconst-cast tputs
Fixes the build on Solaris/OpenIndiana/Illumos.
2019-03-20 09:01:46 +01:00
Fabian Homborg
1a53bbeb9d src/fallback: Include locale.h for the wcstod_l fallback
Fixes #5753.
2019-03-20 08:54:40 +01:00
Fabian Homborg
f8b88d5b98 docs/fish_git_prompt: Better document variables
More accurate, also the code example can now be copy-pasted.

[ci skip]
2019-03-19 21:07:49 +01:00
Fabian Homborg
a649c5293e functions/fish_git_prompt: Fix space prefix for verbose showupstream
This created another local version of the variable just for the if-block.

Can't say I love the space prefix, but then I think we have too many
of these modes anyway.
2019-03-19 10:27:52 +01:00
Fabian Homborg
f6226f0802 functions/fish_git_prompt: Useful status for show_upstream
Returns 0 if there is no diversion, 1 otherwise.
2019-03-19 10:24:40 +01:00
Fabian Homborg
632c47be54 functions/fish_git_prompt: Remove literal tabs 2019-03-19 10:24:34 +01:00
Fabian Homborg
05ef157757 functions/fish_git_prompt: Let helper functions return useful status
If you use these to figure out if there _are_ staged files, or dirty
or whatever, you currently need to check the output, which relies on
the configured character.

Instead, we let them also return a useful status.
Notably, this is *not* simply the status of the git call.

__fish_git_prompt_X returns 0 if the repo is X.

This works for untracked, but the "diff" things return 1 if there is a
diff, so we invert the status for them.

See #5748.

[ci skip]
2019-03-19 10:11:37 +01:00
ykai
f56bce3f97 Fixed mount -o<TAB> exception 2019-03-19 09:28:14 +01:00
Fabian Homborg
805a8db7ef functions/fish_hg_prompt: Show untracked files
Apparently "status --quiet" actually inhibits showing untracked files,
which explains why it's 20% faster (though it's quite weird use of
that option!)

Fixes #5749.

[ci skip]
2019-03-18 22:26:43 +01:00
Fabian Homborg
69abbd7b2a docs: Mention $__fish_x_dir in autoloading chapter
That's what we want people to use instead of hardcoding
"/usr/share/fish", because that would break the code on other systems.

[ci skip]
2019-03-18 21:10:18 +01:00
ridiculousfish
03454b7dcd Use a real struct type in fish_indent pending node stack 2019-03-18 09:13:36 -07:00
ridiculousfish
a58662dd46 Make maybe_t conditionally copyable
This allows it to be used with both e.g. unique_ptr and std::vector.
2019-03-17 13:38:18 -07:00
Fabian Homborg
0bde698f81 printf: Don't die on incomplete conversions
POSIX dictates here that incomplete conversions, like in

    printf %d\n 15.2

or

    printf %d 14g

are still printed along with any error.

This seems alright, as it allows users to silence stderr to accept incomplete conversions.

This commit implements it, but what's a bit weird is the ordering between stdout and stderr,
causing the error to be printed _after_, like

    15
    14
    15.1: value not completely converted
    14,2: value not completely converted

but that seems like a general issue with how we buffer the streams.

(I know that nonfatal_error is a copy of most of fatal_error - I tried
differently, and va_* is weird)

Fixes #5532.
2019-03-17 17:00:55 +01:00
SanskritFritz
aea4062906 cower doesn't exist anymore, completions dropped 2019-03-17 10:55:01 +01:00
Aaron Gyes
6e525cc5d9 wcsfilecmp: sort - after everything else
Before this change, - was sorted with other punctuation before
A-Z. Now, it sorts above the rest of the characters.

This has a practical effect on completions, where when there are
both -s and --long with the same description, the short option
is now before the long option in the pager, which is what is now
selected when navigating `foo -<TAB>`. The long options can be
picked out with `foo --<TAB>`. Before, short options which
duplicated a long option literally could not be selected by
any means from the pager.

Fixes #5634
2019-03-16 01:31:56 -07:00
Aaron Gyes
74a22ff426 wcsfilecmp: punctuation [\]^_` after A-Z.
This tweaks wcsfilecmp such that certain punctuation characters will
come after A-Z.

A big win with `set <TAB>` - the __prefixed fish junk now comes
after the stuff users should care about.
2019-03-16 01:18:16 -07:00
ridiculousfish
88d20e257b Remove some unused variables 2019-03-15 20:21:05 -07:00
Fabian Homborg
0b6d6a29eb completions/git: Fix broken conditions for git config
Classic case of not seeing `and` as a new command:

`__fish_git_using_command config and anotherthing`

causes `and anotherthing` to be passed as arguments to
`__fish_git_using_command` instead of being executed.

[ci skip]
2019-03-15 20:09:55 +01:00
Fabian Homborg
a7ab8c6a4b Remove __fish_test_arg helper function
This was a remnant from before `string` existed, and was only used by
the xterm completions.

Part of #5279

[ci skip]
2019-03-15 19:58:01 +01:00
Fabian Homborg
2de3f7c686 Move ninja functions into ninja completions
Part of #5279

[ci skip]
2019-03-15 19:57:56 +01:00
Fabian Homborg
1c3c76165e Move xrandr functions into randr completions
Part of #5279.

[ci skip]
2019-03-15 19:57:51 +01:00
Fabian Homborg
a1380a736b Move __fish_print_make_targets into make completions
A function file for a function used only by one completion (and
unlikely to be used anywhere else).

If another user shows up, we can move it out again.

Part of #5279

[ci skip]
2019-03-15 19:57:46 +01:00
Fabian Homborg
9bd398b9fb Document features more
This adds string-replace-fewer-backslashes, but also explains the
feature flag system a bit more.

[ci skip]
2019-03-15 15:31:21 +01:00
Fabian Homborg
86e9e60ae7 completions/set: Fix set -eU
This had a typo where it completed `-u` variables. Only `-u` means
unexported, `-U` means universal.

[ci skip]
2019-03-15 15:22:59 +01:00
Fabian Homborg
ef2fe0dfa0 CHANGELOG string backslashes 2019-03-15 15:22:59 +01:00
Fabian Homborg
83932441bb Fix fish_clipboard_paste with string-replace-fewer-backslashes
This is the one place in fish where we use a `\` in the replacement of
a `string replace -r`, so we'll have to check the feature.
2019-03-15 15:18:19 +01:00
Fabian Homborg
864bb1f7a6 Add string-replace-fewer-backslashes feature
This disables an extra round of escaping in the `string replace -r`
replacement string.

Currently, to add a backslash to an a or b (to "escape" it):

    string replace -ra '([ab])' '\\\\\\\$1' a

7 backslashes!

This removes one of the layers, so now 3 or 4 works (each one escaped
for the single-quotes, so pcre receives two, which it reads as one literal):

    string replace -ra '([ab])' '\\\\$1' a

This is backwards-incompatible as replacement strings will change
meaning, so we put it behind a feature flag.

The name is kinda crappy, though.

Fixes #5474.
2019-03-15 15:18:19 +01:00
Fabian Homborg
a7a12c5c96
Merge pull request #5709 from zabereer/prompts_with_pipestatus
Prompts with pipestatus
2019-03-15 14:32:33 +01:00
Fabian Homborg
b3f39096e7 CHANGELOG count from stdin
[ci skip]
2019-03-15 14:31:36 +01:00
Fabian Homborg
18d7123ff4 fish_git_prompt: Use count from stdin
Removes any uses of `wc` in our codebase.
2019-03-15 14:31:36 +01:00
Fabian Homborg
e7a964fdfa [count] Allow counting lines from stdin
As a simple replacement for `wc -l`.

This counts both lines on stdin _and_ arguments.

So if "file" has three lines, then `count a b c < file` will print 6.

And since it counts newlines, like wc, `echo -n foo | count` prints 0.
2019-03-15 14:31:36 +01:00
Aaron Gyes
cb36a9ca36 builtin.cpp: ensure builtin_get_desc returns something initialized 2019-03-14 21:45:31 -07:00
Aaron Gyes
9a5022514f builtin_argparse: use std::swap 2019-03-14 16:47:23 -07:00
Aaron Gyes
d837eee09d remove some wcstring -> wchar_t* -> wcstring conversions
Mostly related to usage _(L"foo"), keeping in mind the _
macro does a wcstring().c_str() already.

And a smattering of other trivial micro-optimizations certain
to not help tangibly.
2019-03-14 15:21:08 -07:00
Fabian Homborg
4a67d9015b docs/command: Make it clearer that -a needs a commandname
Fixes #5107.

[ci skip]
2019-03-14 21:07:10 +01:00
Aaron Gyes
477b2e8d7c std::vector<wcstring> is wcstring_list_t 2019-03-14 11:17:26 -07:00
Aaron Gyes
0ee9862809 Write out backtrace in one debug(), add \n after it.
The goal here is to make fish -dn -Dn output a little easier
to scan visually.
2019-03-14 10:56:24 -07:00
Aaron Gyes
cf570d4b11 fixup previous commit 2019-03-14 10:37:13 -07:00
Aaron Gyes
2636876472 simplify append_yaml_to_buffer 2019-03-14 10:29:16 -07:00
Aaron Gyes
2bf554ae5e Simplify valid_var_name 2019-03-14 10:29:16 -07:00
Fabian Homborg
9dcb5abaf1 completions/pandoc: Stringify
This should be the last call to `grep` outside of a script
specifically related to `grep`.

(With the exception of `zpool`, which I've already written, but which
will probably be merged later)
2019-03-14 17:16:47 +01:00
Fabian Homborg
605b1cfab6 README: Update deps
- Remove `jq` since it can also use python now.

- Add specific UNIX utilities

Fixes #5553.

[ci skip]
2019-03-14 13:31:34 +01:00
Fabian Homborg
7766d0a7d0 Remove outdated comment
[ci skip]
2019-03-14 13:23:48 +01:00
Fabian Homborg
912ba177ec functions/__fish_append: Stringify
This called `sed`, twice.
2019-03-14 13:23:48 +01:00