File indexing completed on 2024-05-12 04:38:07
0001 /* 0002 SPDX-FileCopyrightText: 2006 Adam Treat <treat@kde.org> 0003 SPDX-FileCopyrightText: 2007 Andreas Pakulat <apaku@gmx.org> 0004 SPDX-FileCopyrightText: 2008 David Nolden <david.nolden.kdevelop@art-master.de> 0005 0006 SPDX-License-Identifier: LGPL-2.0-or-later 0007 */ 0008 0009 #include "editorcontext.h" 0010 0011 #include <KTextEditor/Cursor> 0012 #include <KTextEditor/Document> 0013 #include <KTextEditor/View> 0014 0015 namespace KDevelop { 0016 class EditorContextPrivate 0017 { 0018 public: 0019 EditorContextPrivate(KTextEditor::View* view, const KTextEditor::Cursor& position) 0020 : m_url(view->document()->url()) 0021 , m_position(position) 0022 , m_currentLine(view->document()->line(m_position.line())) 0023 , m_view(view) 0024 { 0025 int wordStart = m_position.column(); 0026 int wordEnd = m_position.column(); 0027 while (wordStart > 0 && wordStart < m_currentLine.length() && 0028 (m_currentLine[wordStart - 1].isLetterOrNumber() || m_currentLine[wordStart - 1] == QLatin1Char('_'))) 0029 --wordStart; 0030 while (wordEnd >= 0 && wordEnd < m_currentLine.length() && 0031 (m_currentLine[wordEnd].isLetterOrNumber() || m_currentLine[wordEnd] == QLatin1Char('_'))) 0032 ++wordEnd; 0033 } 0034 0035 QUrl m_url; 0036 KTextEditor::Cursor m_position; 0037 QString m_currentLine, m_currentWord; 0038 KTextEditor::View* m_view; 0039 }; 0040 0041 EditorContext::EditorContext(KTextEditor::View* view, const KTextEditor::Cursor& position) 0042 : DeclarationContext(view, position) 0043 , d_ptr(new EditorContextPrivate(view, position)) 0044 {} 0045 0046 EditorContext::~EditorContext() = default; 0047 0048 int EditorContext::type() const 0049 { 0050 return Context::EditorContext; 0051 } 0052 0053 QUrl EditorContext::url() const 0054 { 0055 Q_D(const EditorContext); 0056 0057 return d->m_url; 0058 } 0059 0060 QList<QUrl> EditorContext::urls() const 0061 { 0062 Q_D(const EditorContext); 0063 0064 return { 0065 d->m_url 0066 }; 0067 } 0068 0069 KTextEditor::Cursor EditorContext::position() const 0070 { 0071 Q_D(const EditorContext); 0072 0073 return d->m_position; 0074 } 0075 0076 QString EditorContext::currentLine() const 0077 { 0078 Q_D(const EditorContext); 0079 0080 return d->m_currentLine; 0081 } 0082 0083 QString EditorContext::currentWord() const 0084 { 0085 Q_D(const EditorContext); 0086 0087 return d->m_currentWord; 0088 } 0089 0090 KTextEditor::View* EditorContext::view() const 0091 { 0092 Q_D(const EditorContext); 0093 0094 return d->m_view; 0095 } 0096 }