php Syndicate content

warning: Creating default object from empty value in /www/htdocs/w0065fc9/milianw/modules/taxonomy/ on line 33.

» KDevelop 4.2.3 Released

Mon, 06/27/2011 - 02:05

Hey all!

I wanted to quickly notify you all about the availability of KDevelop 4.2.3, you can download it here:

Most people should be fine with waiting for updated packages from their distributor though.

To read the full release notes and take a look at the changelog, please visit the project website:

Many thanks to the contributors, for making this release possible

» KDevelop 4.0.2 and KDevelop 4.1 Beta 1 released

Sun, 09/05/2010 - 19:13

Good news everyone, this time in a double feature!

I’m happy to announce the availability of two new additions to the KDevelop release family:

KDevelop 4.0.2 stable release

Lets begin with the boring part: We have released KDevelop 4.0.2, together with KDevplatform and the PHP plugins. You can find the sources here:

This is a bugfix only release and everyone is urged to upgrade as soon as possible. Users should wait for their distributions to provide packages for them. The tarballs contain changelogs if you are interested what happened since 4.0.1. Or read them online:

Note: This is (most probably) the last release in the 4.0 branch. We don’t have enough manpower to handle more than one stable branch. Which makes me come to the second part of this mail:

KDevelop 4.1 Beta 1 experimental release

We are very happy to publish KDevelop 4.1 Beta 1, which will be the branch we are concentrating on in the next time. You can find the sources here:

This is a preview release. We are gratefully welcoming any testers and feedback to polish it further for the final 4.1 release which will probably happen around mid October. Please put the reports on the usual places, e.g. If you are interested in the (quite long) list of changes, look into the tarballs again for an extensive git changelog. If you just want a few highlights: Git Support Plugin, External Script Plugin, general polishing, CPP support improvements, lots of bug fixes, UI polishing, performance improvements, … you name it :)

For the fun of it, here the list of commits changes for 4.1 (imo far too big to show anything useful):

Thanks as always to the KDevelop team for making this possible and to the users for giving us valuable feedback.


PS: Sorry that I forgot to announce this yesterday or even Friday, as I initially planned. Well, weekends are such a nice time to go outside and enjoy life :)

» Final days of Quanta GSOC 2010

Wed, 08/04/2010 - 01:38

Hey everyone,

as the pencils down for this years GSOC is approaching I thought it’s time to write another blog entry to notify the world about my current status.

These past weeks (boy, the time flies…) I’ve mostly spent on hardcore KDevplatform internals. Especially getting multiple languages in a single document working was not easy. I knew it would be the most time consuming and most demanding aspect during these three months, but also by far the most important. I’m confident to say now: I’m nearly there. All projects we put into the KDevelop repository have now a multilang branch in their team clones. And if you look at e.g. the KDevplatform multilang branch or the Quanta multilang branch you hopefully agree that I didn’t slack off too much. I just wasted some time to find the right approach, often by implementing one just to find out it was not practicable.

Thanks (once again) to the help of David Nolden I’m now on the right track. Finally :)

When you use the multilang branches (note: you’ll have to use them everywhere as they contain binary incompatible changes to the master branches), you should already get proper DUChain integration for CSS inside HTMLs <style> tags, which is what I used for testing purposes. I’ve just pushed the required changes to get code completion work properly as well.

This is all still in a quite rough stage and needs lots more work but it proves that I’m getting there. Once this is done I can continue to polish the CSS and XML language plugins, as well as finally writing a “preview HTML” plugin, as this was probably the most requested plugin from back then.

Looking at my tentative timeline for GSOC, I’m afraid to say that I didn’t get to do all of it. But I’m quite proud of what I achieved and hope you all agree that my time was well spent on Quanta. I won’t stop working on it probably after GSOC, quite the contrary. I still hope to release at least some alphas this fall and maybe get it into beta state in winter. What about a Quanta 4.0 release in spring 2011? Who knows :)


» KDevelop 4.0.1 released

Wed, 07/21/2010 - 16:28

Good news everyone!

I’m happy to announce the availability of our first patch level release for KDevelop 4. You can get it and the related packages from:

This is a bugfix only release and everyone is urged to upgrade as soon as possible. Below you find a list of changes that went into this release.

Users should wait for their distributions to provide packages for them.

Thanks to the KDevelop contributors for making this possible and to the users for giving us valuable feedback.

PS: I hope to release a second patch level release in a month, assuming we find more to fix.


KDevplatform 1.0.1 Changelog
  1. * Milian Wolff: don't emit documentJumpPerformed when nothing changed
  2. * Milian Wolff: prevent infinite loop when url gets saved and triggers loading of new language plugin
  3. * Milian Wolff: fix ${selection} in snippets
  4. * Milian Wolff: properly handle manual document switches in context browser toolbar
  5. * Milian Wolff: fix: make it possible to activate repository in singleclick mode
  6. * Andras Mantia: Really load (and use as a replace source) the global ui.rc file, not the local one.
  7. * Milian Wolff: properly add codecompletion to existing documents
  8. * Mantia Andras: Enable select all/copy in the frame widget.
  9. * Mantia Andras: Propagate shortcuts setting to all the opened editor views.
  10. * Andreas Pakulat: Fix accessing of temp-files for windows.
  11. * Milian Wolff: properly handle unterminated strings in comments, fixes code completion after those
  12. * Milian Wolff: properly remove watcher to prevent crashes in smartrange dtor
  13. * Andreas Pakulat: Also set CMAKE_INSTALL_RPATH
  14. * Andreas Pakulat: Make sure kdevplatform is properly linked
  15. * Milian Wolff: put snippets completion items at end of list
  16. * Milian Wolff: fix clearComments for unterminated comments
  17. * Nicolás Alvarez: Create Class: Refresh move button state when a list item is removed too.
  18. * Nicolás Alvarez: When moving items in Create Class inheritance list, update selection.
  19. * Nicolás Alvarez: Update move up/down buttons when selection changes in inheritance list.
  20. * Milian Wolff: prevent endless recursion
  21. * Nicolás Alvarez: Change "Stop Jobs" icon from dialog-close to process-stop.
  22. * Andreas Pakulat: Fix documentation for the .desktop files
  23. * Milian Wolff: don't go into edit-item mode on doubleclick or single click
  24. * Niko Sams: Fix crash when closing kdevelop with running debug session
  25. * Niko Sams: Fix crash that can happen during shutdown with an active debug session
  26. * Andras Mantia: Avoid calling emitResult() in failed case. internalJobDone() is called anyway, and that calls emitResult(). The problem is: when the error message is shown, the eventLoop is reentered, the job is deleted. The emitResult() call after tries to use the deleted job -> crash. This might be only a workaround, but fixes bug 229557 (and its duplicates), bug 227823, bug 232444, 227584.
  27. * Milian Wolff: properly escape dot before git folder
  28. * Andreas Pakulat: End the namespace before the macros.
  29. * Jonathan Schmidt-Dominé: Fixed syntax-errors in ibrowsableversioncontrol.
  30. * Milian Wolff: add a \c where appropriate, add missing dot
  31. * Andreas Pakulat: Add some api dox how to get at plugins and load them properly.
  32. * Andreas Pakulat: Use the complete url of the active document.
  33. * Milian Wolff: make snippet invalid when name contains spaces
  34. * Milian Wolff: allow anything non-space in snippet's code completion model
  35. * Eike Hein: Meet HIG rules about alignment in forms.
  36. * Milian Wolff: make QuickOpen look like a proper menu/dropdown
  37. * Hugo Pereira Da Costa: Fixed setting of maximum height for button and stack so that expander arrow pixmap is not trunkated when small font is used.
  38. * Hugo Pereira Da Costa: Removed unnecessary calls to "setAutoFillBackground(true)". this allows main window background gradient (if any) to be painted right. (like in e.g. oxygen, bespin). Does not affect other styles.
  39. * Hugo Pereira Da Costa: Keep vertical size policy unchanged when embedding KLineEdit inside toolbar.
  40. * Hugo Pereira Da Costa: Rotate back icon so that it is still painted horizontally even for vertical buttons Use option->iconSize to decide which pixmap must be rotated.
  41. * Hugo Pereira Da Costa: This patch modifies the painting of sidebar vertical toolbuttons so that - the button frame is painted "non-rotated" - only the text is painted rotated. This fixes how buttons shadows are rendered. Screenshot at
  42. * Andreas Pakulat: Increase minor version.
  43. * Andreas Pakulat: Remove kross from subdirs list
  44. * Bertjan Broeksema: Port away from deprecated KLibLoader::self to KPluing loader.
  45. * Bertjan Broeksema: Initialize members in the right order.
  46. * Bertjan Broeksema: Clean up
  47. * Bertjan Broeksema: Fix warning and clean up.
  48. * Bertjan Broeksema: Fix a compile warning related to deprecated hash_map.
  49. * Bertjan Broeksema: Fix a bunch of trivial compile time warnings.
  50. * Milian Wolff: fix LGPL file as proposed by TZander
  51. * Milian Wolff: fix compile when ifDebug is enabled
  52. * Niko Sams: Debugger: Only switch back to code area if there is an active MainWindow.
  53. * Volker Krause: build with -pedantic
  54. * Andreas Pakulat: Don't crash if dynamic_cast fails.
  55. * Thomas McGuire: Fix progress popups being transparent.
KDevelop 4.0.1 Changelog
  1. * Milian Wolff: fix overflow in CMakeFunctionArgument::unescapeValue
  2. * Andras Mantia: Remove some conflicting shortcuts from the katepart.
  3. * Milian Wolff: fix: allow incr as identifier, it's not the ++ token after all
  4. * Milian Wolff: don't crash on nullptr type in getPointerTarget
  5. * Milian Wolff: fix shouldStartCompletion when writing a path in a #include, inserted is not only a single char
  6. * Milian Wolff: don't crash when getContainerType does not find a declaration for the identified type in the given topcontext
  7. * Andreas Pakulat: Fix opening files with relative path.
  8. * Andreas Pakulat: Set CMAKE_INSTALL_RPATH to lib-installdir
  9. * Andreas Pakulat: Make sure kdevplatform is properly linked
  10. * Milian Wolff: use canonicalFilePath as absoluteFilePath might lead to problems when resolving relative includes in symlinked directories
  11. * Nicolás Alvarez: Fix another possible leak
  12. * Nicolás Alvarez: Fix memory leak in CMakeListsParser::readCMakeFile.
  13. * Milian Wolff: don't advance over EOF, might lead to invalid tokens and crashes
  14. * Aleix Pol: Prevent calling a null pointer.
  15. * Aleix Pol: Add proper support for the Break command.
  16. * Andreas Pakulat: Don't try to open a non-existing file.
  17. * Milian Wolff: make __volatile__ a synonym for volatile
  18. * Milian Wolff: don't recurse into the same class in typeutils::getMemberFunctions
  19. * Esben Mose Hansen: Find build directory even in root CMakeLists.txt
  20. * Milian Wolff: fix uses in argument lists of pure virtuals
  21. * Esben Mose Hansen: Use config mode as fallback if no module is found, and set package_DIR in all cases where a module was not found
  22. * David nolden: Turn an assertion into a warning BUG: 236411
  23. * Niko Sams: Remove support for building the whole extragear/sdk.
  24. * Kovarththanan Rajaratnam: Remove FindCppUnit.cmake now that the CppUnit plugin no longer exists
  25. * Kovarththanan Rajaratnam: Remove FindCheck.cmake now that the Check plugin no longer exists
  26. * Andreas Pakulat: Increase version number
  27. * Niko Sams: Quote variable expressions correctly.
  28. * Milian Wolff: set invalid range on final location of problem when include path resolver found more paths than the build manager
  29. * Andreas Pakulat: Fix kdevelop app icon for windows.
  30. * David nolden: Use a mutex to prevent setupStandardMacros() and setupStandardIncludePaths() from being called multiple times at the same time, preventing a crash. BUG: 236434
  31. * Bertjan Broeksema: Fix compile warnings related to deprecated hash_map
  32. * Andreas Pakulat: Also search for qmake-qt4
KDevelop-PHP 1.0.1 Changelog
  1. * Milian Wolff: fix compile
  2. * Milian Wolff: remove includebuilder
  3. * Milian Wolff: support $a->{$...}
  4. * Milian Wolff: dont fail parsing on $c::func(); or $c::const; BUG: 244076
  5. * Milian Wolff: fix use builder in static member arrays
  6. * Milian Wolff: remove obsolete cmake file that never got run in the first place
  7. * Milian Wolff: fix build of stable, we don't depend on kdevelop-pg-qt there
  8. * Milian Wolff: fix logic to find already up-to-date files in the parsejob
  9. * Milian Wolff: don't start include parsejob when there is already a background parsejob for that file, should prevent deadlock
  10. * Milian Wolff: invalidate declaration done in method body when it got added to class body
  11. * Milian Wolff: don't search in parent contexts for variables
  12. * Niko Sams: Improve implementation helper: don't add return statement for void functions
  13. * Niko Sams: Fix implementation helper for static methods
  14. * Niko Sams: increase version number
  15. * Niko Sams: Remove support for building the whole extragear sdk.
KDevelop-PHP-Docs 1.0.1 Changelog
  1. * Milian Wolff: remove cmake_minimum_required, obsolete (due to KDE requirement) and breaks build when po files are included
  2. * Niko Sams: Remove support for building the whole extragear sdk.

» Quanta GSOC midterm evaluation

Thu, 07/08/2010 - 22:24

Hey there!

Midterm evaluations for GSOC are coming up and Andris Mantia, my mentor I finally met at Akademy, asked be to blog about what we already have in Quanta. Because there is a lot and most of you are not aware of that. And to be honest it’s actually too much to put into a single blog post, so I hope to do more of a series of blog posts showing off some features.

Quanta 4 is not Quanta 3

Anyhow, I fear that a disclaimer is in place, for all of you who are desperately looking forward a KDE4 version of Quanta. The thing is, I cannot, nor do I want to, port Quanta from KDE3 times as-is to KDE4. Instead I build on top of the KDevplatform that is also used for KDevelop and KTechlab. By sharing the basic code it gets much easier to maintain Quanta in the future. This decision brings two things with it:

  1. We get an awesome library to built new stuff on top, making things like the new PHP which is already much more advanced than anything from KDE3, actually plugin possible.
  2. We don’t have all features from Quanta 3 or if we have, they might look and work differently. This also means that you won’t be able to take your Quanta 3 workflow without changes over to Quanta 4.

Some examples for the last part, that also sheds some light on our (== KDevelop team) preferred way of designing the IDE:

First and foremost, dialogs are evil. There, I said it. I doubt I’m the only one here and there are actually many other KDE applications following this mantra. Afaik Aurelien from Gwenview is trying to make it the first app in KDE without any modal dialogs. Go for it dude! What does that mean for Quanta? You might remember that Quanta 3 had lots and lots of dialogs. You could change attributes of HTML tags via dialogs, you could insert code via dialogs. In Quanta 4 this wont be the case, at least I won’t write these dialogs. Instead I concentrate on kickass code completion, which should make these dialogs obsolete.

  • offer context sensitive code completion, e.g. only tags that are valid at the given cursor position or attributes that fit into the given tag under the cursor
  • directly insert tags with all required attributes
  • make it possible to trigger a file-selection dialog in e.g. src="..." or similar attributes from within code completion (there’d be a ‘select file…’ code completion item)

In my opinion every dialog that created or changed code can be replaced by code completion. And if you use it, it’s much faster to write and change code. You don’t have to grasp a new magic modal dialog and find the attribute you want to change. Instead you simple select it, CTRL + Space for code completion and insert the stuff you want.

existing Quanta 4 features

So much for the design ideas in Quanta4, now lets talk about what we already have now in Quanta4. For the uninitiated, you can find the source code at You will need KDevplatform, KDevelop-PG-Qt and QJSON to get all plugins built.

Also another note is in place here: Even though I have the GSOC and spent lots of time on Quanta, the features I describe below wouldn’t exist if not for the help and work of others. Most notably Niko Sams (PHP, CSS, Execute Browser, Execute Script, XDebug, Crossfire, …), Ruan Strydom (XML/SGML, PHP formatter) and all the other guys happily hacking away at KDevplatform and it’s core plugins and libraries.


For those that never heard about the work Niko and me put into the PHP language support plugin for KDevelop, you have quite a lot of catching up to do :) I’m too lazy to reiterate everything, if you are interested, read my blog posts:

But frankly, you should instead just try it out. We released PHP together with KDevelop 4.0 and most distros should package it. I still actively work on it and e.g. just brought in some PHP 5.3 features (namespaces) the other day.

To list just a few things we have:

  • state of the art code completion
  • inline syntax checking and error reports
  • context browsing
  • inline documentation and integration

If you thought Quanta 3 was good for PHP development, try this, really :)

Ah and before I forget that: Niko also wrote a plugin that integrates XDebug:


Here I think I can simply link to Nikos blog posts explaining and showing off his CSS language support plugin:

As you can see once again: When using and implementing the tools in KDevelop properly for a language you get insanely good code completion and context sensitive help plus some browsing utilities. Very handy indeed, and once again (imo) better than what we had in Quanta 3.

Once we have proper multi language support in a single file, expect more goodness from my side, I only added more inline previewing, e.g. for colors.


This is by far the largest surprise for me. Ruan Strydom, a South African, announced at one day - out of the blue - that he is working on a XML language support plugin for KDevelop. And he did a quite good job at it. I’ve been helping out there the last weeks and fixed bugs and added a few features, but it’s still mostly his work. It is already quite useful, as it parses the XSD or DTD that is used in your document and based on that offers you context sensitive code completion and context browsing. It also works somewhat for SGML, e.g. HTML and is quite handy.

There is still quite a few things to do here, e.g. report errors about invalid attributes, tags, etc. pp (currently only real XML syntax parse errors are reported).

Snippets and External Scripts

In Quanta 3, custom toolbars and the actions in them where apparently quite popular. In KDevelop and hence Quanta as well, this is currently handled differently, yet the features should be the same, if maybe with a different workflow. See e.g. on how snippets work, and for external scripts.

These should (hopefully, if not please report) give you all the features you had with user actions in Quanta 3. Putting these actions into toolbars is not there and I frankly don’t see the huge need for it that would make up for the huge time I’d had to spent on it to get that working again.

The future and call for feedback

So as you can see, Quanta is not dead, but got very much revived. I hope to get our beloved webdevelopment IDE up and running next year at latest, if possible with a few first test releases this year. Anyhow, back to GSOC:

It’s currently midterm and I already achieved a lot, in the next weeks I will definitely spent my time in getting proper multi language support in a single file up and running. That would then finally make it possible to have proper context browsing and code completion in e.g. a template that includes CSS, PHP and HTML. Also the inline HTML preview from Quanta 3 is needed to be ported / reimplemented. But I might be missing things, which makes me conclude this overlong blog post with a call to old Quanta 3 users:

What features are you missing above from Quanta 3?

Please write one comment per feature and then do “+1” kind of comments to get a basic vote here. That way I can see on what features I have to concentrate on to get Quanta 4 up and running.


» KDevelop PHP Advancements: Namespaces and Error Recovery

Thu, 06/24/2010 - 02:08

Hi there,

just a quicky before I head off to bed and go on a short vacation the next few days:

PHP support in KDevelop now has support for the first PHP 5.3 feature, namely namespaces. I’m still convinced that the syntax sucks pretty bad in PHP’s implementation of namespaces but well, my hands are tight and I had to support it. Anyhow, with PHP master you shouldn’t get syntax errors anymore when using namespaces, but instead proper code completion, syntax highlighting and context information… Well, full blown DUChain integration :)

Furthermore I just introduced the first few error recoveries in PHP that should make the situation a bit better when you work on a broken file. Up until now any parse error resulted in a file with no advanced PHP features at all until you fixed that parse error. Now it should at least skip parse errors in code segments between braces (classes, functions, conditionals, namespaces, …). It can be much improved of course, and I’ll do just that next week.


» KDevelop Webdev plugins merged into Quanta GIT

Sun, 06/13/2010 - 17:18

Quick note:

I’ve just merged all webdevelopment related plugins except PHP & PHP-Docs into Quanta git. You can get them all in one place now by cloning Quanta:

Since I also moved all halfworking plugins to UNPORTED (they don’t get installed), you should be fine by just installing all of Quanta to get the plugins. If you only want one of them, going into it’s subfolder and building it standalone should hopefully still work though.

In other notes: Thanks to Ruan Styrdom for starting work on a PHP formatter plugin for KDevelop. It uses phpStylist and it’s already somewhat working. Awesome :)

/me is off to more GSOC hacking, bye

» GSOC: Revive Quanta+ Brand for KDE 4

Wed, 04/28/2010 - 19:19

Yay I got a GSOC slot :)

So I hope I don’t have to introduce myself anymore to you guys. Instead I’ll show you what I’ve planned to do over the summer:

Motivation for Proposal / Goal:

Back in KDE 3 times, Quanta+ was one of the reasons for me to use KDE. In my eyes it was the IDE for web development out there, and I loved to use it. Sadly it’s bitrotting nowadays without a finished KDE 4 port. That, combined with the fact that more and more distributions drop all KDE 3 packages, makes the need for a port more urgent than ever.

Implementation Details:

Thankfully, KDevelop 4 is nearing it’s first release and the KDevplatform is mature enough nowadays. This means that during summer I shall finish the port of Quanta+ to KDevplatform and supply it with all the plugins required for a proper webdevelopment IDE. My goal is it to provide a proper IDE for PHP webdevelopment. In more detail:

  • make Quanta+ 4 compile
  • remove obsolete plugins or code parts in Quanta+
  • port required plugins to KDevplatform structure
  • polish PHP plugin, including XDebug support
  • polish Script Execute plugin
  • polish CSS plugin
  • get a first working version of a XHTML/XML plugin, if time allows even with HTML (SGML) support
    • support autocompletion
    • support inline validation
    • support documents that use multiple languages (XML, PHP, CSS, JavaScript) at the same time
  • polish the UI/Workflow for Webdevelopment
    • hide KDevelop/C++ specific actions
    • add templates for common PHP frameworks
  • if time allows, get a rough support for JavaScript (at least Outline for functions)

Put these all together with the existing features in KDevplatform we can reuse, we’ll end up with a hopefully useable IDE for webdevelopment. Hence my final goal is it to release a first Beta version of Quanta+ for KDE4.

Tentative Timeline:
  1. getting rough first shell of Quanta+ 4 up and running, removing old cruft, cleaning up old code and porting required things
    ~ 3 weeks
  2. polish existing plugins (PHP, XDebug, Execute Script, CSS, Upload)
    ~ 2 weeks
  3. create XHTML/XML plugin
    ~ 3 weeks
  4. polish UI/workflow
    ~ 2 weeks
  5. bug hunting etc., ending in a first beta release of Quanta+ for KDE 4:
    ~ 2 weeks

Lets see whether it works out as planned. But I think this commit shows you that I’m on the right track:…

» progress in PHP support for KDevelop

Wed, 01/20/2010 - 14:44

Hey everyone. Been some time since I last blogged… I want to take the chance to give you all a bit of overview over the last changes in the PHP plugin for KDevelop:

Performance Improvements

I spent quite some time profiling various aspects of the PHP plugin, be it parsing and DUChain building over to (just yesterday) code completion. I’m confident to say that I found (and removed) quite a few bottlenecks, making the plugin much more comfortable to use.

I’m really blown away time over time again by valgrind & KCachegrind… What would we do without these tools?


An (imo) very strong point for using KDevelop for PHP programming is it’s seamless support for documentation. Be it the “simple” inline documentation in the Declaration Tooltips or the extended integration of the remote docs. But these past days I improved our generator for the inline documentation of built-in PHP language constructs considerably:

  • add documentation for function/method parameters
  • add @since where appropriate
  • fix some missing declarations or bugs, esp. some that where part of SPL

These changes increased the size of the generated file to whopping 3.1M. This was too much for me and hence I added support to ship this file zipped (i.e. now it’s 80% smaller) and we decompress it transparently with the use of KZip. Adding such a feature was a breeze, so nice to work with the KDE Api :)

There are still a few things missing and stuff I plan to improve here, so stay tuned for more news in this regard.

» PHP & PHP-Docs now in extragear/sdk/kdevelop-plugins

Fri, 01/08/2010 - 18:58

Hey everyone! The PHP & PHP-Docs plugins for KDevelop now moved to Extragear! The new locations are:

  1. svn+ssh://
  2. svn+ssh://

Or the anonsvn equivalent:

  1. svn://
  2. svn://

Happy coding!