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.

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 http://kate-editor.org/get-it/.

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 :)

Kate Behavior at Exit

From time to time it happens that bug reports get pretty much nasty. A single user or some users request a feature. If you argue, bashing starts.

In this case, it’s about Kate and the following scenario: You are editing several files (e.g. because you clicked on text files in dolphin). So Kate starts and you are not using an explicit session. If all files are saved, you can simply quit Kate. Bug #267356 requests, that the user is asked whether to save the session or not. Right now, if you are not using a session, Kate simply closes and the file list is lost. Comments are welcome, especially in the report. But please be objective and polite. Thanks…

PS: Sometimes open source development is real fun. Sometimes it’s not :p

Kate’s Tab Bar Plugins

If you check Kate’s plugin list, you will recognize that there are two different tab bar plugins available. The first one is Tabify. This plugin adds a standard KDE tab bar to the top of Kate’s main window:

The plugin shows the same entries as the “Documents” tool view on the left. With drag&drop, the tabs can be moved around. In KDE SC <= 4.6.2 this plugin is called Tabify. In KDE SC >= 4.6.3 the name is simply “Tab Bar”.

There is another plugin, called Tab Bar Extension in KDE SC <=4.6.2 (and Multiline Tab Bar in KDE SC >=4.6.3) that also adds a tab bar to Kate’s mainwindow:

As can be seen, this tab bar can be configured to span multiple lines in order to show more documents at the same time. Further, there are features like tab highlighting so that a document can quickly be found when working on a huge list of documents. There are more options in the configure dialog of this plugin (click small configure button on the right). In KDE 4.7, it is possible to change to highlight a tab by clicking on it with the middle mouse button and clear the highlight with CTRL+middle-click.

There have been requests to remove the non-standard plugin from Kate and just provide the standard conform Tabify plugin. I was about to do that, but then, we do have users that use the multiline tab bar. And as it works well and provides some features the default tab bar does not have, I’ve finally decided to keep it.

It is worth to mention that there were quite a lot of voices in the past requesting a tab bar. It was even requested to remove the “Documents” tool view, listing all the documents. However both tab bar plugins are not able to provide easy access to the opened documents, if you have e.g. 50 documents opened. Hence, the Documents tool view will remain the default, just as it always was in Kate’s life :)

Kate in KDE 4.6

Some days ago KDE 4.6 was branched. So what will Kate in KDE 4.6 bring?

  • The new tree view as “Documents” sidebar completely replaces the old file list. It supports the simple list mode as well as a pseudo-intelligent tree view to group files. The “Documents” tab is now implemented as plugin (always loaded), meaning that it brought a code cleanup as well. We hope you like it! :)
  • Swap file support, meaning that you can recover all your unsaved data for local files on the next Kate startup.
  • Ability to always load plugins.
  • New SQL Query plugin. The day we blogged about it had the most visits in the entire kate-editor.org history. So it seems the the SQL plugin is a really nice addon for web developers! :)
  • New GNU Debugger (GDB) Plugin!
  • New Highlight Selected Text Plugin.
  • Ability to add scripts to the menu and bind shortcuts.
  • Kate got a new homepage on http://www.kate-editor.org featuring WordPress.
  • Lots of bugs fixed since the KDE 4.5.0 release.
  • SmartCursors and SmartRanges are gone, resulting in more stable and clean code. MovingCursors and MovingRanges replace the old classes and work reliable. For instance, KDevelop is already ported leading to less crashes.
  • Christoph found the emails of the early days of Kate again. A funny read! :)
  • Daily unit test runs. We have more and more unit tests, securing the correct behavior of e.g. search&replace, the text buffer, encoding detection or indenters.
  • Kate development mostly moved to KDE’s git infrastructure, resulting in very easy build instructions.
  • The default settings of a session are now stored in the katerc file again, rendering the default.katesession obsolete. This means you will have to configure your default session again (sorry!). On the other hand, this fixed quite some bugs with regard to the session handling.

Credit where credit is due!

There were lots of developers involved who helped to improve Kate. Thanks a lot to every one of you! Without your contribution, Kate would not be what it is :-) Keep it up!