mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-26 12:53:13 +00:00
Add a feature_test() function
This is a convenience over fish_features().test()
This commit is contained in:
parent
762c31be87
commit
4194b4efee
7 changed files with 12 additions and 9 deletions
|
@ -138,7 +138,7 @@ static bool set_status_cmd(wchar_t *const cmd, status_cmd_opts_t &opts, status_c
|
||||||
/// Print the features and their values.
|
/// Print the features and their values.
|
||||||
static void print_features(io_streams_t &streams) {
|
static void print_features(io_streams_t &streams) {
|
||||||
for (const auto &md : features_t::metadata) {
|
for (const auto &md : features_t::metadata) {
|
||||||
int set = fish_features().test(md.flag);
|
int set = feature_test(md.flag);
|
||||||
streams.out.append_format(L"%ls\t%s\t%ls\t%ls\n", md.name, set ? "on" : "off", md.groups,
|
streams.out.append_format(L"%ls\t%s\t%ls\t%ls\n", md.name, set ? "on" : "off", md.groups,
|
||||||
md.description);
|
md.description);
|
||||||
}
|
}
|
||||||
|
@ -339,7 +339,7 @@ int builtin_status(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
||||||
if (!metadata) {
|
if (!metadata) {
|
||||||
retval = TEST_FEATURE_NOT_RECOGNIZED;
|
retval = TEST_FEATURE_NOT_RECOGNIZED;
|
||||||
} else {
|
} else {
|
||||||
retval = fish_features().test(metadata->flag) ? TEST_FEATURE_ON : TEST_FEATURE_OFF;
|
retval = feature_test(metadata->flag) ? TEST_FEATURE_ON : TEST_FEATURE_OFF;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -932,8 +932,8 @@ static void escape_string_script(const wchar_t *orig_in, size_t in_len, wcstring
|
||||||
const bool escape_all = static_cast<bool>(flags & ESCAPE_ALL);
|
const bool escape_all = static_cast<bool>(flags & ESCAPE_ALL);
|
||||||
const bool no_quoted = static_cast<bool>(flags & ESCAPE_NO_QUOTED);
|
const bool no_quoted = static_cast<bool>(flags & ESCAPE_NO_QUOTED);
|
||||||
const bool no_tilde = static_cast<bool>(flags & ESCAPE_NO_TILDE);
|
const bool no_tilde = static_cast<bool>(flags & ESCAPE_NO_TILDE);
|
||||||
const bool no_caret = fish_features().test(features_t::stderr_nocaret);
|
const bool no_caret = feature_test(features_t::stderr_nocaret);
|
||||||
const bool no_qmark = fish_features().test(features_t::qmark_noglob);
|
const bool no_qmark = feature_test(features_t::qmark_noglob);
|
||||||
|
|
||||||
int need_escape = 0;
|
int need_escape = 0;
|
||||||
int need_complex_escape = 0;
|
int need_complex_escape = 0;
|
||||||
|
@ -1361,7 +1361,7 @@ static bool unescape_string_internal(const wchar_t *const input, const size_t in
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case L'?': {
|
case L'?': {
|
||||||
if (unescape_special && !fish_features().test(features_t::qmark_noglob)) {
|
if (unescape_special && !feature_test(features_t::qmark_noglob)) {
|
||||||
to_append_or_none = ANY_CHAR;
|
to_append_or_none = ANY_CHAR;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -68,6 +68,9 @@ public:
|
||||||
/// Return the global set of features for fish. This is const to prevent accidental mutation.
|
/// Return the global set of features for fish. This is const to prevent accidental mutation.
|
||||||
const features_t &fish_features();
|
const features_t &fish_features();
|
||||||
|
|
||||||
|
/// Perform a feature test on the global set of features.
|
||||||
|
inline bool feature_test(features_t::flag_t f) { return fish_features().test(f); }
|
||||||
|
|
||||||
/// Return the global set of features for fish, but mutable. In general fish features should be set
|
/// Return the global set of features for fish, but mutable. In general fish features should be set
|
||||||
/// at startup only.
|
/// at startup only.
|
||||||
features_t &mutable_fish_features();
|
features_t &mutable_fish_features();
|
||||||
|
|
|
@ -550,7 +550,7 @@ static void color_argument_internal(const wcstring &buffstr,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case L'?': {
|
case L'?': {
|
||||||
if (!fish_features().test(features_t::qmark_noglob)) {
|
if (!feature_test(features_t::qmark_noglob)) {
|
||||||
colors[in_pos] = highlight_spec_operator;
|
colors[in_pos] = highlight_spec_operator;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -419,7 +419,7 @@ void parse_util_token_extent(const wchar_t *buff, size_t cursor_pos, const wchar
|
||||||
wcstring parse_util_unescape_wildcards(const wcstring &str) {
|
wcstring parse_util_unescape_wildcards(const wcstring &str) {
|
||||||
wcstring result;
|
wcstring result;
|
||||||
result.reserve(str.size());
|
result.reserve(str.size());
|
||||||
bool unesc_qmark = !fish_features().test(features_t::qmark_noglob);
|
bool unesc_qmark = !feature_test(features_t::qmark_noglob);
|
||||||
|
|
||||||
const wchar_t *const cs = str.c_str();
|
const wchar_t *const cs = str.c_str();
|
||||||
for (size_t i = 0; cs[i] != L'\0'; i++) {
|
for (size_t i = 0; cs[i] != L'\0'; i++) {
|
||||||
|
|
|
@ -36,7 +36,7 @@ const wchar_t *tokenizer_error::Message() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Whether carets redirect stderr.
|
// Whether carets redirect stderr.
|
||||||
static bool caret_redirs() { return !fish_features().test(features_t::stderr_nocaret); }
|
static bool caret_redirs() { return !feature_test(features_t::stderr_nocaret); }
|
||||||
|
|
||||||
/// Return an error token and mark that we no longer have a next token.
|
/// Return an error token and mark that we no longer have a next token.
|
||||||
tok_t tokenizer_t::call_error(tokenizer_error *error_type, const wchar_t *token_start,
|
tok_t tokenizer_t::call_error(tokenizer_error *error_type, const wchar_t *token_start,
|
||||||
|
|
|
@ -62,7 +62,7 @@ static size_t wildcard_find(const wchar_t *wc) {
|
||||||
/// Implementation of wildcard_has. Needs to take the length to handle embedded nulls (issue #1631).
|
/// Implementation of wildcard_has. Needs to take the length to handle embedded nulls (issue #1631).
|
||||||
static bool wildcard_has_impl(const wchar_t *str, size_t len, bool internal) {
|
static bool wildcard_has_impl(const wchar_t *str, size_t len, bool internal) {
|
||||||
assert(str != NULL);
|
assert(str != NULL);
|
||||||
bool qmark_is_wild = !fish_features().test(features_t::qmark_noglob);
|
bool qmark_is_wild = !feature_test(features_t::qmark_noglob);
|
||||||
const wchar_t *end = str + len;
|
const wchar_t *end = str + len;
|
||||||
if (internal) {
|
if (internal) {
|
||||||
for (; str < end; str++) {
|
for (; str < end; str++) {
|
||||||
|
|
Loading…
Reference in a new issue