Skip to content

The Kate Text Editor in 2020

Thursday, 31 December 2020 | Christoph Cullmann


2020 was for sure no good year for most people around the world. A lot of us are affected directly or indirectly by the currently still raging COVID-19 pandemic. Let's hope that 2021 will bring better fortune at least in this aspect.

Still, good stuff happened in 2020, too, not all was bleak. I read already some wrap ups of 2020 from others like Nate and Aleix. A lot stuff happened inside the KDE community this year.

Kate and it's closely related parts KTextEditor & KSyntaxHighlighting evolved a lot in 2020, too. Let's take a look at the highlights out of my perspective ;=)

Kate got a new icon!

We refreshed our branding by introducing a new default icon for Kate designed by Tyson Tan.

Even thought this is no functional change, for a first time in the now 20 years lifetime of Kate we have some instantly recognizable icon. Yes, it doesn't show it is an text editor, but the icons of Atom/Sublime/VS Code and Co. don't do that neither. But you can finally remember it after seeing it a few times => the bird is Kate ;=)

Thanks again to Tyson Tan for spending his time to work on this. And thanks to Noah Davis & Nate Graham to get this into Breeze, too. Even "just" changing the icon is a real team effort!

Our LSP client matured

Already in 2019 with 19.12 we had the first release of our LSP client plugin. In 2020 this plugin matured even further since the latest status report.

Mark Nauwelaerts did a brilliant job in creating and further polishing this feature!

I use this plugin now daily at work and am very happy with the current state.

If you still have some itch to scratch there, please contribute. The plugin is well structured and it is easy to extended, for example Waqar Ahmed just provided support for "Find Implementations".

Tabs, tabs, tabs...

One of the largest visible UI changes in 2020 in the Kate application itself was the return of the classical tabbing in 20.08 and then again the addition of optional LRU like tabbing in 20.12.

As can be seen above, since then Kate learned in the master branch a bit more fine grained configuration of the tabbing. You want LRU like tabbing => set a limit for number of tabs. You like larger expanding tabs? You dislike the double/middle-click behavior? => Configure it like you want it to be!

KTextEditor & KSyntaxHighlighting Color Themes

After years of procrastination KTextEditor finally started to use the color themes as provided by KSyntaxHighlighting. Details of this change can be found in the two summaries here and there. Unfortunately the configuration dialog in KTextEditor had still some faults in 5.75, these should be rectified in 5.76 and higher.

As this was an incompatible change, especially regarding user defined themes, this wasn't done lighthearted but it was required to have some future proof theme support. The new theme storage is a standalone JSON file. The same format is used for the shipped themes as for the user defined ones. No longer some special storage inside some misused KConfig files.

If you have a lot of local old theme config, the KSyntaxHighlighting repository contains some python based converter scripts. The are inside the utils folder.

Kate provides now already 19 default themes. And as this is a KSyntaxHighlighting & KTextEditor feature, all other applications using this like KDevelop benefit, too. You can now have out of the box nice themes like ayu Mirage:

/**
 * SPDX-FileCopyrightText: 2020 Christoph Cullmann <cullmann@kde.org>
 * SPDX-License-Identifier: MIT
 */

// BEGIN
#include <string>
#include <QString>
// END

/**
 * TODO: improve documentation
 * @param magicArgument some magic argument
 * @return magic return value
 */
int main(uint64_t magicArgument)
{
    if (magicArgument > 1) {
        const std::string string = "source file: \"" __FILE__ "\"";
        const QString qString(QStringLiteral("test"));
        return qrand();
    }

    /* BUG: bogus integer constant inside next line */
    const double g = 1.1e12 * 0b01'01'01'01 - 43a + 0x11234 * 0234ULL - 'c' * 42;
    return g > 1.3f;
}

If you want to provide more themes, please submit some merge request.

Kate on Windows

Kate is now more than one year in the official Windows Store. And it seems we are not that unloved there, see the latest in detail status report.

Our rating even improved since that report, see below today's state!

Today, 31.12.2020, 75,889 Kate installations were done via the store alone since we launched there last year!

Thanks to all that helped to make this happen, like Hannah!

Short interlude: Kate turned twenty!

Finally, in December, Kate turned twenty. How it all began:

Yes, we used stuff without anti-aliasing in the ancient past.

Most important: Our Contributors!

All above mentioned things are cool, but what keeps Kate and it's KF5 frameworks base afloat are the people that contribute.

Perhaps this is just a feeling, as I didn't do proper statistics about it, but I believe since we switched over the development to our GitLab instance at invent.kde.org, more contributions are arriving.

Contributing via GitLab merge requests seems to really be more easy especially for new people. We already merge:

Naturally a lot of these patches are small things, but even they matter!

You found some wrong documentation => sure we are interested in a fix!

You did create color theme that might be worth sharing => hand it in!

You wrote a JSON configuration for a LSP server we forgot => we want that!

Our automatically generated team page now already lists over 560 contributors. Join our ranks and help us to make our stuff awesome!

Thanks to everybody that helped to improve our stuff!

New Year Wishes

Let's hope 2021 will be a better year for the world!

And I hope we will see a further rise in contributors & contributions for Kate and KDE in general.

Let's rock!