We are happy to announce the availability of KDevelop 5.4 today featuring support for a new build system, a new scratchpad feature, analyzer support from Clang-Tidy plus a bunch of bug fixes and wee improvements.

Meson

Projects using the new rising star in the build system scene, Meson, can now also be managed with KDevelop, thanks to the work of Daniel Mensinger.

Current features are:

Native support for Meson projects (configuring, compiling, installing) Support for KDevelop code autocompletion (plugin reads Meson introspection information) Initial support for the Meson rewriter: modifying basic aspects of the project (version, license, etc.)

Support for adding / removing files from a build target will follow in future releases of KDevelop.

Scratchpad

Thanks to the work of Amish Naidu there is now a tool to keep "scratches" of code or text to experiment or quickly run something without the need to create a full project.

The plugin adds a new tool view, which maintains a list of your scratches which you can compile and run. The data from scratches is managed and stored by KDevelop internally but is presented as regular documents in the editor giving all the editing convenience of e.g. code-completion and diagnostics. Commands used to run the scratches are saved for each scratch, while new scratches are pre-set with the last command used for that file type.

Clang-Tidy

The plugin for Clang-Tidy had been developed and released independently so far, but starting with version 5.4 is now part of KDevelop's default plugins. Learn more about the plugin on Friedrich Kossebau's blog.

C++

More work was done on stabilizing and improving our C++ language support, which uses a Clang based backend. Notable fixes include:

Add working directory to clang parser. (commit. code review D22197)

Clang Plugin: Report some problems from included files. (commit. code review D18224)

Make it possible to select -std=c++2a for our language support. (commit)

Rename c++1z to C++17. (commit)

Clang CodeCompletion: No auto-completion for numbers. (commit. code review D17915)

Add assistant to generate header guards. (commit. code review D17370)

PHP

Always set maximum file size for internal parse job. (commit)

Bypass the 5 MB maximum file size limit for the phpfunctions.php internal file. (commit)

Fix linking with ld.lld. (commit)

Python

The developers have been concentrating on fixing bugs, which already have been added into the 5.3 series.

There are no new features compared to 5.3.

Other Changes

[Documentation] Set size policy of providers combobox to AdjustToContents (commit)

Contextbrowser: Remove 'separated by only whitespace' possibility for showing the problem tooltip. (commit)

Contextbrowser: Minor improvement to tooltip showing behavior. (commit)

CMake plugin: Also show an error message if the CMake configuration becomes invalid due to a change, and add an instruction to reload the project manually. (commit)

CMake plugin: Show a message box if configuration fails. (commit)

Projectfilter: Include .clang-format by default. (commit)

Add a predefined clang-format custom script formater. (commit)

Fix code completion for nameless structs/unions with the same member. (commit. fixes bug #409041. code review D22455)

Support newer kdebugsettings .categories file format. (commit)

Show session name in the Delete Session confirmation dialog. (commit. code review D22456)

Remove invalid check from test_projectload test. (commit. code review D22350)

Document tree view close on middle button. (commit. code review D22160)

Follow KTextEditor changes for hidpi rendering of icon border. (commit)

Note visibilty tag also with signature of friend-declared method. (commit)

Guard against crashes when IStatus object gets destroyed at bad times. (commit)

Attempt to fix a crash on shutdown. (commit)

Astyle: support the system astyle library. (commit. code review D17760)

Renovate kdevelop bash completion file. (commit)

Fix deadlock exception in FileManagerListJob. (commit)

DVCS Branch Manager with filtering and sorting proposal. (commit. code review D20142)

Also find clang include path based on runtime libclang library path. (commit)

TestFile: On destruction, close associated document if open and stop the background parser. (commit. code review D18567)

CMake: discover more unit tests. (commit. fixes bug #405225. code review D19673)

Be less restrictive with failures while searching for LLVM. (commit)

Allow the maximum file size of parse jobs to be configurable. (commit)

Optimize CMakeBuildDirChooser::buildDirSettings(). (commit. code review D18857)

[Sessions Runner] Use icon name. (commit. code review D19159)

Don't eat the backspace event when no alt modifier is set. (commit)

"Reparse Entire Project" action for the ProjectController. (commit. code review D11934)

Introduce QuickOpenEmbeddedWidgetCombiner. (commit)

Add 'back' to QuickOpenEmbeddedWidgetInterface. (commit)

Update documentation: the keyboard shortcuts use ALT not SHIFT. (commit)

Fix up/down keyboard navigation for 'Show documentation' links. (commit)

Lock duchain in AbstractIncludeNavigationContext::html. (commit)

Don't crash when background listing outlasts file manager list job. (commit)

Don't crash when project is closed before it was fully opened. (commit)

Make sure we use the same compiler settings as the project is by default. (commit. code review D11136)

Debugger plugin fixes. (commit. code review D18325)

Kdevelop-msvc.bat finds VS-2017 based on a registry key on Windows. (commit. code review D17908)

CMakeBuildDirChooser: avoid calling deprecated KUrlRequester::setPath(). (commit. code review D18856)

Flatpak+cmake: put the cmake build directories into .flatpak-builder. (commit)

Allow KDEV_DEFAULT_INSTALL_PREFIX specify a default install prefix. (commit)

Flatpak: Improve runtime title. (commit)

Adapt indentation mode after a new project was opened. (commit)

Flatpak: Fix listing runtimes. (commit)

Workaround the bug found by ASan, which can be seen on FreeBSD CI. (commit. code review D18463)

Properly cleanup FileManagerListJob when folder items are deleted. (commit. fixes bug #260741)

Provide debugger name and pid when registering a debugger to DrKonqi. (commit. code review D18511)

Support for indent-after-parens astyle option. (commit. code review D18371)

Fix bug 389060 (Heaptrack analysis keeps firing /usr/bin/plasmoidviewer). (commit. fixes bug #389060. code review D15565)

Contextbrowser: Ability to show combined problems and decl tooltip. (commit. code review D18229)

Properly display argument names of template functions. (commit. code review D18218)

Show size and alignment information in tooltips for typedef or alias. (commit. code review D18097)

GrepView: Extend default file extensions to search. (commit. Implements feature #402207. code review D17892)

Fix crash in documentation view. (commit. fixes bug #402026)

[clang-tidy] Fix context-menu crash for files not in a project. (commit. fixes bug #401917)

Polish Flatpak integration. (commit)

Don't add 'override' specifier for non-modern project settings. (commit. fixes bug #372280. code review D16773)

[clang-tidy] Disable/Block Run actions in projects without buildsystem manager. (commit)

Add VcsAnnotationItemDelegate, for control of rendering and tooltip. (commit. code review D8709)

Qmljs: Update qmljs from QtCreator v4.7.2. (commit)

LoadedPluginsDialog: Fix initial size. (commit)

Place cursor after opening brace for function implementation. (commit. code review D16386)

Replace leading typed text when completing function implementation. (commit. fixes bug #384710. code review D16326)

Fix crashes when document gets destroyed directly after load. (commit)

Prevent QWebEngine from overriding signal handlers. (commit. code review D16188)

Add missing break in QmlJs code completion. (commit)

CMake: fix missing addition of policies to documentation index. (commit. code review D15882)

Create action to jump to the current execution line in debug mode. (commit. Implements feature #361411. code review D14618)

Fix segfaults in OutputWidget. (commit. fixes bug #398615. code review D15326)

Fix double delete bug in OutputWidget. (commit. code review D15241)

Cleanup Perforce test case, and thereby its output a little. (commit. code review D14959)

Get it

Together with the source code, we again provide a pre-built one-file-executable for 64-bit Linux as an AppImage. You can find it on our download page.

The 5.4.0 source code and signatures can be downloaded from download.kde.org.

Should you find any issues in KDevelop 5.4, please let us know on the bug tracker.