All posts by Dominik

Dominik is a PhD student at the Control Theory and Robotics Lab, TU Darmstadt, as part of the Research Training Group GKMM (GRK1362). My research focuses on state estimation in distributed systems. As hobby, I contribute to the KDE project and work on the Kate application and editor component.

Kate Modeline Editor

As you may know, Kate supports the concept of document variables, also known as modelines. In short, document variables can be used to set Kate settings local to a file. For instance, this is useful for settings specific indenter options than the ones defined in Kate’s settings dialog. Assume you work on two projects, the first indents with spaces and the second with tabs, then you can simply add a modeline that contains the specific document variables that set the specific indentation properties.

While the concept is very mighty, it is not intuitive to use: You have to know the exact syntax and correct varialbes and their valid values.

To improve this for the next KDE release (v4.8?), Kate gained a variable / modeline editor this week:

If you click the Edit button, a list view pops up showing all valid document variables with the valid values. Right now, this editor is included only in the “Modes & Filetypes” config page. However, the idea is to support it in the context menu over a Kate modeline in the text editor area as well.

Kate in KDE 4.7

Now that the next version of the KDE platform is branched, it’s time to have a look at all the changes in Kate in KDE 4.7.

Current State of Kate

  • In KDE 4.6, we replaced the document list by the new File Tree. We got relatively few critical reports, meaning that the file tree seems to work pretty well for the majority.
  • Kate has two GSoC projects at the moment: Rewrite of the code folding, and Improving Kate’s vi mode. The work done in both projects will be available in KDE 4.8, so we are already working on the next major KDE release.
  • About 6 Kate developers are present at the annual KDE conference.
  • A year ago, the Kate homepage was redesigned. Looking back the last year, we can say that this has been a success.

Just in case you missed it: you can read about Kate’s state 6 months ago here.

Getting Involved

Recently we’ve had several feature requests in comments of a blog post. If you are interested, you can easily implement this and contribute to Kate. And I’ll even show you how to get started for the following feature. First, build Kate according to

Adding support for ctrl+w {left, right, up, down} to switch the active view.

Kate has a vi input mode. This way, vim users can still use their default work flow but still use Kate at the same time. What’s missing in the current vi input mode implementation is support for view navigation. In vim, to move between different windows, press ctrl-w <arrow keys> to switch to the neighboring view. Implementing this is rather easy – the following steps need to be taken care of:

  1. Add vim bindings (=vim shortcuts) to the Kate’s implementation of the ‘normal mode’.
  2. In the implementation, find all visible KateViews.
  3. Compare the global coordinates of the window geometry by using QWidget::mapToGlobal(const QPoint& pos) (for QPoint(0, 0) and QPoint(width(), height()) of all KateViews)
  4. Call setFocus to the nearest matching of the visible views.

Patches are welcome :)