diff options
author | Greg Clayton <gclayton@apple.com> | 2012-09-01 00:38:36 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2012-09-01 00:38:36 +0000 |
commit | 4c05410f8f7d312fd45d8f156015cc2c13f5c977 (patch) | |
tree | b15804f461fdae043af43925495b53ab83080573 /lldb/source/Interpreter/OptionValueString.cpp | |
parent | c373ca5c74ab69b94fa0f48a58a0c16f2e7e16e1 (diff) | |
download | bcm5719-llvm-4c05410f8f7d312fd45d8f156015cc2c13f5c977.tar.gz bcm5719-llvm-4c05410f8f7d312fd45d8f156015cc2c13f5c977.zip |
Made it so changes to the prompt via "settings set prompt" get noticed by the command line.
Added the ability for OptionValueString objects to take flags. The only flag is currently for parsing escape sequences. Not the prompt string can have escape characters translate which will allow colors in the prompt.
Added functions to Args that will parse the escape sequences in a string, and also re-encode the escape sequences for display. This was looted from other parts of LLDB (the Debugger::FormatString() function).
llvm-svn: 163043
Diffstat (limited to 'lldb/source/Interpreter/OptionValueString.cpp')
-rw-r--r-- | lldb/source/Interpreter/OptionValueString.cpp | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/lldb/source/Interpreter/OptionValueString.cpp b/lldb/source/Interpreter/OptionValueString.cpp index 35ab8c8f7ce..696e62b78e7 100644 --- a/lldb/source/Interpreter/OptionValueString.cpp +++ b/lldb/source/Interpreter/OptionValueString.cpp @@ -14,6 +14,7 @@ // Other libraries and framework includes // Project includes #include "lldb/Core/Stream.h" +#include "lldb/Interpreter/Args.h" using namespace lldb; using namespace lldb_private; @@ -29,10 +30,22 @@ OptionValueString::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uin strm.PutCString (" = "); if (!m_current_value.empty() || m_value_was_set) { - if (dump_mask & eDumpOptionRaw) - strm.Printf ("%s", m_current_value.c_str()); + if (m_options.Test (eOptionEncodeCharacterEscapeSequences)) + { + std::string expanded_escape_value; + Args::ExpandEscapedCharacters(m_current_value.c_str(), expanded_escape_value); + if (dump_mask & eDumpOptionRaw) + strm.Printf ("%s", expanded_escape_value.c_str()); + else + strm.Printf ("\"%s\"", expanded_escape_value.c_str()); + } else - strm.Printf ("\"%s\"", m_current_value.c_str()); + { + if (dump_mask & eDumpOptionRaw) + strm.Printf ("%s", m_current_value.c_str()); + else + strm.Printf ("\"%s\"", m_current_value.c_str()); + } } } } @@ -53,7 +66,16 @@ OptionValueString::SetValueFromCString (const char *value_cstr, case eVarSetOperationAppend: if (value_cstr && value_cstr[0]) - m_current_value += value_cstr; + { + if (m_options.Test (eOptionEncodeCharacterEscapeSequences)) + { + std::string str; + Args::EncodeEscapeSequences (value_cstr, str); + m_current_value += str; + } + else + m_current_value += value_cstr; + } break; case eVarSetOperationClear: @@ -63,7 +85,14 @@ OptionValueString::SetValueFromCString (const char *value_cstr, case eVarSetOperationReplace: case eVarSetOperationAssign: m_value_was_set = true; - SetCurrentValue (value_cstr); + if (m_options.Test (eOptionEncodeCharacterEscapeSequences)) + { + Args::EncodeEscapeSequences (value_cstr, m_current_value); + } + else + { + SetCurrentValue (value_cstr); + } break; } return error; |