From 3db78232c6d5f32a2e8c1f08a4845712cce2b91b Mon Sep 17 00:00:00 2001 From: Fabian Homborg Date: Wed, 28 Jul 2021 21:11:43 +0200 Subject: [PATCH] Show if a var is read-only with `set --show` Fixes #8179. --- src/builtin_set.cpp | 3 +++ tests/checks/set.fish | 1 + 2 files changed, 4 insertions(+) diff --git a/src/builtin_set.cpp b/src/builtin_set.cpp index ed1d97d57..15c26e2ba 100644 --- a/src/builtin_set.cpp +++ b/src/builtin_set.cpp @@ -512,6 +512,9 @@ static void show_scope(const wchar_t *var_name, int scope, io_streams_t &streams wcstring_list_t vals = var->as_list(); streams.out.append_format(_(L"$%ls: set in %ls scope, %ls,%ls with %d elements\n"), var_name, scope_name, exportv, pathvarv, vals.size()); + if (var->read_only()) { + streams.out.append(_(L"Variable is read-only\n")); + } for (size_t i = 0; i < vals.size(); i++) { if (vals.size() > 100) { diff --git a/tests/checks/set.fish b/tests/checks/set.fish index ae2458c9f..a1e36e5a6 100644 --- a/tests/checks/set.fish +++ b/tests/checks/set.fish @@ -664,6 +664,7 @@ env | string match -e __fish_test_universal_exported_var # so they should only be shown in global scope. set -S status #CHECK: $status: set in global scope, unexported, with 1 elements +#CHECK: Variable is read-only #CHECK: $status[1]: |0| set -ql history