1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 11:38:11 +00:00

Shell: factor out updating the path cache into a function.

This commit is contained in:
Mathieu PATUREL 2020-08-03 19:06:42 +10:00 committed by Andreas Kling
parent f6d4c4f02c
commit 0622b60fbd
4 changed files with 22 additions and 16 deletions

View file

@ -367,9 +367,9 @@ RefPtr<Value> BarewordLiteral::run(RefPtr<Shell>)
void BarewordLiteral::highlight_in_editor(Line::Editor& editor, Shell& shell, HighlightMetadata metadata)
{
if (metadata.is_first_in_list) {
if (shell.is_runnable(m_text))
if (shell.is_runnable(m_text)) {
editor.stylize({ m_position.start_offset, m_position.end_offset }, { Line::Style::Bold });
else {
} else {
editor.stylize({ m_position.start_offset, m_position.end_offset }, { Line::Style::Foreground(Line::Style::XtermColor::Red) });
}

View file

@ -64,20 +64,7 @@ int Shell::builtin_alias(int argc, const char** argv)
}
} else {
m_aliases.set(parts[0], parts[1]);
size_t index = 0;
auto match = binary_search(
cached_path.span(), parts[0], [](const String& name, const String& program) -> int {
return strcmp(name.characters(), program.characters());
},
&index);
if (match)
continue;
while (strcmp(cached_path[index].characters(), parts[0].characters()) < 0) {
index++;
}
cached_path.insert(index, parts[0]);
add_entry_to_cache(parts[0]);
}
}

View file

@ -795,6 +795,24 @@ void Shell::cache_path()
quick_sort(cached_path);
}
void Shell::add_entry_to_cache(const String& entry)
{
size_t index = 0;
auto match = binary_search(
cached_path.span(), entry, [](const String& name, const String& program) -> int {
return strcmp(name.characters(), program.characters());
},
&index);
if (match)
return;
while (strcmp(cached_path[index].characters(), entry.characters()) < 0) {
index++;
}
cached_path.insert(index, entry);
}
void Shell::highlight(Line::Editor& editor) const
{
auto line = editor.line();

View file

@ -188,6 +188,7 @@ private:
virtual void save_to(JsonObject&) override;
void cache_path();
void add_entry_to_cache(const String&);
void stop_all_jobs();
const Job* m_current_job { nullptr };
LocalFrame* find_frame_containing_local_variable(const String& name);