mirror of
https://github.com/fish-shell/fish-shell.git
synced 2025-03-15 15:05:27 +08:00
Refactor function_get_[desc/definition] to pass-by-reference
This commit is contained in:
parent
a02c54c8c7
commit
a0110d296c
@ -124,8 +124,8 @@ static wcstring functions_def(const wcstring &name) {
|
||||
CHECK(!name.empty(), L""); //!OCLINT(multiple unary operator)
|
||||
wcstring out;
|
||||
wcstring desc, def;
|
||||
function_get_desc(name, &desc);
|
||||
function_get_definition(name, &def);
|
||||
function_get_desc(name, desc);
|
||||
function_get_definition(name, def);
|
||||
event_t search(EVENT_ANY);
|
||||
search.function_name = name;
|
||||
std::vector<std::shared_ptr<event_t>> ev;
|
||||
@ -243,7 +243,7 @@ static int report_function_metadata(const wchar_t *funcname, bool verbose, io_st
|
||||
path = L"stdin";
|
||||
}
|
||||
shadows_scope = props->shadow_scope ? L"scope-shadowing" : L"no-scope-shadowing";
|
||||
function_get_desc(funcname, &description);
|
||||
function_get_desc(funcname, description);
|
||||
description = escape_string(description, ESCAPE_NO_QUOTED);
|
||||
}
|
||||
|
||||
|
@ -644,9 +644,9 @@ void completer_t::complete_cmd_desc(const wcstring &str) {
|
||||
/// Returns a description for the specified function, or an empty string if none.
|
||||
static wcstring complete_function_desc(const wcstring &fn) {
|
||||
wcstring result;
|
||||
bool has_description = function_get_desc(fn, &result);
|
||||
bool has_description = function_get_desc(fn, result);
|
||||
if (!has_description) {
|
||||
function_get_definition(fn, &result);
|
||||
function_get_definition(fn, result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@ -228,6 +228,7 @@ void function_remove(const wcstring &name) {
|
||||
if (function_remove_ignore_autoload(name)) function_autoloader.unload(name);
|
||||
}
|
||||
|
||||
/// Returns a function by name if it has been loaded, returns false otherwise. Does not autoload.
|
||||
static const function_info_t *function_get(const wcstring &name) {
|
||||
// The caller must lock the functions_lock before calling this; however our mutex is currently
|
||||
// recursive, so trylock will never fail. We need a way to correctly check if a lock is locked
|
||||
@ -240,11 +241,11 @@ static const function_info_t *function_get(const wcstring &name) {
|
||||
return &iter->second;
|
||||
}
|
||||
|
||||
bool function_get_definition(const wcstring &name, wcstring *out_definition) {
|
||||
bool function_get_definition(const wcstring &name, wcstring &out_definition) {
|
||||
scoped_rlock locker(functions_lock);
|
||||
const function_info_t *func = function_get(name);
|
||||
if (func && out_definition) {
|
||||
out_definition->assign(func->props->body_node.get_source(func->props->parsed_source->src));
|
||||
if (func) {
|
||||
out_definition = func->props->body_node.get_source(func->props->parsed_source->src);
|
||||
}
|
||||
return func != NULL;
|
||||
}
|
||||
@ -255,12 +256,12 @@ std::map<wcstring, env_var_t> function_get_inherit_vars(const wcstring &name) {
|
||||
return func ? func->inherit_vars : std::map<wcstring, env_var_t>();
|
||||
}
|
||||
|
||||
bool function_get_desc(const wcstring &name, wcstring *out_desc) {
|
||||
bool function_get_desc(const wcstring &name, wcstring &out_desc) {
|
||||
// Empty length string goes to NULL.
|
||||
scoped_rlock locker(functions_lock);
|
||||
const function_info_t *func = function_get(name);
|
||||
if (out_desc && func && !func->description.empty()) {
|
||||
out_desc->assign(_(func->description.c_str()));
|
||||
if (func && !func->description.empty()) {
|
||||
out_desc = _(func->description.c_str());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -59,12 +59,12 @@ std::shared_ptr<const function_properties_t> function_get_properties(const wcstr
|
||||
/// Returns by reference the definition of the function with the name \c name. Returns true if
|
||||
/// successful, false if no function with the given name exists.
|
||||
/// This does not trigger autoloading.
|
||||
bool function_get_definition(const wcstring &name, wcstring *out_definition);
|
||||
bool function_get_definition(const wcstring &name, wcstring &out_definition);
|
||||
|
||||
/// Returns by reference the description of the function with the name \c name. Returns true if the
|
||||
/// function exists and has a nonempty description, false if it does not.
|
||||
/// This does not trigger autoloading.
|
||||
bool function_get_desc(const wcstring &name, wcstring *out_desc);
|
||||
bool function_get_desc(const wcstring &name, wcstring &out_desc);
|
||||
|
||||
/// Sets the description of the function with the name \c name.
|
||||
void function_set_desc(const wcstring &name, const wcstring &desc);
|
||||
|
Loading…
x
Reference in New Issue
Block a user