[pim/kontact] /: Add pre-commit CI support

Laurent Montel null at kde.org
Mon Jun 9 07:06:54 BST 2025


Git commit 4a6797933710229417e436988e0cf5e6fbd183d0 by Laurent Montel.
Committed on 09/06/2025 at 06:06.
Pushed by mlaurent into branch 'master'.

Add pre-commit CI support

A  +95   -0    .clang-format-pre-commit
M  +1    -3    .gitlab-ci.yml
A  +59   -0    .pre-commit-config.yaml
M  +43   -17   CMakeLists.txt
M  +1    -1    LICENSES/GPL-2.0-or-later.txt
A  +19   -0    LICENSES/MIT.txt
M  +1    -2    Thoughts
M  +24   -24   doc/kontact/index.docbook
M  +0    -1    readme-build-ftime.txt
M  +69   -52   src/CMakeLists.txt
M  +2    -3    src/about/CMakeLists.txt
M  +0    -1    src/about/introduction_kontact.html
M  +0    -1    src/kontact-version.h.in

https://invent.kde.org/pim/kontact/-/commit/4a6797933710229417e436988e0cf5e6fbd183d0

diff --git a/.clang-format-pre-commit b/.clang-format-pre-commit
new file mode 100644
index 000000000..9b5ae0af2
--- /dev/null
+++ b/.clang-format-pre-commit
@@ -0,0 +1,95 @@
+---
+# SPDX-FileCopyrightText: 2019 Christoph Cullmann <cullmann at kde.org>
+# SPDX-FileCopyrightText: 2019 Gernot Gebhard <gebhard at absint.com>
+#
+# SPDX-License-Identifier: MIT
+
+# This file got automatically created by ECM, do not edit
+# See https://clang.llvm.org/docs/ClangFormatStyleOptions.html for the config options
+# and https://community.kde.org/Policies/Frameworks_Coding_Style#Clang-format_automatic_code_formatting
+# for clang-format tips & tricks
+---
+Language: JavaScript
+DisableFormat: true
+---
+Language: Json
+DisableFormat: false
+IndentWidth: 4
+---
+
+# Style for C++
+Language: Cpp
+
+# base is WebKit coding style: https://webkit.org/code-style-guidelines/
+# below are only things set that diverge from this style!
+BasedOnStyle: WebKit
+
+# enforce C++11 (e.g. for std::vector<std::vector<lala>>
+Standard: Cpp11
+
+# 4 spaces indent
+TabWidth: 4
+
+# 2 * 80 wide lines
+ColumnLimit: 160
+
+# sort includes inside line separated groups
+SortIncludes: true
+
+# break before braces on function, namespace and class definitions.
+BreakBeforeBraces: Linux
+
+# CrlInstruction *a;
+PointerAlignment: Right
+
+# horizontally aligns arguments after an open bracket.
+AlignAfterOpenBracket: Align
+
+# don't move all parameters to new line
+AllowAllParametersOfDeclarationOnNextLine: false
+
+# no single line functions
+AllowShortFunctionsOnASingleLine: None
+
+# no single line enums
+AllowShortEnumsOnASingleLine: false
+
+# always break before you encounter multi line strings
+AlwaysBreakBeforeMultilineStrings: true
+
+# don't move arguments to own lines if they are not all on the same
+BinPackArguments: false
+
+# don't move parameters to own lines if they are not all on the same
+BinPackParameters: false
+
+# In case we have an if statement with multiple lines the operator should be at the beginning of the line
+# but we do not want to break assignments
+BreakBeforeBinaryOperators: NonAssignment
+
+# format C++11 braced lists like function calls
+Cpp11BracedListStyle: true
+
+# do not put a space before C++11 braced lists
+SpaceBeforeCpp11BracedList: false
+
+# remove empty lines
+KeepEmptyLinesAtTheStartOfBlocks: false
+
+# no namespace indentation to keep indent level low
+NamespaceIndentation: None
+
+# we use template< without space.
+SpaceAfterTemplateKeyword: false
+
+# Always break after template declaration
+AlwaysBreakTemplateDeclarations: true
+
+# macros for which the opening brace stays attached.
+ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH, forever, Q_FOREVER, QBENCHMARK, QBENCHMARK_ONCE , wl_resource_for_each, wl_resource_for_each_safe ]
+
+# keep lambda formatting multi-line if not empty
+AllowShortLambdasOnASingleLine: Empty
+
+# We do not want clang-format to put all arguments on a new line
+AllowAllArgumentsOnNextLine: false
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3ab8c4371..27f6c937c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -6,12 +6,10 @@ include:
     file:
       - /gitlab-templates/linux-qt6.yml
       - /gitlab-templates/linux-qt6-next.yml
-      - /gitlab-templates/json-validation.yml
       - /gitlab-templates/freebsd-qt6.yml
       - /gitlab-templates/windows-qt6.yml
       - /gitlab-templates/craft-windows-x86-64-qt6.yml
       - /gitlab-templates/cppcheck.yml
-      - /gitlab-templates/clang-format.yml
+      - /gitlab-templates/pre-commit.yml
       - /gitlab-templates/craft-windows-appx-qt6.yml
-      - /gitlab-templates/xml-lint.yml
       - /gitlab-templates/yaml-lint.yml
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 000000000..0fb98c45c
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,59 @@
+# SPDX-FileCopyrightText: none
+# SPDX-License-Identifier: CC0-1.0
+# See https://pre-commit.com for more information
+# See https://pre-commit.com/hooks.html for more hooks
+
+exclude: (^po/|.desktop|Messages.sh)
+repos:
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+   rev: v5.0.0
+   hooks:
+    - id: trailing-whitespace
+    - id: end-of-file-fixer
+    - id: check-added-large-files
+    - id: check-case-conflict
+    - id: check-xml
+  #- id: check-yaml
+  #  args: [--allow-multiple-documents]
+  #  exclude: ^(.clang-tidy)
+    - id: check-json
+    - id: check-symlinks
+    - id: destroyed-symlinks
+    - id: check-executables-have-shebangs
+ - repo: https://github.com/pre-commit/mirrors-clang-format
+   rev: v20.1.4
+   hooks:
+    - id: clang-format
+    # force using this project's configuration rather
+    # than the one provided by CI
+      args: [--style=file:.clang-format-pre-commit]
+ - repo: https://github.com/astral-sh/ruff-pre-commit
+  # Ruff version.
+   rev: v0.11.9
+   hooks:
+    # Run the linter.
+    - id: ruff
+    # Run the formatter.
+    - id: ruff-format
+ - repo: https://github.com/codespell-project/codespell
+   rev: v2.4.1
+   hooks:
+    - id: codespell
+      exclude: (textemoticons/core/data/emoji.json|textgrammarcheck/grammalecte/autotests/data/result1.json|texttranslator/translator/plugins/bergamot/autotests/data/modellanguages/models.json|textgrammarcheck/languagetool/autotests/data/test2.json|textautocorrection/core/autotests/data/custom-fr-ref.xml|textgrammarcheck/common/autotests/grammarresultutiltest.cpp|textautocorrection/core/autotests/data/custom-fr.xml)
+ - repo: https://github.com/BlankSpruce/gersemi
+   rev: 0.19.3
+   hooks:
+    - id: gersemi
+ - repo: https://github.com/DavidAnson/markdownlint-cli2
+   rev: v0.18.1
+   hooks:
+    - id: markdownlint-cli2
+      files: \.(md|mdown|markdown)$
+ - repo: https://github.com/scop/pre-commit-shfmt
+   rev: v3.11.0-1
+   hooks:
+    - id: shfmt
+ - repo: https://github.com/shellcheck-py/shellcheck-py
+   rev: v0.10.0.1
+   hooks:
+    - id: shellcheck
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 95cad3fb7..1d2647ed2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,7 +5,7 @@ set(RELEASE_SERVICE_VERSION "25.07.40")
 
 # Use true if stable version => we will check specific version
 set(KONTACT_STABLE_VERSION false)
- 
+
 # Update it for each release
 set(KONTACT_RELEASE_VERSION_DATE "25.07.10") # yy.MM.dd
 
@@ -16,17 +16,28 @@ find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE)
 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
 include(ECMInstallIcons)
 
-
 include(ECMSetupVersion)
 include(ECMAddTests)
 
 include(GenerateExportHeader)
 include(ECMGenerateHeaders)
 
-include(KDEGitCommitHooks)
-include(KDEClangFormat)
 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES src/*.cpp src/*.h)
-kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
+set(PRE_COMMIT_INSTALLED FALSE)
+if(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
+    if(EXISTS "${PROJECT_SOURCE_DIR}/.git/hooks/pre-commit")
+        file(READ "${PROJECT_SOURCE_DIR}/.git/hooks/pre-commit" FILE_CONTENTS)
+        string(FIND "${FILE_CONTENTS}" "File generated by pre-commit" INDEX)
+        if(${INDEX} GREATER_EQUAL 0)
+            set(PRE_COMMIT_INSTALLED TRUE)
+        endif()
+    endif()
+endif()
+if(NOT ${PRE_COMMIT_INSTALLED})
+    include(KDEGitCommitHooks)
+    include(KDEClangFormat)
+    kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
+endif()
 include(CheckFunctionExists)
 
 include(KDEInstallDirs)
@@ -46,7 +57,9 @@ if(DEFINED KDEPIM_DEV_VERSION)
     set(KDEPIM_DEV_VERSION " ${KDEPIM_DEV_VERSION}")
 endif()
 
-set(KDEPIM_VERSION "${PIM_VERSION}${KDEPIM_DEV_VERSION} (${RELEASE_SERVICE_VERSION})")
+set(KDEPIM_VERSION
+    "${PIM_VERSION}${KDEPIM_DEV_VERSION} (${RELEASE_SERVICE_VERSION})"
+)
 
 set(KONTACTINTERFACE_LIB_VERSION "6.4.40")
 set(PIMCOMMON_LIB_VERSION "6.4.40")
@@ -54,8 +67,12 @@ set(PIMCOMMON_LIB_VERSION "6.4.40")
 set(KDEPIM_LIB_VERSION "${PIM_VERSION}")
 set(KDEPIM_LIB_SOVERSION "6")
 
-
-find_package(Qt6 ${QT_REQUIRED_VERSION} CONFIG REQUIRED DBus Widgets WebEngineWidgets)
+find_package(
+    Qt6
+    ${QT_REQUIRED_VERSION}
+    CONFIG
+    REQUIRED DBus Widgets WebEngineWidgets
+)
 set(LIBKDEPIM_LIB_VERSION "6.4.40")
 set(LIBGRANTLEETHEME_LIB_VERSION "6.4.40")
 # Find KF6 package
@@ -66,14 +83,18 @@ find_package(KF6Crash ${KF_MIN_VERSION} REQUIRED)
 find_package(KF6IconThemes ${KF_MIN_VERSION} REQUIRED)
 find_package(KF6GuiAddons ${KF_MIN_VERSION} REQUIRED)
 find_package(KF6DocTools ${KF_MIN_VERSION})
-set_package_properties(KF6DocTools PROPERTIES DESCRIPTION
-    "Tools to generate documentation"
-    TYPE OPTIONAL
+set_package_properties(
+    KF6DocTools
+    PROPERTIES DESCRIPTION "Tools to generate documentation" TYPE OPTIONAL
 )
 
-
 # Find KdepimLibs Package
-find_package(KPim6KontactInterface ${KONTACTINTERFACE_LIB_VERSION} CONFIG REQUIRED)
+find_package(
+    KPim6KontactInterface
+    ${KONTACTINTERFACE_LIB_VERSION}
+    CONFIG
+    REQUIRED
+)
 find_package(KPim6Libkdepim ${LIBKDEPIM_LIB_VERSION} CONFIG REQUIRED)
 find_package(KPim6GrantleeTheme ${LIBGRANTLEETHEME_LIB_VERSION} CONFIG REQUIRED)
 find_package(KPim6PimCommon ${PIMCOMMON_LIB_VERSION} CONFIG REQUIRED)
@@ -82,9 +103,12 @@ include_directories(${kontact_SOURCE_DIR} ${kontact_BINARY_DIR})
 add_definitions(-DQT_NO_CONTEXTLESS_CONNECT)
 ecm_set_disabled_deprecation_versions(QT 6.10.0  KF 6.15.0)
 
-
 add_definitions(-DTRANSLATION_DOMAIN=\"kontact\")
-option(USE_UNITY_CMAKE_SUPPORT "Use UNITY cmake support (speedup compile time)" OFF)
+option(
+    USE_UNITY_CMAKE_SUPPORT
+    "Use UNITY cmake support (speedup compile time)"
+    OFF
+)
 
 set(COMPILE_WITH_UNITY_CMAKE_SUPPORT OFF)
 if(USE_UNITY_CMAKE_SUPPORT)
@@ -96,8 +120,10 @@ ecm_qt_install_logging_categories(
         EXPORT KONTACT
         FILE kontact.categories
         DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
-        )
-kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
+)
+if(DEFINED kde_configure_git_pre_commit_hook)
+    kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
+endif()
 ki18n_install(po)
 if(KF6DocTools_FOUND)
     kdoctools_install(po)
diff --git a/LICENSES/GPL-2.0-or-later.txt b/LICENSES/GPL-2.0-or-later.txt
index 1d80ac365..96e2bf1e9 100644
--- a/LICENSES/GPL-2.0-or-later.txt
+++ b/LICENSES/GPL-2.0-or-later.txt
@@ -2,7 +2,7 @@ GNU GENERAL PUBLIC LICENSE
 
 Version 2, June 1991
 
-Copyright (C) 1989, 1991 Free Software Foundation, Inc. 
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
 
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
 
diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt
new file mode 100644
index 000000000..204b93da4
--- /dev/null
+++ b/LICENSES/MIT.txt
@@ -0,0 +1,19 @@
+MIT License Copyright (c) <year> <copyright holders>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
+OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/Thoughts b/Thoughts
index 8a294fbb5..7a90ec332 100644
--- a/Thoughts
+++ b/Thoughts
@@ -234,7 +234,7 @@ Don: the container. Eg. if the parts want to add folders to the container
 Don: apps folder tree (or navigator)
 Don:
 Don: And maybe for communicating with the status bar.
-	
+
 
 Communication/Interaction:
 ==========================
@@ -372,4 +372,3 @@ h:    to get a summary widget for a day?
 h: b) use some sort of XML to UI to represent the summary information
 h: c) have a stand a lone part which opens the PIM data separately? ( How
 h:    to synchronize access? )
-
diff --git a/doc/kontact/index.docbook b/doc/kontact/index.docbook
index fa331ac7a..060ff4768 100644
--- a/doc/kontact/index.docbook
+++ b/doc/kontact/index.docbook
@@ -174,7 +174,7 @@ Normal, or Small icons, as well as the option to use text only
 instead of icons.</para>
 
 <para>If you dislike the Side Pane, you can simply hide it by dragging the
-splitter. An alternative navigation between parts is provided by the 
+splitter. An alternative navigation between parts is provided by the
 <guilabel>Navigator</guilabel> toolbar, which can be freely positioned. See
 <xref linkend="bars" /> for more on the <guilabel>Navigator</guilabel>
 toolbar.</para>
@@ -211,7 +211,7 @@ icon in the Side Pane indicates to which application the Main View belongs.
 <para>In addition, there are two ways of overriding the component that &kontact;
 starts with. The first is supplying an argument to the &kontact; program call
 (see <xref linkend="command-line"/>). The second is a setting in the
-&kontact; Settings dialog that will allow you to always start &kontact; in a 
+&kontact; Settings dialog that will allow you to always start &kontact; in a
 certain mode.</para>
 
 <para>To get to it, go to <menuchoice><guimenu>Settings</guimenu>
@@ -344,7 +344,7 @@ object.</para>
 <sect1 id="side-pane-drag-and-drop">
 <title>Drag and Drop Functionality</title>
 
-<para>&kontact; provides advanced drag and drop functionality between 
+<para>&kontact; provides advanced drag and drop functionality between
 the programs it contains. Following is a brief description of each of
 the specific drag and drop operations that can be used and the
 result of each.</para>
@@ -353,14 +353,14 @@ result of each.</para>
 <title>&kmail; -> &korganizer; To-do List</title>
 
 <para>
-Dragging a message from 
+Dragging a message from
 <ulink url="help:/kmail2/using-kmail.html#the-mail-reader-window">&kmail;'s Headers pane</ulink>
-to the icon for &korganizer;'s To-do list 
+to the icon for &korganizer;'s To-do list
 (<guiicon><inlinemediaobject><imageobject>
 <imagedata fileref="todo-list-sidebar-icon.png" format="PNG"/>
 </imageobject></inlinemediaobject></guiicon>)
-will create a new To-do with 
-<guilabel>Mail: <replaceable>Subject</replaceable></guilabel> as the title and 
+will create a new To-do with
+<guilabel>Mail: <replaceable>Subject</replaceable></guilabel> as the title and
 <guilabel>From: <replaceable>Sender</replaceable>
 To: <replaceable>Receiver</replaceable>
 Subject: <replaceable>Subject</replaceable></guilabel> as the contents
@@ -376,14 +376,14 @@ attachment.
 <title>&kmail; -> &korganizer; Calendar</title>
 
 <para>
-Dragging a message from 
+Dragging a message from
 <ulink url="help:/kmail2/using-kmail.html#the-mail-reader-window">&kmail;'s Headers pane</ulink>
 to the icon for &korganizer;'s Calendar
 (<guiicon><inlinemediaobject><imageobject>
 <imagedata fileref="calendar-sidebar-icon.png" format="PNG"/>
 </imageobject></inlinemediaobject></guiicon>)
-will create a new Event with 
-<guilabel>Mail: <replaceable>Subject</replaceable></guilabel> as the title and 
+will create a new Event with
+<guilabel>Mail: <replaceable>Subject</replaceable></guilabel> as the title and
 <guilabel>From: <replaceable>Sender</replaceable>
 To: <replaceable>Receiver</replaceable>
 Subject: <replaceable>Subject</replaceable></guilabel> as the contents
@@ -395,7 +395,7 @@ attachment.
 
 <para>Note that dragging onto the To-do button creates a To-do,
 whereas dragging onto the Calendar creates an Event. More on this
-distinction is available in the 
+distinction is available in the
 <ulink url="help:/korganizer">&korganizer; documentation</ulink>
 </para>
 
@@ -406,11 +406,11 @@ distinction is available in the
 <title>&kmail; -> &kaddressbook;</title>
 
 <para>
-Dragging a message from 
+Dragging a message from
 <ulink url="help:/kmail2/using-kmail.html#the-mail-reader-window">&kmail;'s Headers pane</ulink>
  to the icon for &kaddressbook;
 (<guiicon><inlinemediaobject><imageobject> <imagedata
-                                           fileref="kaddressbook-sidebar-icon.png" 
+                                           fileref="kaddressbook-sidebar-icon.png"
                                            format="PNG" />
 </imageobject></inlinemediaobject></guiicon>) will create a contact
 from the email address of the sender, unless a contact with that name
@@ -429,7 +429,7 @@ Dragging any number of entries from <ulink
 url="help:/kaddressbook/using-kaddressbook.html">&kaddressbook;'s main
 window</ulink> to the icon for &korganizer;'s To-do List
 (<guiicon><inlinemediaobject><imageobject> <imagedata
-                                           fileref="todo-list-sidebar-icon.png" 
+                                           fileref="todo-list-sidebar-icon.png"
                                            format="PNG"/>
 </imageobject></inlinemediaobject></guiicon>) will create a new To-do
 with "Meeting" as the title and the selected contacts as
@@ -438,7 +438,7 @@ attendees.
 
 <para>Note that dragging onto the To-do button creates a To-do,
 whereas dragging onto the Calendar creates an Event. More on this
-distinction is available in the 
+distinction is available in the
 <ulink url="help:/korganizer">&korganizer; documentation</ulink>
 </para>
 
@@ -453,7 +453,7 @@ Dragging any number of entries from <ulink
 url="help:/kaddressbook/using-kaddressbook.html">&kaddressbook;'s main
 window</ulink> to the icon for &korganizer;'s Calendar
 (<guiicon><inlinemediaobject><imageobject> <imagedata
-                                           fileref="calendar-sidebar-icon.png" 
+                                           fileref="calendar-sidebar-icon.png"
                                            format="PNG"/>
 </imageobject></inlinemediaobject></guiicon>) will create a new Event
 with "Meeting" as the title and the selected contacts as
@@ -462,7 +462,7 @@ attendees.
 
 <para>Note that dragging onto the To-do button creates a To-do,
 whereas dragging onto the Calendar creates an Event. More on this
-distinction is available in the 
+distinction is available in the
 <ulink url="help:/korganizer">&korganizer; documentation</ulink>
 </para>
 
@@ -930,7 +930,7 @@ communicate effectively with various groupware solutions.
 
 <para>
 In the &kontact; configuration dialog, under <menuchoice><guimenu>Mail</guimenu>
-<guimenuitem>Misc</guimenuitem></menuchoice> on the <guilabel>Invitations</guilabel> page 
+<guimenuitem>Misc</guimenuitem></menuchoice> on the <guilabel>Invitations</guilabel> page
 you will find the following options that will help the user communicate
 with Microsoft Outlook(tm) running in a Kolab environment or in a
 Microsoft Exchange(tm) environment.
@@ -943,13 +943,13 @@ Microsoft Exchange(tm) environment.
 <listitem>
 <para>Enable this option to make Microsoft Outlook(tm) understand your answers to invitation replies.</para>
 <para>Microsoft Outlook has a number of shortcomings in its implementation of
-the iCalendar standard; this option works around one of them. If you 
+the iCalendar standard; this option works around one of them. If you
 have problems with Outlook users not being able to get your replies,
 try setting this option.</para>
-<para>Details: When mailing an iCal invitation this makes the message have 
+<para>Details: When mailing an iCal invitation this makes the message have
 the From: header the same as the To: header. It also sets header
  X-KMail-Identity to the To:'s UIOD and makes sure the BCC: is blank.
-Outlook will only understand the reply if the From: header is 
+Outlook will only understand the reply if the From: header is
 the same as the To: header of the invitation message.</para>
 </listitem>
 </varlistentry>
@@ -1006,7 +1006,7 @@ containing non-English characters.</para>
 <title>Behavioral Issues</title>
 
 <para>
-This section provides instructions on how to make &kontact; 
+This section provides instructions on how to make &kontact;
 behave more like other groupware clients.
 </para>
 
@@ -1019,7 +1019,7 @@ CC: or BCC: fields separated by a semicolon (';') character in addition
 to a comma (',').  By default, &kontact; only allows the comma as an address
 separator character.  To also allow the semicolon, change the
 <option>AllowSemicolonAsAddressSeparator</option> from false to true
-in the installed <filename>share/config.kcfg/messagecomposer.kcfg</filename> file. 
+in the installed <filename>share/config.kcfg/messagecomposer.kcfg</filename> file.
 </para>
 
 </sect2>
@@ -1044,7 +1044,7 @@ the low-levels libraries used by &kontact;:</para>
 <listitem>
 <para>
 When writing duration values into iCalendar files, &kontact; never
-writes the DURATION property in terms of weeks (i.e., 1*DIGIT "W"); 
+writes the DURATION property in terms of weeks (i.e., 1*DIGIT "W");
 instead, the integer number of weeks is always multiplied by 7 and written
 in terms of days (i.e. 1*DIGIT "D").
 </para>
diff --git a/readme-build-ftime.txt b/readme-build-ftime.txt
index 833cfa009..b931a1804 100644
--- a/readme-build-ftime.txt
+++ b/readme-build-ftime.txt
@@ -23,4 +23,3 @@ ClangBuildAnalyzer --analyze build-ftime.txt > analyze-build-ftime.txt
 
 
 see https://aras-p.info/blog/2019/09/28/Clang-Build-Analyzer/
-
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 746b84317..32b4aaa61 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,72 +1,79 @@
-configure_file(kontact-version.h.in ${CMAKE_CURRENT_BINARY_DIR}/kontact-version.h @ONLY)
+configure_file(
+    kontact-version.h.in
+    ${CMAKE_CURRENT_BINARY_DIR}/kontact-version.h
+    @ONLY
+)
 configure_file(config-kontact.h.in ${CMAKE_CURRENT_BINARY_DIR}/config-kontact.h)
 add_subdirectory(about)
 add_library(kontactprivate)
 
 ########### next target ###############
 
-target_sources(kontactprivate PRIVATE
-    webengine/introductionwebenginepage.cpp
-    webengine/introductionwebengineview.cpp
-    mainwindow.cpp
-    sidepanebase.cpp
-    iconsidepane.cpp
-    ksettingsdialog/kontactkcmultidialog.cpp
-    ksettingsdialog/kontactsettingsdialog.cpp
-    kontactconfiguredialog.cpp
-    webengine/introductionwebenginepage.h
-    webengine/introductionwebengineview.h
-    mainwindow.h
-    sidepanebase.h
-    iconsidepane.h
-    ksettingsdialog/kontactkcmultidialog.h
-    ksettingsdialog/kontactsettingsdialog.h
-    ksettingsdialog/kontactkcmultidialog_p.h
-    ksettingsdialog/kontactsettingsdialog_p.h
-    kontactconfiguredialog.h
-    kontact.qrc
-    )
+target_sources(
+    kontactprivate
+    PRIVATE
+        webengine/introductionwebenginepage.cpp
+        webengine/introductionwebengineview.cpp
+        mainwindow.cpp
+        sidepanebase.cpp
+        iconsidepane.cpp
+        ksettingsdialog/kontactkcmultidialog.cpp
+        ksettingsdialog/kontactsettingsdialog.cpp
+        kontactconfiguredialog.cpp
+        webengine/introductionwebenginepage.h
+        webengine/introductionwebengineview.h
+        mainwindow.h
+        sidepanebase.h
+        iconsidepane.h
+        ksettingsdialog/kontactkcmultidialog.h
+        ksettingsdialog/kontactsettingsdialog.h
+        ksettingsdialog/kontactkcmultidialog_p.h
+        ksettingsdialog/kontactsettingsdialog_p.h
+        kontactconfiguredialog.h
+        kontact.qrc
+)
 
 ecm_qt_declare_logging_category(kontactprivate HEADER kontact_debug.h IDENTIFIER KONTACT_LOG CATEGORY_NAME org.kde.pim.kontact
         DESCRIPTION "kontact (kontact application)"
         OLD_CATEGORY_NAMES log_kontact
         EXPORT KONTACT
-    )
+)
 
 kconfig_add_kcfg_files(kontactprivate prefs.kcfgc)
 
-
 if(COMPILE_WITH_UNITY_CMAKE_SUPPORT)
     set_target_properties(kontactprivate PROPERTIES UNITY_BUILD ON)
 endif()
 
 generate_export_header(kontactprivate BASE_NAME kontact)
 
-target_link_libraries(kontactprivate
-    PUBLIC
-    KF6::IconThemes
+target_link_libraries(
+    kontactprivate
+    PUBLIC KF6::IconThemes
     PRIVATE
-    KF6::KCMUtils
-    KF6::I18n
-    KF6::KIOWidgets
-    KPim6::KontactInterface
-    KF6::GuiAddons
-    KPim6::Libkdepim
-    KPim6::PimCommon
-    KPim6::GrantleeTheme
-    Qt::WebEngineWidgets
-    )
-
-set_target_properties(kontactprivate PROPERTIES
-    VERSION ${KDEPIM_LIB_VERSION}
-    SOVERSION ${KDEPIM_LIB_SOVERSION}
-    )
+        KF6::KCMUtils
+        KF6::I18n
+        KF6::KIOWidgets
+        KPim6::KontactInterface
+        KF6::GuiAddons
+        KPim6::Libkdepim
+        KPim6::PimCommon
+        KPim6::GrantleeTheme
+        Qt::WebEngineWidgets
+)
+
+set_target_properties(
+    kontactprivate
+    PROPERTIES VERSION ${KDEPIM_LIB_VERSION} SOVERSION ${KDEPIM_LIB_SOVERSION}
+)
 
-install(TARGETS kontactprivate ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} LIBRARY NAMELINK_SKIP)
+install(
+    TARGETS kontactprivate ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}
+    LIBRARY NAMELINK_SKIP
+)
 
 ########### next target ###############
 
-
 file(GLOB icons "${CMAKE_CURRENT_SOURCE_DIR}/icons/*-apps-kontact.png")
 ecm_add_app_icon(kontact_bin_SRCS ICONS ${icons})
 
@@ -75,14 +82,15 @@ target_sources(kontact_bin PRIVATE main.cpp kontact_debug.cpp)
 
 set_target_properties(kontact_bin PROPERTIES OUTPUT_NAME kontact)
 
-target_link_libraries(kontact_bin
+target_link_libraries(
+    kontact_bin
     kontactprivate
     KF6::I18n
     KPim6::KontactInterface
     KF6::Crash
     Qt::DBus
     KF6::IconThemes
-    )
+)
 if(COMPILE_WITH_UNITY_CMAKE_SUPPORT)
     set_target_properties(kontact_bin PROPERTIES UNITY_BUILD ON)
 endif()
@@ -91,24 +99,33 @@ install(TARGETS kontact_bin ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
 ########### next target ###############
 
 add_library(kcm_kontact MODULE kcmkontact.cpp kcmkontact.h)
-target_link_libraries(kcm_kontact
+target_link_libraries(
+    kcm_kontact
     KF6::I18n
     KF6::KCMUtils
     KPim6::Libkdepim
     kontactprivate
     KF6::KIOWidgets
     KPim6::KontactInterface
-    )
+)
 
-install(TARGETS kcm_kontact DESTINATION ${KDE_INSTALL_PLUGINDIR}/pim6/kcms/kontact)
+install(
+    TARGETS kcm_kontact
+    DESTINATION ${KDE_INSTALL_PLUGINDIR}/pim6/kcms/kontact
+)
 
 ########### install files ###############
 
 install(PROGRAMS data/org.kde.kontact.desktop DESTINATION ${KDE_INSTALL_APPDIR})
-install(FILES data/org.kde.kontact.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
+install(
+    FILES data/org.kde.kontact.appdata.xml
+    DESTINATION ${KDE_INSTALL_METAINFODIR}
+)
 install(FILES kontact.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR})
 configure_file(data/org.kde.kontact.service.in org.kde.kontact.service)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.kde.kontact.service DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR})
+install(
+    FILES ${CMAKE_CURRENT_BINARY_DIR}/org.kde.kontact.service
+    DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
+)
 
 add_subdirectory(icons)
-
diff --git a/src/about/CMakeLists.txt b/src/about/CMakeLists.txt
index d6909e9fb..75d45da8a 100644
--- a/src/about/CMakeLists.txt
+++ b/src/about/CMakeLists.txt
@@ -1,5 +1,4 @@
-install(FILES
-    introduction_kontact.html
-    loading_kontact.html
+install(
+    FILES introduction_kontact.html loading_kontact.html
     DESTINATION ${KDE_INSTALL_DATADIR}/messageviewer/about/default
 )
diff --git a/src/about/introduction_kontact.html b/src/about/introduction_kontact.html
index f384d25cd..ab6a6a70c 100644
--- a/src/about/introduction_kontact.html
+++ b/src/about/introduction_kontact.html
@@ -36,4 +36,3 @@
 <span><a href="exec:/switch">{% i18n "Skip this introduction" %}</a></span>
 
 {% endblock box %}
-
diff --git a/src/kontact-version.h.in b/src/kontact-version.h.in
index 24493bd26..91f019fb9 100644
--- a/src/kontact-version.h.in
+++ b/src/kontact-version.h.in
@@ -17,4 +17,3 @@
 
 #pragma once
 #define KONTACT_VERSION "@KDEPIM_VERSION@"
-


More information about the kde-doc-english mailing list