diff options
| author | Raphael Isemann <teemperor@gmail.com> | 2018-08-02 00:30:15 +0000 |
|---|---|---|
| committer | Raphael Isemann <teemperor@gmail.com> | 2018-08-02 00:30:15 +0000 |
| commit | 566afa0ab2ce3fc753ce7490f7c1394c3f4699c0 (patch) | |
| tree | 4295653b2b9482af2a8f0cbcd7cc90ad7fd54147 /lldb/source/Plugins/Language/ObjCPlusPlus | |
| parent | cedebd594083a54cfb0a0b766fd000b6f11216fa (diff) | |
| download | bcm5719-llvm-566afa0ab2ce3fc753ce7490f7c1394c3f4699c0.tar.gz bcm5719-llvm-566afa0ab2ce3fc753ce7490f7c1394c3f4699c0.zip | |
[LLDB] Added syntax highlighting support
Summary:
This patch adds syntax highlighting support to LLDB. When enabled (and lldb is allowed
to use colors), printed source code is annotated with the ANSI color escape sequences.
So far we have only one highlighter which is based on Clang and is responsible for all
languages that are supported by Clang. It essentially just runs the raw lexer over the input
and then surrounds the specific tokens with the configured escape sequences.
Reviewers: zturner, davide
Reviewed By: davide
Subscribers: labath, teemperor, llvm-commits, mgorny, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D49334
llvm-svn: 338662
Diffstat (limited to 'lldb/source/Plugins/Language/ObjCPlusPlus')
3 files changed, 18 insertions, 1 deletions
diff --git a/lldb/source/Plugins/Language/ObjCPlusPlus/CMakeLists.txt b/lldb/source/Plugins/Language/ObjCPlusPlus/CMakeLists.txt index 75df9794d75..1aa5cc1ed48 100644 --- a/lldb/source/Plugins/Language/ObjCPlusPlus/CMakeLists.txt +++ b/lldb/source/Plugins/Language/ObjCPlusPlus/CMakeLists.txt @@ -1,7 +1,8 @@ add_lldb_library(lldbPluginObjCPlusPlusLanguage PLUGIN ObjCPlusPlusLanguage.cpp - + LINK_LIBS lldbCore lldbTarget + lldbPluginClangCommon ) diff --git a/lldb/source/Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.cpp b/lldb/source/Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.cpp index bfc22c9ee65..5e6d86e0531 100644 --- a/lldb/source/Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.cpp +++ b/lldb/source/Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.cpp @@ -16,6 +16,15 @@ using namespace lldb; using namespace lldb_private; +bool ObjCPlusPlusLanguage::IsSourceFile(llvm::StringRef file_path) const { + const auto suffixes = {".h", ".mm"}; + for (auto suffix : suffixes) { + if (file_path.endswith_lower(suffix)) + return true; + } + return false; +} + void ObjCPlusPlusLanguage::Initialize() { PluginManager::RegisterPlugin(GetPluginNameStatic(), "Objective-C++ Language", CreateInstance); diff --git a/lldb/source/Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h b/lldb/source/Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h index 588b52215c1..b1825c9d53d 100644 --- a/lldb/source/Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h +++ b/lldb/source/Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h @@ -14,12 +14,15 @@ // C++ Includes // Other libraries and framework includes // Project includes +#include "Plugins/Language/ClangCommon/ClangHighlighter.h" #include "lldb/Target/Language.h" #include "lldb/lldb-private.h" namespace lldb_private { class ObjCPlusPlusLanguage : public Language { + ClangHighlighter m_highlighter; + public: ObjCPlusPlusLanguage() = default; @@ -29,6 +32,10 @@ public: return lldb::eLanguageTypeObjC_plus_plus; } + bool IsSourceFile(llvm::StringRef file_path) const override; + + const Highlighter *GetHighlighter() const override { return &m_highlighter; } + //------------------------------------------------------------------ // Static Functions //------------------------------------------------------------------ |

