2019-09-09-kate-planning.md 4.73 KB
Newer Older
Christoph Cullmann's avatar
Christoph Cullmann committed
1 2 3
---
title: Kate Planning
author: Christoph Cullmann
Christoph Cullmann's avatar
Christoph Cullmann committed
4
date: 2019-09-09T17:44:00+02:00
Christoph Cullmann's avatar
Christoph Cullmann committed
5 6 7
url: /post/2019/2019-09-09-kate-planning/
---

Christoph Cullmann's avatar
Christoph Cullmann committed
8
### The Opportunity
Christoph Cullmann's avatar
Christoph Cullmann committed
9

Christoph Cullmann's avatar
Christoph Cullmann committed
10
During Akademy 2019 here in Milan, Dominik and me had time to sit together and discuss a bit what we shall do to evolve Kate :)
Christoph Cullmann's avatar
Christoph Cullmann committed
11

Christoph Cullmann's avatar
Christoph Cullmann committed
12
Whereas Kate already works well as a general purpose editor, the competition in the text editor space got more intense in the last years.
Christoph Cullmann's avatar
Christoph Cullmann committed
13

Christoph Cullmann's avatar
Christoph Cullmann committed
14
Beside the well established stuff like [GNU Emacs](https://emacs.org) & [Vim](https://www.vim.org), new editor projects got started that did set the bar higher on what users expect from a advanced GUI text editor.
Christoph Cullmann's avatar
Christoph Cullmann committed
15

Christoph Cullmann's avatar
Christoph Cullmann committed
16
For example [Sublime](https://www.sublimetext.com/), [Atom](https://atom.io) and [Visual Studio Code](https://code.visualstudio.com/) are things to keep an eye on feature & polishing wise.
Christoph Cullmann's avatar
Christoph Cullmann committed
17 18 19

Therefore we decided it would make sense to think a bit about which stuff should be improved or altered in the near future.

Christoph Cullmann's avatar
Christoph Cullmann committed
20
### The Rough Ideas
Christoph Cullmann's avatar
Christoph Cullmann committed
21 22 23

#### Kate Plugin Interfaces

Christoph Cullmann's avatar
Christoph Cullmann committed
24
From the KDE 4.x Kate to the KF5 based Kate version, we removed the Kate specific plugin interfaces and went with more generic interfaces in KTextEditor.
Christoph Cullmann's avatar
Christoph Cullmann committed
25

Christoph Cullmann's avatar
Christoph Cullmann committed
26 27
The idea was to be able to share more plugins e.g. between Kate and KDevelop.
This idea never really did take off, at the moment just two of our plugins are shared at all...
Christoph Cullmann's avatar
Christoph Cullmann committed
28

Christoph Cullmann's avatar
Christoph Cullmann committed
29
On the other side, this makes it much harder to expose new functionality to our plugins, as we need to stay binary compatible.
Christoph Cullmann's avatar
Christoph Cullmann committed
30

Christoph Cullmann's avatar
Christoph Cullmann committed
31
Moving back to having some Kate only stuff that has not even installed headers but is just usable for the plugins we bundle in our kate.git will make it again more flexible what to expose.
Christoph Cullmann's avatar
Christoph Cullmann committed
32

Christoph Cullmann's avatar
Christoph Cullmann committed
33 34 35 36 37 38 39 40 41
One can still think about moving "proven in practice" parts back to the KTextEditor interface part.

#### Make Projects a Core-Feature

At the moment the projects feature is located in a plugin.

For exposure of some things like the current project files some evil Qt property hacks are used.

By moving this feature into the Kate core we can use a sane way to search in project, list project stuff in quick open, ...
Christoph Cullmann's avatar
Christoph Cullmann committed
42

Christoph Cullmann's avatar
Christoph Cullmann committed
43
Other state of the art editors provide that per default, too
Christoph Cullmann's avatar
Christoph Cullmann committed
44

Christoph Cullmann's avatar
Christoph Cullmann committed
45 46 47
Still stuff like "shall we create projects on the fly" can be deactivated like today

#### LSP Support per default
Christoph Cullmann's avatar
Christoph Cullmann committed
48
  
Christoph Cullmann's avatar
Christoph Cullmann committed
49
We shall get the LSP support in a shape that it can be shipped enabled per default.
Christoph Cullmann's avatar
Christoph Cullmann committed
50 51 52 53 54

Users expect that modern editors provide advanced language integration off the shelf, like Atom, Visual Studio Code, ...

#### Great code navigation

Christoph Cullmann's avatar
Christoph Cullmann committed
55 56
We shall provide the user with better code navigation.

Christoph Cullmann's avatar
Christoph Cullmann committed
57
We will provide the plugins with an interface to register location jumps.
Christoph Cullmann's avatar
Christoph Cullmann committed
58

Christoph Cullmann's avatar
Christoph Cullmann committed
59
This will enable the user to seamlessly jump back and forth for any kind of location change e.g. due declaration lookup or search in files match lookup, ...
Christoph Cullmann's avatar
Christoph Cullmann committed
60 61 62

#### Consolidate the plugins

Christoph Cullmann's avatar
Christoph Cullmann committed
63 64 65
The new LSP plugin shall subsume stuff like the Rust or D specific code completion plugins.

Think about the future of unmaintained plugins!
Christoph Cullmann's avatar
Christoph Cullmann committed
66 67 68

#### External Tools Plugin

Christoph Cullmann's avatar
Christoph Cullmann committed
69
Revive the external tools in a improved way, e.g. like in Qt Creator.
Christoph Cullmann's avatar
Christoph Cullmann committed
70 71

#### Improve Port to KSyntaxHighlighting
Christoph Cullmann's avatar
Christoph Cullmann committed
72

Christoph Cullmann's avatar
Christoph Cullmann committed
73
Porting the highlighting over to KSyntaxHighlighting was a big success.
Christoph Cullmann's avatar
Christoph Cullmann committed
74

Christoph Cullmann's avatar
Christoph Cullmann committed
75 76
Kate and Qt Creator now finally share the same highlighting engine and we got a lot of new contributions to our highlightings.
(we support now over 300 different languages, something to be proud of)
Christoph Cullmann's avatar
Christoph Cullmann committed
77

Christoph Cullmann's avatar
Christoph Cullmann committed
78
Still, e.g. the theme support is still not moved over to what the new framework provides.
Christoph Cullmann's avatar
Christoph Cullmann committed
79 80 81 82 83 84 85 86 87

#### Further Brainstorming

##### Git Integration

We shall take a look what other editors provide.

##### Diff/Patch Viewer

Christoph Cullmann's avatar
Christoph Cullmann committed
88
Want we to integrate with stuff like KDiff3/Kompare/... to have a better handling of e.g. git diff, patches, ...?
Christoph Cullmann's avatar
Christoph Cullmann committed
89 90 91

##### Improve View Management

Christoph Cullmann's avatar
Christoph Cullmann committed
92 93 94
Try to improve the way we handle splitting the views and the tabbing.

Take a look how other editors do that!
Christoph Cullmann's avatar
Christoph Cullmann committed
95

Christoph Cullmann's avatar
Christoph Cullmann committed
96
### KDevelop vs. Kate?
Christoph Cullmann's avatar
Christoph Cullmann committed
97 98 99 100

Given already today we enter the area of KDevelop by providing the LSP client, we need to think about what happens in the future with overlapping features.

It is no goal to evolve Kate into an IDE.
Christoph Cullmann's avatar
Christoph Cullmann committed
101 102

We think Kate shall be a competitor for editors like Atom, not for full-fledged IDEs like KDevelop or Visual Studio.
Christoph Cullmann's avatar
Christoph Cullmann committed
103 104 105 106 107

Still, e.g. in the area of project management/code navigation/version control support there will be some overlap.

The question is: can we share stuff there? What shall be the focus of Kate and KDevelop in e.g. language support?

Christoph Cullmann's avatar
Christoph Cullmann committed
108
I think here it will be interesting which future direction the KDevelop project will take.
Christoph Cullmann's avatar
Christoph Cullmann committed
109 110 111

### Discussion

Christoph Cullmann's avatar
Christoph Cullmann committed
112
If you want to chime in on this, feel free to join the discussion at the [KDE reddit](https://www.reddit.com/r/kde/comments/d1sr47/kate_planning_what_is_up_for_kates_future/).
Christoph Cullmann's avatar
Christoph Cullmann committed
113

Christoph Cullmann's avatar
Christoph Cullmann committed
114
If you want to contribute, just join us at [invent.kde.org](https://invent.kde.org/kde/kate) or on [kwrite-devel@kde.org](mailto:kwrite-devel@kde.org).