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/ObjC | |
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/ObjC')
-rw-r--r-- | lldb/source/Plugins/Language/ObjC/CMakeLists.txt | 1 | ||||
-rw-r--r-- | lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp | 9 | ||||
-rw-r--r-- | lldb/source/Plugins/Language/ObjC/ObjCLanguage.h | 7 |
3 files changed, 17 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Language/ObjC/CMakeLists.txt b/lldb/source/Plugins/Language/ObjC/CMakeLists.txt index 95ace3a3633..afb68d4de83 100644 --- a/lldb/source/Plugins/Language/ObjC/CMakeLists.txt +++ b/lldb/source/Plugins/Language/ObjC/CMakeLists.txt @@ -31,6 +31,7 @@ add_lldb_library(lldbPluginObjCLanguage PLUGIN lldbTarget lldbUtility lldbPluginAppleObjCRuntime + lldbPluginClangCommon EXTRA_CXXFLAGS ${EXTRA_CXXFLAGS} ) diff --git a/lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp b/lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp index 47874b3be8f..d57b999206b 100644 --- a/lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp +++ b/lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp @@ -1102,3 +1102,12 @@ bool ObjCLanguage::IsNilReference(ValueObject &valobj) { bool isZero = valobj.GetValueAsUnsigned(0, &canReadValue) == 0; return canReadValue && isZero; } + +bool ObjCLanguage::IsSourceFile(llvm::StringRef file_path) const { + const auto suffixes = {".h", ".m", ".M"}; + for (auto suffix : suffixes) { + if (file_path.endswith_lower(suffix)) + return true; + } + return false; +} diff --git a/lldb/source/Plugins/Language/ObjC/ObjCLanguage.h b/lldb/source/Plugins/Language/ObjC/ObjCLanguage.h index 9782c5da0d6..10c30b338cb 100644 --- a/lldb/source/Plugins/Language/ObjC/ObjCLanguage.h +++ b/lldb/source/Plugins/Language/ObjC/ObjCLanguage.h @@ -17,6 +17,7 @@ // Other libraries and framework includes // Project includes +#include "Plugins/Language/ClangCommon/ClangHighlighter.h" #include "lldb/Target/Language.h" #include "lldb/Utility/ConstString.h" #include "lldb/lldb-private.h" @@ -24,6 +25,8 @@ namespace lldb_private { class ObjCLanguage : public Language { + ClangHighlighter m_highlighter; + public: class MethodName { public: @@ -121,6 +124,10 @@ public: bool IsNilReference(ValueObject &valobj) override; + bool IsSourceFile(llvm::StringRef file_path) const override; + + const Highlighter *GetHighlighter() const override { return &m_highlighter; } + //------------------------------------------------------------------ // Static Functions //------------------------------------------------------------------ |