From: "Andreas Sturmlechner" <asturm@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: kde-frameworks/ktexteditor/files/, kde-frameworks/ktexteditor/
Date: Sat, 9 Apr 2022 16:07:13 +0000 (UTC) [thread overview]
Message-ID: <1649520184.04a3f091de5fc81e28e024ebe732081e6598fcea.asturm@gentoo> (raw)
commit: 04a3f091de5fc81e28e024ebe732081e6598fcea
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sat Apr 9 15:37:28 2022 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sat Apr 9 16:03:04 2022 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=04a3f091
kde-frameworks/ktexteditor: Fix crash and comment toggling
Upstream commit ad82b876016367bd9765185dba84600985e5d0fd
KDE-bug: https://bugs.kde.org/show_bug.cgi?id=451593
Upstream commit 1173d5184e8b073790556dbdba92a8b8abdd62dc
KDE-bug: https://bugs.kde.org/show_bug.cgi?id=451471
Package-Manager: Portage-3.0.30, Repoman-3.0.3
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
...xteditor-5.92.0-fix-crash-w-stale-indexes.patch | 29 ++++++
| 112 +++++++++++++++++++++
.../ktexteditor/ktexteditor-5.92.0-r1.ebuild | 60 +++++++++++
3 files changed, 201 insertions(+)
diff --git a/kde-frameworks/ktexteditor/files/ktexteditor-5.92.0-fix-crash-w-stale-indexes.patch b/kde-frameworks/ktexteditor/files/ktexteditor-5.92.0-fix-crash-w-stale-indexes.patch
new file mode 100644
index 000000000000..b77a72a3e502
--- /dev/null
+++ b/kde-frameworks/ktexteditor/files/ktexteditor-5.92.0-fix-crash-w-stale-indexes.patch
@@ -0,0 +1,29 @@
+From ad82b876016367bd9765185dba84600985e5d0fd Mon Sep 17 00:00:00 2001
+From: Waqar Ahmed <waqar.17a@gmail.com>
+Date: Fri, 18 Mar 2022 10:14:28 +0500
+Subject: [PATCH] Fix crash with stale indexes
+
+BUG: 451593
+---
+ src/completion/katecompletionmodel.cpp | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/completion/katecompletionmodel.cpp b/src/completion/katecompletionmodel.cpp
+index 1e241f0d..d9bb8421 100644
+--- a/src/completion/katecompletionmodel.cpp
++++ b/src/completion/katecompletionmodel.cpp
+@@ -914,6 +914,11 @@ QModelIndex KateCompletionModel::mapToSource(const QModelIndex &proxyIndex) cons
+ }
+
+ if (Group *g = groupOfParent(proxyIndex)) {
++ if (!m_rowTable.contains(g)) {
++ qWarning() << Q_FUNC_INFO << "Stale proxy index for which there is no group";
++ return {};
++ }
++
+ if (proxyIndex.row() >= 0 && proxyIndex.row() < (int)g->filtered.size()) {
+ ModelRow source = g->filtered[proxyIndex.row()].sourceRow();
+ return source.second.sibling(source.second.row(), proxyIndex.column());
+--
+GitLab
+
--git a/kde-frameworks/ktexteditor/files/ktexteditor-5.92.0-fix-toggle-comment.patch b/kde-frameworks/ktexteditor/files/ktexteditor-5.92.0-fix-toggle-comment.patch
new file mode 100644
index 000000000000..bac8cd017e68
--- /dev/null
+++ b/kde-frameworks/ktexteditor/files/ktexteditor-5.92.0-fix-toggle-comment.patch
@@ -0,0 +1,112 @@
+From 1173d5184e8b073790556dbdba92a8b8abdd62dc Mon Sep 17 00:00:00 2001
+From: Waqar Ahmed <waqar.17a@gmail.com>
+Date: Mon, 14 Mar 2022 09:44:54 +0500
+Subject: [PATCH] Fix toggle comment with space at the start
+
+BUG: 451471
+---
+ autotests/src/katedocument_test.cpp | 48 +++++++++++++++++++++++++++++
+ autotests/src/katedocument_test.h | 1 +
+ src/document/katedocument.cpp | 10 +++++-
+ 3 files changed, 58 insertions(+), 1 deletion(-)
+
+diff --git a/autotests/src/katedocument_test.cpp b/autotests/src/katedocument_test.cpp
+index f0946829..a842f960 100644
+--- a/autotests/src/katedocument_test.cpp
++++ b/autotests/src/katedocument_test.cpp
+@@ -851,4 +851,52 @@ void KateDocumentTest::testKeepUndoOverReload()
+ QCOMPARE(doc.text(), insertedText + initialText);
+ }
+
++void KateDocumentTest::testToggleComment()
++{
++ { // BUG: 451471
++ KTextEditor::DocumentPrivate doc;
++ QVERIFY(doc.highlightingModes().contains(QStringLiteral("Python")));
++ doc.setHighlightingMode(QStringLiteral("Python"));
++ const QString original = QStringLiteral("import hello;\n def method():");
++ doc.setText(original);
++ QVERIFY(doc.lines() == 2);
++
++ doc.commentSelection(doc.documentRange(), {1, 2}, false, 0); // 0 == ToggleComment
++ QCOMPARE(doc.text(), QStringLiteral("#import hello;\n #def method():"));
++
++ doc.commentSelection(doc.documentRange(), {1, 2}, false, 0); // 0 == ToggleComment
++ QCOMPARE(doc.text(), original);
++ }
++
++ { // Comment C++;
++ KTextEditor::DocumentPrivate doc;
++ QVERIFY(doc.highlightingModes().contains(QStringLiteral("C++")));
++ doc.setHighlightingMode(QStringLiteral("C++"));
++ QString original = QStringLiteral("#include<iostream>\nint main()\n{\nreturn 0;\n}\n");
++ doc.setText(original);
++ QVERIFY(doc.lines() == 6);
++
++ doc.commentSelection(doc.documentRange(), {5, 0}, false, 0); // 0 == ToggleComment
++ QCOMPARE(doc.text(), QStringLiteral("// #include<iostream>\n// int main()\n// {\n// return 0;\n// }\n"));
++
++ doc.commentSelection(doc.documentRange(), {5, 0}, false, 0); // 0 == ToggleComment
++ QCOMPARE(doc.text(), original);
++
++ // Comment just a portion
++ doc.commentSelection(Range(1, 0, 1, 3), Cursor(1, 3), false, 0);
++ QCOMPARE(doc.text(), QStringLiteral("#include<iostream>\n/*int*/ main()\n{\nreturn 0;\n}\n"));
++ doc.commentSelection(Range(1, 0, 1, 7), Cursor(1, 3), false, 0);
++ QCOMPARE(doc.text(), original);
++
++ // mixed, one line commented, one not => both get commented
++ original = QStringLiteral(" // int main()\n{}");
++ doc.setText(original);
++ doc.commentSelection(doc.documentRange(), {1, 2}, false, 0);
++ QCOMPARE(doc.text(), QStringLiteral("// // int main()\n// {}"));
++ doc.commentSelection(doc.documentRange(), {1, 2}, false, 0);
++ // after uncommenting, we get original text back with one line commented
++ QCOMPARE(doc.text(), original);
++ }
++}
++
+ #include "katedocument_test.moc"
+diff --git a/autotests/src/katedocument_test.h b/autotests/src/katedocument_test.h
+index c3b24b4c..0076f879 100644
+--- a/autotests/src/katedocument_test.h
++++ b/autotests/src/katedocument_test.h
+@@ -46,6 +46,7 @@ private Q_SLOTS:
+ void testIndentOnPaste();
+ void testAboutToSave();
+ void testKeepUndoOverReload();
++ void testToggleComment();
+ };
+
+ #endif // KATE_DOCUMENT_TEST_H
+diff --git a/src/document/katedocument.cpp b/src/document/katedocument.cpp
+index 56e8fc7d..b72592b6 100644
+--- a/src/document/katedocument.cpp
++++ b/src/document/katedocument.cpp
+@@ -3995,7 +3995,11 @@ bool KTextEditor::DocumentPrivate::removeStartLineCommentFromSelection(KTextEdit
+ bool allLinesAreCommented = true;
+ for (int line = endLine; line >= startLine; line--) {
+ const auto ln = m_buffer->plainLine(line);
+- if (!ln->startsWith(shortCommentMark) && !ln->startsWith(longCommentMark)) {
++ const QString &text = ln->text();
++ QStringView textView(text.data(), text.size());
++ // Must trim any spaces at the beginning
++ textView = textView.trimmed();
++ if (!textView.startsWith(shortCommentMark) && !textView.startsWith(longCommentMark)) {
+ allLinesAreCommented = false;
+ break;
+ }
+@@ -4031,6 +4035,10 @@ void KTextEditor::DocumentPrivate::commentSelection(KTextEditor::Range selection
+
+ int startAttrib = 0;
+ Kate::TextLine ln = kateTextLine(line);
++ if (!ln) {
++ qWarning() << __FUNCTION__ << __LINE__ << "Unexpected null TextLine for " << line << " lineCount: " << lines();
++ return;
++ }
+
+ if (selectionCol < ln->length()) {
+ startAttrib = ln->attribute(selectionCol);
+--
+GitLab
+
diff --git a/kde-frameworks/ktexteditor/ktexteditor-5.92.0-r1.ebuild b/kde-frameworks/ktexteditor/ktexteditor-5.92.0-r1.ebuild
new file mode 100644
index 000000000000..a09c6631374b
--- /dev/null
+++ b/kde-frameworks/ktexteditor/ktexteditor-5.92.0-r1.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PVCUT=$(ver_cut 1-2)
+QTMIN=5.15.2
+VIRTUALX_REQUIRED="test"
+inherit ecm kde.org
+
+DESCRIPTION="Framework providing a full text editor component"
+
+LICENSE="LGPL-2+"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+IUSE="+editorconfig"
+
+RESTRICT="test"
+
+DEPEND="
+ >=dev-qt/qtdeclarative-${QTMIN}:5
+ >=dev-qt/qtgui-${QTMIN}:5
+ >=dev-qt/qtprintsupport-${QTMIN}:5
+ >=dev-qt/qtwidgets-${QTMIN}:5
+ >=dev-qt/qtxml-${QTMIN}:5
+ =kde-frameworks/karchive-${PVCUT}*:5
+ =kde-frameworks/kauth-${PVCUT}*:5
+ =kde-frameworks/kcodecs-${PVCUT}*:5
+ =kde-frameworks/kcompletion-${PVCUT}*:5
+ =kde-frameworks/kconfig-${PVCUT}*:5
+ =kde-frameworks/kconfigwidgets-${PVCUT}*:5
+ =kde-frameworks/kcoreaddons-${PVCUT}*:5
+ =kde-frameworks/kguiaddons-${PVCUT}*:5
+ =kde-frameworks/ki18n-${PVCUT}*:5
+ =kde-frameworks/kiconthemes-${PVCUT}*:5
+ =kde-frameworks/kio-${PVCUT}*:5
+ =kde-frameworks/kitemviews-${PVCUT}*:5
+ =kde-frameworks/kjobwidgets-${PVCUT}*:5
+ =kde-frameworks/kparts-${PVCUT}*:5
+ =kde-frameworks/ktextwidgets-${PVCUT}*:5
+ =kde-frameworks/kwidgetsaddons-${PVCUT}*:5
+ =kde-frameworks/kxmlgui-${PVCUT}*:5
+ =kde-frameworks/sonnet-${PVCUT}*:5
+ =kde-frameworks/syntax-highlighting-${PVCUT}*:5
+ editorconfig? ( app-text/editorconfig-core-c )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="test? ( >=kde-frameworks/kservice-${PVCUT}:5 )"
+
+PATCHES=(
+ "${FILESDIR}/${P}-fix-crash-w-stale-indexes.patch" # KDE-bug 451593
+ "${FILESDIR}/${P}-fix-toggle-comment.patch" # KDE-bug 451471
+)
+
+src_configure() {
+ local mycmakeargs=(
+ $(cmake_use_find_package editorconfig EditorConfig)
+ )
+
+ ecm_src_configure
+}
next reply other threads:[~2022-04-09 16:07 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-09 16:07 Andreas Sturmlechner [this message]
-- strict thread matches above, loose matches on Subject: below --
2025-01-27 18:43 [gentoo-commits] repo/gentoo:master commit in: kde-frameworks/ktexteditor/files/, kde-frameworks/ktexteditor/ Andreas Sturmlechner
2022-08-07 20:58 Andreas Sturmlechner
2022-01-20 13:26 Andreas Sturmlechner
2022-01-20 13:26 Andreas Sturmlechner
2021-04-04 13:23 Andreas Sturmlechner
2019-11-01 19:39 Andreas Sturmlechner
2018-06-09 7:18 Andreas Sturmlechner
2016-09-29 11:39 Michael Palimaka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1649520184.04a3f091de5fc81e28e024ebe732081e6598fcea.asturm@gentoo \
--to=asturm@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox