File indexing completed on 2024-04-28 15:31:18
0001 /* 0002 SPDX-FileCopyrightText: KDE Developers 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "jumps.h" 0008 0009 using namespace KateVi; 0010 0011 void Jumps::add(const KTextEditor::Cursor cursor) 0012 { 0013 for (auto iterator = m_jumps.begin(); iterator != m_jumps.end(); iterator++) { 0014 if ((*iterator).line() == cursor.line()) { 0015 m_jumps.erase(iterator); 0016 break; 0017 } 0018 } 0019 0020 m_jumps.push_back(cursor); 0021 m_current = m_jumps.end(); 0022 } 0023 0024 KTextEditor::Cursor Jumps::next(const KTextEditor::Cursor cursor) 0025 { 0026 if (m_current == m_jumps.end()) { 0027 return cursor; 0028 } 0029 0030 KTextEditor::Cursor jump; 0031 if (m_current + 1 != m_jumps.end()) { 0032 jump = *(++m_current); 0033 } else { 0034 jump = *(m_current); 0035 } 0036 0037 return jump; 0038 } 0039 0040 KTextEditor::Cursor Jumps::prev(const KTextEditor::Cursor cursor) 0041 { 0042 if (m_current == m_jumps.end()) { 0043 add(cursor); 0044 m_current--; 0045 } 0046 0047 if (m_current != m_jumps.begin()) { 0048 m_current--; 0049 return *m_current; 0050 } 0051 0052 return cursor; 0053 } 0054 0055 void Jumps::readSessionConfig(const KConfigGroup &config) 0056 { 0057 // Format: jump1.line, jump1.column, jump2.line, jump2.column, jump3.line, ... 0058 m_jumps.clear(); 0059 QStringList jumps = config.readEntry("JumpList", QStringList()); 0060 0061 for (int i = 0; i + 1 < jumps.size(); i += 2) { 0062 KTextEditor::Cursor jump = {jumps.at(i).toInt(), jumps.at(i + 1).toInt()}; 0063 m_jumps.push_back(jump); 0064 } 0065 0066 m_current = m_jumps.end(); 0067 } 0068 0069 void Jumps::writeSessionConfig(KConfigGroup &config) const 0070 { 0071 // Format: jump1.line, jump1.column, jump2.line, jump2.column, jump3.line, ... 0072 QStringList l; 0073 for (const auto &jump : m_jumps) { 0074 l << QString::number(jump.line()) << QString::number(jump.column()); 0075 } 0076 config.writeEntry("JumpList", l); 0077 }