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 }