# Kate Love: HighlightInterface, Autobrace

Well, I have to admit: I didn’t spent much time developing the PHP plugin for KDevelop these past weeks. Instead I hacked on Kate:

##### HighlightInterface

I added another Kate interface, this time to access some of the highlighting information:

• what’s the Attribute for a given default style right now? Default styles are those known from syntax files, e.g. dsKeyword, dsFunction,…
• what are used Attributes in a given line and what range do they occupy?
• what modes do we embed? E.g. PHP embeds HTML, JavaScript, CSS, …
• what mode is used at a given Cursor position?

This made it possible to port the “Export to HTML” action to a real plugin. If you come up with other output formats I might add them, I wondered about LaTeX support… might do this at some point.

This should also make it possible to use KatePart in other applications and than export the highlighting to a different format, e.g. a Flake shape for Koffice. Afaik this is actually planned by The_User - lets see if it works out!

The other stuff gives huge potential in various places, but I fear it won’t make it in KDE 4.4. But think of it:

• simple code completion based on keyword databases, dependent on the mode at the position where completion was requested
• same as above for snippets (actually this will make it to 4.4).
• insert your ideas here :)
##### Auto-Brace plugin

Jakob Petsovits created this gem of a plugin some time ago, yet it lived in playground was probably only used by few. I imported it to kdelibs, hence it will be shipped with KDE 4.4. It supersedes the limited “auto-brackets” feature of Kate and only adds braces when a newline gets added. I find this fits my personal coding habits much better than blindly copying brackets when they get added.

And I don’t just copied to kdelibs, I also added a few features:

• automatically add a semicolon after the closing brace when we start a new struct/class in C++ mode
• check for auto-brackets feature and disable it automatically

Also did this:

• don’t add brace when current line contains namespace and a following line starts with class or struct (C++ mode only)
• don’t add brace when current line contains class, interface or struct and the following line contains private, public, protected. C++ code is also checked for signals, Q_SIGNALS”, other modes are checked forfunction.

This should fix the bug for code like (note the indendation levels):



namespace foo { // insert line here

class bar;

}

class asdf { // insert line here

private:

...

};

`