__fish_print_help: Just use $COLUMNS

This had an undocumented internal feature that would pass the tty
width along. Instead, just have it read $COLUMNS, which we always
define anyway.
This commit is contained in:
Fabian Homborg 2018-10-23 15:05:15 +02:00
parent 1d5e715008
commit d727e32934
2 changed files with 1 additions and 28 deletions

View file

@ -1,11 +1,4 @@
function __fish_print_help --description "Print help message for the specified fish function or builtin" --argument item
# special support for builtin_help_get()
set -l tty_width 0
if test "$item" = "--tty-width"
set tty_width $argv[2]
set item $argv[3]
end
if test "$item" = '.'
set item source
end
@ -17,22 +10,8 @@ function __fish_print_help --description "Print help message for the specified f
# Render help output, save output into the variable 'help'
set -l help
set -l cols
set -l cols $COLUMNS
set -l rLL
if test "$tty_width" -gt 0
set cols $tty_width
else if command test -t 1
# We want to simulate `man`'s dynamic line length, because
# defaulting to 80 kind of sucks.
# Note: using `command test` instead of `test` because `test -t 1`
# doesn't seem to work right.
# Note: grab the size from the stdout terminal in case it's somehow
# different than the stdin of fish.
# use fd 3 to copy our stdout because we need to pipe the output of stty
begin
stty size 0<&3 | read __ cols
end 3<&1
end
if test -n "$cols"
set cols (math $cols - 4) # leave a bit of space on the right
set rLL -rLL=$cols[1]n

View file

@ -169,12 +169,6 @@ wcstring builtin_help_get(parser_t &parser, io_streams_t &streams, const wchar_t
wcstring out;
const wcstring name_esc = escape_string(name, 1);
wcstring cmd = format_string(L"__fish_print_help %ls", name_esc.c_str());
if (!streams.out_is_redirected && isatty(STDOUT_FILENO)) {
// since we're using a subshell, __fish_print_help can't tell we're in
// a terminal. Tell it ourselves.
int cols = common_get_width();
cmd = format_string(L"__fish_print_help --tty-width %d %ls", cols, name_esc.c_str());
}
if (exec_subshell(cmd, lst, false /* don't apply exit status */) >= 0) {
for (size_t i = 0; i < lst.size(); i++) {
out.append(lst.at(i));