mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-26 04:43:10 +00:00
Unify ellipsis_str[ing] with common variable set once
This commit is contained in:
parent
3314135cc9
commit
1fbf810946
5 changed files with 16 additions and 17 deletions
|
@ -51,6 +51,7 @@ static pthread_t main_thread_id = 0;
|
|||
static bool thread_asserts_cfg_for_testing = false;
|
||||
|
||||
wchar_t ellipsis_char;
|
||||
const wchar_t *ellipsis_str = nullptr;
|
||||
wchar_t omitted_newline_char;
|
||||
wchar_t obfuscation_read_char;
|
||||
bool g_profiling_active = false;
|
||||
|
@ -507,7 +508,14 @@ void fish_setlocale() {
|
|||
// true/false value since the code points are in the BMP but we're going to be paranoid. This
|
||||
// is also technically wrong if we're not in a Unicode locale but we expect (or hope)
|
||||
// can_be_encoded() will return false in that case.
|
||||
ellipsis_char = can_be_encoded(L'\u2026') ? L'\u2026' : L'$'; // "horizontal ellipsis"
|
||||
if (can_be_encoded(L'\u2026')) {
|
||||
ellipsis_char = L'\u2026';
|
||||
ellipsis_str = L"\u2026";
|
||||
}
|
||||
else {
|
||||
ellipsis_char = L'$'; // "horizontal ellipsis"
|
||||
ellipsis_str = L"...";
|
||||
}
|
||||
omitted_newline_char = can_be_encoded(L'\u23CE') ? L'\u23CE' : L'~'; // "return"
|
||||
obfuscation_read_char = can_be_encoded(L'\u25CF') ? L'\u25CF' : L'#'; // "black circle"
|
||||
}
|
||||
|
|
|
@ -183,6 +183,8 @@ extern struct termios shell_modes;
|
|||
/// The character to use where the text has been truncated. Is an ellipsis on unicode system and a $
|
||||
/// on other systems.
|
||||
extern wchar_t ellipsis_char;
|
||||
/// The character or string to use where text has been truncated (ellipsis if possible, otherwise ...)
|
||||
extern const wchar_t *ellipsis_str;
|
||||
|
||||
/// Character representing an omitted newline at the end of text.
|
||||
extern wchar_t omitted_newline_char;
|
||||
|
@ -766,7 +768,7 @@ void assert_is_not_forked_child(const char *who);
|
|||
|
||||
/// Detect if we are Windows Subsystem for Linux by inspecting /proc/sys/kernel/osrelease
|
||||
/// and checking if "Microsoft" is in the first line.
|
||||
/// See https://github.com/Microsoft/WSL/issues/423 and Microsoft/WSL#2997
|
||||
/// See https://github.com/Microsoft/WSL/issues/423 and Microsoft/WSL#2997
|
||||
constexpr bool is_windows_subsystem_for_linux() {
|
||||
#ifdef WSL
|
||||
return true;
|
||||
|
|
|
@ -481,16 +481,13 @@ bool pager_t::completion_try_print(size_t cols, const wcstring &prefix, const co
|
|||
assert(stop_row - start_row <= term_height);
|
||||
completion_print(cols, width_by_column, start_row, stop_row, prefix, lst, rendering);
|
||||
|
||||
// Ellipsis helper string. Either empty or containing the ellipsis char.
|
||||
const wchar_t ellipsis_string[] = {ellipsis_char == L'\x2026' ? L'\x2026' : L'\0', L'\0'};
|
||||
|
||||
// Add the progress line. It's a "more to disclose" line if necessary, or a row listing if
|
||||
// it's scrollable; otherwise ignore it.
|
||||
// We should never have one row remaining to disclose (else we would have just disclosed it)
|
||||
wcstring progress_text;
|
||||
assert(rendering->remaining_to_disclose != 1);
|
||||
if (rendering->remaining_to_disclose > 1) {
|
||||
progress_text = format_string(_(L"%lsand %lu more rows"), ellipsis_string,
|
||||
progress_text = format_string(_(L"%lsand %lu more rows"), ellipsis_str,
|
||||
(unsigned long)rendering->remaining_to_disclose);
|
||||
} else if (start_row > 0 || stop_row < row_count) {
|
||||
// We have a scrollable interface. The +1 here is because we are zero indexed, but want
|
||||
|
|
|
@ -664,13 +664,10 @@ parse_execution_result_t parse_execution_context_t::handle_command_not_found(
|
|||
if (!args.empty()) {
|
||||
const wcstring argument = get_source(args.at(0));
|
||||
|
||||
wcstring ellipsis_str = wcstring(1, ellipsis_char);
|
||||
if (ellipsis_str == L"$") ellipsis_str = L"...";
|
||||
|
||||
// Looks like a command.
|
||||
this->report_error(statement, ERROR_BAD_EQUALS_IN_COMMAND5, argument.c_str(),
|
||||
name_str.c_str(), val_str.c_str(), argument.c_str(),
|
||||
ellipsis_str.c_str());
|
||||
ellipsis_str);
|
||||
} else {
|
||||
wcstring assigned_val = reconstruct_orig_str(val_str);
|
||||
this->report_error(statement, ERROR_BAD_COMMAND_ASSIGN_ERR_MSG, name_str.c_str(),
|
||||
|
|
|
@ -452,8 +452,7 @@ static wcstring truncate_command(const wcstring &cmd) {
|
|||
}
|
||||
|
||||
// Truncation required.
|
||||
const bool ellipsis_is_unicode = (ellipsis_char == L'\x2026');
|
||||
const size_t ellipsis_length = ellipsis_is_unicode ? 1 : 3;
|
||||
const size_t ellipsis_length = wcslen(ellipsis_str); //no need for wcwidth
|
||||
size_t trunc_length = max_len - ellipsis_length;
|
||||
// Eat trailing whitespace.
|
||||
while (trunc_length > 0 && iswspace(cmd.at(trunc_length - 1))) {
|
||||
|
@ -461,11 +460,7 @@ static wcstring truncate_command(const wcstring &cmd) {
|
|||
}
|
||||
wcstring result = wcstring(cmd, 0, trunc_length);
|
||||
// Append ellipsis.
|
||||
if (ellipsis_is_unicode) {
|
||||
result.push_back(ellipsis_char);
|
||||
} else {
|
||||
result.append(L"...");
|
||||
}
|
||||
result.append(ellipsis_str);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue