Building Kate from Sources on Linux
Right now, Kate's source code is located on the invent.kde.org GitLab instance. This tutorial explains how to build Kate without touching your global installation.
All stuff will happen inside an extra development directory. This avoids the need for administrator rights and allows always to fallback to use the global installed Kate if the currently build version is broken.
As this tutorial will introduce a setup that allows to develop other parts of the KDE software stack, too, we will talk in the following about setting up a KDE development environment. Required KDE Frameworks will be compiled in addition to the Kate application parts. This eases contributions to all levels of the KDE software stack.
Choose your Kate & KDE development directory
Choose yourself some path where all Kate & KDE development things should end up. Beside user local configuration files, nothing outside of this directory will be polluted. You can re-use this for development on any part of the KDE software stack.
For the remaining parts of this description we use
Feel free to customize this.
Installing is more or less just cloning the current version
mkdir -p ~/projects/kde/src cd ~/projects/kde/src git clone https://invent.kde.org/sdk/kdesrc-build.git
For later ease of use, best symlink the kdesrc-build script to some folder inside your path, e.g. if you have some user local bin:
ln -s ~/projects/kde/src/kdesrc-build/kdesrc-build ~/bin
kdesrc-build has some setup pass that can configure stuff for you, see this introduction.
Here we just show a ~/.config/kdesrc-buildrc that is good enough for Kate development needs.
You can just copy and paste the below variant into your home directory as ~/.config/kdesrc-buildrc and adapt the paths to your needs. If you stick with the ~/projects/kde path we did choose above, this should be usable 1:1.
global # use the latest KF5 and Qt5-based software. branch-group kf5-qt5 # we want .kateproject files with ninja cmake-options -G "Kate - Ninja" # clangd tooling compile-commands-export yes compile-commands-linking yes # Install directory for KDE software kdedir ~/projects/kde/usr # Directory for downloaded source code source-dir ~/projects/kde/src # Directory to build KDE into before installing # relative to source-dir by default build-dir ~/projects/kde/build end global include ~/projects/kde/src/kdesrc-build/kf5-frameworks-build-include include ~/projects/kde/src/kdesrc-build/kf5-applications-build-include include ~/projects/kde/src/kdesrc-build/kf5-workspace-build-include include ~/projects/kde/src/kdesrc-build/kf5-extragear-build-include
The important lines to have a good experience developing Kate (or other KDE stuff) with Kate are described below in detail.
Create .kateproject files
# we want .kateproject files with ninja cmake-options -G "Kate - Ninja"
This ensures you get not only Ninja build files (nifty as this will e.g. automatically use multiple cores for compiles) but in addition .kateproject files inside the build directories for later use, too. With this files, the project plugin of Kate will know what to do, e.g. where the source directory for the compile is and which build commands it should use for the build plugin.
Ensure LSP integration works
# clangd tooling compile-commands-export yes compile-commands-linking yes
This ensures CMake will generate the compile_commands.json files that are required for clangd based LSP integration. Beside just generating them inside the build directory the linking option will symlink them back to your source directories. This allows zero-configuration usage of the LSP plugin inside Kate (and other editors).
Install needed dependencies (optional)
kdesrc-build provides some initial setup mode to install the needed packages for several common distributions to start developing. This is helpful if you are not sure if all needed development packages are installed on your system and you don't want to take care of this yourself manually. As this will try to install packages for your distribution, this step will require administrator rights for the package installation. To do that, just trigger:
We already created a .config/kdesrc-buildrc, that will be left untouched. For the further usage you don't need to modify your shell settings either.
Build Kate & dependencies
To trigger a compile of Kate and all needed KDE dependencies now just type:
kdesrc-build --include-dependencies kate
For me, this did now compile 76 modules ;) That takes a few minutes on a recent machine. Time to grab some coffee or think about what you actually want to implement.
If you only want to build Kate without the dependencies because you are sure you have recent enough stuff on your system, you can try:
kdesrc-build --no-include-dependencies kate
But given that on modern machines, the compile times are low, it is more convenient to just build all stuff, that ensures you have e.g. the latest and best KSyntaxHighlighting and KTextEditor frameworks around, too!
Given this setup, you are free to build all KDE software parts with a simple:
Keep in mind: that will take some time (and disk space).
If during the build you see any failures displayed with a red font, follow this guide - How to solve build problems
How to use the build stuff?
To launch you local Kate version, you need to setup the environment first properly to ensure the right plugins and stuff is loaded. Fortunately this is very simple:
source ~/projects/kde/build/kde/applications/kate/prefix.sh kate
A nifty way to wrap this is to e.g. create yourself a small wrapper script to start your master branch version of Kate inside your local bin directory:
#!/bin/bash source ~/projects/kde/build/kde/applications/kate/prefix.sh exec kate "$@"
Keep your stuff up-to-date
To keep your local version up-to-date, you can just use the above commands again. They will take care of pulling new changes from the KDE repositories and building/installing them into your local prefix.
Now, the remaining question is: How to develop best?
Naturally, if you want to hack on Kate, it might make sense to use Kate for that.
Given the above preparations, that is easy to do, just start your new master version of Kate and pass it the build directory:
Alternatively, you can navigate there in your terminal and startup Kate from there, it will auto-open it:
cd ~/projects/kde/build/kde/applications/kate kate
To have the best experience with this, ensure you have at least project & LSP plugin enabled. If you like to have some GUI build integration, activate the build plugin, too.
You will end up with a new Kate windows like shown below.
In the lower "Current Project" tool view you have per default two terminals. The first terminal is inside your build directory, here you can e.g. run your ninja and ninja install commands and such. The second terminal is inside your source directory, perfect for e.g. git command line calls.
Given the above setup, the LSP plugin (if you have clangd installed) should work out of the box.
Other nifty stuff like project wide quick open, search & replace and correct build targets should be setup, too.
Feel free to create a merge request at invent.kde.org. For more information see Join Us.
If you have questions you can ask them on our mailing list email@example.com and/or join #kate on irc.libera.chat.
For more information see Get Help.
Building Kate from Sources on Windows
To build the KF5 based Kate/KWrite you can follow the guide on KDE on Windows.
Building Kate from Sources on macOS
To build the KF5 based Kate/KWrite you can follow the guide on KDE on macOS.