Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Utilities
Kate
Commits
eb5956e5
Commit
eb5956e5
authored
Dec 13, 2021
by
Waqar Ahmed
Browse files
Ensure to clean up saved ranges when docs close
parent
46ff658a
Pipeline
#109319
passed with stage
in 3 minutes and 30 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
addons/rainbow-parens/rainbowparens_plugin.cpp
View file @
eb5956e5
...
...
@@ -85,22 +85,12 @@ void RainbowParenPluginView::updateColors(KTextEditor::Editor *editor)
}
}
static
void
clearSavedRangesForView
(
std
::
vector
<
RainbowParenPluginView
::
ViewSavedRanges
>
&
ranges
,
KTextEditor
::
View
*
v
)
static
void
getSavedRangesForDoc
(
std
::
vector
<
RainbowParenPluginView
::
SavedRanges
>
&
ranges
,
std
::
vector
<
std
::
unique_ptr
<
KTextEditor
::
MovingRange
>>
&
outRanges
,
KTextEditor
::
Document
*
d
)
{
auto
it
=
std
::
find_if
(
ranges
.
begin
(),
ranges
.
end
(),
[
v
](
const
RainbowParenPluginView
::
ViewSavedRanges
&
r
)
{
return
r
.
view
==
v
;
});
if
(
it
!=
ranges
.
end
())
{
ranges
.
erase
(
it
);
}
}
static
void
getSavedRangesForView
(
std
::
vector
<
RainbowParenPluginView
::
ViewSavedRanges
>
&
ranges
,
std
::
vector
<
std
::
unique_ptr
<
KTextEditor
::
MovingRange
>>
&
outRanges
,
KTextEditor
::
View
*
v
)
{
auto
it
=
std
::
find_if
(
ranges
.
begin
(),
ranges
.
end
(),
[
v
](
const
RainbowParenPluginView
::
ViewSavedRanges
&
r
)
{
return
r
.
view
==
v
;
auto
it
=
std
::
find_if
(
ranges
.
begin
(),
ranges
.
end
(),
[
d
](
const
RainbowParenPluginView
::
SavedRanges
&
r
)
{
return
r
.
doc
==
d
;
});
if
(
it
!=
ranges
.
end
())
{
outRanges
=
std
::
move
(
it
->
ranges
);
...
...
@@ -120,24 +110,28 @@ void RainbowParenPluginView::viewChanged(KTextEditor::View *view)
disconnect
(
doc
,
SIGNAL
(
aboutToInvalidateMovingInterfaceContent
(
KTextEditor
::
Document
*
)),
this
,
SLOT
(
clearRanges
(
KTextEditor
::
Document
*
)));
// Remove if we already have this view's ranges saved
clearSavedRangesFor
View
(
savedRanges
,
m_activeView
);
clearSavedRangesFor
Doc
(
doc
);
// save these ranges so that if we are in a split view etc, we don't
// loose the bracket coloring
View
SavedRanges
saved
;
saved
.
view
=
m_activeView
;
SavedRanges
saved
;
saved
.
doc
=
doc
;
saved
.
ranges
=
std
::
move
(
ranges
);
savedRanges
.
push_back
(
std
::
move
(
saved
));
if
(
savedRanges
.
size
()
>
4
)
{
savedRanges
.
erase
(
savedRanges
.
begin
());
}
// clear ranges for this doc if it gets closed
connect
(
doc
,
SIGNAL
(
aboutToDeleteMovingInterfaceContent
(
KTextEditor
::
Document
*
)),
this
,
SLOT
(
clearSavedRangesForDoc
(
KTextEditor
::
Document
*
)));
connect
(
doc
,
SIGNAL
(
aboutToInvalidateMovingInterfaceContent
(
KTextEditor
::
Document
*
)),
this
,
SLOT
(
clearSavedRangesForDoc
(
KTextEditor
::
Document
*
)));
}
ranges
.
clear
();
m_activeView
=
view
;
// get any existing ranges for this view
getSavedRangesFor
View
(
savedRanges
,
ranges
,
m_activeView
);
getSavedRangesFor
Doc
(
savedRanges
,
ranges
,
m_activeView
->
document
()
);
connect
(
view
,
&
KTextEditor
::
View
::
verticalScrollPositionChanged
,
this
,
&
RainbowParenPluginView
::
rehighlight
,
Qt
::
UniqueConnection
);
connect
(
view
,
&
KTextEditor
::
View
::
textInserted
,
this
,
&
RainbowParenPluginView
::
rehighlight
,
Qt
::
UniqueConnection
);
...
...
@@ -158,6 +152,16 @@ void RainbowParenPluginView::clearRanges(KTextEditor::Document *)
ranges
.
clear
();
}
void
RainbowParenPluginView
::
clearSavedRangesForDoc
(
KTextEditor
::
Document
*
doc
)
{
auto
it
=
std
::
find_if
(
savedRanges
.
begin
(),
savedRanges
.
end
(),
[
doc
](
const
RainbowParenPluginView
::
SavedRanges
&
r
)
{
return
r
.
doc
==
doc
;
});
if
(
it
!=
savedRanges
.
end
())
{
savedRanges
.
erase
(
it
);
}
}
static
bool
isComment
(
KTextEditor
::
Document
*
doc
,
int
line
,
int
col
)
{
return
doc
->
defaultStyleAt
({
line
,
col
})
==
KTextEditor
::
DefaultStyle
::
dsComment
;
...
...
addons/rainbow-parens/rainbowparens_plugin.h
View file @
eb5956e5
...
...
@@ -37,12 +37,13 @@ public:
void
viewChanged
(
KTextEditor
::
View
*
view
);
Q_SLOT
void
clearRanges
(
KTextEditor
::
Document
*
doc
);
Q_SLOT
void
clearSavedRangesForDoc
(
KTextEditor
::
Document
*
doc
);
struct
View
SavedRanges
{
QPointer
<
KTextEditor
::
View
>
view
;
struct
SavedRanges
{
QPointer
<
KTextEditor
::
Document
>
doc
;
std
::
vector
<
std
::
unique_ptr
<
KTextEditor
::
MovingRange
>>
ranges
;
};
std
::
vector
<
View
SavedRanges
>
savedRanges
;
std
::
vector
<
SavedRanges
>
savedRanges
;
private:
std
::
vector
<
std
::
unique_ptr
<
KTextEditor
::
MovingRange
>>
ranges
;
...
...
Waqar Ahmed
@waqar
mentioned in commit
5abbcb31
·
Dec 21, 2021
mentioned in commit
5abbcb31
mentioned in commit 5abbcb31c7f633ebb13f0e33c7028e1632c8442c
Toggle commit list
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment