1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-10 07:07:36 +00:00

Shell+LibLine: Support HISTCONTROL environment variable

This is implemented in Line::Editor meaning not only the Shell will
respect it, but also js, Debugger etc.

Possible values are "ignorespace", "ignoredups" and "ignoreboth", as
documented in Shell-vars(7), for now.

The default value for the anon user (set in .shellrc) is "ignoreboth".
This commit is contained in:
Linus Groh 2020-10-25 23:35:00 +00:00 committed by Andreas Kling
parent 4a4b1b1131
commit d412fbdcf3
3 changed files with 21 additions and 1 deletions

View file

@ -208,6 +208,13 @@ void Editor::add_to_history(const String& line)
{
if (line.is_empty())
return;
String histcontrol = getenv("HISTCONTROL");
auto ignoredups = histcontrol == "ignoredups" || histcontrol == "ignoreboth";
auto ignorespace = histcontrol == "ignorespace" || histcontrol == "ignoreboth";
if (ignoredups && !m_history.is_empty() && line == m_history.last())
return;
if (ignorespace && line.starts_with(' '))
return;
if ((m_history.size() + 1) > m_history_capacity)
m_history.take_first();
m_history.append(line);