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 withclass
orstruct
(C++ mode only) - don’t add brace when current line contains
class
,interface
orstruct
and the following line containsprivate
,public
,protected
. C++ code is also checked forsignals
,Q_SIGNALS", other modes are checked for
function`.
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: ... };