<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kate | Get an Edge in Editing</title><link>https://kate-editor.org/</link><description>Recent content on Kate | Get an Edge in Editing</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Sat, 21 Sep 2019 21:50:00 +0200</lastBuildDate><atom:link href="https://kate-editor.org/index.xml" rel="self" type="application/rss+xml"/><item><title>External Tools Plugin is Back</title><link>https://kate-editor.org/post/2019/2019-09-21-external-tools-plugin/</link><pubDate>Sat, 21 Sep 2019 21:50:00 +0200</pubDate><guid>https://kate-editor.org/post/2019/2019-09-21-external-tools-plugin/</guid><description>
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/2011/08/09/maintainer-needed-kate-external-tools-plugin/&#34;&gt;Back in 2011&lt;/a&gt;, we decided to remove the External Tools plugin in Kate for the KDE 4.8 release, since it was unmaintained and we got more and more bugs that were not fixed. However, over the years, we got many requests (and complaints) to bring this plugin back to life, since it was very useful to start little helper scripts with just a shortcut, via the command line, or the menu.&lt;/p&gt;
&lt;p&gt;The good news is that for the KDE Applications 19.12 release, the External Tools plugin will be back! And it is much improved compared to the previous version.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been looking at many external tools implementations, including Microsoft Visual Studio, Visual Studio Code, CLion, KDevelop, Eclipse, and Qt Creator. And I must say the implementation in Qt Creator was by far the most flexible one, so that&amp;rsquo;s what I used as reference.&lt;/p&gt;
&lt;p&gt;So let&amp;rsquo;s have a look. Once you enable the plugin, a new entry &amp;ldquo;External Tools&amp;rdquo; appears in the config page. Selecting the &amp;ldquo;External Tools&amp;rdquo; entry, you will be presented with several tools by default:&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/post/2019/2019-09-21-external-tools-plugin/images/external-tools.png&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://kate-editor.org/post/2019/2019-09-21-external-tools-plugin/images/external-tools.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Editing a tool opens a config dialog that allows fine-grained configuration of the tool:&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/post/2019/2019-09-21-external-tools-plugin/images/configure-external-tool.png&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://kate-editor.org/post/2019/2019-09-21-external-tools-plugin/images/configure-external-tool.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;As you can see, many details can be defined, namely:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name&lt;/strong&gt;: The name of the tool, which will later appear in the menu.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Icon&lt;/strong&gt;: Optional icon that is visible in the menu.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Executable&lt;/strong&gt;: the executable. You can either provide an absolute path, or your executable must be in the PATH environment variable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arguments&lt;/strong&gt;: Optional arguments that are passed to the process.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Input&lt;/strong&gt;: Optional input that is passed to the process via stdin.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Working directory&lt;/strong&gt;: The working directory the tool will be started in. If empty, the working directory is set to the current document&amp;rsquo;s path.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mime types&lt;/strong&gt;: If set, the tool is active only if the current document&amp;rsquo;s mime type matches.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Save&lt;/strong&gt;: When invoked, saves none, the current document, or all documents.
&lt;a href=&#34;https://kate-editor.org/post/2019/2019-09-21-external-tools-plugin/images/external-tools-save.png&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://kate-editor.org/post/2019/2019-09-21-external-tools-plugin/images/external-tools-save.png&#34;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[ ] Reload current document after execution&lt;/strong&gt;: Useful when the current file is modified on disk.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Output&lt;/strong&gt;: The output defines the target of stdout.
&lt;a href=&#34;https://kate-editor.org/post/2019/2019-09-21-external-tools-plugin/images/external-tools-output.png&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://kate-editor.org/post/2019/2019-09-21-external-tools-plugin/images/external-tools-output.png&#34;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editor command&lt;/strong&gt;: Optional command that can be used to invoke the external tool via &lt;a href=&#34;https://docs.kde.org/stable5/en/applications/katepart/advanced-editing-tools-commandline.html&#34;&gt;Kate&amp;rsquo;s built-in command line (by default shortcut F7)&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;support-for-variables&#34;&gt;Support for Variables&lt;/h3&gt;
&lt;p&gt;The &lt;em&gt;Executable&lt;/em&gt;, the &lt;em&gt;Arguments&lt;/em&gt;, the &lt;em&gt;Input&lt;/em&gt; and the &lt;em&gt;Working Directory&lt;/em&gt; support variables that are expanded on tool invocation. This is indicated by the icon &lt;code&gt;{}&lt;/code&gt; that appears once one of these text input fields has focus (cf. red circle):&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/post/2019/2019-09-21-external-tools-plugin/images/external-tools-variables.png&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://kate-editor.org/post/2019/2019-09-21-external-tools-plugin/images/external-tools-variables.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Hovering over one of these text inputs also shows a tooltip with the current expanded text. Further, clicking on the &lt;code&gt;{}&lt;/code&gt; action will open a dialog that lists all available variables:&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/post/2019/2019-09-21-external-tools-plugin/images/external-tools-variable-chooser.png&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://kate-editor.org/post/2019/2019-09-21-external-tools-plugin/images/external-tools-variable-chooser.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;This feature provides a lot of flexibility when defining an external tool since all variables of the form &lt;code&gt;%{...}&lt;/code&gt; are expanded when the tool gets invoked. There are two kind of variables supported:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;%{variable-name}&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;%{variable-name:&amp;lt;value&amp;gt;}&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The first form &lt;strong&gt;%{variable-name}&lt;/strong&gt; simply replaces the variable with its contents. For instance, the variable &lt;em&gt;%{Document:FileName}&lt;/em&gt; is replaced by the current document&amp;rsquo;s filename without its path.
The second form &lt;strong&gt;%{variable-name:&amp;lt;value&amp;gt;}&lt;/strong&gt; gets the &lt;em&gt;&amp;lt;value&amp;gt;&lt;/em&gt; as contents. For example, this can be used to expand an environment variable with &lt;em&gt;%{ENV:HOME}&lt;/em&gt;. Or you can obtain the current date in your preferred format like &lt;em&gt;%{Date:yyyy-MM-dd}&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Developer info: The concept of variable expansion was added to the KTextEditor framework with version 5.63 (&lt;a href=&#34;https://api.kde.org/frameworks/ktexteditor/html/classKTextEditor_1_1Editor.html#a8d1e545e5e9413e6a5a1bb574755c295&#34;&gt;cf. API documentation&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Supported variables include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Document:FileBaseName&lt;/strong&gt;: File base name without path and suffix of the current document.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document:FileExtension&lt;/strong&gt;: File extension of the current document.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document:FileName&lt;/strong&gt;: File name without path of the current document.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document:FilePath&lt;/strong&gt;: Full path of the current document including the file name.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document:Text&lt;/strong&gt;: Contents of the current document.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document:Path&lt;/strong&gt;: Full path of the current document excluding the file name.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document:NativeFilePath&lt;/strong&gt;: Full document path including file name, with native path separator (backslash on Windows).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document:NativePath&lt;/strong&gt;: Full document path excluding file name, with native path separator (backslash on Windows).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document:Cursor:Line&lt;/strong&gt;: Line number of the text cursor position in current document (starts with 0).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document:Cursor:Column&lt;/strong&gt;: Column number of the text cursor position in current document (starts with 0).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document:Cursor:XPos&lt;/strong&gt;: X component in global screen coordinates of the cursor position.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document:Cursor:YPos&lt;/strong&gt;: Y component in global screen coordinates of the cursor position.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document:Selection:Text&lt;/strong&gt;: Text selection of the current document.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document:Selection:StartLine&lt;/strong&gt;: Start line of selected text of the current document.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document:Selection:StartColumn&lt;/strong&gt;: Start column of selected text of the current document.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document:Selection:EndLine&lt;/strong&gt;: End line of selected text of the current document.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document:Selection:EndColumn&lt;/strong&gt;: End column of selected text of the current document.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document:RowCount&lt;/strong&gt;: Number of rows of the current document.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Date:Locale&lt;/strong&gt;: The current date in current locale format.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Date:ISO&lt;/strong&gt;: The current date (ISO).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Date:&amp;lt;value&amp;gt;&lt;/strong&gt;: The current date (&lt;a href=&#34;https://doc.qt.io/qt-5/qdate.html#toString&#34;&gt;QDate formatstring&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time:Locale&lt;/strong&gt;: The current time in current locale format.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time:ISO&lt;/strong&gt;: The current time (ISO).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time:&amp;lt;value&amp;gt;&lt;/strong&gt;: The current time (&lt;a href=&#34;https://doc.qt.io/qt-5/qtime.html#toString&#34;&gt;QTime formatstring&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ENV:&amp;lt;value&amp;gt;&lt;/strong&gt;: Access to environment variables.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JS:&amp;lt;expression&amp;gt;&lt;/strong&gt;: Evaluate simple JavaScript statements.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UUID&lt;/strong&gt;: Generate a new UUID.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;list-of-default-tools&#34;&gt;List of Default Tools&lt;/h3&gt;
&lt;p&gt;Some tools are shipped by default. These tools mostly came to my mind, but if you have more useful tools please let us know at &lt;a href=&#34;mailto:kwrite-devel@kde.org&#34;&gt;kwrite-devel@kde.org&lt;/a&gt; so that we can add them to this list.&lt;/p&gt;
&lt;h4 id=&#34;git-cola&#34;&gt;git-cola&lt;/h4&gt;
&lt;p&gt;git-cola is a graphical git client that enables you to easily stage and commit changes. If installed, it is available also through the command line with &amp;ldquo;git-cola&amp;rdquo;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name: git-cola&lt;/li&gt;
&lt;li&gt;Icon: git-cola&lt;/li&gt;
&lt;li&gt;Executable: git-cola&lt;/li&gt;
&lt;li&gt;Arguments: -r %{Document:Path}&lt;/li&gt;
&lt;li&gt;Editor command: git-cola&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;gitk&#34;&gt;gitk&lt;/h4&gt;
&lt;p&gt;gitk is a git client as well that allows to nicely visualize the git history.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name: gitk&lt;/li&gt;
&lt;li&gt;Icon: git-gui&lt;/li&gt;
&lt;li&gt;Executable: gitk&lt;/li&gt;
&lt;li&gt;Working directory: %{Document:Path}&lt;/li&gt;
&lt;li&gt;Editor command: gitk&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;git-blame&#34;&gt;git blame&lt;/h4&gt;
&lt;p&gt;Starts git blame to easily follow git changes in the current file.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name: git blame&lt;/li&gt;
&lt;li&gt;Executable: git&lt;/li&gt;
&lt;li&gt;Arguments: gui blame %{Document:FileName}&lt;/li&gt;
&lt;li&gt;Save: Current Document&lt;/li&gt;
&lt;li&gt;Working directory: %{Document:Path}&lt;/li&gt;
&lt;li&gt;Editor command: git-blame&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;run-shell-script&#34;&gt;Run Shell Script&lt;/h4&gt;
&lt;p&gt;Starts an external konsole in which the current document is executed.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name: Run Shell Script&lt;/li&gt;
&lt;li&gt;Icon: system-run&lt;/li&gt;
&lt;li&gt;Executable: konsole&lt;/li&gt;
&lt;li&gt;Arguments: -e sh -c &amp;ldquo;cd %{Document:Path} &amp;amp;&amp;amp; pwd &amp;amp;&amp;amp; chmod -vc a+x %{Document:FileName} &amp;amp;&amp;amp; ./%{Document:FileName} ; echo Press any key to continue. &amp;amp;&amp;amp; read -n 1&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Working directory: %{Document:Path}&lt;/li&gt;
&lt;li&gt;Save: Current Document&lt;/li&gt;
&lt;li&gt;Editor command: run-script&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;google-selected-text&#34;&gt;Google Selected Text&lt;/h4&gt;
&lt;p&gt;Search in google for the selected text.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name: Google Selected Text&lt;/li&gt;
&lt;li&gt;Icon: globe&lt;/li&gt;
&lt;li&gt;Executable: xdg-open&lt;/li&gt;
&lt;li&gt;Arguments: &amp;ldquo;&lt;a href=&#34;https://www.google.com/search?q=%{Document:Selection:Text}&amp;quot;&#34;&gt;https://www.google.com/search?q=%{Document:Selection:Text}&amp;quot;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Editor command: google&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;insert-uuid&#34;&gt;Insert UUID&lt;/h4&gt;
&lt;p&gt;Inserts a new UUID each time this action is invoked.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name: Insert UUID&lt;/li&gt;
&lt;li&gt;Executable: echo&lt;/li&gt;
&lt;li&gt;Arguments: %{UUID}&lt;/li&gt;
&lt;li&gt;Output: Insert at Cursor Position&lt;/li&gt;
&lt;li&gt;Editor command: uuid&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;clang-format-full-file&#34;&gt;Clang Format Full File&lt;/h4&gt;
&lt;p&gt;Runs clang-format on the current file on disk. The document is reloaded afterwards.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name: Clang Format Full File&lt;/li&gt;
&lt;li&gt;Executable: clang-format&lt;/li&gt;
&lt;li&gt;Arguments: -i %{Document:FileName}&lt;/li&gt;
&lt;li&gt;Working directory: %{Document:Path}&lt;/li&gt;
&lt;li&gt;Save: Current Document&lt;/li&gt;
&lt;li&gt;Reload: yes&lt;/li&gt;
&lt;li&gt;Editor command: clang-format-file&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;clang-format-selected-text&#34;&gt;Clang Format Selected Text&lt;/h4&gt;
&lt;p&gt;Runs clang-format just on the selected text in the current document.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name: Clang Format Selected Text&lt;/li&gt;
&lt;li&gt;Executable: clang-format&lt;/li&gt;
&lt;li&gt;Arguments: -assume-fileName: %{Document:FileName}&lt;/li&gt;
&lt;li&gt;Working directory: %{Document:Path}&lt;/li&gt;
&lt;li&gt;Input: %{Document:Selection:Text}&lt;/li&gt;
&lt;li&gt;Output: Replace Selected Text&lt;/li&gt;
&lt;li&gt;Editor command: clang-format-selection&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;qt-quick-2-preview-qmlscene&#34;&gt;Qt Quick 2 Preview (qmlscene)&lt;/h4&gt;
&lt;p&gt;Previews the current qml file in qmlscene.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name: Qt Quick 2 Preview (qmlscene)&lt;/li&gt;
&lt;li&gt;Executable: qmlscene&lt;/li&gt;
&lt;li&gt;Arguments: %{Document:FileName}&lt;/li&gt;
&lt;li&gt;Save: Current Document&lt;/li&gt;
&lt;li&gt;Working directory: %{Document:Path}&lt;/li&gt;
&lt;li&gt;Editor command: qml-preview&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Feel free to join the discussion at the &lt;a href=&#34;https://www.reddit.com/r/kde/comments/d7fj90/kate_external_tools_plugin_is_back/&#34;&gt;KDE reddit&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Kate in the Windows Store</title><link>https://kate-editor.org/post/2019/2019-09-12-kate-in-the-windows-store/</link><pubDate>Thu, 12 Sep 2019 18:25:00 +0200</pubDate><guid>https://kate-editor.org/post/2019/2019-09-12-kate-in-the-windows-store/</guid><description>&lt;p&gt;Our Windows Store submission succeeded, we are now officially &lt;a href=&#34;https://www.microsoft.com/store/apps/9NWMW7BB59HW&#34;&gt;in the store&lt;/a&gt;.&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/post/2019/2019-09-12-kate-in-the-windows-store/images/kate-on-windows.jpeg&#34; target=&#34;_blank&#34;&gt;&lt;img width=500 src=&#34;https://kate-editor.org/post/2019/2019-09-12-kate-in-the-windows-store/images/kate-on-windows.jpeg&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Try out how the Kate text editor performs on Windows for your personal workflow.&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/post/2019/2019-09-12-kate-in-the-windows-store/images/kate-on-windows-split-view.jpeg&#34; target=&#34;_blank&#34;&gt;&lt;img width=500 src=&#34;https://kate-editor.org/post/2019/2019-09-12-kate-in-the-windows-store/images/kate-on-windows-split-view.jpeg&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;If you see issues and want to help out, contributions are welcome on our &lt;a href=&#34;https://invent.kde.org/kde/kate&#34;&gt;GitLab instance&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Our Windows team is small, any help is very welcome!
Thanks again to all the people that made it possible to use Kate nicely on Windows.&lt;/p&gt;</description></item><item><title>Kate got submitted to the Windows Store</title><link>https://kate-editor.org/post/2019/2019-09-12-kate-windows-store-submission/</link><pubDate>Thu, 12 Sep 2019 14:25:00 +0200</pubDate><guid>https://kate-editor.org/post/2019/2019-09-12-kate-windows-store-submission/</guid><description>&lt;p&gt;Since a few years Kate is working well on Windows.
You can grab fresh installers since then from our &lt;a href=&#34;https://kate-editor.org/get-it&#34;&gt;download page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But the visibility of it was very low for Windows users.&lt;/p&gt;
&lt;p&gt;Already &lt;a href=&#34;https://phabricator.kde.org/T9577&#34;&gt;last year&lt;/a&gt; the plan was made to increase the visibility of KDE applications by getting them into the &lt;a href=&#34;https://store.microsoft.com&#34;&gt;official Windows Store&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Like always, &lt;a href=&#34;https://akademy.kde.org&#34;&gt;Akademy&lt;/a&gt; is a great chance to get the last bits ironed out and the stuff done!&lt;/p&gt;
&lt;p&gt;Now, thanks to the help of Hannah von Reth and others, we finally got Kate submitted to the Windows Store!&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/post/2019/2019-09-12-kate-windows-store-submission/images/kate-windows-store-submission.png&#34; target=&#34;_blank&#34;&gt;&lt;img width=500 src=&#34;https://kate-editor.org/post/2019/2019-09-12-kate-windows-store-submission/images/kate-windows-store-submission.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;The submission still needs to be processed by Microsoft, stay tuned when our nifty editor will really be available there for download!&lt;/p&gt;
&lt;p&gt;Thanks to all people that contributed to this!&lt;/p&gt;</description></item><item><title>Kate Planning</title><link>https://kate-editor.org/post/2019/2019-09-09-kate-planning/</link><pubDate>Mon, 09 Sep 2019 17:44:00 +0200</pubDate><guid>https://kate-editor.org/post/2019/2019-09-09-kate-planning/</guid><description>
&lt;h3 id=&#34;the-opportunity&#34;&gt;The Opportunity&lt;/h3&gt;
&lt;p&gt;During Akademy 2019 here in Milan, Dominik and me had time to sit together and discuss a bit what we shall do to evolve Kate :)&lt;/p&gt;
&lt;p&gt;Whereas Kate already works well as a general purpose editor, the competition in the text editor space got more intense in the last years.&lt;/p&gt;
&lt;p&gt;Beside the well established stuff like &lt;a href=&#34;https://emacs.org&#34;&gt;GNU Emacs&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://www.vim.org&#34;&gt;Vim&lt;/a&gt;, new editor projects got started that did set the bar higher on what users expect from a advanced GUI text editor.&lt;/p&gt;
&lt;p&gt;For example &lt;a href=&#34;https://www.sublimetext.com/&#34;&gt;Sublime&lt;/a&gt;, &lt;a href=&#34;https://atom.io&#34;&gt;Atom&lt;/a&gt; and &lt;a href=&#34;https://code.visualstudio.com/&#34;&gt;Visual Studio Code&lt;/a&gt; are things to keep an eye on feature &amp;amp; polishing wise.&lt;/p&gt;
&lt;p&gt;Therefore we decided it would make sense to think a bit about which stuff should be improved or altered in the near future.&lt;/p&gt;
&lt;h3 id=&#34;the-rough-ideas&#34;&gt;The Rough Ideas&lt;/h3&gt;
&lt;h4 id=&#34;kate-plugin-interfaces&#34;&gt;Kate Plugin Interfaces&lt;/h4&gt;
&lt;p&gt;From the KDE 4.x Kate to the KF5 based Kate version, we removed the Kate specific plugin interfaces and went with more generic interfaces in KTextEditor.&lt;/p&gt;
&lt;p&gt;The idea was to be able to share more plugins e.g. between Kate and KDevelop.
This idea never really did take off, at the moment just two of our plugins are shared at all&amp;hellip;&lt;/p&gt;
&lt;p&gt;On the other side, this makes it much harder to expose new functionality to our plugins, as we need to stay binary compatible.&lt;/p&gt;
&lt;p&gt;Moving back to having some Kate only stuff that has not even installed headers but is just usable for the plugins we bundle in our kate.git will make it again more flexible what to expose.&lt;/p&gt;
&lt;p&gt;One can still think about moving &amp;ldquo;proven in practice&amp;rdquo; parts back to the KTextEditor interface part.&lt;/p&gt;
&lt;h4 id=&#34;make-projects-a-core-feature&#34;&gt;Make Projects a Core-Feature&lt;/h4&gt;
&lt;p&gt;At the moment the projects feature is located in a plugin.&lt;/p&gt;
&lt;p&gt;For exposure of some things like the current project files some evil Qt property hacks are used.&lt;/p&gt;
&lt;p&gt;By moving this feature into the Kate core we can use a sane way to search in project, list project stuff in quick open, &amp;hellip;&lt;/p&gt;
&lt;p&gt;Other state of the art editors provide that per default, too&lt;/p&gt;
&lt;p&gt;Still stuff like &amp;ldquo;shall we create projects on the fly&amp;rdquo; can be deactivated like today&lt;/p&gt;
&lt;h4 id=&#34;lsp-support-per-default&#34;&gt;LSP Support per default&lt;/h4&gt;
&lt;p&gt;We shall get the LSP support in a shape that it can be shipped enabled per default.&lt;/p&gt;
&lt;p&gt;Users expect that modern editors provide advanced language integration off the shelf, like Atom, Visual Studio Code, &amp;hellip;&lt;/p&gt;
&lt;h4 id=&#34;great-code-navigation&#34;&gt;Great code navigation&lt;/h4&gt;
&lt;p&gt;We shall provide the user with better code navigation.&lt;/p&gt;
&lt;p&gt;We will provide the plugins with an interface to register location jumps.&lt;/p&gt;
&lt;p&gt;This will enable the user to seamlessly jump back and forth for any kind of location change e.g. due declaration lookup or search in files match lookup, &amp;hellip;&lt;/p&gt;
&lt;h4 id=&#34;consolidate-the-plugins&#34;&gt;Consolidate the plugins&lt;/h4&gt;
&lt;p&gt;The new LSP plugin shall subsume stuff like the Rust or D specific code completion plugins.&lt;/p&gt;
&lt;p&gt;Think about the future of unmaintained plugins!&lt;/p&gt;
&lt;h4 id=&#34;external-tools-plugin&#34;&gt;External Tools Plugin&lt;/h4&gt;
&lt;p&gt;Revive the external tools in a improved way, e.g. like in Qt Creator.&lt;/p&gt;
&lt;h4 id=&#34;improve-port-to-ksyntaxhighlighting&#34;&gt;Improve Port to KSyntaxHighlighting&lt;/h4&gt;
&lt;p&gt;Porting the highlighting over to KSyntaxHighlighting was a big success.&lt;/p&gt;
&lt;p&gt;Kate and Qt Creator now finally share the same highlighting engine and we got a lot of new contributions to our highlightings.
(we support now over 300 different languages, something to be proud of)&lt;/p&gt;
&lt;p&gt;Still, e.g. the theme support is still not moved over to what the new framework provides.&lt;/p&gt;
&lt;h4 id=&#34;further-brainstorming&#34;&gt;Further Brainstorming&lt;/h4&gt;
&lt;h5 id=&#34;git-integration&#34;&gt;Git Integration&lt;/h5&gt;
&lt;p&gt;We shall take a look what other editors provide.&lt;/p&gt;
&lt;h5 id=&#34;diff-patch-viewer&#34;&gt;Diff/Patch Viewer&lt;/h5&gt;
&lt;p&gt;Want we to integrate with stuff like KDiff3/Kompare/&amp;hellip; to have a better handling of e.g. git diff, patches, &amp;hellip;?&lt;/p&gt;
&lt;h5 id=&#34;improve-view-management&#34;&gt;Improve View Management&lt;/h5&gt;
&lt;p&gt;Try to improve the way we handle splitting the views and the tabbing.&lt;/p&gt;
&lt;p&gt;Take a look how other editors do that!&lt;/p&gt;
&lt;h3 id=&#34;kdevelop-vs-kate&#34;&gt;KDevelop vs. Kate?&lt;/h3&gt;
&lt;p&gt;Given already today we enter the area of KDevelop by providing the LSP client, we need to think about what happens in the future with overlapping features.&lt;/p&gt;
&lt;p&gt;It is no goal to evolve Kate into an IDE.&lt;/p&gt;
&lt;p&gt;We think Kate shall be a competitor for editors like Atom, not for full-fledged IDEs like KDevelop or Visual Studio.&lt;/p&gt;
&lt;p&gt;Still, e.g. in the area of project management/code navigation/version control support there will be some overlap.&lt;/p&gt;
&lt;p&gt;The question is: can we share stuff there? What shall be the focus of Kate and KDevelop in e.g. language support?&lt;/p&gt;
&lt;p&gt;I think here it will be interesting which future direction the KDevelop project will take.&lt;/p&gt;
&lt;h3 id=&#34;discussion&#34;&gt;Discussion&lt;/h3&gt;
&lt;p&gt;If you want to chime in on this, feel free to join the discussion at the &lt;a href=&#34;https://www.reddit.com/r/kde/comments/d1sr47/kate_planning_what_is_up_for_kates_future/&#34;&gt;KDE reddit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you want to contribute, just join us at &lt;a href=&#34;https://invent.kde.org/kde/kate&#34;&gt;invent.kde.org&lt;/a&gt; or on &lt;a href=&#34;mailto:kwrite-devel@kde.org&#34;&gt;kwrite-devel@kde.org&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>KSyntaxHighlighting - Over 300 Highlightings...</title><link>https://kate-editor.org/post/2019/2019-08-25-ksyntaxhighlighting-over-300-highlightings/</link><pubDate>Sun, 25 Aug 2019 14:06:00 +0200</pubDate><guid>https://kate-editor.org/post/2019/2019-08-25-ksyntaxhighlighting-over-300-highlightings/</guid><description>&lt;p&gt;I worked yesterday again on the &lt;a href=&#34;https://invent.kde.org/websites/kate-editor-org/blob/master/update-syntax.pl&#34;&gt;Perl script&lt;/a&gt; that creates the highlighting update site used by e.g. Qt Creator.&lt;/p&gt;
&lt;p&gt;I thought it would be perhaps a good idea to create some simple human readable overview with all existing highlighting definitions, too.&lt;/p&gt;
&lt;p&gt;The result is this auto-generated &lt;a href=&#34;https://kate-editor.org/syntax/&#34;&gt;Syntax Highlightings&lt;/a&gt; page.&lt;/p&gt;
&lt;p&gt;Astonishing enough, at the moment the script counts 307 highlighting definitions.
I wasn&amp;rsquo;t aware that we already crossed the 300 line.&lt;/p&gt;
&lt;p&gt;Still, it seems people miss some highlighting definitions, take a look at the &lt;a href=&#34;https://bugs.kde.org/buglist.cgi?bug_status=__open__&amp;amp;component=syntax&amp;amp;list_id=1657555&amp;amp;product=frameworks-syntax-highlighting&#34;&gt;bug list of KSyntaxHighlighting&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The bugs with requests for new definition requests got marked with &lt;strong&gt;[New Syntax]&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I am actually not sure if we should at all keep bugs for such requests, if no patch is provided there to add such an highlighting.
Obviously, we want to have proper highlighting for all stuff people use.&lt;/p&gt;
&lt;p&gt;But, as we have these bugs at the moment, if you feel you have the time to help us, take a look.
Some Perl 6 highlighting is appreciated, or any of the others there ;=)
Or perhaps you have a own itch to scratch and provide something completely different!&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.kde.org/stable5/en/applications/katepart/highlight.html&#34;&gt;Our documentation&lt;/a&gt; provides hints how to write a highlighting definition.
Or just take a look at the existing XML files in our &lt;a href=&#34;https://cgit.kde.org/syntax-highlighting.git/&#34;&gt;KSyntaxHighlighting repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Patches are welcome on the &lt;a href=&#34;https://phabricator.kde.org/&#34;&gt;KDE Phabricator&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Otherwise, if you provide a new definition XML + one test case, you can attach them to the bug, too (or send them to kwrite-devel@kde.org).&lt;/p&gt;
&lt;p&gt;With test case an example file in the new language is wanted, with some liberal license.
This will be used to store reference results of the highlighting to avoid later regressions and to judge the quality of the highlighting and later improvements.&lt;/p&gt;
&lt;p&gt;We would prefer MIT licensed new files, if they are not derived from older files that enforce a different license, thanks!
(in that case, it would be good to mention in some XML comment which file was used as base)&lt;/p&gt;</description></item><item><title>Kate - Document Preview Plugin - Maintainer Wanted!</title><link>https://kate-editor.org/post/2019/2019-08-24-kate-document-preview-plugin-maintainer-wanted/</link><pubDate>Sat, 24 Aug 2019 18:46:00 +0200</pubDate><guid>https://kate-editor.org/post/2019/2019-08-24-kate-document-preview-plugin-maintainer-wanted/</guid><description>&lt;p&gt;At the moment the &lt;a href=&#34;https://docs.kde.org/trunk5/en/applications/kate/kate-application-plugin-preview.html&#34;&gt;&lt;em&gt;Document Preview&lt;/em&gt; plugin&lt;/a&gt; that e.g. allows to preview Markdown
or other documents layout-ed via embedding a matching KPart is no longer maintained.&lt;/p&gt;
&lt;p&gt;You can find more information about why the plugin got abandoned in this &lt;a href=&#34;https://phabricator.kde.org/D16668&#34;&gt;phabricator ticket&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you want to step up and keep that plugin alive and kicking, now is your chance!&lt;/p&gt;
&lt;p&gt;Even if you don&amp;rsquo;t want to maintain it, you can help out with taking care of existing
bugs for this plugin.&lt;/p&gt;
&lt;p&gt;Just head over to the &lt;a href=&#34;https://bugs.kde.org/buglist.cgi?bug_status=__open__&amp;amp;component=plugin-preview&amp;amp;list_id=1657308&amp;amp;product=kate&#34;&gt;KDE Bugzilla bugs&lt;/a&gt; for this plugin.&lt;/p&gt;
&lt;p&gt;Any help with this is welcome!&lt;/p&gt;</description></item><item><title>Kate - More languages supported via LSP!</title><link>https://kate-editor.org/post/2019/2019-08-10-kate-lsp-more-languages-supported/</link><pubDate>Sat, 10 Aug 2019 18:41:00 +0200</pubDate><guid>https://kate-editor.org/post/2019/2019-08-10-kate-lsp-more-languages-supported/</guid><description>
&lt;p&gt;The default configuration for the Kate LSP client does now support more stuff than just C/C++ and Python out of the box.&lt;/p&gt;
&lt;p&gt;In addition to the recently added Rust support we now support Go and LaTeX/BibTeX, too.&lt;/p&gt;
&lt;h3 id=&#34;configuration&#34;&gt;Configuration&lt;/h3&gt;
&lt;p&gt;The default supported server are configured via some JSON settings file we embed in our plugin resources.&lt;/p&gt;
&lt;p&gt;Currently this looks like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;servers&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;bibtex&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;use&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;latex&amp;#34;&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;c&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;clangd&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;-log=error&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;--background-index&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;commandDebug&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;clangd&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;-log=verbose&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;--background-index&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://clang.llvm.org/extra/clangd/&amp;#34;&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;cpp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;use&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;c&amp;#34;&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;latex&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;texlab&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://texlab.netlify.com/&amp;#34;&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;go&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;go-langserver&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;commandDebug&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;go-langserver&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;-trace&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://github.com/sourcegraph/go-langserver&amp;#34;&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;python&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;python3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;-m&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;pyls&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;--check-parent-process&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://github.com/palantir/python-language-server&amp;#34;&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;rust&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;rls&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;rootIndicationFileNames&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Cargo.lock&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Cargo.toml&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;span class=&#34;nt&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://github.com/rust-lang/rls&amp;#34;&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The file is located at &lt;a href=&#34;https://invent.kde.org/kde/kate/blob/master/addons/lspclient/settings.json&#34;&gt;kate.git/addons/lspclient/settings.json&lt;/a&gt;. &lt;a href=&#34;https://invent.kde.org/kde/kate/merge_requests&#34;&gt;Merge requests&lt;/a&gt; to add additional languages are welcome.&lt;/p&gt;
&lt;p&gt;I assume we need still to improve what we allow to specify in the configuration.&lt;/p&gt;
&lt;h3 id=&#34;currently-supported-configuration-keys&#34;&gt;Currently supported configuration keys&lt;/h3&gt;
&lt;p&gt;At the moment, the following keys inside the per-language object are supported:&lt;/p&gt;
&lt;h4 id=&#34;use&#34;&gt;use&lt;/h4&gt;
&lt;p&gt;Tell the LSP client to use the LSP server for the given language for this one, too.
Useful to dispatch stuff to a server supporting multiple languages, like clangd for C and C++.&lt;/p&gt;
&lt;h4 id=&#34;command&#34;&gt;command&lt;/h4&gt;
&lt;p&gt;Command line to start the LSP server.&lt;/p&gt;
&lt;h4 id=&#34;commanddebug&#34;&gt;commandDebug&lt;/h4&gt;
&lt;p&gt;Command line to start the LSP server in debug mode.
This is used by Kate if the LSPCLIENT_DEBUG environment var is set to 1.
If this variable is set, the LSP client itself will output debug information on stdout/stderr and the commandDebug command line should try to trigger the same for the LSP server, like e.g. using -log=verbose for clangd.&lt;/p&gt;
&lt;h4 id=&#34;rootindicationfilenames&#34;&gt;rootIndicationFileNames&lt;/h4&gt;
&lt;p&gt;For the Rust rls LSP server we added the possibility to specify a list of file names that will indicate which folder is the root for the language server. Our client will search upwards for the given file names based on the file path of the document you edit. For Rust that means we first try to locate some &lt;em&gt;Cargo.lock&lt;/em&gt;, if that failed, we do the same for &lt;em&gt;Cargo.toml&lt;/em&gt;.&lt;/p&gt;
&lt;h4 id=&#34;url&#34;&gt;url&lt;/h4&gt;
&lt;p&gt;URL of the home page of the LSP server implementation.
At the moment not used internally, later should be shown in the UI to give people hints where to find further documentation for the matching LSP server (and how to install it).&lt;/p&gt;
&lt;h3 id=&#34;current-state&#34;&gt;Current State&lt;/h3&gt;
&lt;p&gt;For C/C++ with &lt;a href=&#34;https://clang.llvm.org/extra/clangd/&#34;&gt;clangd&lt;/a&gt; the experience is already good enough for day-to-day working.
What is possible can be seen &lt;a href=&#34;https://kate-editor.org/posts/kate-lsp-status-july-22/&#34;&gt;in one of my previous posts, video included&lt;/a&gt;.
I and some colleagues use the master version of Kate at work for daily coding.
Sometimes Kate confuses clangd during saving of files but otherwise, no larger hiccups occur.&lt;/p&gt;
&lt;p&gt;For Rust with &lt;a href=&#34;https://github.com/rust-lang/rls&#34;&gt;rls&lt;/a&gt; many things work, too.
We now discover the root directory for it more easily thanks to hints to look for the Cargo files.
We adapted the client to support the &lt;em&gt;Hover&lt;/em&gt; message type rls emits, too.&lt;/p&gt;
&lt;p&gt;For the other languages: Beside some initial experiments that the servers start and you get some completion/&amp;hellip;,
not much work went into that. Help is welcome to improve their configuration and our client code to get a better experience.&lt;/p&gt;
&lt;p&gt;Just give Kate from the master branch a test drive, here is our &lt;a href=&#34;https://kate-editor.org/build-it/&#34;&gt;build it how-to&lt;/a&gt;.
We are open for feedback on &lt;a href=&#34;mailto:kwrite-devel@kde.org&#34;&gt;kwrite-devel@kde.org&lt;/a&gt; or directly via patches on &lt;a href=&#34;https://invent.kde.org/kde/kate/merge_requests&#34;&gt;invent.kde.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Btw., if you think our how-to or other stuff on this website is lacking, &lt;a href=&#34;https://invent.kde.org/websites/kate-editor-org&#34;&gt;patches&lt;/a&gt; are welcome for that, too!
The complete page is available via our GitHub instance, to try changes locally, see our &lt;a href=&#34;https://invent.kde.org/websites/kate-editor-org/blob/master/README.md&#34;&gt;README.md&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Kate - Initial Rust LSP support landed!</title><link>https://kate-editor.org/post/2019-08-07-kate-initial-rust-lsp-support/</link><pubDate>Wed, 07 Aug 2019 21:02:00 +0200</pubDate><guid>https://kate-editor.org/post/2019-08-07-kate-initial-rust-lsp-support/</guid><description>&lt;p&gt;Initial support for the &lt;a href=&#34;https://github.com/rust-lang/rls&#34;&gt;rls&lt;/a&gt; Rust LSP server has landed in kate.git master.
The matching rls issue about this can be found &lt;a href=&#34;https://github.com/rust-lang/rls/issues/1521&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Given I am no Rust expert, I can only verify that at least some operations seem to work for me if the Rust toolchain is setup correctly ;=)&lt;/p&gt;
&lt;p&gt;The current experience isn&amp;rsquo;t that nice as with clangd, for example I get no symbols outline here.
What is possible with clangd can be seen &lt;a href=&#34;https://kate-editor.org/posts/kate-lsp-status-july-22/&#34;&gt;in one of my previous posts, video included&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Any help to improve this is welcome. The patch that landed can be viewed &lt;a href=&#34;https://cgit.kde.org/kate.git/commit/?id=9838d5decb94034535e2433213bcdd902650e9ba&#34;&gt;here&lt;/a&gt;, lend a hand if you know how to fix up stuff!&lt;/p&gt;</description></item><item><title>kate-editor.org Update</title><link>https://kate-editor.org/post/2019-08-03-kate-editor-org-update/</link><pubDate>Sat, 03 Aug 2019 20:48:00 +0200</pubDate><guid>https://kate-editor.org/post/2019-08-03-kate-editor-org-update/</guid><description>&lt;p&gt;Like my personal homepage &lt;a href=&#34;https://cullmann.io&#34;&gt;cullmann.io&lt;/a&gt;, I ported the &lt;a href=&#34;https://kate-editor.org&#34;&gt;kate-editor.org&lt;/a&gt; website to the &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo framework&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The new website uses zero cookies (yes, no stupid cookie question) and no kind of analytic software.
It should be self-contained, too.
No external resources that will leak your data to e.g. Google are requested.&lt;/p&gt;
&lt;p&gt;But more important: unlike before, the website content will be fully hosted in a git repository on KDE infrastructure.&lt;/p&gt;
&lt;p&gt;The current intermediate location is on &lt;a href=&#34;https://invent.kde.org/websites/kate-editor-org&#34;&gt;invent.kde.org/websites/kate-editor-org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Before, the KDE sysadmin team just got access to a backup of the WordPress instance.&lt;/p&gt;
&lt;p&gt;The new website contains an import of all old pages &amp;amp; posts.
I hopefully preserved the old URLs, but there might be some minor glitches for some older posts that still need fixing.&lt;/p&gt;
&lt;p&gt;Some pages still have broken markup, that needs some fixes, too.&lt;/p&gt;
&lt;p&gt;But all-in-all the import of the WordPress content did work really well.&lt;/p&gt;
&lt;p&gt;Some nice step-by-step description how to do such a port can be found in the &lt;a href=&#34;https://cpbotha.net/2019/03/31/wordpress-to-hugo/&#34;&gt;&amp;ldquo;Moving 18 years of this personal blog from Wordpress to Hugo&amp;rdquo;&lt;/a&gt; post.&lt;/p&gt;
&lt;p&gt;If you want to contribute, feel free to send me some patch or merge request ;=)&lt;/p&gt;
&lt;p&gt;As a simple template for a new post, take a look at the sources of this one:&lt;/p&gt;
&lt;pre&gt;
---
title: kate-editor.org Update
author: Christoph Cullmann
date: 2019-08-03T20:48:00+02:00
---
Like my personal homepage [cullmann.io](https://cullmann.io), I ported the [kate-editor.org](https://kate-editor.org) website to the [Hugo framework](https://gohugo.io/).
...
&lt;/pre&gt;
&lt;p&gt;The date is important, no stuff in the future is visible on the real web server.
You can hide stuff from publishing by adding
&lt;pre&gt;
draft: true
&lt;/pre&gt;
to the header information. The &lt;em&gt;server.sh&lt;/em&gt; script will still show such things on your local machine.&lt;/p&gt;</description></item><item><title>Kate LSP Status – July 22</title><link>https://kate-editor.org/posts/kate-lsp-status-july-22/</link><pubDate>Mon, 22 Jul 2019 20:16:00 +0000</pubDate><guid>https://kate-editor.org/posts/kate-lsp-status-july-22/</guid><description>&lt;p&gt;After my series of LSP client posts, I got the question: What does this actually do? And why should I like this or help with it?&lt;/p&gt;
&lt;p&gt;For the basic question: What the heck is the &lt;a href=&#34;https://microsoft.github.io/language-server-protocol/overview&#34;&gt;Language Server Protocol (LSP)&lt;/a&gt;, I think my &lt;a href=&#34;https://cullmann.io/posts/kate-language-server-protocol-client/&#34;&gt;first post&lt;/a&gt; can help. Or, for more details, just head over to the &lt;a href=&#34;https://langserver.org/&#34;&gt;official what/why/&amp;hellip; page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But easier than to describe why it is nice, I can just show the stuff in action. Below is a video that shows the features that at the moment work with our master branch. It is shown using the build directory of Kate itself.&lt;/p&gt;
&lt;p&gt;To get a usable build directory, I build my stuff locally with &lt;a href=&#34;https://kdesrc-build.kde.org/&#34;&gt;kdesrc-build&lt;/a&gt;, the only extra config I have in the global section of my &lt;strong&gt;.kdesrc-buildrc&lt;/strong&gt; is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;cmake-options -DCMAKE_BUILD_TYPE=RelWithDebInfo -G &amp;ldquo;Kate - Unix Makefiles&amp;rdquo; -DCMAKE_EXPORT_COMPILE_COMMANDS=ON&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This will auto generate the needed &lt;strong&gt;.kateproject&lt;/strong&gt; files for the Kate project plugin and the &lt;strong&gt;compile_commands.json&lt;/strong&gt; for &lt;strong&gt;clangd&lt;/strong&gt; (the LSP server for C/C++ the plugin uses).&lt;/p&gt;
&lt;p&gt;If you manually build your stuff with &lt;strong&gt;cmake&lt;/strong&gt;, you can just add the&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;-G &amp;ldquo;Kate - Unix Makefiles&amp;rdquo; -DCMAKE_EXPORT_COMPILE_COMMANDS=ON&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;parts to your &lt;strong&gt;cmake&lt;/strong&gt; call. If you use &lt;strong&gt;ninja&lt;/strong&gt; and not &lt;strong&gt;make&lt;/strong&gt;, just use&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;-G &amp;ldquo;Kate - Ninja&amp;rdquo; -DCMAKE_EXPORT_COMPILE_COMMANDS=ON&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Then, let&amp;rsquo;s see what you can do, once you are in a prepared build directory and have a &lt;strong&gt;master&lt;/strong&gt; version of &lt;strong&gt;Kate&lt;/strong&gt; in your &lt;strong&gt;PATH&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;center&gt;
&lt;a href=&#34;https://youtu.be/w0grp9npnNA&#34; &gt;&lt;img width=500 src=&#34;https://cullmann.io/posts/kate-lsp-status-july-22/images/kate-lsp-video.jpg&#34;&gt;&lt;/a&gt;
&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;I hope the quality is acceptable, that is my first try in a long time to do some screen-cast ;)&lt;/p&gt;
&lt;p&gt;As you can see, this is already in an usable state at least for C/C++ in combination with &lt;strong&gt;clangd&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;For details how to build Kate master with it&amp;rsquo;s plugins, please take a look at &lt;a href=&#34;https://kate-editor.org/build-it/&#34;&gt;this guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you want to start to hack on the plugin, you find it in the kate.git, &lt;a href=&#34;https://cgit.kde.org/kate.git/tree/addons/lspclient&#34;&gt;addons/lspclient&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Feel welcome to show up on &lt;a href=&#34;mailto:kwrite-devel@kde.org&#34;&gt;kwrite-devel@kde.org&lt;/a&gt; and help out! All development discussions regarding this plugin happen there.&lt;/p&gt;
&lt;p&gt;If you are already familiar with Phabricator, post some patch directly at &lt;a href=&#34;https://phabricator.kde.org/differential/&#34;&gt;KDE&amp;rsquo;s Phabricator instance&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Kate LSP Status – July 21</title><link>https://kate-editor.org/posts/kate-lsp-status-july-21/</link><pubDate>Sun, 21 Jul 2019 13:18:00 +0000</pubDate><guid>https://kate-editor.org/posts/kate-lsp-status-july-21/</guid><description>&lt;p&gt;The new LSP client by Mark Nauwelaerts keeps making nice progress.&lt;/p&gt;
&lt;p&gt;It will not be shipped with the KDE Applications 19.08 release, but in master it is now compiled &amp;amp; installed per default. You only need to activate it on the plugin configuration page in Kate&amp;rsquo;s settings dialog to be able to use it.&lt;/p&gt;
&lt;p&gt;For details how to build Kate master with it&amp;rsquo;s plugins, please take a look at &lt;a href=&#34;https://kate-editor.org/build-it/&#34;&gt;this guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you want to start to hack on the plugin, you find it in the kate.git, &lt;a href=&#34;https://cgit.kde.org/kate.git/tree/addons/lspclient&#34;&gt;addons/lspclient&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Feel welcome to show up on &lt;a href=&#34;mailto:kwrite-devel@kde.org&#34;&gt;kwrite-devel@kde.org&lt;/a&gt; and help out! All development discussions regarding this plugin happen there.&lt;/p&gt;
&lt;p&gt;If you are already familiar with Phabricator, post some patch directly at &lt;a href=&#34;https://phabricator.kde.org/differential/&#34;&gt;KDE&amp;rsquo;s Phabricator instance&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What is new this week?&lt;/p&gt;
&lt;p&gt;The most thing are internal cleanups and minor improvements.&lt;/p&gt;
&lt;p&gt;Feature wise, the hover implementation works now more like in other editors or IDEs, you get some nice tool tip after some delay:&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://cullmann.io/posts/kate-lsp-status-july-21/images/kate-hover.png&#34; &gt;&lt;img width=500 src=&#34;https://cullmann.io/posts/kate-lsp-status-july-21/images/kate-hover.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Never try to guess again what some &lt;em&gt;auto&lt;/em&gt; means ;=)&lt;/p&gt;
&lt;p&gt;There is still a lot that can be improved, e.g. a filter for the symbols outline is in work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://phabricator.kde.org/D22592&#34;&gt;D22592 - port symbols view to model/view concept&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To be able to later out-source some parts of the generic LSP client code to a library, if there is demand, we will aim to make the plugin be licensed under the MIT license. This should make it easier for other projects to depend of our code, if wanted.&lt;/p&gt;</description></item><item><title>Kate LSP Client Continued</title><link>https://kate-editor.org/posts/kate-lsp-client-continued/</link><pubDate>Sun, 14 Jul 2019 13:33:00 +0000</pubDate><guid>https://kate-editor.org/posts/kate-lsp-client-continued/</guid><description>&lt;p&gt;The new LSP client by Mark Nauwelaerts made nice progress since the &lt;a href=&#34;https://cullmann.io/posts/kate-lsp-client-restart/&#34;&gt;LSP client restart&lt;/a&gt; post last week.&lt;/p&gt;
&lt;p&gt;Reminder: The plugin is not compiled per default, you can turn it on via:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;cmake -DCMAKE_INSTALL_PREFIX=&amp;ldquo;your prefix&amp;rdquo; -DENABLE_LSPCLIENT=ON &amp;ldquo;kate src dir&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The code can still be found kate.git master, see &lt;a href=&#34;https://cgit.kde.org/kate.git/tree/addons/lspclient&#34;&gt;lspclient&lt;/a&gt; in the addons directory.&lt;/p&gt;
&lt;p&gt;What is new?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Diagnostics support: A tab in the LSP client toolview will show the diagnistics, grouped by file with links to jump to the locations. Issues will be highlighted in the editor view, too.&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://cullmann.io/posts/kate-lsp-client-continued/images/kate-diagnostics.png&#34; &gt;&lt;img width=500 src=&#34;https://cullmann.io/posts/kate-lsp-client-continued/images/kate-diagnostics.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Find references: Find all references for some variable/function in your complete program. They are listed like the diagnostics grouped per file in an extra tab.&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://cullmann.io/posts/kate-lsp-client-continued/images/kate-find-references.png&#34; &gt;&lt;img width=500 src=&#34;https://cullmann.io/posts/kate-lsp-client-continued/images/kate-find-references.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improved document highlight: Highlight all occurrences of a variable/&amp;hellip; inside the current document. Beside highlighting the reads/writes/uses, you get a jump list like for the other stuff as tab, too.&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://cullmann.io/posts/kate-lsp-client-continued/images/kate-document-highlight.png&#34; &gt;&lt;img width=500 src=&#34;https://cullmann.io/posts/kate-lsp-client-continued/images/kate-document-highlight.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A feature I missed to show last time:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hover support: Show more meta info about a code location, like the proper type, useful e.g. for &lt;a href=&#34;https://herbsutter.com/2013/08/12/gotw-94-solution-aaa-style-almost-always-auto/&#34;&gt;almost-always-auto&lt;/a&gt; C++ programming. &lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://cullmann.io/posts/kate-lsp-client-continued/images/kate-hover.png&#34; &gt;&lt;img width=500 src=&#34;https://cullmann.io/posts/kate-lsp-client-continued/images/kate-hover.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We even got already two patches for the fresh plugin:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://phabricator.kde.org/D22348&#34;&gt;D22348 - Use the label when insertText or sortText is missing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://phabricator.kde.org/D22349&#34;&gt;D22349 - Don&amp;rsquo;t send the Content-Type header&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both are aimed to improve the support of the Rust LSP server. As you can see, they got already reviewed and merged.&lt;/p&gt;
&lt;p&gt;Feel welcome to show up on &lt;a href=&#34;mailto:kwrite-devel@kde.org&#34;&gt;kwrite-devel@kde.org&lt;/a&gt; and help out! All development discussions regarding this plugin happen there.&lt;/p&gt;
&lt;p&gt;If you are already familiar with Phabricator, post some patch directly at &lt;a href=&#34;https://phabricator.kde.org/differential/&#34;&gt;KDE&amp;rsquo;s Phabricator instance&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You want more LSP servers supported? You want to have feature X? You have seen some bug and want it to vanish? =&amp;gt; Join!&lt;/p&gt;</description></item><item><title>Kate LSP Client Restart</title><link>https://kate-editor.org/posts/kate-lsp-client-restart/</link><pubDate>Sun, 07 Jul 2019 13:10:00 +0000</pubDate><guid>https://kate-editor.org/posts/kate-lsp-client-restart/</guid><description>&lt;p&gt;Since my last post about the &lt;a href=&#34;https://cullmann.io/posts/kate-lsp-client-progress/&#34;&gt;LSP client progress&lt;/a&gt; in May I didn&amp;rsquo;t work on that project at all I think.&lt;/p&gt;
&lt;p&gt;But the good news is, somebody else did scratch that itch on his own ;=)&lt;/p&gt;
&lt;p&gt;We have now a prototype plugin in kate.git master, see &lt;a href=&#34;https://cgit.kde.org/kate.git/tree/addons/lspclient&#34;&gt;lspclient&lt;/a&gt; in the addons directory.&lt;/p&gt;
&lt;p&gt;It is not compiled per default, you can turn it on via:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;cmake -DCMAKE_INSTALL_PREFIX=&amp;ldquo;your prefix&amp;rdquo; -DENABLE_LSPCLIENT=ON &amp;ldquo;kate src dir&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It shares no code with my initial prototype. The author started this without knowing of my work. This might actually be not that bad, as this plugin is composed of a much smaller code base. This allows to get familiar with the code easier as with the code I copied over from Qt Creator for my initial try.&lt;/p&gt;
&lt;p&gt;But, even nicer, it does actually work a lot better than my variant, already now!&lt;/p&gt;
&lt;p&gt;What does work (tested with clangd and kate.git/work projects) at the moment:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Auto completion: you get the proper LSP server provided completion items &lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://cullmann.io/posts/kate-lsp-client-restart/images/kate-auto-completion.png&#34; &gt;&lt;img width=500 src=&#34;https://cullmann.io/posts/kate-lsp-client-restart/images/kate-auto-completion.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Outline view: Get an extra tool view with the symbols of your current view &lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://cullmann.io/posts/kate-lsp-client-restart/images/kate-outline-view.png&#34; &gt;&lt;img width=500 src=&#34;https://cullmann.io/posts/kate-lsp-client-restart/images/kate-outline-view.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Document highlight: highlight all occurrences of a variable/&amp;hellip; inside the current view &lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://cullmann.io/posts/kate-lsp-client-restart/images/kate-document-highlight.png&#34; &gt;&lt;img width=500 src=&#34;https://cullmann.io/posts/kate-lsp-client-restart/images/kate-document-highlight.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Code navigation: jump to the definition/declaration&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is still a lot of stuff missing and this is all prototype quality. For example the document highlight implementation I added has no way to clear the highlighting at the moment beside document reload.&lt;/p&gt;
&lt;p&gt;But given I just needed one hour to add the document highlight support, I would say the code base is easy to adjust.&lt;/p&gt;
&lt;p&gt;=&amp;gt; If you have time and want a good LSP client, now you can join the fun and have direct results.&lt;/p&gt;
&lt;p&gt;As the author was kind enough to move his work on the plugin to the KDE infrastructure, feel welcome to show up on &lt;a href=&#34;mailto:kwrite-devel@kde.org&#34;&gt;kwrite-devel@kde.org&lt;/a&gt; and help out! All development discussions regarding this plugin happen there. We are happy to accept patches, too, if you are a new contributor!&lt;/p&gt;</description></item><item><title>Kate &amp; C&#43;&#43; Developer Survey</title><link>https://kate-editor.org/posts/kate-cpp-developer-survey/</link><pubDate>Mon, 10 Jun 2019 20:45:00 +0000</pubDate><guid>https://kate-editor.org/posts/kate-cpp-developer-survey/</guid><description>&lt;p&gt;While browsing the &lt;a href=&#34;https://isocpp.org/&#34;&gt;ISO C++ homepage&lt;/a&gt; I stumbled over the &lt;a href=&#34;https://isocpp.org/files/papers/CppDevSurvey-2019-04-summary.pdf&#34;&gt;results PDF&lt;/a&gt; of the &lt;a href=&#34;https://isocpp.org/blog/2019/05/results-summary-2019-global-developer-survey-lite&#34;&gt;Second Annual C++ Foundation Developer Survey “Lite”&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I was astonished that Kate made it into the &amp;ldquo;Which development environments (IDEs) or editors do you use for C++ development?&amp;rdquo; results.&lt;/p&gt;
&lt;p&gt;;=) Seems not only I use it as my normal editor for working on C++ code.&lt;/p&gt;
&lt;p&gt;And heads up, KDevelop is there, too!&lt;/p&gt;
&lt;p&gt;This is actually the second survey, I missed to notice the first one last year. The &lt;a href=&#34;https://isocpp.org/files/papers/CppDevSurvey-2018-02-summary.pdf&#34;&gt;results PDF&lt;/a&gt; from &lt;a href=&#34;https://isocpp.org/blog/2018/03/results-summary-cpp-foundation-developer-survey-lite-2018-02&#34;&gt;last year&lt;/a&gt; shows Kate did show up already there.&lt;/p&gt;
&lt;p&gt;We shouldn&amp;rsquo;t be that proud of only having less than three percent usage, but still, we are there at all. I hope we can rise here a bit in the future.&lt;/p&gt;
&lt;p&gt;At least we work on supporting modern C++ standards in the highlighting, e.g. see the recent C++20 improvements (&lt;a href=&#34;https://phabricator.kde.org/D21585&#34;&gt;Phabricator&lt;/a&gt; + &lt;a href=&#34;https://cgit.kde.org/syntax-highlighting.git/commit/?id=9ba02971123d255c10fca97223538c439e252e3d&#34;&gt;Commit&lt;/a&gt;). Thanks to Jonathan Poelen for the patch!&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://cullmann.io/posts/kate-lsp-client-progress/&#34;&gt;Language Server Protocol (LSP)&lt;/a&gt; would help, too, but my initial work is far from usable, help appreciated. Beside a hacked &amp;ldquo;goto definition&amp;rdquo; nothing works at the moment (and it is hardcoded to just start clangd, no other LSP server).&lt;/p&gt;</description></item><item><title>KTextEditor/Kate Bugs – Scratch Your Own Itch</title><link>https://kate-editor.org/posts/ktexteditor-kate-bugs-scratch-your-own-itch/</link><pubDate>Sun, 26 May 2019 12:25:00 +0000</pubDate><guid>https://kate-editor.org/posts/ktexteditor-kate-bugs-scratch-your-own-itch/</guid><description>&lt;p&gt;Two days ago I mentioned &lt;a href=&#34;https://cullmann.io/posts/ktexteditor-kate-bugs-help-appreciated/&#34;&gt;here&lt;/a&gt; that the bug report count of KTextEditor and Kate has risen to some not that manageable amount.&lt;/p&gt;
&lt;p&gt;For developers that report a bugs or wish, the best way to really get it solved is to scratch your own itch and provide some patch.&lt;/p&gt;
&lt;p&gt;I know this is not feasible for all bug reporters, as not all are developers nor will even the developers all have either time nor perhaps the right skill set to tackle the issue on their own.&lt;/p&gt;
&lt;p&gt;But if you have the time and you are at least a bit familiar with C++/Qt, you should give it a try.&lt;/p&gt;
&lt;p&gt;We can help you to get your patch done, that is much easier for e.g. myself than to motivate me to work on a bug or wish that doesn&amp;rsquo;t concern my normal workflow or lie within my skill set.&lt;/p&gt;
&lt;p&gt;For example we have a lot of issues with left-to-right text rendering or related to languages that use complex Unicode surrogates. Given I have zero knowledge of any language using this my motivation to dig into these issues is small (and I will more likely break more things than fix them).&lt;/p&gt;
&lt;p&gt;The same holds for issues in our Vi mode. I don&amp;rsquo;t use this mode myself nor do I really know how Vi commands shall behave in real life. Therefore any fix or enhancement there is beyond me.&lt;/p&gt;
&lt;p&gt;A good example for such a &amp;ldquo;Scratch Your Own Itch&amp;rdquo; approach is &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=407910&#34;&gt;bug 407910&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It is a small request, to have some action/shortcut to reset the font size to the default one. We have since years some zoom in/out actions/shortcuts but nothing to go back to the configured one.&lt;/p&gt;
&lt;p&gt;I rarely use the zoom stuff, perhaps once in a month, if I want to show something to a colleague on my screen or projector and it is really not readable with my normal font size. Therefore my motivation to invest any work into yet an other action I will not use regularly is small.&lt;/p&gt;
&lt;p&gt;But, in this case, the reporter had the time to invest a bit work into this.&lt;/p&gt;
&lt;p&gt;He provided a patch via our &lt;a href=&#34;https://phabricator.kde.org/D21412&#34;&gt;KDE Phabricator - D21412&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We needed some iterations to get the patch into a usable shape in the bug report and in Phabricator, but thanks to the persistence of the reporter, it got now &lt;a href=&#34;https://cgit.kde.org/ktexteditor.git/commit/?id=968af10fd4b64cccf6a858f105ac6cfad9fce78e&#34;&gt;pushed&lt;/a&gt; to our repository.&lt;/p&gt;
&lt;p&gt;If nobody would have stepped up to provide at least some initial patch for this, such a request for sure would have rotted again in our bug database.&lt;/p&gt;
&lt;p&gt;This is not the first time such a nice thing happened, this is just a recent example how such things can work out.&lt;/p&gt;
&lt;p&gt;Therefore, if you report something and are capable of given it a try on your own, please do so!&lt;/p&gt;
&lt;p&gt;Perhaps even some of the existing &lt;a href=&#34;https://bugs.kde.org/buglist.cgi?bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=CONFIRMED&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;columnlist=bug_severity%2Cpriority%2Cassigned_to%2Cbug_status%2Cresolution%2Ccomponent%2Cshort_desc%2Cchangeddate%2Cop_sys%2Crep_platform%2Creporter&amp;amp;known_name=Kate%2FKWrite%20Bugs&amp;amp;list_id=1625288&amp;amp;product=frameworks-ktexteditor&amp;amp;product=kate&amp;amp;query_based_on=Kate%2FKWrite%20Bugs&amp;amp;query_format=advanced&#34;&gt;bugs&lt;/a&gt; or &lt;a href=&#34;https://bugs.kde.org/buglist.cgi?bug_severity=wishlist&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=CONFIRMED&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate%2Creporter%2Creporter_realname&amp;amp;known_name=Kate%2FKWrite%20Wishs&amp;amp;list_id=1625290&amp;amp;product=frameworks-ktexteditor&amp;amp;product=kate&amp;amp;query_based_on=Kate%2FKWrite%20Wishs&amp;amp;query_format=advanced&#34;&gt;wishes&lt;/a&gt; are stuff you want to take care of yourself because they concern you!&lt;/p&gt;
&lt;p&gt;I think not a lot motivates your more to do something than an issue you have with a tool for your workflow. At least for me that was the reason to at all start the development of Kate (I missed a MDI variant of KWrite) and join the work on stuff like KTextEditor.&lt;/p&gt;</description></item><item><title>KTextEditor/Kate Bugs – Help Appreciated</title><link>https://kate-editor.org/posts/ktexteditor-kate-bugs-help-appreciated/</link><pubDate>Fri, 24 May 2019 14:20:00 +0000</pubDate><guid>https://kate-editor.org/posts/ktexteditor-kate-bugs-help-appreciated/</guid><description>&lt;p&gt;The bug report count of KTextEditor (implementing the editing part used in Kate/KWrite/KDevelop/Kile/&amp;hellip;) and Kate itself reached again some value over 200.&lt;/p&gt;
&lt;p&gt;If you have time and need an itch to scratch, any help to tackle the currently open bugs would be highly appreciated.&lt;/p&gt;
&lt;p&gt;The full list can be found with this &lt;a href=&#34;https://bugs.kde.org/buglist.cgi?bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=CONFIRMED&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;columnlist=bug_severity%2Cpriority%2Cassigned_to%2Cbug_status%2Cresolution%2Ccomponent%2Cshort_desc%2Cchangeddate%2Cop_sys%2Crep_platform%2Creporter&amp;amp;list_id=1624725&amp;amp;order=bug_id%20DESC&amp;amp;product=frameworks-ktexteditor&amp;amp;product=kate&amp;amp;query_based_on=Kate%2FKWrite%20Bugs&amp;amp;query_format=advanced&#34;&gt;bugs.kde.org query&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Easy things anybody with a bit time could do would be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;check if the bug still is there with current master builds, if not, close it it&lt;/li&gt;
&lt;li&gt;check if it is the duplicate of a similar still open bug, if yes, mark it as duplicate&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Beside that, patches for any of the existing issues are very welcome.&lt;/p&gt;
&lt;p&gt;I think the best guide how to setup some development environment is on our &lt;a href=&#34;https://community.kde.org/Guidelines_and_HOWTOs/Build_from_source&#34;&gt;KDE Community Wiki&lt;/a&gt;. I myself use a kdesrc-build environment like described there, too.&lt;/p&gt;
&lt;p&gt;Patches can be submitted for an review via our &lt;a href=&#34;https://phabricator.kde.org/differential/&#34;&gt;KDE Phabricator&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If it is just a small change and you don&amp;rsquo;t want to spend time on Phabricator, attaching a git diff versus current master to the bug is ok, too. Best mark the bug with a &lt;strong&gt;[PATCH]&lt;/strong&gt; prefix in the subject.&lt;/p&gt;
&lt;p&gt;The team working on the code is small, therefore please be a bit patient if you wait for reactions. I hope we have improved our reaction time in the last months but we still are lacking in that respect.&lt;/p&gt;</description></item><item><title>Kate LSP Client Progress</title><link>https://kate-editor.org/posts/kate-lsp-client-progress/</link><pubDate>Sun, 12 May 2019 21:54:00 +0000</pubDate><guid>https://kate-editor.org/posts/kate-lsp-client-progress/</guid><description>&lt;p&gt;The &lt;a href=&#34;https://cgit.kde.org/kate.git/log/?h=lsp&#34;&gt;Kate lsp branch&lt;/a&gt; contains now the infrastructure as used by Qt Creator. In addition, &lt;a href=&#34;https://clang.llvm.org/extra/clangd/&#34;&gt;clangd&lt;/a&gt; is now somehow started in a working state for the first project opened inside Kate.&lt;/p&gt;
&lt;p&gt;For example, if you use the CMake Kate project generator and you compile Kate from the &amp;ldquo;lsp&amp;rdquo; branch, clangd should pick up the compile_commands.json for a CMake generated Kate project.&lt;/p&gt;
&lt;p&gt;;=) Unfortunately not much more than starting and informing clangd about the open workspaces (for the first opened project) works ATM.&lt;/p&gt;
&lt;p&gt;If you press ALT-1 over some identifier, you will get some debug output on the console about found links, like below:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;qtc.languageclient.parse: content: &amp;ldquo;{&amp;amp;ldquo;id&amp;amp;rdquo;:&amp;amp;ldquo;{812e04c6-2bca-42e3-a632-d616fdc2f7d4}&amp;amp;ldquo;,&amp;amp;ldquo;jsonrpc&amp;amp;rdquo;:&amp;amp;ldquo;2.0&amp;amp;ldquo;,&amp;amp;ldquo;result&amp;amp;rdquo;:[{&amp;amp;ldquo;range&amp;amp;rdquo;:{&amp;amp;ldquo;end&amp;amp;rdquo;:{&amp;amp;ldquo;character&amp;amp;rdquo;:20,&amp;amp;ldquo;line&amp;amp;rdquo;:67},&amp;amp;ldquo;start&amp;amp;rdquo;:{&amp;amp;ldquo;character&amp;amp;rdquo;:6,&amp;amp;ldquo;line&amp;amp;rdquo;:67}},&amp;amp;ldquo;uri&amp;amp;rdquo;:&amp;amp;ldquo;file:///local/cullmann/kde/src/kate/kate/katemainwindow.h&amp;amp;ldquo;}]}&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The current ALT-1 handling is a big hack, as then one just adds the current document and triggers the GotoDefinitionRequest. A proper implementation tracks the opened/closed documented of the editor.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;But at least in principle Kate is now able to start some language server processes and talk a bit with them, all thanks to the nice code borrowed from Qt Creator.&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;:=) As my spare time is limited, any help in bringing the branch up-to-speed is highly welcome, just drop us a mail to &lt;a href=&#34;mailto:kwrite-devel@kde.org&#34;&gt;kwrite-devel@kde.org&lt;/a&gt; or mail me in private (&lt;a href=&#34;mailto:cullmann@kde.org&#34;&gt;cullmann@kde.org&lt;/a&gt;). A working LSP integration will help to make Kate more attractive for programmers of many languages.&lt;/p&gt;</description></item><item><title>Kate Language Server Protocol Client</title><link>https://kate-editor.org/posts/kate-language-server-protocol-client/</link><pubDate>Sun, 28 Apr 2019 18:36:00 +0000</pubDate><guid>https://kate-editor.org/posts/kate-language-server-protocol-client/</guid><description>&lt;p&gt;The &lt;a href=&#34;https://microsoft.github.io/language-server-protocol/overview&#34;&gt;Language Server Protocol (LSP)&lt;/a&gt; allows the integration of stuff like code completion, jump to definition, symbol search and more into an application without manual re-implementation for each language one wants to support. LSP doesn&amp;rsquo;t fully allow an integration like &lt;a href=&#34;https://www.kdevelop.org/&#34;&gt;KDevelop&lt;/a&gt; or Qt Creator do with the &lt;a href=&#34;https://clang.llvm.org/docs/Tooling.html&#34;&gt;libclang&lt;/a&gt; based tooling aimed for C/C++ but on the other side offers the possibility to interface with &lt;a href=&#34;https://langserver.org/#implementations-server&#34;&gt;plenty of languages&lt;/a&gt; without a large effort on the client side.&lt;/p&gt;
&lt;p&gt;If one takes a look at some current &lt;a href=&#34;https://langserver.org/#implementations-client&#34;&gt;LSP clients list&lt;/a&gt;, a lot of editors and IDEs have joined the LSP family in the last years.&lt;/p&gt;
&lt;p&gt;In the past I was always scared away to start implementing this in Kate, as no readily available library was around to do the low-level work for the client. Whereas you get some reference stuff for the JSON based protocol for JavaScript and such, for Qt nothing was around.&lt;/p&gt;
&lt;p&gt;Fortunately Qt Creator started to implement an LSP client beginning with &lt;a href=&#34;https://blog.qt.io/blog/2018/12/06/qt-creator-4-8-0-released/&#34;&gt;the 4.8 release&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Based on this code, I started now to get this into the Kate project plugin. At the moment not much more has happened then some initial import of the Qt Creator LSP infrastructure code into the &lt;a href=&#34;https://cgit.kde.org/kate.git/log/?h=lsp&#34;&gt;Kate lsp branch&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If I get this working (help is welcome!), any improvements will be submitted back to the Qt Creator implementation. If it really starts to work well in Kate, one might think about some better code sharing in the long term. But before such plans, first at least some basic things must work for some initial language server like &lt;a href=&#34;https://clang.llvm.org/extra/clangd/&#34;&gt;clangd&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Qt Creator 4.9 uses KSyntaxHighlighting</title><link>https://kate-editor.org/posts/qt-creator-4-9-uses-ksyntaxhighlighting/</link><pubDate>Tue, 16 Apr 2019 18:45:00 +0000</pubDate><guid>https://kate-editor.org/posts/qt-creator-4-9-uses-ksyntaxhighlighting/</guid><description>&lt;p&gt;As you can read in the &lt;a href=&#34;https://blog.qt.io/blog/2019/04/15/qt-creator-4-9-0-released/&#34;&gt;official Creator 4.9.0 release announcement&lt;/a&gt;, Qt Creator now uses the &lt;a href=&#34;https://api.kde.org/frameworks/syntax-highlighting/html/index.html&#34;&gt;KSyntaxHighlighting Framework&lt;/a&gt; for providing the &lt;a href=&#34;https://doc.qt.io/qtcreator/creator-highlighting.html#generic-highlighting&#34;&gt;generic highlighting&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is a nice step for the wider adoption of this &lt;a href=&#34;https://opensource.org/licenses/MIT&#34;&gt;MIT&lt;/a&gt; licensed part of the &lt;a href=&#34;https://api.kde.org/frameworks/index.html&#34;&gt;KDE Frameworks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And this is not just an one-way consumption of our work.&lt;/p&gt;
&lt;p&gt;The framework got actively patches back that make it more usable for other consumers, too, like &lt;a href=&#34;https://kate-editor.org/&#34;&gt;Kate&lt;/a&gt; ;=)&lt;/p&gt;
&lt;p&gt;If you want concrete examples, take a look at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;D18982: &lt;a href=&#34;https://phabricator.kde.org/D18982&#34;&gt;prevent assertion in regex load&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;D18996: &lt;a href=&#34;https://phabricator.kde.org/D18996&#34;&gt;Fix building with namespaced Qt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;D18997: &lt;a href=&#34;https://phabricator.kde.org/D18997&#34;&gt;Add functions returning all definitions for a mimetype or file name&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;D19200: &lt;a href=&#34;https://phabricator.kde.org/D19200&#34;&gt;Return sorted definitions for file names and mime types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;D19215: &lt;a href=&#34;https://phabricator.kde.org/D19215&#34;&gt;Install DefinitionDownloader header&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I hope this cooperation will continue in the future. I thank the people working on Qt Creator that made this integration possible. I hope the initial effort will pay of with less code for them to maintain on their own and more improvements of the framework for all users.&lt;/p&gt;</description></item><item><title>Removing Files from Git History</title><link>https://kate-editor.org/posts/removing-files-from-git-history/</link><pubDate>Mon, 15 Apr 2019 18:00:00 +0000</pubDate><guid>https://kate-editor.org/posts/removing-files-from-git-history/</guid><description>&lt;p&gt;Today I did run again into an old problem: You need to archive a lot small and large files inside a single Git repository and you have no support for &lt;a href=&#34;https://git-lfs.github.com/&#34;&gt;Git LFS&lt;/a&gt; available. You did this several year and now you ended up in a state where cloning and working with the repository is unbearable slow.&lt;/p&gt;
&lt;p&gt;What now? Last time I did run into that, I archived the overfull repository to some &amp;ldquo;rest in peace&amp;rdquo; space and used &lt;code&gt;git filter-branch&lt;/code&gt; to filter out no longer needed and too large objects from a repository copy that then will replace the old one for daily use.&lt;/p&gt;
&lt;p&gt;There are a lot of guides available how to use &lt;code&gt;git filter-branch&lt;/code&gt; for that. All variants I ever used were complex to do and did take very long. Especially if you need several tries to get a sane set of stuff you want to remove to gain enough space savings.&lt;/p&gt;
&lt;p&gt;This time, I searched once more and stumbled on the &lt;a href=&#34;https://rtyley.github.io/bfg-repo-cleaner/&#34;&gt;BFG Repo-Cleaner&lt;/a&gt;. And yes, it does what it promises on the web site and it seems to be trusted enough to be advertised by e.g. &lt;a href=&#34;https://help.github.com/en/articles/removing-sensitive-data-from-a-repository&#34;&gt;GitHub&lt;/a&gt;, too.&lt;/p&gt;
&lt;p&gt;Just following the steps described on their &lt;a href=&#34;https://rtyley.github.io/bfg-repo-cleaner/&#34;&gt;landing page&lt;/a&gt; allows to shrink your stuff nicely and without a lot of round-trip time.&lt;/p&gt;
&lt;p&gt;If you still are just in the &amp;ldquo;experimenting&amp;rdquo; phase to see which space decrease one can archive with which file size filter (or which files you want to purge by removing them from master before running the tool), I recommend to swap the step&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;git reflog expire &amp;ndash;expire=now &amp;ndash;all &amp;amp;&amp;amp; git gc &amp;ndash;prune=now &amp;ndash;aggressive&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;with just&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;git reflog expire &amp;ndash;expire=now &amp;ndash;all &amp;amp;&amp;amp; git gc &amp;ndash;prune=now&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;to not wait potential hours for the aggressive GC. For me that was good enough to get some estimate of the later size for my experiments before I settled to some final settings and did the real run.&lt;/p&gt;
&lt;p&gt;And as always, if you touch your Git history: &lt;strong&gt;Do that only if you really need to, keep backups, check carefully that afterwards the repository is in some sensible state (&lt;code&gt;git fsck --strict&lt;/code&gt; is your friend) and inform all people using that repository that they will need to do a full new clone.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Kate History – KDE 4 Porting</title><link>https://kate-editor.org/posts/kate-history-kde-4-porting/</link><pubDate>Fri, 12 Apr 2019 21:50:00 +0000</pubDate><guid>https://kate-editor.org/posts/kate-history-kde-4-porting/</guid><description>&lt;p&gt;During my web site upgrade, I reviewed the old stuff I had hosted on my long gone web sites but still archived here locally. An interesting thing I stumbled on are the KDE 3 -&amp;gt; 4 porting screenshots of Kate I saved in 2005.&lt;/p&gt;
&lt;p&gt;They actually show pretty nicely how far we have gone since 2005 with our development stack.&lt;/p&gt;
&lt;p&gt;The KDE 3 -&amp;gt; 4 transition was a large hassle. It did take weeks of work just to get Kate back into an usable state.&lt;/p&gt;
&lt;p&gt;We first started with some trivial KTextEditor container (a mini KWrite) for the porting to get KTextEditor at all doing something. That started out with something that even had no menu or toolbars working:&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://cullmann.io/posts/kate-history-kde-4-porting/images/katetest-kde4-20050515-more.png&#34; &gt;&lt;img width=500 src=&#34;https://cullmann.io/posts/kate-history-kde-4-porting/images/katetest-kde4-20050515-more.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;This evolved after two days into a kind of working KWrite port (icons still randomly missing):&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://cullmann.io/posts/kate-history-kde-4-porting/images/katetest-kde4-20050517.png&#34; &gt;&lt;img width=500 src=&#34;https://cullmann.io/posts/kate-history-kde-4-porting/images/katetest-kde4-20050517.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;After the KTextEditor part did work &amp;ldquo;reasonable&amp;rdquo;, we started with Kate:&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://cullmann.io/posts/kate-history-kde-4-porting/images/kate-kde4-20050519.png&#34; &gt;&lt;img width=500 src=&#34;https://cullmann.io/posts/kate-history-kde-4-porting/images/kate-kde4-20050519.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;And ended up with an initial ported prototype three days later:&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://cullmann.io/posts/kate-history-kde-4-porting/images/kate-kde4-20050522.png&#34; &gt;&lt;img width=500 src=&#34;https://cullmann.io/posts/kate-history-kde-4-porting/images/kate-kde4-20050522.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;And after that a long time of actual polishing for KDE 4.0 did start. Kate was actually one of the first ported applications during the KDE 3 -&amp;gt; 4 transition.&lt;/p&gt;
&lt;p&gt;The KDE 4 -&amp;gt; KF5 transition was much nicer, even thought the Frameworks split did cost a lot of time and resources. But the actual changes to the application code bases were not that radical.&lt;/p&gt;
&lt;p&gt;And where did we end up with this ~14 years later? Actually, just here:&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://cullmann.io/posts/kate-history-kde-4-porting/images/kate-kf5-20190412.png&#34; &gt;&lt;img width=500 src=&#34;https://cullmann.io/posts/kate-history-kde-4-porting/images/kate-kf5-20190412.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;It is still recognizable the same application, thought I hope some progress is visible :=)&lt;/p&gt;</description></item><item><title>Web-Server Transition</title><link>https://kate-editor.org/posts/webserver-transition/</link><pubDate>Mon, 08 Apr 2019 20:45:00 +0000</pubDate><guid>https://kate-editor.org/posts/webserver-transition/</guid><description>&lt;p&gt;Several years the &lt;a href=&#34;https://kate-editor.org/&#34;&gt;kate-editor.org&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://cullmann.io/&#34;&gt;cullmann.io&lt;/a&gt; pages got hosted on a &lt;a href=&#34;https://www.hetzner.de/&#34;&gt;Hetzner&lt;/a&gt; root server. To reduce costs and switch away from old hardware they got now moved to a &lt;a href=&#34;https://openvz.org/&#34;&gt;OpenVZ&lt;/a&gt; based virtual server at &lt;a href=&#34;https://www.hosteurope.de/&#34;&gt;Host Europe&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;On both servers &lt;a href=&#34;https://centos.org/&#34;&gt;CentOS&lt;/a&gt; 7.x is running, it did always provide a stable foundation of the web services.&lt;/p&gt;
&lt;p&gt;As with any server move in the past, I always need to search how to best move the data/config from one server to the other. To document this for me and others, here the quick way to move the basic things needed for web services using just plain &lt;a href=&#34;https://httpd.apache.org/&#34;&gt;Apache&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://mariadb.org/&#34;&gt;MariaDB&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The following steps assume you have installed the same packages on both machines and the new machine is allowed to ssh as root to the old one. If you have non-system users, you should create them with the same ids as on the old server.&lt;/p&gt;
&lt;p&gt;For the following shell commands, the old server address is $SERV and the MariaDB root password is $PASS on both machines. Best use the raw IP as address if you are in parallel updating your DNS entries to avoid confusion (and wrong syncs).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attention: Wrong syncing of stuff can have disastrous consequences! Check all commands again before executing them, don&amp;rsquo;t trust random people like me without verification!&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sync your data, assuming it is in /home and /srv/(ftp/www)&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;rsync &amp;ndash;delete -av root@$SERV:/home/ /home&lt;br /&gt;
rsync &amp;ndash;delete -av root@$SERV:/srv/ftp /srv&lt;br /&gt;
rsync &amp;ndash;delete -av root@$SERV:/srv/www /srv&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;transfer your databases&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;ssh root@$SERV &amp;ldquo;mysqldump -u root -p$PASS &amp;ndash;all-databases &amp;gt; /root/db.sql&amp;rdquo;&lt;br /&gt;
scp root@$SERV:/root/db.sql /root/&lt;br /&gt;
mysql -u root -p$PASS &amp;lt; /root/db.sql&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;sync configs (you might need more, this is just apache &amp;amp; vsftp)&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;rsync &amp;ndash;delete -av root@$SERV:/etc/httpd /etc&lt;br /&gt;
rsync &amp;ndash;delete -av root@$SERV:/etc/letsencrypt /etc&lt;br /&gt;
rsync &amp;ndash;delete -av root@$SERV:/etc/vsftpd /etc&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;get crontabs over for later re-use, store them in the root home&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;rsync &amp;ndash;delete -av root@$SERV:/var/spool/cron /root&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now all things should be there and after some service restarts e.g. &lt;a href=&#34;https://wordpress.org/&#34;&gt;WordPress&lt;/a&gt; powered pages should be up-and-running again.&lt;/p&gt;
&lt;p&gt;I hope this short how-to helps others and allows me to avoid searching stuff in the future once again from scratch.&lt;/p&gt;</description></item><item><title>Privacy and Hugo Themes</title><link>https://kate-editor.org/posts/privacy-and-hugo-themes/</link><pubDate>Sun, 07 Apr 2019 15:10:00 +0000</pubDate><guid>https://kate-editor.org/posts/privacy-and-hugo-themes/</guid><description>&lt;p&gt;I use the &amp;ldquo;Hugo Coder&amp;rdquo; theme for this page. After creating the privacy page (Impressum), I did take a closer look at the generated HTML code to confirm I didn&amp;rsquo;t miss to state things there. I thought, given Hugo generates plain static HTML pages, I would be on the safe side. But unfortunately, the theme I use includes some external resources, like the Google web fonts&amp;hellip; I now patched that out in my fork of the theme and provide local copies on my own server.&lt;/p&gt;</description></item><item><title>Hugo Extended on CentOS 7</title><link>https://kate-editor.org/posts/hugo-extended-centos-7/</link><pubDate>Sat, 06 Apr 2019 20:55:00 +0000</pubDate><guid>https://kate-editor.org/posts/hugo-extended-centos-7/</guid><description>&lt;p&gt;After first using the Hermit theme, I moved to the Hugo Coder theme to have a nicer front page and menu at the top. Unfortunately that needs Hugo in the &amp;ldquo;extended&amp;rdquo; version. The binary one can download on &lt;a href=&#34;https://github.com/gohugoio/hugo/releases&#34;&gt;https://github.com/gohugoio/hugo/releases&lt;/a&gt; doesn&amp;rsquo;t run on CentOS 7, unlike the normal variant you get there (too new libstdc++ needed). One has to recompile it to get that working. To make it easier for others, to do so, just:&lt;/p&gt;</description></item><item><title>New Website</title><link>https://kate-editor.org/posts/new-website/</link><pubDate>Sat, 06 Apr 2019 16:00:00 +0000</pubDate><guid>https://kate-editor.org/posts/new-website/</guid><description>&lt;p&gt;After several years of failing to update my personal WordPress page, I restarted my website with the Hugo framework. The new website uses zero cookies (yes, no stupid cookie question) and no kind of analytic software. I hope my Impressum is done well enough to avoid any legal issues. At the moment the website is still very empty, I hope to fill in more content about my open source projects and academic stuff in the near future.&lt;/p&gt;</description></item><item><title>MIT licensed KSyntaxHighlighting usage</title><link>https://kate-editor.org/2018/10/21/mit-licensed-ksyntaxhighlighting-usage/</link><pubDate>Sun, 21 Oct 2018 10:52:52 +0000</pubDate><guid>https://kate-editor.org/2018/10/21/mit-licensed-ksyntaxhighlighting-usage/</guid><description>&lt;p&gt;With the &lt;a href=&#34;https://www.kde.org/announcements/kde-frameworks-5.50.0.php&#34;&gt;KDE Frameworks 5.50 release&lt;/a&gt;, the &lt;a href=&#34;https://api.kde.org/frameworks/syntax-highlighting/html/index.html&#34;&gt;KSyntaxHighlighting framework&lt;/a&gt; was re-licensed to the &lt;a href=&#34;https://opensource.org/licenses/MIT&#34;&gt;MIT license&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This re-licensing only covers the actual code in the library and the bundled themes but not all of the syntax highlighting definition data files.&lt;/p&gt;
&lt;p&gt;One of the main motivation points was to get QtCreator to use this, if possible, instead of their &lt;a href=&#34;http://code.qt.io/cgit/qt-creator/qt-creator.git/tree/src/plugins/texteditor/generichighlighter&#34;&gt;own implementation&lt;/a&gt; of the Kate highlighting they needed to create in the past due to the incompatible licensing of KatePart at that time (and the impossibility to do a quick split/re-licensing of the parts in question).&lt;/p&gt;
&lt;p&gt;We talked about that possibility on Akademy this year and it seems, that if time permits, this will be picked up by the QtCreator team.&lt;/p&gt;
&lt;p&gt;The current state allows the use of this tier 1 framework by projects like Qt(Creator), that require non-copyleft licenses for bundled 3rd-party source components, but in addition also for commercial applications that do static linking against a commercial Qt version.&lt;/p&gt;
&lt;p&gt;Whereas at the moment, the QtCreator integration has not yet started (at least I am not aware of any work for that), a first commercial consumer already exists.&lt;/p&gt;
&lt;p&gt;The company &lt;a href=&#34;https://www.absint.com&#34;&gt;AbsInt&lt;/a&gt; I work at does develop both binary and source level analysis tools. Our GUI is Qt based, statically linked with a commercial license.&lt;/p&gt;
&lt;p&gt;Before the current release, our GUI used a handcrafted highlighter for our own annotation languages and the programming languages we support (e.g. C and C++). After the release of the 5.50 MIT licensed KSyntaxHighlighting, this was changed to use the framework through its &lt;a href=&#34;http://doc.qt.io/qt-5/qsyntaxhighlighter.html&#34;&gt;QSyntaxHighlighter&lt;/a&gt; implementation.&lt;/p&gt;
&lt;p&gt;The framework was easy to integrate into our static build process.  To make it possible to be used without violating licensing for the bundled highlighting definitions that are not MIT and ensure no other installed instances of the framework will mess up the shipped highlighting definitions, the following two changes were contributed upstream.&lt;/p&gt;
&lt;p&gt;A CMake switch to disable the bundling of the syntax definition data files into the library. This avoids mixing non-MIT files into the created static library, which then only contains MIT licensed code and data. One can then let people either download the definitions or ship some as extra data files with an extra licensing.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;cmake -DQRC_SYNTAX=OFF&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A CMake switch to disable the lookup for syntax and theme definitions in the normal locations via QStandardPaths. This allows the user of the library to only load definitions from search paths specified manually. No definitions that e.g. are installed by users for Kate or other applications using the framework will mess up your lookup, which is really important if you rely on exactly your files to be used.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;cmake -DNO_STANDARD_PATHS=ON&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;These two options might be interesting for the QtCreator people, too. If they need additional configurability, I am sure we can find ways to integrate that.&lt;/p&gt;
&lt;p&gt;After the transition, my colleagues compared the speed of the old implementation versus the new generic highlighting engine. At first, they were not that impressed, which did lead to several performance improvements to be implemented and up-streamed.&lt;/p&gt;
&lt;p&gt;All directly visible bottle-necks got &lt;a href=&#34;http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html&#34;&gt;perf&amp;#8217;d&lt;/a&gt; away. The most CPU consumption now more or less boils down to the costs of the used regular expressions via &lt;a href=&#34;http://doc.qt.io/qt-5/qregularexpression.html&#34;&gt;QRegularExpression&lt;/a&gt;. Same for the allocations, we reduced them by taking a look on the &lt;a href=&#34;https://github.com/KDE/heaptrack&#34;&gt;heaptrack profiles&lt;/a&gt; for the KSyntaxHighlighting benchmark suite.&lt;/p&gt;
&lt;p&gt;But as always, performance work is never done, if you have time, you can take a look by profiling the &amp;#8220;highlighter_benchmark&amp;#8221; autotest, that applies the shipped highlightings to the test files we have in the repository.&lt;/p&gt;
&lt;p&gt;There is no divergence in the local git clone at AbsInt at the moment, nor is there any plan to have that in the future. Both sides profit from up-streaming the changes. Other consumers of the framework get improvements and AbsInt doesn&amp;#8217;t need to maintain a patched version.&lt;/p&gt;
&lt;p&gt;Starting with the &lt;a href=&#34;https://www.absint.com/releasenotes/&#34;&gt;18.10 release&lt;/a&gt; of our tools, &lt;a href=&#34;https://www.absint.com/releasenotes/astree/18.10/gallery.htm#shot6&#34;&gt;all highlighting&lt;/a&gt; is handled by the framework, no more error-prone handcrafting of QSyntaxHighlighter implementations.&lt;/p&gt;
&lt;p&gt;Thanks to all people that helped making this possible ;=)&lt;/p&gt;
&lt;p&gt;I hope more projects/companies will pick up the use of this pure qt-dependent tier 1 framework in the future and &lt;a href=&#34;https://phabricator.kde.org/differential/&#34;&gt;up-stream their improvements&lt;/a&gt;. Be welcome.&lt;/p&gt;</description></item><item><title>Support KDE via AmazonSmile</title><link>https://kate-editor.org/2018/10/14/support-kde-via-amazonsmile/</link><pubDate>Sun, 14 Oct 2018 20:02:50 +0000</pubDate><guid>https://kate-editor.org/2018/10/14/support-kde-via-amazonsmile/</guid><description>&lt;p&gt;For quite some time, the KDE e.V. &amp;#8211; KDE&amp;#8217;s non-profit organization &amp;#8211; is listed in the AmazonSmile program. On the &lt;a href=&#34;https://org.amazon.com/&#34;&gt;AmazonSmile website&lt;/a&gt; it says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
AmazonSmile is a website operated by Amazon that lets customers enjoy the same wide selection of products, [&amp;#8230;]. The difference is that when customers shop on AmazonSmile (smile.amazon.com), the AmazonSmile Foundation will donate 0.5% of the price of eligible purchases to the charitable organizations selected by customers.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In other words, if you do a lot of shopping on Amazon anyways, make sure to start shopping via &lt;a href=&#34;https://smile.amazon.de/&#34;&gt;smile.amazon.de&lt;/a&gt; and choose the &amp;#8220;KDE e.V.&amp;#8221; as organization. This way you financially support the KDE e.V., even without having to pay more. I am posting this here since I know many people who buy things on Amazon several times a week. Feel free to spread the word &amp;amp; happy shopping :-)&lt;/p&gt;
&lt;p&gt;PS: This is not supposed to be advertisement for Amazon. You can also donate to the KDE e.V. directly.&lt;/p&gt;
&lt;p&gt;PPS: It seems the KDE e.V. is only available on German Amazon.&lt;/p&gt;</description></item><item><title>Who is Hiring?</title><link>https://kate-editor.org/2018/10/14/who-is-hiring/</link><pubDate>Sun, 14 Oct 2018 18:08:59 +0000</pubDate><guid>https://kate-editor.org/2018/10/14/who-is-hiring/</guid><description>&lt;p&gt;Just as quick info: For some time, there is a &lt;a href=&#34;https://www.reddit.com/r/cpp/comments/9kig88/whos_hiring_c_devs_q4_2018/&#34;&gt;sticky thread on r/cpp&lt;/a&gt; about who is hiring C++ developers. This thread gets cleaned quarterly, so all the open jobs listed there are likely still open. The same was just started on reddit for &lt;a href=&#34;https://www.reddit.com/r/Qt5/comments/9o1xay/whos_hiring_qt_devs_q4_2018/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;r/Qt5: Who&amp;#8217;s Hiring Qt Devs &amp;#8211; Q4 2018&lt;/a&gt;: So if you are looking for either C++ or Qt jobs, this is a good place to have a look at from time to time. When I just looked for r/Qt5, the list was still empty, but this hopefully changes soon, given that the post was added just some hours ago. :-)&lt;/p&gt;</description></item><item><title>Kate projects and out-of-source builds</title><link>https://kate-editor.org/2018/08/19/kate-projects-and-out-of-source-builds/</link><pubDate>Sun, 19 Aug 2018 20:39:46 +0000</pubDate><guid>https://kate-editor.org/2018/08/19/kate-projects-and-out-of-source-builds/</guid><description>&lt;p&gt;During Akademy I once more was a bit disappointed how bad the project plugin of Kate can cope with out-of-source builds.&lt;/p&gt;
&lt;p&gt;At work, we use in-source-builds, as we normally only build in one configuration and have no issues with left-overs in the source directories locally. For this use-case, the project plugin works really well. You have your project local terminal view and that allows you all normal things you need during work, e.g. building + using the git command line client for the version control work.&lt;/p&gt;
&lt;p&gt;On the other side, with out-of-source builds, that no longer is that nice to use. Either you use the .kateproject generated by the &amp;#8220;Kate &amp;#8211; Ninja&amp;#8221; or &amp;#8220;Kate &amp;#8211; Unix Makefiles&amp;#8221; CMake generators, then your terminal defaults to the build directory, which allows building just fine, but no version control stuff, or you use the .kateproject (or auto-project creation) in the source directory, which doesn&amp;#8217;t allow you to build nicely inside the terminal prompt of Kate. There are workaround for that, like having shell magic to switch between source and build directory with ease, but that all feels a bit unnatural.&lt;/p&gt;
&lt;p&gt;Therefore, I added today &lt;a href=&#34;https://cgit.kde.org/kate.git/commit/?id=07a31f768398f6bdf0a25c9e33356cd3f224c642&#34;&gt;a very simple &amp;#8220;fix&amp;#8221;&lt;/a&gt; for the issue: If you have a .kateproject that has a different base directory (the toplevel &amp;#8220;directory&amp;#8221; entry) than the directory the .kateproject file is located in, you will get two terminal tabs in the project view. One is the &amp;#8220;old one&amp;#8221; that has the directory of the .kateproject as base, the other has the base directory of the project as base.&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2018/08/kate_project_terminal_1.png&#34;&gt;&lt;img class=&#34;aligncenter wp-image-4271 size-medium&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/08/kate_project_terminal_1-300x248.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;248&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/08/kate_project_terminal_1-300x248.png 300w, https://kate-editor.org/wp-content/uploads/2018/08/kate_project_terminal_1-768x634.png 768w, https://kate-editor.org/wp-content/uploads/2018/08/kate_project_terminal_1.png 980w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With these two views, you can easily switch between build/source directory without any hassle or extra setup for any properly setup .kateproject as generated by CMake.&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2018/08/kate_project_terminal_2.png&#34;&gt;&lt;img class=&#34;aligncenter wp-image-4273 size-medium&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/08/kate_project_terminal_2-300x248.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;248&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/08/kate_project_terminal_2-300x248.png 300w, https://kate-editor.org/wp-content/uploads/2018/08/kate_project_terminal_2-768x634.png 768w, https://kate-editor.org/wp-content/uploads/2018/08/kate_project_terminal_2.png 980w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I hope this improves the usability of the project plugin for the normal setup of out-of-source builds with CMake. If this sparked your interest: any further improvement ideas are welcome, best as patches submitted on &lt;a href=&#34;https://phabricator.kde.org&#34;&gt;phabricator.kde.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I think this small change is something that shows how many open source contributions work: You have some itch to scratch and you share your solution to help others that have a similar issue.&lt;/p&gt;
&lt;p&gt;If you look at the &lt;a href=&#34;https://bugs.kde.org/buglist.cgi?bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=CONFIRMED&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;product=frameworks-ktexteditor&amp;amp;product=kate&#34;&gt;open bugs&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://bugs.kde.org/buglist.cgi?bug_severity=wishlist&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=CONFIRMED&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;product=frameworks-ktexteditor&amp;amp;product=kate&#34;&gt;wishes&lt;/a&gt; for Kate/KWrite/KTexteditor/&amp;#8230; you will see that there are still a lot things that need some scratching. It might look like the developers don&amp;#8217;t care for the issues of their users, but that is not correct. We just don&amp;#8217;t have the time to scratch all these itches (nor are all that easy solvable). Sometimes we unfortunately did even lack time or motivation to do proper reviews for some proposed solutions, I hope we improve on that in the future. Any volunteers that help us taking care are always welcome. The addition of the &lt;a href=&#34;https://kate-editor.org/2018/08/17/kate-gains-support-for-inline-notes/&#34;&gt;inline notes interface&lt;/a&gt; is a nice example. Michal Srb provided an initial solution for his own needs to us and sparked some new development with that.&lt;/p&gt;</description></item><item><title>Kate gains Support for Inline Notes</title><link>https://kate-editor.org/2018/08/17/kate-gains-support-for-inline-notes/</link><pubDate>Fri, 17 Aug 2018 20:48:13 +0000</pubDate><guid>https://kate-editor.org/2018/08/17/kate-gains-support-for-inline-notes/</guid><description>&lt;p&gt;Thanks to Michal Srb and Sven Brauch for pioneering the work an a new KTextEditor interface that allows applications like Kate, KDevelop, etc. to display inline notes in a text document. As demo, we quickly prototyped one application to display colors in CSS documents:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-4249&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/08/inlinenote.png&#34; alt=&#34;&#34; width=&#34;789&#34; height=&#34;572&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/08/inlinenote.png 789w, https://kate-editor.org/wp-content/uploads/2018/08/inlinenote-300x217.png 300w, https://kate-editor.org/wp-content/uploads/2018/08/inlinenote-768x557.png 768w&#34; sizes=&#34;(max-width: 789px) 100vw, 789px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Clicking on the color rectangle will launch the color chooser:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-4250&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/08/inlinenote-dialog.png&#34; alt=&#34;&#34; width=&#34;789&#34; height=&#34;572&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/08/inlinenote-dialog.png 789w, https://kate-editor.org/wp-content/uploads/2018/08/inlinenote-dialog-300x217.png 300w, https://kate-editor.org/wp-content/uploads/2018/08/inlinenote-dialog-768x557.png 768w&#34; sizes=&#34;(max-width: 789px) 100vw, 789px&#34; /&gt; Choosing a color and clicking OK finally adapts the color in the CSS document:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-4251&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/08/inlinenote-final.png&#34; alt=&#34;&#34; width=&#34;789&#34; height=&#34;572&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/08/inlinenote-final.png 789w, https://kate-editor.org/wp-content/uploads/2018/08/inlinenote-final-300x217.png 300w, https://kate-editor.org/wp-content/uploads/2018/08/inlinenote-final-768x557.png 768w&#34; sizes=&#34;(max-width: 789px) 100vw, 789px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;The code for this is just a demo and looks as follows:&lt;/p&gt;
&lt;pre style=&#34;font-size: 11px;&#34;&gt;&lt;b&gt;class&lt;/b&gt; NoteProvider : &lt;b&gt;public&lt;/b&gt; KTextEditor::InlineNoteProvider {
&lt;b&gt;public&lt;/b&gt;:
&lt;span style=&#34;color: #0095ff;&#34;&gt;QVector&lt;/span&gt;&amp;lt;&lt;span style=&#34;color: #0057ae;&#34;&gt;int&lt;/span&gt;&amp;gt; inlineNotes(&lt;span style=&#34;color: #0057ae;&#34;&gt;int&lt;/span&gt; line) &lt;span style=&#34;color: #0057ae;&#34;&gt;const&lt;/span&gt; &lt;b&gt;override&lt;/b&gt;
{
&lt;b&gt;if&lt;/b&gt; (line == &lt;span style=&#34;color: #b08000;&#34;&gt;1&lt;/span&gt;) &lt;b&gt;return&lt;/b&gt; { &lt;span style=&#34;color: #b08000;&#34;&gt;29&lt;/span&gt; };
&lt;b&gt;if&lt;/b&gt; (line == &lt;span style=&#34;color: #b08000;&#34;&gt;11&lt;/span&gt;) &lt;b&gt;return&lt;/b&gt; { &lt;span style=&#34;color: #b08000;&#34;&gt;29&lt;/span&gt; };
&lt;b&gt;if&lt;/b&gt; (line == &lt;span style=&#34;color: #b08000;&#34;&gt;12&lt;/span&gt;) &lt;b&gt;return&lt;/b&gt; { &lt;span style=&#34;color: #b08000;&#34;&gt;29&lt;/span&gt; };
&lt;b&gt;if&lt;/b&gt; (line == &lt;span style=&#34;color: #b08000;&#34;&gt;13&lt;/span&gt;) &lt;b&gt;return&lt;/b&gt; { &lt;span style=&#34;color: #b08000;&#34;&gt;29&lt;/span&gt; };
&lt;b&gt;return&lt;/b&gt; {};
}
&lt;span style=&#34;color: #0095ff;&#34;&gt;QSize&lt;/span&gt; inlineNoteSize(&lt;span style=&#34;color: #0057ae;&#34;&gt;const&lt;/span&gt; KTextEditor::InlineNote&amp; note) &lt;span style=&#34;color: #0057ae;&#34;&gt;const&lt;/span&gt; &lt;b&gt;override&lt;/b&gt;
{
&lt;b&gt;return&lt;/b&gt; &lt;span style=&#34;color: #0095ff;&#34;&gt;QSize&lt;/span&gt;(note.lineHeight(), note.lineHeight());
}
&lt;span style=&#34;color: #0057ae;&#34;&gt;void&lt;/span&gt; paintInlineNote(&lt;span style=&#34;color: #0057ae;&#34;&gt;const&lt;/span&gt; KTextEditor::InlineNote&amp; note, &lt;span style=&#34;color: #0095ff;&#34;&gt;QPainter&lt;/span&gt;&amp; painter) &lt;span style=&#34;color: #0057ae;&#34;&gt;const&lt;/span&gt; &lt;b&gt;override&lt;/b&gt;
{
&lt;span style=&#34;color: #0057ae;&#34;&gt;const&lt;/span&gt; &lt;b&gt;auto&lt;/b&gt; line = note.position().line();
&lt;span style=&#34;color: #0057ae;&#34;&gt;const&lt;/span&gt; &lt;b&gt;auto&lt;/b&gt; color = &lt;span style=&#34;color: #0095ff;&#34;&gt;QColor&lt;/span&gt;(note.view()-&amp;gt;document()-&amp;gt;text({line, &lt;span style=&#34;color: #b08000;&#34;&gt;22&lt;/span&gt;, line, &lt;span style=&#34;color: #b08000;&#34;&gt;29&lt;/span&gt;}));
painter.setPen(color);
painter.setBrush(color.lighter(&lt;span style=&#34;color: #b08000;&#34;&gt;150&lt;/span&gt;));
painter.drawRoundedRect(&lt;span style=&#34;color: #b08000;&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color: #b08000;&#34;&gt;1&lt;/span&gt;, note.width() - &lt;span style=&#34;color: #b08000;&#34;&gt;2&lt;/span&gt;, note.lineHeight() - &lt;span style=&#34;color: #b08000;&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color: #b08000;&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color: #b08000;&#34;&gt;2&lt;/span&gt;);
}
&lt;span style=&#34;color: #0057ae;&#34;&gt;void&lt;/span&gt; inlineNoteActivated(&lt;span style=&#34;color: #0057ae;&#34;&gt;const&lt;/span&gt; KTextEditor::InlineNote&amp; note, &lt;span style=&#34;color: #0095ff;&#34;&gt;Qt::MouseButtons&lt;/span&gt; buttons, &lt;span style=&#34;color: #0057ae;&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color: #0095ff;&#34;&gt;QPoint&lt;/span&gt;&amp; globalPos) &lt;b&gt;override&lt;/b&gt;
{
&lt;span style=&#34;color: #0057ae;&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color: #0057ae;&#34;&gt;int&lt;/span&gt; line = note.position().line();
&lt;span style=&#34;color: #0057ae;&#34;&gt;const&lt;/span&gt; &lt;b&gt;auto&lt;/b&gt; oldColor = &lt;span style=&#34;color: #0095ff;&#34;&gt;QColor&lt;/span&gt;(note.view()-&amp;gt;document()-&amp;gt;text({line, &lt;span style=&#34;color: #b08000;&#34;&gt;22&lt;/span&gt;, line, &lt;span style=&#34;color: #b08000;&#34;&gt;29&lt;/span&gt;}));
&lt;span style=&#34;color: #0057ae;&#34;&gt;const&lt;/span&gt; &lt;b&gt;auto&lt;/b&gt; newColor = &lt;span style=&#34;color: #0095ff;&#34;&gt;QColorDialog::getColor&lt;/span&gt;(oldColor);
note.view()-&amp;gt;document()-&amp;gt;replaceText({line, &lt;span style=&#34;color: #b08000;&#34;&gt;22&lt;/span&gt;, line, &lt;span style=&#34;color: #b08000;&#34;&gt;29&lt;/span&gt;}, newColor.name(&lt;span style=&#34;color: #0095ff;&#34;&gt;QColor::HexRgb&lt;/span&gt;));
}
&lt;span style=&#34;color: #0057ae;&#34;&gt;void&lt;/span&gt; inlineNoteFocusInEvent(&lt;span style=&#34;color: #0057ae;&#34;&gt;const&lt;/span&gt; KTextEditor::InlineNote&amp; note, &lt;span style=&#34;color: #0057ae;&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color: #0095ff;&#34;&gt;QPoint&lt;/span&gt;&amp; globalPos) &lt;b&gt;override&lt;/b&gt;
{} &lt;span style=&#34;color: #898887;&#34;&gt;// unused in this example&lt;/span&gt;
&lt;span style=&#34;color: #0057ae;&#34;&gt;void&lt;/span&gt; inlineNoteFocusOutEvent(&lt;span style=&#34;color: #0057ae;&#34;&gt;const&lt;/span&gt; KTextEditor::InlineNote&amp; note) &lt;b&gt;override&lt;/b&gt;
{} &lt;span style=&#34;color: #898887;&#34;&gt;// unused in this example&lt;/span&gt;
&lt;span style=&#34;color: #0057ae;&#34;&gt;void&lt;/span&gt; inlineNoteMouseMoveEvent(&lt;span style=&#34;color: #0057ae;&#34;&gt;const&lt;/span&gt; KTextEditor::InlineNote&amp; note, &lt;span style=&#34;color: #0057ae;&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color: #0095ff;&#34;&gt;QPoint&lt;/span&gt;&amp; globalPos) &lt;b&gt;override&lt;/b&gt;
{} &lt;span style=&#34;color: #898887;&#34;&gt;// unused in this example&lt;/span&gt;
};
&lt;span style=&#34;color: #898887;&#34;&gt;// later in code:&lt;/span&gt;
&lt;b&gt;auto&lt;/b&gt; provider = &lt;b&gt;new&lt;/b&gt; NoteProvider();
view-&amp;gt;registerInlineNoteProvider(provider);
&lt;span style=&#34;color: #898887;&#34;&gt;// final cleanup&lt;/span&gt;
view-&amp;gt;unregisterInlineNoteProvider(provider);
&lt;/pre&gt;
&lt;p&gt;As you can see, it&amp;#8217;s actually not much code at all: We have to derive a class from &lt;a href=&#34;https://api.kde.org/frameworks/ktexteditor/html/classKTextEditor_1_1InlineNoteProvider.html&#34;&gt;KTextEditor::InlineNoteProvider&lt;/a&gt;, and then register an instance of our Note Provider in the &lt;a href=&#34;https://api.kde.org/frameworks/ktexteditor/html/classKTextEditor_1_1View.html&#34;&gt;KTextEditor::View&lt;/a&gt;. In a next step, we implement the inlineNotes(), inlineNoteSize(), and the paintInlineNote() functions to get basic visual drawing at the desired location. The above code is just a tech-demo, since it uses hard-coded lines and color positions. Additionally, one can also track mouse events (unused in the example above). On mouse click, we open the QColorDialog to let the user choose a new color.&lt;/p&gt;
&lt;p&gt;To give more examples of what&amp;#8217;s possible, the initial Phabricator review requests contained many other interesting examples (the examples were really implemented). From &lt;a href=&#34;https://phabricator.kde.org/D12662&#34;&gt;review request D12662&lt;/a&gt;:&lt;/p&gt;
&lt;figure id=&#34;attachment_4256&#34; aria-describedby=&#34;caption-attachment-4256&#34; style=&#34;width: 695px&#34; class=&#34;wp-caption aligncenter&#34;&gt;&lt;img class=&#34;wp-image-4256 size-full&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/08/kdevelop.png&#34; alt=&#34;&#34; width=&#34;695&#34; height=&#34;630&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/08/kdevelop.png 695w, https://kate-editor.org/wp-content/uploads/2018/08/kdevelop-300x272.png 300w&#34; sizes=&#34;(max-width: 695px) 100vw, 695px&#34; /&gt;&lt;figcaption id=&#34;caption-attachment-4256&#34; class=&#34;wp-caption-text&#34;&gt;Kate showing additional information for loops and structs.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Or a KDevelop addition that adds a lot of meta information on the current code if desired:&lt;/p&gt;
&lt;figure id=&#34;attachment_4257&#34; aria-describedby=&#34;caption-attachment-4257&#34; style=&#34;width: 717px&#34; class=&#34;wp-caption aligncenter&#34;&gt;&lt;img class=&#34;wp-image-4257 size-full&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/08/inline-note-anim.gif&#34; alt=&#34;&#34; width=&#34;717&#34; height=&#34;961&#34; /&gt;&lt;figcaption id=&#34;caption-attachment-4257&#34; class=&#34;wp-caption-text&#34;&gt;KDevelop showing detailed code meta information&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;We believe this addition to the KTextEditor component has a lot of potential for nice features and plugins. Feel free to use this interfaces starting with KDE Frameworks 5.50. Happy coding! :-)&lt;/p&gt;
&lt;p&gt;A big thanks also goes to this year&amp;#8217;s Akademy organizers. Thanks to this event, we could meet up in person and also finalize the &lt;a href=&#34;https://api.kde.org/frameworks/ktexteditor/html/classKTextEditor_1_1InlineNoteInterface.html&#34;&gt;InlineNoteInterface&lt;/a&gt;, &lt;a href=&#34;https://api.kde.org/frameworks/ktexteditor/html/classKTextEditor_1_1InlineNoteProvider.html&#34;&gt;InlineNoteProvider&lt;/a&gt;, and &lt;a href=&#34;https://api.kde.org/frameworks/ktexteditor/html/classKTextEditor_1_1InlineNote.html&#34;&gt;InlineNote&lt;/a&gt; class to make it ready for public release. This again shows the importance of the yearly KDE conferences since it enables us to significantly push things forward.&lt;/p&gt;</description></item><item><title>Akademy 2018 Wrap-Up</title><link>https://kate-editor.org/2018/08/17/akademy-2018-wrap-up/</link><pubDate>Fri, 17 Aug 2018 15:06:46 +0000</pubDate><guid>https://kate-editor.org/2018/08/17/akademy-2018-wrap-up/</guid><description>&lt;p&gt;The &lt;a href=&#34;https://akademy.kde.org/2018&#34;&gt;Akademy 2018&lt;/a&gt; ends today.&lt;/p&gt;
&lt;p&gt;Like each Akademy I attended, it was an interesting experience. As the location switches around each year, so does the set of people attending change every year, too.&lt;/p&gt;
&lt;p&gt;That is actually nice, as you get always to meet some of your old &amp;#8220;friends&amp;#8221; but additionally new members of the KDE community. I think this kind of &amp;#8220;conferences&amp;#8221; or &amp;#8220;meetings&amp;#8221; are an important way to get some more cohesion in the community, which is sometimes a bit lacking between people only meeting online via mail/&amp;#8230;&lt;/p&gt;
&lt;p&gt;Beside the presentation tracks and the e.V. meeting, several of the &lt;a href=&#34;https://www.youtube.com/watch?v=_yyOc6-x2yI&amp;amp;list=PLsHpGlwPdtMraXbFHhkFx7-QHpEl9dOsL&#34;&gt;BoFs&lt;/a&gt; did spark my interest.&lt;/p&gt;
&lt;p&gt;In the KDevelop BoF, Sven talked about what could be done to give the current KDevelop project a bit more focus on the parts it does well to polish them more for a better user experience. The idea is that if you get KDevelop shining even more in the areas it is good at and perhaps cut off some parts that are really given bad impressions, one might attract more people to both use it and contribute. It is still to be discussed if this idea is shared with the other KDevelop contributors.&lt;/p&gt;
&lt;p&gt;In the kdesrc-build BoF Michael talked about the current state and collected pain points from the audience and potential future extensions. For example an API to allow to build a light-weight GUI tooling around kdesrc-build to ease the entry to the KDE development was one topic of interest.&lt;/p&gt;
&lt;p&gt;Between the conference/BoF/socializing parts of Akademy, I got plenty of time to finally work again on some KTextEditor/Kate related tasks.&lt;/p&gt;
&lt;p&gt;With help of Dominik and Volker I got to &lt;a href=&#34;https://kate-editor.org/2018/08/14/porting-ktexteditor-to-ksyntaxhighlighting-done/&#34;&gt;integrate the KSyntaxHighlighting framework&lt;/a&gt; and we even got at least some initial contact with the QtCreator team about the topic of integrating this framework to replace their own implementation of the Kate syntax definition handling. If you experience any issues with the highlighting or folding in the master branch, please file a bug or even better provide some patch on &lt;a href=&#34;https://phabricator.kde.org&#34;&gt;phabricator&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In addition some small KTextEditor and Kate bugs got either solved or at least started to be worked on again. Help with any bug fixing is always welcome!&lt;/p&gt;
&lt;p&gt;As small but perhaps for users important step was to actually &lt;a href=&#34;https://kate-editor.org/get-it/&#34;&gt;link to the new and shiny Windows installers&lt;/a&gt; that the &lt;a href=&#34;https://kate-editor.org/2018/08/16/akademy-binary-factory/&#34;&gt;Binary Factory for KDE&lt;/a&gt; produces. Thanks to the team behind that, once more. Hopefully that will lead to more users and developers for Kate on Windows.&lt;/p&gt;
&lt;p&gt;Thanks to the organizers to make this Akademy happen and all people that volunteered! Great job! The &lt;a href=&#34;https://akademy.kde.org/2018/sponsors&#34;&gt;sponsors&lt;/a&gt; are highly appreciated for their contributions, too.&lt;/p&gt;
&lt;p&gt;So, thanks for all the fish (or Krapfen), lets see how Akademy next year will be :=)&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-medium wp-image-4142&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner-300x74.jpg&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;74&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner-300x74.jpg 300w, https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner-768x188.jpg 768w, https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner.jpg 840w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/p&gt;</description></item><item><title>Akademy &amp; Binary Factory</title><link>https://kate-editor.org/2018/08/16/akademy-binary-factory/</link><pubDate>Thu, 16 Aug 2018 14:11:09 +0000</pubDate><guid>https://kate-editor.org/2018/08/16/akademy-binary-factory/</guid><description>&lt;p&gt;During Akademy it was brought to my (and the other Kate developers) attention, that we should take a closer look on the &lt;a href=&#34;https://binary-factory.kde.org/&#34;&gt;Binary Factory for KDE&lt;/a&gt;. There were &lt;a href=&#34;http://kfunk.org/2017/11/17/kde-binary-factory/&#34;&gt;some blogs&lt;/a&gt; about the Binary Factory in the past but we somehow never really linked it on our homepage as potential source for up-to-date installers for the different operating systems. I feel a bit sorry for neglecting that area in the past year.&lt;/p&gt;
&lt;p&gt;Therefore, as we have now some time during Akademy together as team, we did take a look at the current state of the installers there for Windows and macOS.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2018/08/Kate-Binary-Factory2.png&#34;&gt;&lt;img class=&#34;aligncenter wp-image-4213 size-medium&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/08/Kate-Binary-Factory2-300x223.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;223&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/08/Kate-Binary-Factory2-300x223.png 300w, https://kate-editor.org/wp-content/uploads/2018/08/Kate-Binary-Factory2-768x570.png 768w, https://kate-editor.org/wp-content/uploads/2018/08/Kate-Binary-Factory2.png 958w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Windows installer is working fine. Kåre&amp;#8217;s manually created installers are better optimized for size by stripping out things not that commonly used, on the other side the Binary Factory installers bundle more stuff like all translations/dictionaries that might be interesting for some people, too. One other thing that might be fine tuned is the used frameworks. For example the KActivities is not useful for Kate on Windows and we normally disable that for our own build, at the moment the factory still includes that (as it is an optional dependency). If we fine tune that a bit more in the future, I think we can close the gap between the hand-tuned installer and the autogenerated one even more. In other parts like the KHotNewStuff integration the current factory installer even provides a better experience than our last published own one. And last but not least, the binary factory creates an installer every night for the stable and the development version, so we get up-to-date installers with no manual work.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2018/08/Kate-Binary-Factory.png&#34;&gt;&lt;img class=&#34;aligncenter wp-image-4212 size-medium&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/08/Kate-Binary-Factory-300x223.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;223&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/08/Kate-Binary-Factory-300x223.png 300w, https://kate-editor.org/wp-content/uploads/2018/08/Kate-Binary-Factory-768x570.png 768w, https://kate-editor.org/wp-content/uploads/2018/08/Kate-Binary-Factory.png 958w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The macOS installer is on-par with what I did manually a year ago (but than gave up due to loss of interest). Therefore we now link the nightly build for that on our homepage as primary preview build. The state is still not that good, but that is not a fault of the installer creation. The macOS port just lacks manpower, as myself has no longer that much interest in improving it and it still is in a &amp;#8220;usable&amp;#8221; but non-polished state that will still crash in a few situations, which makes using it not that nice. Any help there would be appreciated.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2018/08/Bildschirmfoto-2018-08-16-um-14.34.09.png&#34;&gt;&lt;img class=&#34;aligncenter wp-image-4198 size-large&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/08/Bildschirmfoto-2018-08-16-um-14.34.09-1024x721.png&#34; alt=&#34;&#34; width=&#34;474&#34; height=&#34;334&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/08/Bildschirmfoto-2018-08-16-um-14.34.09-1024x721.png 1024w, https://kate-editor.org/wp-content/uploads/2018/08/Bildschirmfoto-2018-08-16-um-14.34.09-300x211.png 300w, https://kate-editor.org/wp-content/uploads/2018/08/Bildschirmfoto-2018-08-16-um-14.34.09-768x540.png 768w, https://kate-editor.org/wp-content/uploads/2018/08/Bildschirmfoto-2018-08-16-um-14.34.09.png 1438w&#34; sizes=&#34;(max-width: 474px) 100vw, 474px&#34; /&gt;&lt;/a&gt;As a conclusion I must say, I am personally impressed how well the Binary Factory installers work. They are a real big step towards having people use up-to-date versions of our tools on operating systems other than the usual unices. Thanks to the team behind that and all others that contributed, including our sysadmins that keep all the stuff running the whole time! I hope we make good use of that infrastructure in the future. Thanks to Hannah, Kevin, Ben and all others that contribute to this effort! And thanks to Kåre and everybody else taking care of issues on Windows or macOS.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://kate-editor.org/get-it/&#34;&gt;download page&lt;/a&gt; is now updated to provide links to both the latest successful Kate release and nightly builds of the Binary Factory.&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-medium wp-image-4142&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner-300x74.jpg&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;74&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner-300x74.jpg 300w, https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner-768x188.jpg 768w, https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner.jpg 840w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/p&gt;</description></item><item><title>Porting KTextEditor to KSyntaxHighlighting =&gt; Done :=)</title><link>https://kate-editor.org/2018/08/14/porting-ktexteditor-to-ksyntaxhighlighting-done/</link><pubDate>Tue, 14 Aug 2018 16:05:22 +0000</pubDate><guid>https://kate-editor.org/2018/08/14/porting-ktexteditor-to-ksyntaxhighlighting-done/</guid><description>&lt;p&gt;During Akademy there was finally enough time to finalize the porting of KTextEditor to KSyntaxHighlighting.&lt;/p&gt;
&lt;p&gt;Thanks to the help of Dominik and Volker, the needed extensions to the KSyntaxHighlighting framework were done in no time ;=)&lt;/p&gt;
&lt;p&gt;Thanks for that!&lt;/p&gt;
&lt;p&gt;The branch for the integration was merged to master yesterday, unit tests look OK and I am using that state now for my normal coding work. Beside minor glitches that should now be corrected, no issues came up until now.&lt;/p&gt;
&lt;p&gt;But as with all changes, for sure some regressions slipped in.&lt;/p&gt;
&lt;p&gt;If you notice strange behavior of the highlighting in master, please report the issues on bugs.kde.org or on our mailing list (or even better: provide a fix on &lt;a href=&#34;https://phabricator.kde.org&#34;&gt;phabricator&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;For sure there are potential further cleanups and now that we have only one implementation of the highlighting infrastructure, we will be able to move forward with extensions of it much easier.&lt;/p&gt;
&lt;p&gt;We &lt;a href=&#34;http://lists.qt-project.org/pipermail/qt-creator/2018-August/007505.html&#34;&gt;contacted&lt;/a&gt; the QtCreator people, to see if we might be able to share a common implementation, as they have an own one at the moment. Hopefully that works out in a nice way and our KDE syntax-highlighting framework gets an even broader user base!&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-medium wp-image-4142&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner-300x74.jpg&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;74&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner-300x74.jpg 300w, https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner-768x188.jpg 768w, https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner.jpg 840w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/p&gt;</description></item><item><title>Downloading Kate Highlighting Files</title><link>https://kate-editor.org/2018/08/14/downloading-kate-highlighting-files/</link><pubDate>Tue, 14 Aug 2018 12:58:03 +0000</pubDate><guid>https://kate-editor.org/2018/08/14/downloading-kate-highlighting-files/</guid><description>&lt;p&gt;Starting with the KDE Frameworks 5.50 release we decided to remove the capability in Kate/KTextEditor to download / update syntax highlighting files from the Kate homepage.&lt;/p&gt;
&lt;p&gt;The reasons for this are as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The KTextEditor framework is released once a month, meaning that users who use latest KDE software usually anyways have the most recent versions. Other users who do not follow the latest development releases (like your mom) are likely not the target audience for downloading highlighting files.&lt;/li&gt;
&lt;li&gt;There are technical problems with only updating certain highlighting files, since it can lead to an inconsistent state when one highlighting file needs another one that was not updated or does not exist, or also if a highlighting file needs a certain indenter that does not yet exist or contains bugs.&lt;/li&gt;
&lt;li&gt;We have a nice small cleanup in the UI, since we have now one button less.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Git changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Code: &lt;a href=&#34;https://cgit.kde.org/ktexteditor.git/commit/?id=705f8e0419c441ecb618d35b70b4373be453a94e&#34;&gt;https://cgit.kde.org/ktexteditor.git/commit/?id=705f8e0419c441ecb618d35b70b4373be453a94e&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Documentation: &lt;a href=&#34;https://cgit.kde.org/kate.git/commit/?id=c07523227d1cd3edd756978a6c48d9857963f705&#34;&gt;https://cgit.kde.org/kate.git/commit/?id=c07523227d1cd3edd756978a6c48d9857963f705&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Contributing new Highlighting Files&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;By the way, we are always very happy to accept new highlighting files under MIT license. Documentation about how to write a syntax highlighting file can be found in the &lt;a href=&#34;https://docs.kde.org/stable5/en/applications/katepart/highlight.html&#34;&gt;Kate Handbook&lt;/a&gt;. When you are done, please contribute your highlighting file in &lt;a href=&#34;https://phabricator.kde.org&#34;&gt;phabricator&lt;/a&gt; for the &amp;#8216;syntax-highlighting&amp;#8217; framework (click Code Review, then on the very top right &amp;#8220;Create Diff&amp;#8221;). You can find nice instructions also on the &lt;a href=&#34;https://community.kde.org/Infrastructure/Phabricator&#34;&gt;Community wiki&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Porting KTextEditor to KSyntaxHighlighting – Folding</title><link>https://kate-editor.org/2018/08/04/porting-ktexteditor-to-ksyntaxhighlighting-folding/</link><pubDate>Sat, 04 Aug 2018 15:37:44 +0000</pubDate><guid>https://kate-editor.org/2018/08/04/porting-ktexteditor-to-ksyntaxhighlighting-folding/</guid><description>&lt;p&gt;After fixing some first porting bugs to KSyntaxHighlighting, code folding (non-indentation based) is back working, too.&lt;/p&gt;
&lt;p&gt;There is a still a lot to do (and e.g. the syntax colors are still kind of randomized), but already all KTextEditor original highlighting code is gone without ending up in an unusable state.&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-4159&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/08/kwrite_folding.png&#34; alt=&#34;&#34; width=&#34;778&#34; height=&#34;727&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/08/kwrite_folding.png 778w, https://kate-editor.org/wp-content/uploads/2018/08/kwrite_folding-300x280.png 300w, https://kate-editor.org/wp-content/uploads/2018/08/kwrite_folding-768x718.png 768w&#34; sizes=&#34;(max-width: 778px) 100vw, 778px&#34; /&gt;&lt;/p&gt;</description></item><item><title>Porting KTextEditor to KSyntaxHighlighting</title><link>https://kate-editor.org/2018/07/31/porting-ktexteditor-to-ksyntaxhighlighting/</link><pubDate>Tue, 31 Jul 2018 19:52:28 +0000</pubDate><guid>https://kate-editor.org/2018/07/31/porting-ktexteditor-to-ksyntaxhighlighting/</guid><description>&lt;p&gt;After several years, the time has come that KTextEditor finally starts to use more of KSyntaxHighlighting than just the syntax definitions resources.&lt;/p&gt;
&lt;p&gt;At the moment, we still do everything on our own (parsing the xml, doing the highlighting, &amp;#8230;) and only use the XML files bundled inside the KSyntaxHighlighting library as &amp;#8220;code sharing&amp;#8221;.&lt;/p&gt;
&lt;p&gt;I started a &amp;#8220;syntax-highlighting&amp;#8221; branch in ktexteditor.git to change that. Dominik helped out by starting to add missing API to KSyntaxHighlighting that will ease the porting.&lt;/p&gt;
&lt;p&gt;The first step will be: Having full working highlighting without color scheme or configuration support inside the branch.&lt;/p&gt;
&lt;p&gt;If that is done, we will take a look at the scheme/configuration stuff.&lt;/p&gt;
&lt;p&gt;The current state only handles the highlighting, folding is ATM out of order. It speaks for the quality of Volker&amp;#8217;s KSyntaxHighlighting implementation that with minimal additions only 1-2 hours of work did lead to a &amp;#8220;usable&amp;#8221; result.&lt;/p&gt;
&lt;p&gt;=&amp;gt; obligatory screenshot&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-4153&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/07/kwrite_ksyntaxhighlighting.png&#34; alt=&#34;&#34; width=&#34;812&#34; height=&#34;807&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/07/kwrite_ksyntaxhighlighting.png 812w, https://kate-editor.org/wp-content/uploads/2018/07/kwrite_ksyntaxhighlighting-150x150.png 150w, https://kate-editor.org/wp-content/uploads/2018/07/kwrite_ksyntaxhighlighting-300x298.png 300w, https://kate-editor.org/wp-content/uploads/2018/07/kwrite_ksyntaxhighlighting-768x763.png 768w&#34; sizes=&#34;(max-width: 812px) 100vw, 812px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Beside the missing folding markers, it doesn&amp;#8217;t look that bad, or?&lt;/p&gt;
&lt;p&gt;I hope we can work on that during Akademy, too, to finally move on and not keep all things duplicated just because we got no time to work on it.&lt;/p&gt;
&lt;p&gt;Btw., thanks again to Volker for the work on the framework!&lt;/p&gt;</description></item><item><title>Going to Akademy, too ;)</title><link>https://kate-editor.org/2018/07/31/going-to-akademy-too/</link><pubDate>Tue, 31 Jul 2018 19:43:11 +0000</pubDate><guid>https://kate-editor.org/2018/07/31/going-to-akademy-too/</guid><description>&lt;p&gt;Like Dominik, I will be around the whole Akademy, too.&lt;/p&gt;
&lt;p&gt;Looking forward to see new and old friends, lets have a productive week there!&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://akademy.kde.org/2018&#34;&gt;&lt;img class=&#34;aligncenter wp-image-4142 size-full&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner.jpg&#34; alt=&#34;&#34; width=&#34;840&#34; height=&#34;206&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner.jpg 840w, https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner-300x74.jpg 300w, https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner-768x188.jpg 768w&#34; sizes=&#34;(max-width: 840px) 100vw, 840px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Going to Akademy</title><link>https://kate-editor.org/2018/07/28/4141/</link><pubDate>Sat, 28 Jul 2018 10:33:45 +0000</pubDate><guid>https://kate-editor.org/2018/07/28/4141/</guid><description>&lt;p&gt;&lt;a href=&#34;https://akademy.kde.org/2018&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-4142&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner.jpg&#34; alt=&#34;&#34; width=&#34;840&#34; height=&#34;206&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner.jpg 840w, https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner-300x74.jpg 300w, https://kate-editor.org/wp-content/uploads/2018/07/going_to_akademy_banner-768x188.jpg 768w&#34; sizes=&#34;(max-width: 840px) 100vw, 840px&#34; /&gt;&lt;/a&gt;Of course, I am going to Akademy. I&amp;#8217;ll be there from Friday 10th to Saturday 18th. See you! :-)&lt;/p&gt;</description></item><item><title>Improving Syntax Highlighting Files</title><link>https://kate-editor.org/2018/03/10/improving-syntax-highlighting-files/</link><pubDate>Sat, 10 Mar 2018 20:54:47 +0000</pubDate><guid>https://kate-editor.org/2018/03/10/improving-syntax-highlighting-files/</guid><description>&lt;p&gt;When building the KSyntaxHighlighting framework, the syntax highlighting xml files are compiled into the KSyntaxHighlighting library. In order to do so, we have a small little helper program that generates an index of all xml files. This indexer also validates the xml files against the XML Schema, and performs some more sanity checks.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://phabricator.kde.org/D10621&#34;&gt;Review request D10621&lt;/a&gt; tries to extend the indexer even further and suggest optimizations for our highlighting files. For instance, the rule&lt;/p&gt;
&lt;pre&gt;&amp;lt;&lt;strong&gt;AnyChar&lt;/strong&gt; context=&#34;#stay&#34; &lt;strong&gt;String&lt;/strong&gt;=&#34;&amp;space;&#34; attribute=&#34;Normal Text&#34; /&amp;gt;&lt;/pre&gt;
&lt;p&gt;should be replaced by the faster rule&lt;/p&gt;
&lt;pre&gt;&amp;lt;&lt;strong&gt;DetectChar&lt;/strong&gt; context=&#34;#stay&#34; &lt;strong&gt;char&lt;/strong&gt;=&#34;&amp;space;&#34; attribute=&#34;Normal Text&#34; /&amp;gt;&lt;/pre&gt;
&lt;p&gt;Similarly, the rule&lt;/p&gt;
&lt;pre&gt;&amp;lt;RegExpr attribute=&#34;Normal&#34; context=&#34;conditionNot&#34; String=&#34;&lt;strong&gt;\b&lt;/strong&gt;not&lt;strong&gt;\b&lt;/strong&gt;&#34; lookAhead=&#34;true&#34; insensitive=&#34;true&#34;/&amp;gt;&lt;/pre&gt;
&lt;p&gt;should be replaced by the much faster rule&lt;/p&gt;
&lt;pre&gt;&amp;lt;&lt;strong&gt;WordDetect&lt;/strong&gt; attribute=&#34;Normal&#34; context=&#34;conditionNot&#34; String=&#34;not&#34; lookAhead=&#34;true&#34; insensitive=&#34;true&#34;/&amp;gt;&lt;/pre&gt;
&lt;p&gt;The proposed patch above generates &lt;a href=&#34;https://paste.kde.org/p7iareuxc#line-1&#34;&gt;more than 1500 suggestions to improve our highlighting files,&lt;/a&gt; so a lot of work. Help would be very much appreciated. So if you would like to contribute to KDE and are looking for simple work to do, then feel free to get started by sending improved highlighting files to us via &lt;a href=&#34;https://phabricator.kde.org/&#34;&gt;phabricator.kde.org &lt;/a&gt;(click &amp;#8220;Code Review&amp;#8221; on the left, and then &amp;#8220;Create Diff&amp;#8221; on the top right &amp;#8211; or even better &lt;a href=&#34;https://community.kde.org/Infrastructure/Phabricator&#34;&gt;use arc&lt;/a&gt; to automatically manage your patches). Oh, and please increase the version number in the xml files whenever you provide a patch :-)&lt;/p&gt;</description></item><item><title>Article about cmake</title><link>https://kate-editor.org/2018/02/21/article-about-cmake/</link><pubDate>Wed, 21 Feb 2018 22:21:19 +0000</pubDate><guid>https://kate-editor.org/2018/02/21/article-about-cmake/</guid><description>&lt;p&gt;Just in case someone is interested: two days ago a very good article about cmake popped up, called &lt;a href=&#34;https://pabloariasal.github.io/2018/02/19/its-time-to-do-cmake-right/&#34;&gt;It&amp;#8217;s Time to do CMake Right&lt;/a&gt;. There also is a discussion about it &lt;a href=&#34;https://www.reddit.com/r/cpp/comments/7yps20/its_time_to_do_cmake_right/&#34;&gt;on reddit/r/cpp&lt;/a&gt;. happy reading :)&lt;/p&gt;</description></item><item><title>Rendering issues and the power of open source</title><link>https://kate-editor.org/2018/02/10/__trashed/</link><pubDate>Sat, 10 Feb 2018 20:59:29 +0000</pubDate><guid>https://kate-editor.org/2018/02/10/__trashed/</guid><description>&lt;p&gt;After a long time of constant distraction by my daily work, I finally found again a bit time to take care of KTextEditor/Kate/&amp;#8230; issues.&lt;/p&gt;
&lt;p&gt;One thing that really started to be an itch I wanted to scratch is some rendering fault that occur with &amp;#8216;special&amp;#8217; font sizes.&lt;/p&gt;
&lt;p&gt;Given I wanted to do again a bit work on the macOS port, I was really annoyed that on my screen the only application with text rendering issues was &amp;#8220;my&amp;#8221; one :/&lt;/p&gt;
&lt;p&gt;I assume a lot of people have sometimes seen stuff like that in KTextEditor based applications like Kate or KDevelop:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter wp-image-4114 size-full&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/02/vertical_white_lines.png&#34; alt=&#34;&#34; width=&#34;870&#34; height=&#34;509&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/02/vertical_white_lines.png 870w, https://kate-editor.org/wp-content/uploads/2018/02/vertical_white_lines-300x176.png 300w, https://kate-editor.org/wp-content/uploads/2018/02/vertical_white_lines-768x449.png 768w&#34; sizes=&#34;(max-width: 870px) 100vw, 870px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-4115&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/02/white_artifacts.png&#34; alt=&#34;&#34; width=&#34;912&#34; height=&#34;152&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/02/white_artifacts.png 912w, https://kate-editor.org/wp-content/uploads/2018/02/white_artifacts-300x50.png 300w, https://kate-editor.org/wp-content/uploads/2018/02/white_artifacts-768x128.png 768w&#34; sizes=&#34;(max-width: 912px) 100vw, 912px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;These small white lines really stick out like a sore thumb :( It looked like some off-by-one rounding issue, surely one should be able to find it&amp;#8230;&lt;/p&gt;
&lt;p&gt;I tried to track down where in our rendering in KTextEditor we do create these artifacts, but I never found any place that looks like a possible cause.&lt;/p&gt;
&lt;p&gt;After a bit more tinkering it became obvious that actually it would be more or less impossible for the KTextEditor code to mess up the painting in such a way, as we normally draw one line more or less as one thing using QTextLayout that handles the painting of the selection background, too.&lt;/p&gt;
&lt;p&gt;Using QtCreator as an non-KTextEditor based application that uses the Qt layouting &amp;amp; rendering it was possible to get similar effects on macOS (or X11):&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;img class=&#34;aligncenter size-full wp-image-4116&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/02/Bildschirmfoto-2018-01-27-um-16.50.19.png&#34; alt=&#34;&#34; width=&#34;1430&#34; height=&#34;300&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/02/Bildschirmfoto-2018-01-27-um-16.50.19.png 1430w, https://kate-editor.org/wp-content/uploads/2018/02/Bildschirmfoto-2018-01-27-um-16.50.19-300x63.png 300w, https://kate-editor.org/wp-content/uploads/2018/02/Bildschirmfoto-2018-01-27-um-16.50.19-768x161.png 768w, https://kate-editor.org/wp-content/uploads/2018/02/Bildschirmfoto-2018-01-27-um-16.50.19-1024x215.png 1024w&#34; sizes=&#34;(max-width: 1430px) 100vw, 1430px&#34; /&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;:=) Good thing that Qt is open source. A quick look into the qtextlayout.cpp and a qt5 compile later, I was able to trace the issue down to some qFloor calls for painting the selections.&lt;/p&gt;
&lt;p&gt;I hope my patch is correct and will be accepted (&lt;a href=&#34;https://bugreports.qt.io/browse/QTBUG-66036&#34;&gt;QTBUG-66036&lt;/a&gt; / &lt;a href=&#34;https://codereview.qt-project.org/#/c/219804/&#34;&gt;Gerrit 219804&lt;/a&gt;)  or at least helps others to do the correct fix.&lt;/p&gt;
&lt;p&gt;At least for the syntaxhighlighter example shipped with Qt I was able to reproduce the issue before my patch but not afterwards.&lt;/p&gt;
&lt;p&gt;Would Qt not be open-source, I would have been at the end of the line after seeing no &amp;#8220;error&amp;#8221; in our codebase in KTextEditor.&lt;/p&gt;
&lt;p&gt;With Qt as some open-source project, it is a completely different story.&lt;/p&gt;
&lt;p&gt;Besides, the Qt documentation for &amp;#8220;how to build it&amp;#8221; and &amp;#8220;how to contribute&amp;#8221; on the &lt;a href=&#34;http://wiki.qt.io/Main&#34;&gt;Qt Wiki&lt;/a&gt; are well enough to understand that I was able to nicely compile the stuff from scratch on macOS and provide the Gerrit review request in no time.&lt;/p&gt;</description></item><item><title>Fancy Terminal Prompt</title><link>https://kate-editor.org/2018/01/08/fancy-terminal-prompt/</link><pubDate>Mon, 08 Jan 2018 20:55:15 +0000</pubDate><guid>https://kate-editor.org/2018/01/08/fancy-terminal-prompt/</guid><description>&lt;p&gt;By default, the terminal looks as follows on my Linux distribution:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-4108&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/01/konsole.png&#34; alt=&#34;&#34; width=&#34;864&#34; height=&#34;420&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/01/konsole.png 864w, https://kate-editor.org/wp-content/uploads/2018/01/konsole-300x146.png 300w, https://kate-editor.org/wp-content/uploads/2018/01/konsole-768x373.png 768w&#34; sizes=&#34;(max-width: 864px) 100vw, 864px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;However, if you are working a lot on the terminal, there are a lot of scripts and tricks available in the net that improve the information displayed in the terminal in many ways. For instance, since many many years, I have the following at the end of my ~/.bashrc:&lt;/p&gt;
&lt;pre&gt;# use a fancy prompt
PS1=&#34;\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]&#34;
PS1=&#34;$PS1 \`if [ \$? = 0 ]; then echo -e &#39;\[\033[01;32m\]:-)&#39;;&#34;
PS1=&#34;$PS1 else echo -e &#39;\[\033[01;31m\]:-(&#39; \$?; fi\`\[\033[00m\]&#34;
PS1=&#34;$PS1 \$(__git_ps1 \&#34;(%s)\&#34;) \$ &#34;&lt;/pre&gt;
&lt;p&gt;Once you open a new terminal, then the appearance is as follows:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-4109&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2018/01/konsole-nice.png&#34; alt=&#34;&#34; width=&#34;864&#34; height=&#34;420&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2018/01/konsole-nice.png 864w, https://kate-editor.org/wp-content/uploads/2018/01/konsole-nice-300x146.png 300w, https://kate-editor.org/wp-content/uploads/2018/01/konsole-nice-768x373.png 768w&#34; sizes=&#34;(max-width: 864px) 100vw, 864px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;As you can see, now I have nice colors: The hostname is green, the folder is blue, the return value of the last executed command is a green :-) in case of success (exit code = 0), and a red :-( in case of errors (exit code != 0). In addition, the last part shows the current git branch (master). Showing the git branch is very useful especially if you are using arc a lot and work with many branches.&lt;/p&gt;
&lt;p&gt;I am sure there are many more cool additions to the terminal. If you have some nice additions, please share &amp;#8211; maybe also as a new blog?&lt;/p&gt;</description></item><item><title>Tracking KDE Development</title><link>https://kate-editor.org/2017/12/31/tracking-kde-development/</link><pubDate>Sun, 31 Dec 2017 18:00:27 +0000</pubDate><guid>https://kate-editor.org/2017/12/31/tracking-kde-development/</guid><description>&lt;p&gt;A central place to track KDE development is the &lt;a href=&#34;https://mail.kde.org/mailman/listinfo/kde-commits&#34;&gt;kde-commits@kde.org&lt;/a&gt; mailing list. To this mailing list, &lt;em&gt;all&lt;/em&gt; code changes are sent, containing the log message as well as the diff that quickly shows what really changed. In the early days of KDE development, the changes were maintained by the CVS version control system. Later, this was changed to subversion. Nowadays, KDE mostly uses git, but some svn modules are still around.&lt;/p&gt;
&lt;p&gt;Since KDE is developed by many contributors, the  kde-commits@kde.org mailing list obviously has high traffic, ranging from ~100 mails up to 400 mails a day (see &lt;a href=&#34;https://marc.info/?l=kde-commits&#34;&gt;marc.info&lt;/a&gt; for statistics).&lt;/p&gt;
&lt;p&gt;Many developers are subscribed to this mailing list. However, due to high traffic and possibly many changes that are unrelated to your pet project, a commit filter was invented, which was available on &lt;a href=&#34;https://commitfilter.kde.org&#34;&gt;https://commitfilter.kde.org&lt;/a&gt; for a long time. Essentially, this commit filter allowed to easily setup filters in terms of regular expressions, such that you&amp;#8217;d only get mails for changes you are interested in. While this was convenient, the commit filter also had its drawbacks: Instead of getting all KDE changes, you missed a lot possibly interesting conversations: Since post-code reviews are often done by others through email conversation directly on the code changes.&lt;/p&gt;
&lt;p&gt;Nowadays, the commit filter is not available anymore, mostly for security reasons since it was unmaintained for a long time.&lt;/p&gt;
&lt;p&gt;What does that mean? I&amp;#8217;m subscribed to &lt;a href=&#34;https://mail.kde.org/mailman/listinfo/kde-commits&#34;&gt;kde-commits@kde.org&lt;/a&gt; again, getting all changes. In fact, I am enjoying skimming quickly through the changes, even doing a code review here and there.&lt;/p&gt;
&lt;p&gt;I recommend every KDE contributor to subscribe to this mailing list, since it is very interesting to see which projects are actively developed and who really contributes to KDE in person. Even better, sometimes there are discussions on this list, helping you to learn things you didn&amp;#8217;t know. Of course, nowadays we also have many code reviews on &lt;a href=&#34;https://phabricator.kde.org/&#34;&gt;phabricator&lt;/a&gt;, but still the commit mailing list is a nice addon to track KDE development.&lt;/p&gt;</description></item><item><title>Syntax Highlighting Checker</title><link>https://kate-editor.org/2017/12/03/syntax-highlighting-checker/</link><pubDate>Sun, 03 Dec 2017 17:20:47 +0000</pubDate><guid>https://kate-editor.org/2017/12/03/syntax-highlighting-checker/</guid><description>&lt;p&gt;The KTextEditor Framework uses the syntax highlighting files provided by the KSyntaxHighlighting Framework since the  &lt;a href=&#34;https://kate-editor.org/2016/11/15/ksyntaxhighlighting-a-new-syntax-highlighting-framework/&#34;&gt;KDE Frameworks release 5.28&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The KSyntaxHighlighting Framework implements Kate&amp;#8217;s highlighting system and meanwhile is used in quite some applications (e.g. LabPlot, KDE PIM). What is quite nice is that the KSyntaxHighlighting framework is nicely unit tested. And while we do not have tests for all highlighting files, we still provide some quality assurance through a compile time checker.&lt;/p&gt;
&lt;p&gt;How does it work? Well &amp;#8211; in former times, Kate loaded all highlighting .xml files from disk (through the KTextEditor framework). This lead to a slow startup over time, since there are &amp;gt;250 .xml files that needed a stat system call at startup.&lt;/p&gt;
&lt;p&gt;With the KSyntaxHighlighting Framework, all these xml files are compiled into a Qt resource (qrc file), that then is included into the KSyntaxHighlighting library.&lt;/p&gt;
&lt;p&gt;In order to create the Qt resource file, we need to iterate over all available xml files anyways. So what happens is that we take this opportunity and also scan the highlighting files for common mistakes.&lt;/p&gt;
&lt;p&gt;As of today, we are checking the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;RegExpr: A warning is raised, if a regular expression has syntax errors.&lt;/li&gt;
&lt;li&gt;DetectChars: A warning is raised, if the char=&amp;#8221;x&amp;#8221; attribute contains more or less than one character, e.g. when char=&amp;#8221;xyz&amp;#8221;, or char=&amp;#8221;\&amp;#8221; (no escaping required), or similar.&lt;/li&gt;
&lt;li&gt;Detect2Chars: Same as DetectChars, just for char=&amp;#8221;x&amp;#8221; and char1=&amp;#8221;y&amp;#8221;.&lt;/li&gt;
&lt;li&gt;Keyword lists: A warning is raised, if a keyword entry contains leading or trailing spaces. Additional trimming just takes time.&lt;/li&gt;
&lt;li&gt;Keyword lists: A warning is raised if a keyword list is unused.&lt;/li&gt;
&lt;li&gt;Keyword lists: A warning is raised if multiple keyword lists use the same me (=identifier).&lt;/li&gt;
&lt;li&gt;Keyword lists: A warning is raised if a non-existing keyword list is used.&lt;/li&gt;
&lt;li&gt;Contexts: A warning is raised, if a non-existing context is referenced.&lt;/li&gt;
&lt;li&gt;Contexts: A warning is raised, if a context is unused.&lt;/li&gt;
&lt;li&gt;Contexts: A warning is raised, if multiple contexts have the same name (identifier clash).&lt;/li&gt;
&lt;li&gt;Attributes: A warning is raised, if non-existing itemData is used.&lt;/li&gt;
&lt;li&gt;Attributes: A warning is raised, if multiple itemDatas use the same name (identifier clash).&lt;/li&gt;
&lt;li&gt;Attributes: A warning is raised, if an itemData is unused.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This list helps us nicely to catch many mistakes at compile time even before running unit tests.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update (2017-12-17):&lt;/strong&gt; All above issues are fixed for all highlighting files starting with the KSyntaxHighlighting 5.42 framework, to be released in January 2018.&lt;/p&gt;</description></item><item><title>New Kate on Windows installer</title><link>https://kate-editor.org/2017/09/17/new-kate-on-windows-installer/</link><pubDate>Sun, 17 Sep 2017 20:28:57 +0000</pubDate><guid>https://kate-editor.org/2017/09/17/new-kate-on-windows-installer/</guid><description>&lt;p&gt;We have a new round of Kate installers for Windows. This round comes with some installer-bug fixes (all project plugin dlls) and support for editorconfig files &lt;a href=&#34;http://editorconfig.org/&#34;&gt;http://editorconfig.org/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2017/09/Screenshot_20170917_220757.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-4067&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2017/09/Screenshot_20170917_220757.png&#34; alt=&#34;Project plugin analyzing code&#34; width=&#34;684&#34; height=&#34;478&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2017/09/Screenshot_20170917_220757.png 684w, https://kate-editor.org/wp-content/uploads/2017/09/Screenshot_20170917_220757-300x210.png 300w&#34; sizes=&#34;(max-width: 684px) 100vw, 684px&#34; /&gt;&lt;/a&gt;In the above screen-shot you can see the project plugin analyzing Kate code. This works if you have cppcheck installed and added to the path.&lt;/p&gt;
&lt;p&gt;Grab the installers now at download.kde.org:  &lt;a href=&#34;https://download.kde.org/stable/kate/Kate-setup-17.08.1-KF5.38-32bit.exe&#34;&gt;Kate-setup-17.08.1-KF5.38-32bit&lt;/a&gt; or &lt;a href=&#34;https://download.kde.org/stable/kate/Kate-setup-17.08.1-KF5.38-64bit.exe&#34;&gt;Kate-setup-17.08.1-KF5.38-64bit&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kate is now translated also on Windows!</title><link>https://kate-editor.org/2017/07/20/kate-is-now-translated-also-on-windows/</link><pubDate>Thu, 20 Jul 2017 19:04:47 +0000</pubDate><guid>https://kate-editor.org/2017/07/20/kate-is-now-translated-also-on-windows/</guid><description>&lt;p&gt;This release includes all the feature-enhancements the Linux version has received (&lt;a href=&#34;http://(https://www.kde.org/announcements/kde-frameworks-5.36.0.php&#34;&gt;frameworks announcements for 5.36.0&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&amp;#8211; Actually working spell-checking.&lt;br /&gt;
&amp;#8211; Possibility to switch interface language.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EDIT:&lt;/strong&gt; Adding an extra fall-back UI language does not wok properly yet.&lt;/p&gt;
&lt;figure id=&#34;attachment_4052&#34; aria-describedby=&#34;caption-attachment-4052&#34; style=&#34;width: 783px&#34; class=&#34;wp-caption aligncenter&#34;&gt;[&lt;img class=&#34;size-full wp-image-4052&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2017/07/Kate-Sweedish.png&#34; alt=&#34;Kate in Sweedish&#34; width=&#34;783&#34; height=&#34;619&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2017/07/Kate-Sweedish.png 783w, https://kate-editor.org/wp-content/uploads/2017/07/Kate-Sweedish-300x237.png 300w, https://kate-editor.org/wp-content/uploads/2017/07/Kate-Sweedish-768x607.png 768w&#34; sizes=&#34;(max-width: 783px) 100vw, 783px&#34; /&gt;][2]&lt;figcaption id=&#34;caption-attachment-4052&#34; class=&#34;wp-caption-text&#34;&gt;Kate in Sweedish&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Grab it now at download.kde.org:  &lt;a href=&#34;https://download.kde.org/stable/kate/Kate-setup-17.04.3-KF5.36-32bit.exe&#34;&gt;Kate-setup-17.04.3-KF5.36-32bit&lt;/a&gt; or &lt;a href=&#34;https://download.kde.org/stable/kate/Kate-setup-17.04.3-KF5.36-64bit.exe&#34;&gt;Kate-setup-17.04.3-KF5.36-64bit&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kate 17.04.1 available for Windows</title><link>https://kate-editor.org/2017/05/22/kate-17-04-1-available-for-windows/</link><pubDate>Mon, 22 May 2017 19:03:48 +0000</pubDate><guid>https://kate-editor.org/2017/05/22/kate-17-04-1-available-for-windows/</guid><description>&lt;p&gt;Installers for Kate 17.04.1 are now available for download!&lt;/p&gt;
&lt;p&gt;This release includes, besides bug-fixing and features, an update to the search in files plugin. The search-while-you-type in the current file should not &amp;#8220;destroy&amp;#8221; your last search in files results as easily as previously. The search-combo-box-history handling is also improved.&lt;/p&gt;
&lt;p&gt;Grab it now at download.kde.org:  &lt;a href=&#34;https://download.kde.org/stable/kate/Kate-setup-17.04.1-KF5.34-32bit.exe&#34;&gt;Kate-setup-17.04.1-KF5.34-32bit&lt;/a&gt; or &lt;a href=&#34;https://download.kde.org/stable/kate/Kate-setup-17.04.1-KF5.34-64bit.exe&#34;&gt;Kate-setup-17.04.1-KF5.34-64bit&lt;/a&gt;&lt;/p&gt;</description></item><item><title>KTextEditor depends on KSyntaxHighlighting</title><link>https://kate-editor.org/2017/01/23/ktexteditor-depends-on-ksyntaxhighlighting/</link><pubDate>Mon, 23 Jan 2017 21:02:51 +0000</pubDate><guid>https://kate-editor.org/2017/01/23/ktexteditor-depends-on-ksyntaxhighlighting/</guid><description>
&lt;p&gt;Recently, the &lt;a href=&#34;https://kate-editor.org/2016/11/15/ksyntaxhighlighting-a-new-syntax-highlighting-framework/&#34;&gt;KSyntaxHighlighting framework&lt;/a&gt; was added to the KDE Frameworks 5.29 release. And starting with KDE Frameworks 5.29, KTextEditor depends on KSyntaxHighlighting. This also means that KTextEditor now queries KSyntaxHighlighting for available xml highlighting files. As such, the location for syntax highlighting files changed from &lt;tt&gt;$HOME/.local/share/katepart5/syntax&lt;/tt&gt; to&lt;/p&gt;
&lt;pre&gt;&lt;strong&gt;$HOME/.local/share/org.kde.syntax-highlighting/syntax&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;So if you want to add your own syntax highlighting files to Kate/KDevelop, then you have to use the new location.&lt;/p&gt;
&lt;p&gt;By the way, in former times, all syntax highlighting files were located somewhere in /usr/share/. However, since some time, there are no xml highlighting files anymore, since all xml files are compiled into the KSyntaxHighlighting library by default. This leads to much faster startup times for KTextEditor-based applications.&lt;/p&gt;
&lt;h4 id=&#34;running-unit-tests&#34;&gt;Running Unit Tests&lt;/h4&gt;
&lt;p&gt;If you build Kate (or KTextEditor, or KSyntaxHighlighting) from sources and run the unit tests (`&lt;code&gt;make test&lt;/code&gt;`), then the location typically is &lt;tt&gt;/$HOME/.qttest/share/org.kde.syntax-highlighting/syntax&lt;/tt&gt;.&lt;/p&gt;</description></item><item><title>FirstAid – PDF Help Viewer</title><link>https://kate-editor.org/2017/01/15/firstaid-pdf-help-viewer/</link><pubDate>Sun, 15 Jan 2017 13:18:32 +0000</pubDate><guid>https://kate-editor.org/2017/01/15/firstaid-pdf-help-viewer/</guid><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;in the recent months, I didn&amp;#8217;t find much time to spend on Kate/KTextEditor development. But at least I was now able to spend a bit more time on OpenSource &amp;amp; Qt things even during work time in &lt;a href=&#34;https://www.absint.com/&#34;&gt;our company&lt;/a&gt;. Normally I am stuck there with low level binary or source analysis work.&lt;/p&gt;
&lt;p&gt;For &lt;a href=&#34;https://www.absint.com/products.htm&#34;&gt;our products&lt;/a&gt;, we were in the need of some online help. As our documentation is delivered as PDFs generated by the tools of the &lt;a href=&#34;https://www.tug.org/texlive/&#34;&gt;TeX Live&lt;/a&gt; distro, a natural idea was to use some PDF viewer and integrate it more tightly in our software than just &amp;#8220;open the manual at page 1&amp;#8221;.&lt;/p&gt;
&lt;p&gt;We did review PDF viewers out there, but most (like &lt;a href=&#34;https://okular.kde.org/&#34;&gt;Okular&lt;/a&gt;) have too many dependencies to be just bundled with our product (or a license not permitting that).&lt;/p&gt;
&lt;p&gt;Without bundling, we can&amp;#8217;t ensure that the tight coupling is working, without starting to test the integration with X different viewers which more or less all need other kinds of command line arguments to open the right page or even lack that feature or will not reuse an already running instance, &amp;#8230;.&lt;/p&gt;
&lt;p&gt;Therefore, as our GUIs are developed with Qt anyways, we did take a look at &lt;a href=&#34;https://poppler.freedesktop.org/&#34;&gt;libpoppler&lt;/a&gt; (and its Qt 5 bindings), which is the base of Okular, too.&lt;/p&gt;
&lt;p&gt;Easy enough, taking the small demo program shipped with the library and adding a small stdin based interface to tell it &amp;#8220;goto &lt;named reference&gt;&amp;#8221; we arrived at some small PDF viewer that is fit enough for our use case.&lt;/p&gt;
&lt;p&gt;We named the thing &amp;#8220;FirstAid&amp;#8221;, the sources can be grabbed at &lt;a href=&#34;https://github.com/AbsInt/FirstAid&#34;&gt;github.com/AbsInt/FirstAid.&lt;/a&gt; Like libpoppler and the demo, its licensed as GPLv2+.&lt;/p&gt;
&lt;p&gt;As already the README states, the aim of this small project is not to replace some full fledged viewer like Okular, the design goal is to have a small viewer that is auto-started by some host application and will jump to the requested labels for a tightly coupled online help. It can be used as a pure standalone PDF viewer, too, but that is more intended for testing it e.g. on the documents that should later be shown as online help.&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-4010&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2017/01/fristaid.png&#34; alt=&#34;FirstAid&#34; width=&#34;842&#34; height=&#34;774&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2017/01/fristaid.png 842w, https://kate-editor.org/wp-content/uploads/2017/01/fristaid-300x276.png 300w, https://kate-editor.org/wp-content/uploads/2017/01/fristaid-768x706.png 768w&#34; sizes=&#34;(max-width: 842px) 100vw, 842px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;I already annoyed Albert with some small issue I had with libpoppler, perhaps I will provide more useful fixes in the future if more things come up during FirstAid development. In any case, already THANKS A LOT for the Qt 5 bindings around libpoppler, they work nicely for us!&lt;/p&gt;
&lt;p&gt;I really think this small project shows the benefit of OpenSource: We needed a PDF viewer, we were able to create a small one in less than a month based on OpenSource libraries and we can give back the results to the community (if it is useful for others is a different story, but perhaps other people have the same itch to scratch, if not, ignore it). I hope more possibilities for such things come up at work in the future.&lt;/p&gt;
&lt;p&gt;For building: It should build out of the box if you have some recent Qt and libpoppler-qt5-dev installed, at least the &lt;a href=&#34;https://travis-ci.org/AbsInt/FirstAid&#34;&gt;Travis CI&lt;/a&gt; is able to build it out of the box with the &lt;a href=&#34;https://github.com/AbsInt/FirstAid/blob/master/.travis.yml&#34;&gt;given config&lt;/a&gt;. For me, it shows some small bugs if used with Qt 5.&lt;sup&gt;6&lt;/sup&gt;&amp;frasl;&lt;sub&gt;7&lt;/sub&gt; compared to the Qt 5.8 Beta I used here for testing.&lt;/p&gt;</description></item><item><title>Windows installer for Kate 16.08.3 KF5.28</title><link>https://kate-editor.org/2016/11/21/windows-installer-for-kate-16-08-3-kf5-28/</link><pubDate>Mon, 21 Nov 2016 09:59:48 +0000</pubDate><guid>https://kate-editor.org/2016/11/21/windows-installer-for-kate-16-08-3-kf5-28/</guid><description>&lt;p&gt;New Kate installer for Windows!&lt;/p&gt;
&lt;p&gt;Except for the general bug-fixes and feature additions in Kate and KF5 this installer also fixes a rename file failure bug by including the needed KIO dll.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2016/11/Kate1.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3993&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/11/Kate1.png&#34; alt=&#34;Kate 16.08.3 KF5.28&#34; width=&#34;704&#34; height=&#34;615&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2016/11/Kate1.png 704w, https://kate-editor.org/wp-content/uploads/2016/11/Kate1-300x262.png 300w&#34; sizes=&#34;(max-width: 704px) 100vw, 704px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Grab it while it is hot: &lt;a href=&#34;http://download.kde.org/stable/kate/Kate-setup-16.08.3-KF5.28-64bit.exe&#34;&gt;Kate 16.08.3 KF5.28 64bit&lt;/a&gt; or &lt;a href=&#34;http://download.kde.org/stable/kate/Kate-setup-16.08.3-KF5.28-32bit.exe&#34;&gt;Kate 16.08.3 KF5.28 32bit&lt;/a&gt;&lt;/p&gt;</description></item><item><title>KSyntaxHighlighting – A new Syntax Highlighting Framework</title><link>https://kate-editor.org/2016/11/15/ksyntaxhighlighting-a-new-syntax-highlighting-framework/</link><pubDate>Tue, 15 Nov 2016 21:35:36 +0000</pubDate><guid>https://kate-editor.org/2016/11/15/ksyntaxhighlighting-a-new-syntax-highlighting-framework/</guid><description>&lt;p&gt;Today, &lt;a href=&#34;https://www.kde.org/announcements/kde-frameworks-5.28.0.php&#34;&gt;KDE Frameworks 5.28&lt;/a&gt; was released with the brand new KSyntaxHighlighting framework. The announcement says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
New framework: syntax-highlighting&lt;br /&gt; Syntax highlighting engine for Kate syntax definitions
&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
This is a stand-alone implementation of the Kate syntax highlighting engine. It&amp;#8217;s meant as a building block for text editors as well as for simple highlighted text rendering (e.g. as HTML), supporting both integration with a custom editor as well as a ready-to-use QSyntaxHighlighter sub-class.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This year, on March 31st, KDE&amp;#8217;s advanced text editor Kate had its &lt;a href=&#34;https://kate-editor.org/2010/08/15/kate-history/&#34;&gt;15th birthday.&lt;/a&gt; 15 years are a long time in the software world, and during this time Kate won the hearts of many users and developers. As text editing component, Kate uses the KTextEditor framework, which is used also by applications such as &lt;a href=&#34;https://www.kdevelop.org/&#34;&gt;KDevelop&lt;/a&gt; or &lt;a href=&#34;https://userbase.kde.org/Kile&#34;&gt;Kile&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The KTextEditor framework essentially is an embeddable text editing component. It ships everything from painting the line numbers, the background color, the text lines with syntax highlighting, the blinking cursor to code completion and &lt;a href=&#34;https://kate-editor.org/about-kate/&#34;&gt;many more features&lt;/a&gt;. One major feature is its very powerful syntax highlighting engine, enabling us to properly highlight around 275 languages.&lt;/p&gt;
&lt;p&gt;Each syntax highlighting is defined in terms of an xml file (&lt;a href=&#34;https://kate-editor.org/syntax/5.28/&#34;&gt;many examples&lt;/a&gt;), as described in &lt;a href=&#34;https://docs.kde.org/stable5/en/applications/katepart/highlight.html&#34;&gt;Kate&amp;#8217;s documentation&lt;/a&gt;. These xml files are read by KTextEditor and the context based highlighting rules in these files are then used to highlight the file contents.&lt;/p&gt;
&lt;p&gt;For the last 15 years, this syntax highlighting engine was tightly coupled with the rest of the KTextEditor code. As such, it was not possible to simply reuse the highlighting engine in other projects without using KTextEditor. This lead to the unfortunate situation, where e.g. the Qt Creator developers partly reimplemented Kate&amp;#8217;s syntax highlighting engine in order to support other languages next to C/C++.&lt;/p&gt;
&lt;p&gt;This changed as of today: The &lt;a href=&#34;https://phabricator.kde.org/diffusion/216/repository/master/&#34;&gt;KSyntaxHighlighting framework&lt;/a&gt; is a &lt;a href=&#34;https://dot.kde.org/2013/09/25/frameworks-5&#34;&gt;tier 1 functional framework&lt;/a&gt; that solely depends on Qt (no dependency on Qt Widgets or QML), is very well unit tested, and licensed under the LGPLv2+. As mentioned in the announcement and in the &lt;a href=&#34;https://api.kde.org/frameworks/syntax-highlighting/html/index.html&#34;&gt;API documentation&lt;/a&gt;, it is a stand-alone implementation of the Kate syntax highlighting engine. It&amp;#8217;s meant as a building block for text editors as well as for simple highlighted text rendering (e.g. as HTML), supporting both integration with a custom editor as well as a ready-to-use &lt;a href=&#34;https://api.kde.org/frameworks/syntax-highlighting/html/classKSyntaxHighlighting_1_1SyntaxHighlighter.html&#34;&gt;QSyntaxHighlighter sub-class&lt;/a&gt;. This also implies that you can reuse this framework to add syntax highlighting to e.g. QML applications.&lt;/p&gt;
&lt;p&gt;We hope that other applications such as Qt Creator will start to use the KSyntaxHighlighting framework, since it allows us to cleanly share one single implementation of the syntax highlighting engine.&lt;/p&gt;
&lt;p&gt;In the next KDE Frameworks releases, we will remove KTextEditors syntax highlighting engine in favor of just using KSyntaxHighlighting. This will happen step by step. For instance, we already have &lt;a href=&#34;https://git.reviewboard.kde.org/r/129384/&#34;&gt;a pending patch&lt;/a&gt; that removes all xml files from KTextEditor.git in favor of using the ones shipped by the KSyntaxHighlighting framework. That means, with the KDE Frameworks 5.29 release, Kate&amp;#8217;s and KTextEditors dependency (and other application&amp;#8217;s dependencies) will look as follows:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2016/11/kte-kf5.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3983&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/11/kte-kf5.png&#34; alt=&#34;KTextEditor and KSyntaxHighlighting&#34; width=&#34;696&#34; height=&#34;293&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2016/11/kte-kf5.png 696w, https://kate-editor.org/wp-content/uploads/2016/11/kte-kf5-300x126.png 300w&#34; sizes=&#34;(max-width: 696px) 100vw, 696px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is quite an interesting change, especially since moving the syntax highlighting engine out of KTextEditor was already planned since &lt;a href=&#34;https://kate-editor.org/2013/11/11/kate-on-5-the-future-of-ktexteditor-and-kate-part/&#34;&gt;Akademy 2013 in Bilbao&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
Another idea was raised at this year’s &lt;a title=&#34;Akademy 2013&#34; href=&#34;http://akademy2013.kde.org/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Akademy in Bilbao&lt;/a&gt;: Split Kate Part’s highlighting into a separate library. This way, other applications could use the Kate Part’s highlighting system. Think of a command line tool to create highlighted html pages, or a syntax highlighter for QTextEdits. The highlighting engine right now is mostly internal to Kate Part, so such a split could happen also later after the initial release of KTextEditor on 5.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This goal is now reached &amp;#8211; thanks to Volker Krause who did most of the work. Pretty cool!&lt;/p&gt;
&lt;p&gt;If you are interested in using the KSyntaxHighlighting framework, feel free to &lt;a href=&#34;mailto:kwrite-devel@kde.org&#34;&gt;contact us on our mailing list&lt;/a&gt;. Further, we welcome all contributions, so please send patches to our mailing list, or post them on &lt;a href=&#34;https://phabricator.kde.org/differential/diff/create/&#34;&gt;phabricator&lt;/a&gt;. (You can also find the &lt;a href=&#34;https://github.com/KDE/syntax-highlighting&#34;&gt;KSyntaxHighlighting framework on github&lt;/a&gt; for convenience, but it&amp;#8217;s not our primary platform).&lt;/p&gt;
&lt;p&gt;You can also support Kate and the KDE Frameworks by &lt;a href=&#34;https://www.kde.org/community/donations/index.php#money&#34;&gt;donating to the KDE e.V.&lt;/a&gt;, KDE&amp;#8217;s non-profit organization.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&#34;color: #ff0000;&#34;&gt;Update:&lt;/span&gt; Changed XML Syntax Definition File Location&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Starting with KDE Frameworks 5.29, the KTextEditor framework now uses the syntax highlighting files from KSyntaxHighlighting. These files are located in &lt;tt&gt;$HOME/.local/share/org.kde.syntax-highlighting/syntax&lt;/tt&gt;. If this folder does not exist, just create it. Futher, you will not find any syntax highlighting files in your system installation, since the syntax highlighting files shipped with KSyntaxHighlighting are compiled into the executable.&lt;/p&gt;</description></item><item><title>Embedded Notifications for Externally Modified Files</title><link>https://kate-editor.org/2016/09/07/embedded-notifications-for-externally-modified-files/</link><pubDate>Wed, 07 Sep 2016 20:51:33 +0000</pubDate><guid>https://kate-editor.org/2016/09/07/embedded-notifications-for-externally-modified-files/</guid><description>&lt;p&gt;In the past, KTextEditor notified the user about externally modified files with a modal dialog. Many users were annoyed by this behavior.&lt;/p&gt;
&lt;p&gt;Starting with KDE Frameworks 5.27, KTextEditor will show an embedded widget for external changes, see:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2016/09/changed-notification.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3963&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/09/changed-notification.png&#34; alt=&#34;Change Notifications&#34; width=&#34;890&#34; height=&#34;491&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2016/09/changed-notification.png 890w, https://kate-editor.org/wp-content/uploads/2016/09/changed-notification-300x166.png 300w, https://kate-editor.org/wp-content/uploads/2016/09/changed-notification-768x424.png 768w, https://kate-editor.org/wp-content/uploads/2016/09/changed-notification-672x372.png 672w&#34; sizes=&#34;(max-width: 890px) 100vw, 890px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kate &amp; Akademy Awards 2016</title><link>https://kate-editor.org/2016/09/07/kate-akademy-awards-2016/</link><pubDate>Wed, 07 Sep 2016 12:34:23 +0000</pubDate><guid>https://kate-editor.org/2016/09/07/kate-akademy-awards-2016/</guid><description>&lt;p&gt;Dominik and me got the Akademy 2016 Award for our work on Kate and KTextEditor.&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter wp-image-3956 size-large&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/09/29370954391_9422233b80_o-1024x673.jpg&#34; alt=&#34;29370954391_9422233b80_o&#34; width=&#34;474&#34; height=&#34;312&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2016/09/29370954391_9422233b80_o-1024x673.jpg 1024w, https://kate-editor.org/wp-content/uploads/2016/09/29370954391_9422233b80_o-300x197.jpg 300w, https://kate-editor.org/wp-content/uploads/2016/09/29370954391_9422233b80_o-768x505.jpg 768w&#34; sizes=&#34;(max-width: 474px) 100vw, 474px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;I want to pass that on to all other contributors of both the application and the framework: &lt;strong&gt;You all rock and people seem to appreciate our work!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lets keep on improving our stuff and providing people with a very usable editor and editor component for various use cases.&lt;/p&gt;</description></item><item><title>Akademy 2016</title><link>https://kate-editor.org/2016/09/01/akademy-2016/</link><pubDate>Thu, 01 Sep 2016 10:55:26 +0000</pubDate><guid>https://kate-editor.org/2016/09/01/akademy-2016/</guid><description>&lt;p&gt;Arrived at Berlin for &lt;a href=&#34;https://akademy.kde.org/2016&#34;&gt;Akademy/QtCon 2016&lt;/a&gt;, too ;=)&lt;/p&gt;
&lt;p&gt;Already met some other KDE &amp;amp; Kate people, lets see how the week goes.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://akademy.kde.org/2016&#34;&gt;&lt;img class=&#34;aligncenter wp-image-3950 size-full&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/09/Going-To-Akademy-2016.png&#34; alt=&#34;Going-To-Akademy-2016&#34; width=&#34;969&#34; height=&#34;237&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2016/09/Going-To-Akademy-2016.png 969w, https://kate-editor.org/wp-content/uploads/2016/09/Going-To-Akademy-2016-300x73.png 300w, https://kate-editor.org/wp-content/uploads/2016/09/Going-To-Akademy-2016-768x188.png 768w&#34; sizes=&#34;(max-width: 969px) 100vw, 969px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Bug Triaging Guest Blog: The wandering bug triager was here</title><link>https://kate-editor.org/2016/08/12/bug-triaging-guest-blog-the-wandering-bug-triager-was-here/</link><pubDate>Fri, 12 Aug 2016 20:10:15 +0000</pubDate><guid>https://kate-editor.org/2016/08/12/bug-triaging-guest-blog-the-wandering-bug-triager-was-here/</guid><description>&lt;p&gt;I was contacted by Buovjaga from the &lt;a href=&#34;https://wiki.documentfoundation.org/QA/Team&#34;&gt;LibreOffice QA team&lt;/a&gt; to spread the word about the current bug triaging efforts going on.&lt;/p&gt;
&lt;p&gt;Therefore now a short guest block about that ;=)&lt;/p&gt;
&lt;p&gt;Thanks to Buovjaga for trying to get some public interest in this important aspect of open source work: handling our flood of bugs!&lt;/p&gt;
&lt;p&gt;&lt;snip&gt;&lt;/p&gt;
&lt;p&gt;Free software needs more contributors from the non-coding user community. The problem is that there is no scientifically proven method for attracting them.&lt;/p&gt;
&lt;p&gt;After dealing with thousands of LibreOffice bug reports and simultaneously trying to recruit more testers through various cunning plans, I realized the topic of free software quality assurance needs to become more prominent. I came up with the idea for a publicity stunt where I camp out at different bug trackers while telling the world about it. I chose KDE and Kate for my first month of triaging.&lt;/p&gt;
&lt;p&gt;Bug triagers act as guardians of the bug tracker and save the developers from a lot of wasted time. If the number of unconfirmed reports in a project is not close to zero, it needs more triagers.&lt;/p&gt;
&lt;p&gt;There were about 120 reports I deemed suitable for testing. I skipped crash debugging, testing of advanced features and only focused on the basic stuff. My take on the stats is that there is currently no one doing this sort of thing regularly for Kate.&lt;/p&gt;
&lt;p&gt;To get started in triaging KDE bugs, you&lt;/p&gt;
&lt;p&gt;&amp;#8211; start testing unconfirmed reports and ancient confirmed ones while keeping the Bug triage guide at hand &lt;span id=&#34;OBJ_PREFIX_DWT1325_com_zimbra_url&#34; class=&#34;Object&#34;&gt;&lt;span id=&#34;OBJ_PREFIX_DWT1330_com_zimbra_url&#34; class=&#34;Object&#34;&gt;&lt;a href=&#34;https://community.kde.org/Bugsquad/Guide_To_BugTriaging&#34; target=&#34;_blank&#34;&gt;&lt;a href=&#34;https://community.kde.org/Bugsquad/Guide_To_BugTriaging&#34;&gt;https://community.kde.org/Bugsquad/Guide_To_BugTriaging&lt;/a&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;#8211; join #kde-bugs IRC channel after having commented on a bunch of reports and request rights to edit report details&lt;/p&gt;
&lt;p&gt;&amp;#8211; join the IRC channels of the products you are helping and coordinate testing with others &lt;span id=&#34;OBJ_PREFIX_DWT1326_com_zimbra_url&#34; class=&#34;Object&#34;&gt;&lt;span id=&#34;OBJ_PREFIX_DWT1331_com_zimbra_url&#34; class=&#34;Object&#34;&gt;&lt;a href=&#34;https://userbase.kde.org/IRC_Channels#Applications&#34; target=&#34;_blank&#34;&gt;&lt;a href=&#34;https://userbase.kde.org/IRC_Channels#Applications&#34;&gt;https://userbase.kde.org/IRC_Channels#Applications&lt;/a&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I believe a goal should be set for recruiting one person to deal with triaging per every actively-developed KDE product. After achieving this goal, it will quickly become apparent to each product team just how many triagers are needed in order for the work to be sustainable. However, the teams should not remain in isolation. The whole of KDE needs to become transparent. An “Everything about KDE” web dashboard would enable contributors to quickly see, which teams are in need of assistance. Tools for this are available in the Grimoire Lab suite &lt;span id=&#34;OBJ_PREFIX_DWT1327_com_zimbra_url&#34; class=&#34;Object&#34;&gt;&lt;span id=&#34;OBJ_PREFIX_DWT1332_com_zimbra_url&#34; class=&#34;Object&#34;&gt;&lt;a href=&#34;http://grimoirelab.github.io/&#34; target=&#34;_blank&#34;&gt;&lt;a href=&#34;http://grimoirelab.github.io/&#34;&gt;http://grimoirelab.github.io/&lt;/a&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;. KDE sysadmin team does not have the resources to set them up, so if you have the necessary skills and want to make this happen, please contact them on the #kde-sysadmin IRC channel.&lt;/p&gt;
&lt;p&gt;If you want to contact me, you can find me on the #libreoffice-qa channel @ Freenode network, nickname: buovjaga.&lt;/p&gt;
&lt;p&gt;&lt;/snip&gt;&lt;/p&gt;</description></item><item><title>What happened to Kate in Randa?</title><link>https://kate-editor.org/2016/07/08/what-happened-to-kate-in-randa/</link><pubDate>Fri, 08 Jul 2016 19:52:21 +0000</pubDate><guid>https://kate-editor.org/2016/07/08/what-happened-to-kate-in-randa/</guid><description>&lt;p&gt;This years topic for the Randa meeting, was multi-platform end-user application development. That was a golden opportunity to work on the Windows and Mac versions.&lt;/p&gt;
&lt;p&gt;One thing that happened was that the icon.rcc file generation is moved to the breeze-icons repository in stead of doing it separately for every application. The icon.rcc file loading was moved to KIconThemes so that all applications linking to it don&amp;#8217;t have to invent the wheel again. This would not have been so easy if we hadn&amp;#8217;t been at the same place discussing things face to face.&lt;/p&gt;
&lt;p&gt;A more noticeable thing is that Kate now does not need a DBus server on Windows and Apple any more. Both Kate and KDevelop now use QtSingleApplication to open all documents in one window.&lt;/p&gt;
&lt;p&gt;The search plugin also got a face-lift. Hopefully the new layout will be a bit more useful than the previous :)&lt;/p&gt;
&lt;p&gt;A Randa development release of Kate on Windows was also done. Download the installer from &lt;a href=&#34;http://download.kde.org/unstable/kate/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To be able to continue with similar activities we &lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;need your help.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://www.kde.org/fundraisers/randameetings2016/images/banner-fundraising2016.png&#34; width=&#34;1400&#34; height=&#34;200&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>KTextEditor gets Scrollbar and Code Folding Preview (Updated)</title><link>https://kate-editor.org/2016/06/19/ktexteditor-gets-a-text-preview-on-scrollbar/</link><pubDate>Sun, 19 Jun 2016 16:50:54 +0000</pubDate><guid>https://kate-editor.org/2016/06/19/ktexteditor-gets-a-text-preview-on-scrollbar/</guid><description>&lt;p&gt;The KTextEditor Framework just got a new features for the next KDE Frameworks 5.24 release: A Text Preview on the vertical scrollbar.&lt;/p&gt;
&lt;p&gt;If enabled in the options, the KTextEditor now shows a preview of the text when the mouse hovers over the scrollbar. The feature is available both when the minimap is used and also when the standard scrollbar is used. The text preview is only visible when vertical scrolling is possible.&lt;/p&gt;
&lt;p&gt;This feature is enabled by default, and is also automatically available in Kile and KDevelop, so we hope this is useful to you!&lt;/p&gt;
&lt;p&gt;For developers, to ensure this feature is off, the ConfigInterface of the View can be used through the config key &amp;#8220;scrollbar-preview&amp;#8221; of type bool.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2016/06/kate-text-preview.gif&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3925&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/06/kate-text-preview.gif&#34; alt=&#34;Kate Text Preview&#34; width=&#34;695&#34; height=&#34;440&#34; /&gt;&lt;/a&gt;And in addition to the preview in the scrollbar, it is now also possible to have a preview for folded code: Hovering over folded code pops up a preview of the hidden lines. When clicked, the code folding opens.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2016/06/kate-fold-preview.gif&#34;&gt;&lt;img class=&#34;aligncenter wp-image-3924 size-full&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/06/kate-fold-preview.gif&#34; alt=&#34;Kate Code Folding Preview&#34; width=&#34;1300&#34; height=&#34;1020&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;These features got added during the KDE Randa sprint, where around 40 KDE developers focus on improving KDE software and bringing KDE software to other platforms such as &lt;a href=&#34;http://kfunk.org/2016/06/18/kde-on-windows-update/&#34;&gt;Windows and Mac OS&lt;/a&gt;. You can &lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;support us by donating&lt;/a&gt; through the following banner: :)&lt;/p&gt;
&lt;p class=&#34;editable&#34;&gt;
&lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://www.kde.org/fundraisers/randameetings2016/images/banner-fundraising2016.png&#34; width=&#34;1400&#34; height=&#34;200&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Bug fixed after 13 years</title><link>https://kate-editor.org/2016/06/17/bug-fixed-after-13-years/</link><pubDate>Fri, 17 Jun 2016 21:42:44 +0000</pubDate><guid>https://kate-editor.org/2016/06/17/bug-fixed-after-13-years/</guid><description>&lt;p&gt;During the Randa sprint an 13 year old bug was fixed :P&lt;/p&gt;
&lt;p&gt;I myself moved it to kxmlgui (out of Kate/KWrites&amp;#8217;s harm, good to delegate stuff away :) in 2003 and since then we got a lot of duplicates but never somebody got the time to track it down. (333 votes for it, really nice number)&lt;/p&gt;
&lt;p&gt;Now, after 13 years, it got done (and yet another chance that a bug becomes a sentient intelligence has vanished ;=)&lt;/p&gt;
&lt;p class=&#34;editable&#34;&gt;
&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=64754&#34;&gt;&lt;strong&gt;Bug 64754 &amp;#8211; &lt;span id=&#34;summary_alias_container&#34; class=&#34;&#34;&gt;&lt;span id=&#34;short_desc_nonedit_display&#34;&gt;XMLGUI items (toolbar icons, menu items) from merge sections move or disappear&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p class=&#34;editable&#34;&gt;
Thanks to David, Dominik and Sune to get this fixed ;=)
&lt;/p&gt;
&lt;p class=&#34;editable&#34;&gt;
And I really like the comment we got after the fix, awesome:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class=&#34;editable&#34;&gt;
David Faure, you deserve a medal.
&lt;/p&gt;
&lt;p class=&#34;editable&#34;&gt;
A 13 year old KDE bug finally fixed. Just think, when this bug was first reported:
&lt;/p&gt;
&lt;p class=&#34;editable&#34;&gt;
&amp;#8212; The current Linux Kernel was 2.6.31
&lt;/p&gt;
&lt;p class=&#34;editable&#34;&gt;
&amp;#8212; Top Movie? The ORIGINAL Underworld.
&lt;/p&gt;
&lt;p class=&#34;editable&#34;&gt;
&amp;#8212; Windows XP was the most current desktop verison. Vista was still 3 years away.
&lt;/p&gt;
&lt;p class=&#34;editable&#34;&gt;
&amp;#8212; Top 2 Linux verions? Mandrake and Redhat (Fedora wouldn&amp;#8217;t be released for another 2 months, Ubuntu&amp;#8217;s first was more than a year away.)
&lt;/p&gt;
&lt;p class=&#34;editable&#34;&gt;
&amp;#8212; Top billboard song? Crazy In Love by Jay-Z &amp; Beyoncé (who was barely old enough to drink)
&lt;/p&gt;
&lt;p class=&#34;editable&#34;&gt;
&amp;#8212; 3 of the 5 KDE ev board members hadn&amp;#8217;t ever used KDE
&lt;/p&gt;
&lt;p class=&#34;editable&#34;&gt;
&amp;#8212; Palestinian Prime Minister Mahmoud Abbas resigns ending &amp;#8220;Road Map for Peace&amp;#8221;
&lt;/p&gt;
&lt;p class=&#34;editable&#34;&gt;
&amp;#8212; Current KDE version? 3.1.4 (KDE 3 had only been out for a year)
&lt;/p&gt;
&lt;p class=&#34;editable&#34;&gt;
Very very cool!
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p class=&#34;editable&#34;&gt;
Not sure if the kernel version is right, more likely some &lt; 2.6.0 kernel was the king of the hill at that time, but otherwise, great :P
&lt;/p&gt;
&lt;p class=&#34;editable&#34;&gt;
Therefore: &lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;Support us&lt;/a&gt;, Randa sprint and other sprints really bring our software stack forward! Nowhere else such a nice group of KDE developers can meet up to solve such problems together!
&lt;/p&gt;
&lt;p class=&#34;editable&#34;&gt;
&lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://www.kde.org/fundraisers/randameetings2016/images/banner-fundraising2016.png&#34; width=&#34;1400&#34; height=&#34;200&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>KDE Software for Windows &amp; Chocolatey</title><link>https://kate-editor.org/2016/06/16/kde-software-for-windows-chocolatey/</link><pubDate>Thu, 16 Jun 2016 19:33:59 +0000</pubDate><guid>https://kate-editor.org/2016/06/16/kde-software-for-windows-chocolatey/</guid><description>&lt;p&gt;&lt;img class=&#34;alignright wp-image-3890&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/06/eY1Bty7l-150x150.jpg&#34; alt=&#34;eY1Bty7l&#34; width=&#34;128&#34; height=&#34;128&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2016/06/eY1Bty7l-150x150.jpg 150w, https://kate-editor.org/wp-content/uploads/2016/06/eY1Bty7l-300x300.jpg 300w, https://kate-editor.org/wp-content/uploads/2016/06/eY1Bty7l.jpg 512w&#34; sizes=&#34;(max-width: 128px) 100vw, 128px&#34; /&gt;KDE applications providing Windows installers can now be additionally listed in the &lt;a href=&#34;https://chocolatey.org/about&#34;&gt;Chocolatey&lt;/a&gt; software repository on an dedicated &lt;a href=&#34;https://chocolatey.org/profiles/KDE&#34;&gt;KDE profile&lt;/a&gt;. If you want to be added to this profile with your application, contact &lt;a href=&#34;mailto:kde-windows@kde.org&#34;&gt;kde-windows@kde.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;At the moment, you can find digiKam, Kate &amp;amp; Krita. The profile allows an quick overview about the KDE applications that are available.&lt;/p&gt;
&lt;p&gt;This is a nice addition to the downloads provided via download.kde.org or the application homepages and increases the visibility of our applications on Windows.&lt;/p&gt;
&lt;p&gt;More info about KDE software on Windows and how to join the KDE Windows initiative can be found on our &lt;a href=&#34;https://community.kde.org/Windows&#34;&gt;windows.kde.org&lt;/a&gt; page.&lt;/p&gt;
&lt;p&gt;Would be nice if you support us to make things like this at the Randa sprint possible! ;)&lt;br /&gt;
&lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://www.kde.org/fundraisers/randameetings2016/images/banner-fundraising2016.png&#34; width=&#34;1400&#34; height=&#34;200&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>New Kate/KWrite Bundles for Mac</title><link>https://kate-editor.org/2016/06/16/new-katekwrite-bundles-for-mac/</link><pubDate>Thu, 16 Jun 2016 10:57:09 +0000</pubDate><guid>https://kate-editor.org/2016/06/16/new-katekwrite-bundles-for-mac/</guid><description>&lt;p&gt;I updated again the Kate/KWrite application bundles following the new guide on &lt;a href=&#34;https://community.kde.org/Mac#Building_KDE_Frameworks_based_software_on_Mac_OS_X&#34;&gt;KDE on Mac&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With the same guide, other application developers should be able to create stand-alone application bundles for Mac OS X, too. Btw., the guide is on a wiki page, feel free to enhance the documentation, I doubt it is optimal ATM.&lt;/p&gt;
&lt;p&gt;What needs to be solved to make it easier: At the moment, the guide uses a stock Qt as obtainable from qt.io but unfortunately, macdeployqt needs to be patched to deploy non-qt plugins&lt;/p&gt;
&lt;p&gt;For this see the review request &lt;a href=&#34;https://codereview.qt-project.org/#/c/162160/&#34;&gt;&amp;#8220;add support for -extra-plugins command line option&amp;#8221;&lt;/a&gt;. I hope this gets into Qt or we get an alternative solution, hint, hint =&amp;gt; help appreciated :=))&lt;/p&gt;
&lt;p&gt;KWrite on Mac looks unspectacular:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter wp-image-3875&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/06/Bildschirmfoto-2016-06-16-um-12.24.46-1024x836.png&#34; alt=&#34;Bildschirmfoto 2016-06-16 um 12.24.46&#34; width=&#34;600&#34; height=&#34;490&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2016/06/Bildschirmfoto-2016-06-16-um-12.24.46-1024x836.png 1024w, https://kate-editor.org/wp-content/uploads/2016/06/Bildschirmfoto-2016-06-16-um-12.24.46-300x245.png 300w, https://kate-editor.org/wp-content/uploads/2016/06/Bildschirmfoto-2016-06-16-um-12.24.46-768x627.png 768w, https://kate-editor.org/wp-content/uploads/2016/06/Bildschirmfoto-2016-06-16-um-12.24.46.png 1306w&#34; sizes=&#34;(max-width: 600px) 100vw, 600px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;But the cool thing is: This is the result of a plain compile of KF5 &amp;amp; kate.git. We patch NONE of the frameworks anymore and we don&amp;#8217;t need to build Qt on our own, we can use the stock Qt installer (the bundles use 5.7.0, the build that should be the final one to be released these days).&lt;/p&gt;
&lt;p&gt;For deployment problems like: &lt;a href=&#34;https://blogs.kde.org/2016/06/16/icon-theme-deployment-windows-mac-os-and-mobile-platforms&#34;&gt;&amp;#8220;how to get our icons&amp;#8221;&lt;/a&gt; or &amp;#8220;how to locate our plugins or ioslaves&amp;#8221; generic solutions were implemented in the KF5 libraries.&lt;/p&gt;
&lt;p&gt;If the above review request is accepted or an other solution is found you will have exactly the same developer experience on Mac as on e.g. Linux. No ugly hacks, no patching, etc.&lt;/p&gt;
&lt;p&gt;For Kate we even have a kind of working embedded Konsole again with this updated build, enjoy:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter wp-image-3874&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/06/Bildschirmfoto-2016-06-16-um-12.22.34-1024x800.png&#34; alt=&#34;Bildschirmfoto 2016-06-16 um 12.22.34&#34; width=&#34;600&#34; height=&#34;469&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2016/06/Bildschirmfoto-2016-06-16-um-12.22.34-1024x800.png 1024w, https://kate-editor.org/wp-content/uploads/2016/06/Bildschirmfoto-2016-06-16-um-12.22.34-300x234.png 300w, https://kate-editor.org/wp-content/uploads/2016/06/Bildschirmfoto-2016-06-16-um-12.22.34-768x600.png 768w&#34; sizes=&#34;(max-width: 600px) 100vw, 600px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;I think overall, the Mac developer experience for KF5 based stuff really improved in the last months and the latest things that happened this week were only possible thanks to the &lt;a href=&#34;http://randa-meetings.ch/&#34;&gt;Randa sprint&lt;/a&gt;. Would be nice if you &lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;support us&lt;/a&gt; ;)&lt;br /&gt;
&lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://www.kde.org/fundraisers/randameetings2016/images/banner-fundraising2016.png&#34; width=&#34;1400&#34; height=&#34;200&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kate &amp; Co. on Tour</title><link>https://kate-editor.org/2016/06/15/kate-co-on-tour/</link><pubDate>Wed, 15 Jun 2016 15:19:52 +0000</pubDate><guid>https://kate-editor.org/2016/06/15/kate-co-on-tour/</guid><description>&lt;p&gt;We used the nice weather for some small trip near Randa between hacking ;=)&lt;br /&gt;
&lt;img class=&#34;aligncenter wp-image-3857 size-full&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/06/27077238394_423b6b425b_z.jpg&#34; alt=&#34;27077238394_423b6b425b_z&#34; width=&#34;640&#34; height=&#34;426&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2016/06/27077238394_423b6b425b_z.jpg 640w, https://kate-editor.org/wp-content/uploads/2016/06/27077238394_423b6b425b_z-300x200.jpg 300w&#34; sizes=&#34;(max-width: 640px) 100vw, 640px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;But beside getting a bit fresh air, we did other nice things like fixing together with David Faure of Frameworks fame the issue &amp;#8220;how to get automagically icons loaded if you want to bundle them in your installer/app bundle&amp;#8221;, see the change: &lt;a href=&#34;https://phabricator.kde.org/D1878&#34;&gt;&amp;#8220;Add support for loading and using an icontheme in a RCC file automatically.&amp;#8221;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Would be nice if you support us to make things like the Randa sprint possible! ;)&lt;br /&gt;
&lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://www.kde.org/fundraisers/randameetings2016/images/banner-fundraising2016.png&#34; width=&#34;1400&#34; height=&#34;200&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kate’s TabBar gets Movable Tabs</title><link>https://kate-editor.org/2016/06/15/kates-tabbar-gets-movable-tabs/</link><pubDate>Wed, 15 Jun 2016 11:00:46 +0000</pubDate><guid>https://kate-editor.org/2016/06/15/kates-tabbar-gets-movable-tabs/</guid><description>&lt;p&gt;With the next Applications 16.08 release, Kate5&amp;#8217;s tabs will be movable with the mouse. This was a &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=344074&#34;&gt;feature request&lt;/a&gt; for quite some time, which is &lt;a href=&#34;http://commits.kde.org/kate/be7b90ee88d0f45d59b2fc10b4517709f4ec02a7&#34;&gt;now fixed&lt;/a&gt;.&lt;img class=&#34;aligncenter size-full wp-image-3851&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/06/moving-tabs.gif&#34; alt=&#34;Kate5&#39;s Moving Tabs&#34; width=&#34;680&#34; height=&#34;385&#34; /&gt;For the record, the animated gif was created with the following two commands:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;ffmpeg -f alsa -f x11grab -r 30 -s 680x385 -i :0.0+0,0 -threads 0 output%04d.png&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;convert -delay 1/30 -loop 0 -layers OptimizeFrame -size 680x385 -fuzz 2% output*.png output.gif&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Much more work is going on at the Randa spring currently held in Switzerland. Would be nice if you support us ;)&lt;br /&gt;
&lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://www.kde.org/fundraisers/randameetings2016/images/banner-fundraising2016.png&#34; width=&#34;1400&#34; height=&#34;200&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>New Mac OS X Build Documentation</title><link>https://kate-editor.org/2016/06/14/new-mac-os-x-build-documentation/</link><pubDate>Tue, 14 Jun 2016 21:52:50 +0000</pubDate><guid>https://kate-editor.org/2016/06/14/new-mac-os-x-build-documentation/</guid><description>&lt;p&gt;During the Mac OS X platform meeting here at Randa, the point was made that the current build documentation for Mac OS X is a bit lacking, as e.g. the steps to create an application bundle are only documented somewhere for Kate, Krita, KDevelop, &amp;#8230; but in no central place.&lt;/p&gt;
&lt;p&gt;I started to writeup a &lt;a href=&#34;https://community.kde.org/Guidelines_and_HOWTOs/Build_from_source/Mac&#34;&gt;new howto&lt;/a&gt; at the &lt;a href=&#34;https://community.kde.org/Mac#Building_KDE_Frameworks_based_software_on_Mac_OS_X&#34;&gt;mac.kde.org&lt;/a&gt; page that utilizes emerge for the heavy lifting like the KDE Windows team uses it.&lt;/p&gt;
&lt;p&gt;I think this might be nice to have synergy effects between both ports, thanks to Hannah for hinting to this and the help for setting it up. Might be interesting for the CI, too.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://www.kde.org/fundraisers/randameetings2016/images/banner-fundraising2016.png&#34; width=&#34;1400&#34; height=&#34;200&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>MiniMap Fine-Tuning</title><link>https://kate-editor.org/2016/06/14/minimap-fine-tuning/</link><pubDate>Tue, 14 Jun 2016 18:06:56 +0000</pubDate><guid>https://kate-editor.org/2016/06/14/minimap-fine-tuning/</guid><description>&lt;p&gt;Kate also supports a minimap of the text contents instead of a classical scrollbar. To enable it, just go to&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-3837&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/06/minimap-settings.png&#34; alt=&#34;MiniMap Settings&#34; width=&#34;911&#34; height=&#34;739&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2016/06/minimap-settings.png 911w, https://kate-editor.org/wp-content/uploads/2016/06/minimap-settings-300x243.png 300w, https://kate-editor.org/wp-content/uploads/2016/06/minimap-settings-768x623.png 768w&#34; sizes=&#34;(max-width: 911px) 100vw, 911px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Here at the Randa meeting, we just invested some time to bring this minimap more in line with the Breeze style. You can see the difference here: Note the scrollbar slider frame, the new version (right) is more distinct and in line with the rounded corners of the Breeze style.&lt;/p&gt;
&lt;table style=&#34;width: 100%;&#34;&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;img class=&#34;aligncenter size-full wp-image-3838&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/06/minimap-old.png&#34; alt=&#34;MiniMap - Old Slider&#34; width=&#34;471&#34; height=&#34;375&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2016/06/minimap-old.png 471w, https://kate-editor.org/wp-content/uploads/2016/06/minimap-old-300x239.png 300w&#34; sizes=&#34;(max-width: 471px) 100vw, 471px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;
Old Scrollbar Slider&lt;/td&gt;
&lt;td&gt;
&lt;img class=&#34;aligncenter size-full wp-image-3839&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/06/minimap-new.png&#34; alt=&#34;MiniMap - New Slider&#34; width=&#34;469&#34; height=&#34;369&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2016/06/minimap-new.png 469w, https://kate-editor.org/wp-content/uploads/2016/06/minimap-new-300x236.png 300w&#34; sizes=&#34;(max-width: 469px) 100vw, 469px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;
New Scrollbar Slider&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt; &amp;lt;p&amp;gt;
This change will be in the KDE Frameworks 5.24 release. If you want to support the KDE Randa developer meeting, please click on the banner :-)&amp;lt;br /&amp;gt; &amp;lt;a href=&amp;#34;https://www.kde.org/fundraisers/randameetings2016/&amp;#34;&amp;gt;&amp;lt;img class=&amp;#34;aligncenter&amp;#34; src=&amp;#34;https://www.kde.org/fundraisers/randameetings2016/images/banner-fundraising2016.png&amp;#34; width=&amp;#34;1400&amp;#34; height=&amp;#34;200&amp;#34; /&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/p&amp;gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Updated bundles, now release builds and less frameworks</title><link>https://kate-editor.org/2016/06/14/updated-bundles-now-release-builds-and-less-frameworks/</link><pubDate>Mon, 13 Jun 2016 22:21:36 +0000</pubDate><guid>https://kate-editor.org/2016/06/14/updated-bundles-now-release-builds-and-less-frameworks/</guid><description>
&lt;p&gt;I updated the bundles, now they are release builds of Kate &amp;amp; KWrite and they contain less frameworks. The size is only one half of the last bundles, less than 50 MB per app. Visit &amp;#8220;&lt;a href=&#34;https://kate-editor.org/get-it/&#34;&gt;Get It&lt;/a&gt;&amp;#8221; for the download links or below.&lt;/p&gt;
&lt;h3 id=&#34;mac-application-bundles&#34;&gt;Mac Application Bundles&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;ftp://babylon2k.de/cullmann/kate-16_07_70_update_1.dmg&#34;&gt;Kate 16.07.70 (Update 1)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;ftp://babylon2k.de/cullmann/kwrite-16_07_70_update_1.dmg&#34;&gt;KWrite 16.07.70 (Update 1)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://www.kde.org/fundraisers/randameetings2016/images/banner-fundraising2016.png&#34; width=&#34;1400&#34; height=&#34;200&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>New “Get It” page &amp; “Build It” split out</title><link>https://kate-editor.org/2016/06/13/new-get-it-page-build-it-split-out/</link><pubDate>Mon, 13 Jun 2016 16:32:13 +0000</pubDate><guid>https://kate-editor.org/2016/06/13/new-get-it-page-build-it-split-out/</guid><description>&lt;p&gt;As we now have some binaries available for Windows &amp;amp; Mac, I renovated the &amp;#8220;&lt;a href=&#34;https://kate-editor.org/get-it/&#34;&gt;Get It&lt;/a&gt;&amp;#8221; page.&lt;/p&gt;
&lt;p&gt;You now have there links to the latest versions of our binaries (installer for Windows &amp;amp; application bundle for Mac) beside the link to the distribution packages for Linux/BSD/* as provided by our dear packagers.&lt;/p&gt;
&lt;p&gt;For building Kate from sources, we now have the building instructions on a separate &amp;#8220;&lt;a href=&#34;https://kate-editor.org/build-it/&#34;&gt;Build It&lt;/a&gt;&amp;#8221; page.&lt;/p&gt;
&lt;p&gt;We will try to update the binary builds in the next days at &lt;a href=&#34;https://community.kde.org/Sprints/Randa/2016&#34;&gt;Randa&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://www.kde.org/fundraisers/randameetings2016/images/banner-fundraising2016.png&#34; width=&#34;1400&#34; height=&#34;200&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Working on Kate in Randa</title><link>https://kate-editor.org/2016/06/13/working-on-kate-in-randa/</link><pubDate>Mon, 13 Jun 2016 16:12:59 +0000</pubDate><guid>https://kate-editor.org/2016/06/13/working-on-kate-in-randa/</guid><description>&lt;p&gt;Right now, around 40 developers are working together on bringing KDE to other platforms in Randa (Switzerland) for an entire week.&lt;/p&gt;
&lt;p&gt;So far, I just fixed some bugs, e.g.:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class=&#34;im&#34;&gt;Kate: Correctly restore view config of all split views &lt;a href=&#34;http://commits.kde.org/kate/ced09c823aa5832ea5e56c5708a564a9767a225d&#34;&gt;(commit&lt;/a&gt;, &lt;/span&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=353852&#34;&gt;bug&lt;/a&gt;, &lt;a href=&#34;https://git.reviewboard.kde.org/r/128163/&#34;&gt;review&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;im&#34;&gt;Kate: &lt;/span&gt;Sort Kate Session Menu alphabetically (&lt;a href=&#34;http://commits.kde.org/kate/f5b909227941419f736cfd99bd13a46eb7d3eaa0&#34;&gt;commit&lt;/a&gt;, &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=364089&#34;&gt;bug&lt;/a&gt;, &lt;a href=&#34;https://git.reviewboard.kde.org/r/128165/&#34;&gt;review&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;im&#34;&gt;Kate: &lt;/span&gt;Avoid hidden view spaces on start (&lt;a href=&#34;http://commits.kde.org/kate/863e98662b584c137bb0f224d43bba724108667c&#34;&gt;commit&lt;/a&gt;, &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=358266&#34;&gt;bug&lt;/a&gt;, &lt;a href=&#34;https://git.reviewboard.kde.org/r/128173/&#34;&gt;review&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;im&#34;&gt;Kate, KDevelop: &lt;/span&gt;Tab Switcher Plugin: Make sure the height fits all items (&lt;a href=&#34;http://commits.kde.org/kate/60fb10d22f17513f8179d4960fb4b2c5d765dea4&#34;&gt;commit&lt;/a&gt;, &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=354019&#34;&gt;bug&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Much more work is going on, especially also with bringing Kate to &lt;a href=&#34;https://kate-editor.org/2016/06/13/katekwrite-application-bundle-update/&#34;&gt;Mac OS&lt;/a&gt;, or making it work better on Windows. For instance, thanks to &lt;a href=&#34;http://commits.kde.org/kate/ad116d95aee1a193570931d21fb2069559f4feb9&#34;&gt;Kåre and David&lt;/a&gt;, renaming documents already works now, and soon the filesystem browser plugin will be available in the next Kate on Windows release :)&lt;/p&gt;
&lt;p&gt;If you want to support us, please &lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;donate&lt;/a&gt; to help us keeping up these developer meetings.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;&lt;img class=&#34;alignnone&#34; src=&#34;https://www.kde.org/fundraisers/randameetings2016/images/banner-fundraising2016.png&#34; width=&#34;1400&#34; height=&#34;200&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kate/KWrite Application Bundle Update</title><link>https://kate-editor.org/2016/06/13/katekwrite-application-bundle-update/</link><pubDate>Mon, 13 Jun 2016 10:11:31 +0000</pubDate><guid>https://kate-editor.org/2016/06/13/katekwrite-application-bundle-update/</guid><description>&lt;p&gt;I just created new bundles for Kate &amp;amp; KWrite.&lt;/p&gt;
&lt;p&gt;By accident they are a bit large, as stuff as web engine is moved to the bundle, but they should work ;=)&lt;/p&gt;
&lt;p&gt;How to create them?&lt;/p&gt;
&lt;p&gt;mac.txt in kate.git shows how that works.&lt;/p&gt;
&lt;p&gt;But you need a macqtdeploy with the patch for &lt;a href=&#34;https://codereview.qt-project.org/#/c/162160/&#34;&gt;QTBUG-48836&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter wp-image-3775 size-large&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/06/Bildschirmfoto-2016-06-13-um-12.08.18-1024x721.png&#34; alt=&#34;Bildschirmfoto 2016-06-13 um 12.08.18&#34; width=&#34;474&#34; height=&#34;334&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2016/06/Bildschirmfoto-2016-06-13-um-12.08.18-1024x721.png 1024w, https://kate-editor.org/wp-content/uploads/2016/06/Bildschirmfoto-2016-06-13-um-12.08.18-300x211.png 300w, https://kate-editor.org/wp-content/uploads/2016/06/Bildschirmfoto-2016-06-13-um-12.08.18-768x541.png 768w&#34; sizes=&#34;(max-width: 474px) 100vw, 474px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Download links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;ftp://babylon2k.de/cullmann/kate-16_07_70.dmg&#34;&gt;Kate 16.07.70&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;ftp://babylon2k.de/cullmann/kwrite-16_07_70.dmg&#34;&gt;KWrite 16.07.70&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to the Randa meetup I got time for this, if you want to sponsor, click the image below ;)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;&lt;img class=&#34;alignnone&#34; src=&#34;https://www.kde.org/fundraisers/randameetings2016/images/banner-fundraising2016.png&#34; width=&#34;1400&#34; height=&#34;200&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>First Day in Randa</title><link>https://kate-editor.org/2016/06/13/first-day-in-randa/</link><pubDate>Mon, 13 Jun 2016 06:41:02 +0000</pubDate><guid>https://kate-editor.org/2016/06/13/first-day-in-randa/</guid><description>&lt;p&gt;Yesterday afternoon I and others arrived in Randa. After some first meetup, started to try out how much work it is to e.g. compile Konsole or KDevelop on my Mac without patching Qt and stuff.&lt;/p&gt;
&lt;p&gt;Two review requests pending to get Konsole working at least on some basic level. Lets see what more is needed to get it in some usable state (at least the terminal toolview in Kate now can use the konsole part ;=)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;&lt;img class=&#34;alignnone&#34; src=&#34;https://www.kde.org/fundraisers/randameetings2016/images/banner-fundraising2016.png&#34; width=&#34;1400&#34; height=&#34;200&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Randa Meeting 2016 – Tomorrow on Tour ;=)</title><link>https://kate-editor.org/2016/06/11/randa-meeting-2016-tomorrow-on-tour/</link><pubDate>Sat, 11 Jun 2016 11:31:02 +0000</pubDate><guid>https://kate-editor.org/2016/06/11/randa-meeting-2016-tomorrow-on-tour/</guid><description>&lt;p&gt;Tomorrow I will start to travel to the &lt;a href=&#34;http://randa-meetings.ch/&#34;&gt;Randa Meeting&lt;/a&gt; 2016.&lt;/p&gt;
&lt;p&gt;I hope I can help to make it possible to spread KF5 based stuff more easy on platforms like Windows &amp;amp; Mac.&lt;/p&gt;
&lt;p&gt;Lets see what can be done, will be an interesting week ;=)&lt;/p&gt;
&lt;p&gt;If you want to support us, please consider to donate, we have a &lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;fundraising campaign&lt;/a&gt; running!&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.kde.org/fundraisers/randameetings2016/&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://www.kde.org/fundraisers/randameetings2016/images/fundraising2016-ogimage.png&#34; width=&#34;1200&#34; height=&#34;627&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Breeze Dark Color Scheme</title><link>https://kate-editor.org/2016/05/28/breeze-dark-color-scheme/</link><pubDate>Sat, 28 May 2016 12:14:29 +0000</pubDate><guid>https://kate-editor.org/2016/05/28/breeze-dark-color-scheme/</guid><description>&lt;p&gt;Just as quick info, with the next KDE Frameworks 5 release, namely KF5 version 5.23, the KTextEditor framework gains a &lt;a href=&#34;https://cgit.kde.org/ktexteditor.git/commit/?id=fc45b9461c505311586c455ebe85e53b2eb6c901&#34; target=&#34;_blank&#34;&gt;Breeze Dark color scheme&lt;/a&gt;. The colors mostly stick to the Breeze color palette, with some minor changes, since KTextEditor needs more colors the the color palette itself ships. To use this color scheme, go to the config dialog and choose &amp;#8220;Breeze Dark&amp;#8221; in the Fonts &amp;amp; Colors config page. We hope this is useful &amp;#8211; mandatory screenshot:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2016/05/breeze-dark.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3747&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/05/breeze-dark.png&#34; alt=&#34;Breeze Dark&#34; width=&#34;1920&#34; height=&#34;1027&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2016/05/breeze-dark.png 1920w, https://kate-editor.org/wp-content/uploads/2016/05/breeze-dark-300x160.png 300w, https://kate-editor.org/wp-content/uploads/2016/05/breeze-dark-1024x548.png 1024w&#34; sizes=&#34;(max-width: 1920px) 100vw, 1920px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Screenshot of KDevelop 5 with Breeze Dark theme and color schema:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2016/05/kdevelop5-breeze-dark.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3754&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/05/kdevelop5-breeze-dark.png&#34; alt=&#34;KDevelop 5 with Breeze Dark&#34; width=&#34;1273&#34; height=&#34;944&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2016/05/kdevelop5-breeze-dark.png 1273w, https://kate-editor.org/wp-content/uploads/2016/05/kdevelop5-breeze-dark-300x222.png 300w, https://kate-editor.org/wp-content/uploads/2016/05/kdevelop5-breeze-dark-1024x759.png 1024w&#34; sizes=&#34;(max-width: 1273px) 100vw, 1273px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kate 16.04 on Windows (64bit)</title><link>https://kate-editor.org/2016/04/29/kate-16-04-on-windows-64bit/</link><pubDate>Fri, 29 Apr 2016 17:39:00 +0000</pubDate><guid>https://kate-editor.org/2016/04/29/kate-16-04-on-windows-64bit/</guid><description>&lt;p&gt;It seems the &lt;a href=&#34;https://kate-editor.org/2016/01/28/kate-on-windows/&#34;&gt;Kate Alpha Release in January&lt;/a&gt; was well received by some users. So we are happy to announce that we are releasing an updated Windows installer for Kate (64bit) today. Essentially, this is the same version that is shipped with the &lt;a href=&#34;https://www.kde.org/announcements/announce-applications-16.04.0.php&#34; target=&#34;_blank&#34;&gt;KDE Applications 16.04 release&lt;/a&gt; under Linux.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://download.kde.org/unstable/kate/&#34; target=&#34;_blank&#34;&gt;Kate-setup-16.04.1-64bit.exe&lt;/a&gt; (64bit) installer, compiled on Windows 10&lt;/li&gt;
&lt;li&gt;If you have git in your PATH, then the &lt;a href=&#34;https://kate-editor.org/2014/10/12/autoloading-projects-plugin-kate-5/&#34;&gt;Kate Projects plugin&lt;/a&gt; will work as expected.&lt;/li&gt;
&lt;li&gt;As mentioned in the &lt;a href=&#34;https://kate-editor.org/2016/01/28/kate-on-windows/&#34; target=&#34;_blank&#34;&gt;previous post&lt;/a&gt;, you may want to also install &lt;a href=&#34;https://dbus-windows-installer.googlecode.com/files/DBus-Windows-Installer-1.4.1-2.exe&#34; target=&#34;_blank&#34;&gt;D-Bus for Windows&lt;/a&gt;, so that all documents opened use the same Kate instance.&lt;/li&gt;
&lt;li&gt;You can compile Kate yourself with Visual Studio 2015 community edition by following the steps in &lt;a href=&#34;https://quickgit.kde.org/?p=scratch%2Fsars%2Fkate-windows.git&#34; target=&#34;_blank&#34;&gt;kate-windows.git&lt;/a&gt;. For me, a few tweaks were necessary, though: If some modules do not compile, just run the cmake build command again (and again). The &amp;#8220;NMake Makefiles JOM&amp;#8221; do not work for me, I had to use &amp;#8220;Visual Studio 14 2015 Win64&amp;#8221; generator. You can start the Visual Studio with `devenv KateOnWindows.sln`. If you have further questions, please contact us on the mailing list.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Screenshot of running Kate under Windows 10:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2016/04/kate-on-win10.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3731&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/04/kate-on-win10.png&#34; alt=&#34;Kate on Windows 10&#34; width=&#34;1273&#34; height=&#34;770&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2016/04/kate-on-win10.png 1273w, https://kate-editor.org/wp-content/uploads/2016/04/kate-on-win10-300x181.png 300w, https://kate-editor.org/wp-content/uploads/2016/04/kate-on-win10-1024x619.png 1024w&#34; sizes=&#34;(max-width: 1273px) 100vw, 1273px&#34; /&gt;&lt;/a&gt;If you want to contribute or have questions, please contact the Kate developers on &lt;a href=&#34;mailto:kwrite-devel@kde.org&#34;&gt;kwrite-devel@kde.org&lt;/a&gt; (&lt;a href=&#34;https://mail.kde.org/mailman/listinfo/kwrite-devel&#34; target=&#34;_blank&#34;&gt;subscribe&lt;/a&gt;). Also, you can sometimes reach us via IRC on irc.freenode.net in the channel #kate.&lt;/p&gt;
&lt;p&gt;Further, if you want to support Kate and the KDE project in general, it is very much appreciated if you &lt;a href=&#34;https://www.kde.org/community/donations/&#34; target=&#34;_blank&#34;&gt;donate to the KDE e.V.&lt;/a&gt;, KDE&amp;#8217;s support organization &amp;#8211; thank you! :-)&lt;/p&gt;</description></item><item><title>Making Windows Phones work in Dolphin</title><link>https://kate-editor.org/2016/03/16/making-windows-phones-work-in-dolphin/</link><pubDate>Wed, 16 Mar 2016 07:28:52 +0000</pubDate><guid>https://kate-editor.org/2016/03/16/making-windows-phones-work-in-dolphin/</guid><description>&lt;p&gt;Hi all,&lt;/p&gt;
&lt;p&gt;if you have a Windows Phone (e.g. Lumia or similar), then please help us on &lt;a href=&#34;https://git.reviewboard.kde.org/r/127386/&#34; target=&#34;_blank&#34;&gt;MTP &amp;amp; Windows Phones&lt;/a&gt; so we can find the correct patch to make these devices work in the kio-mtp io slave.&lt;/p&gt;
&lt;p&gt;Thanks! :-)&lt;/p&gt;</description></item><item><title>Kate on Windows</title><link>https://kate-editor.org/2016/01/28/kate-on-windows/</link><pubDate>Thu, 28 Jan 2016 18:41:39 +0000</pubDate><guid>https://kate-editor.org/2016/01/28/kate-on-windows/</guid><description>
&lt;h3 id=&#34;span-style-color-ff0000-note-span-please-refer-to-get-it-1-for-up-to-date-windows-versions&#34;&gt;&lt;strong&gt;&lt;span style=&#34;color: #ff0000;&#34;&gt;NOTE:&lt;/span&gt; Please refer to &lt;a href=&#34;https://kate-editor.org/get-it/&#34;&gt;Get It&lt;/a&gt; for up-to-date Windows versions&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;It took some time but here is now an installer for Kate on Windows.&lt;/p&gt;
&lt;p&gt;First the proof :)&lt;/p&gt;
&lt;figure id=&#34;attachment_3714&#34; aria-describedby=&#34;caption-attachment-3714&#34; style=&#34;width: 503px&#34; class=&#34;wp-caption alignnone&#34;&gt;[&lt;img class=&#34;wp-image-3714 size-full&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/01/kate-installer.jpg&#34; alt=&#34;kate-installer&#34; width=&#34;503&#34; height=&#34;389&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2016/01/kate-installer.jpg 503w, https://kate-editor.org/wp-content/uploads/2016/01/kate-installer-300x232.jpg 300w&#34; sizes=&#34;(max-width: 503px) 100vw, 503px&#34; /&gt;][2]&lt;figcaption id=&#34;caption-attachment-3714&#34; class=&#34;wp-caption-text&#34;&gt;The installer&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure id=&#34;attachment_3715&#34; aria-describedby=&#34;caption-attachment-3715&#34; style=&#34;width: 1128px&#34; class=&#34;wp-caption alignnone&#34;&gt;[&lt;img class=&#34;size-full wp-image-3715&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2016/01/kate-on-windows3.jpg&#34; alt=&#34;An example of what it can look like&#34; width=&#34;1128&#34; height=&#34;709&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2016/01/kate-on-windows3.jpg 1128w, https://kate-editor.org/wp-content/uploads/2016/01/kate-on-windows3-300x189.jpg 300w, https://kate-editor.org/wp-content/uploads/2016/01/kate-on-windows3-1024x644.jpg 1024w&#34; sizes=&#34;(max-width: 1128px) 100vw, 1128px&#34; /&gt;][3]&lt;figcaption id=&#34;caption-attachment-3715&#34; class=&#34;wp-caption-text&#34;&gt;An example of what it can look like&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;There are still some things that needs fixing. The current installer is built from git master and not from released packages so the translation stuff hat you usually get with the release packages are missing. So only partially translated. Another feature that I&amp;#8217;m still missing is the spell-check. I need to still add a/hspell and language dictionaries to get that to work.&lt;/p&gt;
&lt;p&gt;But for now you can try it out here: &lt;a href=&#34;http://download.kde.org/unstable/kate/&#34;&gt;http://download.kde.org/unstable/kate/&lt;/a&gt; (updated link)&lt;/p&gt;
&lt;p&gt;And if you are eager to help here is my scratch repo for the build recipes:&lt;br /&gt;
git://anongit.kde.org/scratch/sars/kate-windows.git&lt;/p&gt;
&lt;p&gt;And if you happen to want to have only one kate window for all the documents that you open, you might want to install DBus. This is the installer that I have tested with:&lt;br /&gt;
&lt;a href=&#34;https://dbus-windows-installer.googlecode.com/files/DBus-Windows-Installer-1.4.1-2.exe&#34;&gt;https://dbus-windows-installer.googlecode.com/files/DBus-Windows-Installer-1.4.1-2.exe&lt;/a&gt;&lt;br /&gt;
Happy Hacking!&lt;/p&gt;
&lt;p&gt;Note: This would not have been possible without the big effort that the KDE on Windows people have made to get stuff to compile on Windows and keeping sure that it continues to compile. Thank you!&lt;/p&gt;</description></item><item><title>Kate/KWrite on Mac – More Icons &amp; More Plugins</title><link>https://kate-editor.org/2015/10/24/katekwrite-on-mac-more-icons-more-plugins/</link><pubDate>Sat, 24 Oct 2015 15:52:00 +0000</pubDate><guid>https://kate-editor.org/2015/10/24/katekwrite-on-mac-more-icons-more-plugins/</guid><description>&lt;p&gt;After a bit more work, toolbars (and other places ;=) have icons, too. More Kate plugins do work, like the nice project plugin I use the whole day, see:&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2015/10/Bildschirmfoto-2015-10-24-um-17.43.00.png&#34;&gt;&lt;img class=&#34;aligncenter size-medium wp-image-3701&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2015/10/Bildschirmfoto-2015-10-24-um-17.43.00-300x211.png&#34; alt=&#34;Kate with Project Plugin on Mac&#34; width=&#34;300&#34; height=&#34;211&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2015/10/Bildschirmfoto-2015-10-24-um-17.43.00-300x211.png 300w, https://kate-editor.org/wp-content/uploads/2015/10/Bildschirmfoto-2015-10-24-um-17.43.00-1024x721.png 1024w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Updated .dmg files can be found at (alpha quality, only tested on Mac OS 10.10):&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;ftp://kate-editor.org/cullmann/kate-20151024.dmg&#34;&gt;ftp://kate-editor.org/cullmann/kate-20151024.dmg&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;ftp://kate-editor.org/cullmann/kwrite-20151024.dmg&#34;&gt;ftp://kate-editor.org/cullmann/kwrite-20151024.dmg&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Help to get more stuff working and fix the remaining crashs is highly appreciated. A script how to build that all can be found at:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://quickgit.kde.org/?p=kate.git&amp;amp;a=blob&amp;amp;f=mac.txt&#34;&gt;https://quickgit.kde.org/?p=kate.git&amp;amp;a=blob&amp;amp;f=mac.txt&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can use a plain Qt and current KDE Frameworks &amp;amp; Kate master to get that running. Guess the next goal would be to get KIO working without patching Qt, lets see how much work that is.&lt;/p&gt;
&lt;p&gt;P.S. With the guide in mac.txt you should be able to try out how to port other KDE based applications, too, and get a application bundle, as most stuff should be available now, for the average application. How to use some bundled Breeze icon set can be found here, just call code like that after QApplication is constructed:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://quickgit.kde.org/?p=kate.git&amp;amp;a=blob&amp;amp;f=icons.h&#34;&gt;https://quickgit.kde.org/?p=kate.git&amp;amp;a=blob&amp;amp;f=icons.h&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Where to put the Breeze resource see mac.txt (its actually toplevel in the &lt;app&gt;.app folder, not in Resources like told by Qt docs).&lt;/p&gt;</description></item><item><title>Alpha Kate &amp; KWrite Application Bundles</title><link>https://kate-editor.org/2015/10/21/alpha-kate-kwrite-application-bundles/</link><pubDate>Wed, 21 Oct 2015 19:58:02 +0000</pubDate><guid>https://kate-editor.org/2015/10/21/alpha-kate-kwrite-application-bundles/</guid><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;with my latest changes in kate.git, icons work, too, on windows and mac, without any qt patch, if you put some qt resource file containing breeze inside your share or Resources folder (one up from the application binary).&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://quickgit.kde.org/?p=kate.git&amp;a=blob&amp;f=mac.txt&#34; target=&#34;_blank&#34;&gt;mac.txt&lt;/a&gt; contains the rcc calls needed to create such a package and all others things you need to run to get .dmg files. (you need Qt 5.5.0 + a recent CMake + XCode with command line stuff enabled)&lt;/p&gt;
&lt;p&gt;Kate plugins should work, too, if you have a qt.conf that points to the local plugins (like macdeployqt will create for you in the mac.txt run).&lt;/p&gt;
&lt;p&gt;Things not working ATM without patched Qt or more work: KIO slaves and all dbus related stuff.&lt;/p&gt;
&lt;p&gt;With that in place, I consider Kate/KWrite on Mac at least of alpha quality. Still some plugins are missing, optimizations for the .dmg generation could be done like removing stuff we don&amp;#8217;t use like QtWebKit from the bundle, but besides, the programs do something and don&amp;#8217;t crash immediately, at least not on my Mac OS 10.10 installation.&lt;/p&gt;
&lt;p&gt;Mandatory Screenshot :=)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2015/10/kate-mac.png&#34;&gt;&lt;img class=&#34;aligncenter size-medium wp-image-3689&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2015/10/kate-mac-300x211.png&#34; alt=&#34;Kate on Mac with some plugins&#34; width=&#34;300&#34; height=&#34;211&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2015/10/kate-mac-300x211.png 300w, https://kate-editor.org/wp-content/uploads/2015/10/kate-mac-1024x721.png 1024w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Links to Kate &amp;amp; KWrite .dmg files: (&lt;strong&gt;&lt;span style=&#34;color: #ff0000;&#34;&gt;ALPHA quality&lt;/span&gt;&lt;/strong&gt; still, only tested on Mac OS 10.10, now just with icons and some plugins and too many Qt libraries and plugins to make the .dmg large :)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;ftp://cullmann.io/cullmann/kwrite-alpha-20151021.dmg&#34;&gt;kwrite-alpha-20151021.dmg&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;ftp://cullmann.io/cullmann/kate-alpha-20151021.dmg&#34;&gt;kate-alpha-20151021.dmg&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;P.S. Testers are welcome, but help of any other kind even more ;) Given Kate/KWrite are trivial to build on a Mac with just XCode around and the stuff described in mac.txt it would be really GREAT if somebody could step up to help to fine tune this to have some more usable beta or even &amp;#8220;real&amp;#8221; release for Mac in the future. I will continue to work on this, but my Mac isn&amp;#8217;t my main working machine nor what I use for my daily company work, therefore, this is not my highest priority.&lt;/p&gt;</description></item><item><title>KWrite on Mac – Application Bundle</title><link>https://kate-editor.org/2015/10/19/kwrite-on-mac-application-bundle/</link><pubDate>Mon, 19 Oct 2015 13:11:32 +0000</pubDate><guid>https://kate-editor.org/2015/10/19/kwrite-on-mac-application-bundle/</guid><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;after one week of patching frameworks (and KWrite/Kate), the first success can be seen: a kind of working application bundle for KWrite.&lt;/p&gt;
&lt;p&gt;Still no icons, need to set icon theme + search paths right and bundle that, too, but need to investigate more how the icon lookup works.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2015/10/Bildschirmfoto-2015-10-19-um-15.00.00.png&#34;&gt;&lt;img class=&#34;aligncenter size-medium wp-image-3680&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2015/10/Bildschirmfoto-2015-10-19-um-15.00.00-300x245.png&#34; alt=&#34;KWrite on Mac&#34; width=&#34;300&#34; height=&#34;245&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2015/10/Bildschirmfoto-2015-10-19-um-15.00.00-300x245.png 300w, https://kate-editor.org/wp-content/uploads/2015/10/Bildschirmfoto-2015-10-19-um-15.00.00-1024x836.png 1024w, https://kate-editor.org/wp-content/uploads/2015/10/Bildschirmfoto-2015-10-19-um-15.00.00.png 1504w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can build the stuff on your own just following &lt;a href=&#34;https://quickgit.kde.org/?p=kate.git&amp;a=blob&amp;f=mac.txt&#34; target=&#34;_blank&#34;&gt;kate.git/mac.txt&lt;/a&gt; and calling once the macdeployqt tool afterwards on the /Applications/KDE/kwrite.app bundle (with -dmg to get the disk image file).&lt;/p&gt;
&lt;p&gt;For Kate, the macdeployqt still misses an additional switch to deploy own plugins in addition, will add that in the next days, I hope. Have already some local hack, but want to have some patch I can hand in to Qt Company.&lt;/p&gt;
&lt;p&gt;Here a link to the version you see above in the screenshot (not tested below Mac OS 10.10):&lt;/p&gt;
&lt;p&gt;/download/kwrite-alpha-no-icons.dmg&lt;/p&gt;
&lt;p&gt;A colleague tested it for me on a Mac without any dbus/macports/homebrew/co. stuff installed and it seems to work and not eat all his data ;=) But this is &lt;span style=&#34;color: #ff0000;&#34;&gt;&lt;strong&gt;ALPHA quality&lt;/strong&gt;&lt;/span&gt;,  this means all things can happen, I didn&amp;#8217;t test it that much beside using it for my last kate.git commit and starting it up for that screenshot above, not more ;=)&lt;/p&gt;
&lt;p&gt;The good things: This stuff needs no patched Qt nor any patches to any KF5 stuff, this uses plain Qt 5.5.0 from the Qt Company installer and all modifications for frameworks are inside our master branch of framworks already.&lt;/p&gt;
&lt;p&gt;The bad things: e.g. KIO doesn&amp;#8217;t work atm (even if the io slaves would be in the bundle), therefore only local file support.&lt;/p&gt;</description></item><item><title>Kate on Mac, HiDPI</title><link>https://kate-editor.org/2015/10/14/kate-on-mac-hidpi/</link><pubDate>Wed, 14 Oct 2015 20:48:32 +0000</pubDate><guid>https://kate-editor.org/2015/10/14/kate-on-mac-hidpi/</guid><description>&lt;p&gt;Kate runs ;=)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2015/10/kate.png&#34;&gt;&lt;img class=&#34;aligncenter size-medium wp-image-3672&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2015/10/kate-300x245.png&#34; alt=&#34;Kate on Mac HiDPI&#34; width=&#34;300&#34; height=&#34;245&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2015/10/kate-300x245.png 300w, https://kate-editor.org/wp-content/uploads/2015/10/kate-1024x836.png 1024w, https://kate-editor.org/wp-content/uploads/2015/10/kate.png 1504w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;But as you can see, we have no icons, but that is as no work was invested into it and not even any icons are installed ;=)&lt;/p&gt;
&lt;p&gt;I will maintain a guide how to build it on mac in the &lt;a href=&#34;https://quickgit.kde.org/?p=kate.git&amp;a=blob&amp;f=mac.txt&#34; target=&#34;_blank&#34;&gt;kate.git/mac.txt&lt;/a&gt; file. At the moment, this is all not that nice. Kate is able to open files via file dialog and it renders OK, modulo some glitches.&lt;/p&gt;
&lt;p&gt;Still a long way to go, ATM the application bundle contains just the application binary + plist + icons. The libraries are still found only because of they are were they were compiled &amp;amp; installed. Plugins are not found either, need to take a look if that is just missing env vars or more.&lt;/p&gt;
&lt;p&gt;At least, this is far better than at the beginning of the year, were all I had was instant segfaults.&lt;/p&gt;
&lt;p&gt;Kate runs here btw. without any dbus server running, which means file opening in that window via command line won&amp;#8217;t work, but still, compared to KWrite, which crashs on open dialog because of dbus missing, that is nice ;=)&lt;/p&gt;</description></item><item><title>KWrite on Mac</title><link>https://kate-editor.org/2015/10/12/kwrite-on-mac/</link><pubDate>Mon, 12 Oct 2015 21:36:24 +0000</pubDate><guid>https://kate-editor.org/2015/10/12/kwrite-on-mac/</guid><description>&lt;p&gt;After some hacking on frameworks, I have the first running KWrite version on Mac that uses an unpatched Qt from the qt.io offline installer:&lt;br /&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2015/10/kwrite.png&#34;&gt;&lt;img class=&#34;aligncenter size-medium wp-image-3657&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2015/10/kwrite-300x245.png&#34; alt=&#34;KWrite on Mac&#34; width=&#34;300&#34; height=&#34;245&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2015/10/kwrite-300x245.png 300w, https://kate-editor.org/wp-content/uploads/2015/10/kwrite-1024x836.png 1024w, https://kate-editor.org/wp-content/uploads/2015/10/kwrite.png 1504w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
It is still ugly, as scaled on my HiDPI display as the plist file is missing and it crashs on everything (aka open dialog) and has no icons.&lt;/p&gt;
&lt;p&gt;But beside that, it works.&lt;/p&gt;
&lt;p&gt;No magic, just the xcode clang toolchain + stock qt + stock cmake + gettext + KDE Frameworks 5 ;)&lt;/p&gt;
&lt;p&gt;Script that did the job (still some patches to frameworks missing in master that remove optional deps and fixes linking), it is available in updated form in kate.git:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://quickgit.kde.org/?p=kate.git&amp;amp;a=blob&amp;amp;f=mac.txt&#34;&gt;https://quickgit.kde.org/?p=kate.git&amp;amp;a=blob&amp;amp;f=mac.txt&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The changes will benefit Windows builds, too, as they made the dependencies a bit smaller. You for example need no longer phonon to get this running, nor do you need to hassle around with the xslt/xml doctools on Windows.&lt;/p&gt;
&lt;p&gt;Patches that are needed t to be applied to have this working:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://git.reviewboard.kde.org/r/125614/&#34;&gt;https://git.reviewboard.kde.org/r/125614/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://git.reviewboard.kde.org/r/125616/&#34;&gt;https://git.reviewboard.kde.org/r/125616/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kate/KDevelop Sprint 2015 – Summary for Kate</title><link>https://kate-editor.org/2015/10/11/katekdevelop-sprint-2015-summary-for-kate/</link><pubDate>Sun, 11 Oct 2015 13:49:06 +0000</pubDate><guid>https://kate-editor.org/2015/10/11/katekdevelop-sprint-2015-summary-for-kate/</guid><description>&lt;p&gt;The end of the joint Kate/KDevelop Sprint 2015 is coming closer, half of the people already have left to get home.&lt;/p&gt;
&lt;p&gt;It was a good thing to have this sprint sponsored by the KDE e.V. and organized by Milian Wolff directly after the Qt World Summit 2015 here in Berlin. I think that made it easier for people to attend both events, like myself ;=)&lt;/p&gt;
&lt;p&gt;I came to the sprint to work on getting our bugs sorted and fixed and to improve the state of the Mac port. I must confess, the bug fixing session worked out well, but I didn&amp;#8217;t take a shot at Mac at all.&lt;/p&gt;
&lt;p&gt;What did I achieve? I fixed many small bugs and I reintroduced the automatic brackets completion removed by accident in the KDE 4.x =&amp;gt; KF5 transition.&lt;/p&gt;
&lt;p&gt;In addition I cleaned up old things in our bugzilla. The new policy for Kate will be: wishes that not got any attention since 2 years will be closed, it makes no sense to keep them around for ever and it will only make overview about what is really wanted impossible.&lt;/p&gt;
&lt;p&gt;In addition, I tried to help Kåre Särs to get Kate running on Windows. We want to have a way to build Kate with a unpatched Qt. At the moment that is not really feasible, as things like ui files are not found, xml syntax files are not found and so on. I started to solve that issues and at least KTextEditor framework itself should now be more or less Windows (and therefore Mac) compatible. But the other frameworks will still need love, like KXmlGui not being able to locate its own ui_standards.rc. Kate application is now compilable without any strange patches, too, on Windows.&lt;/p&gt;
&lt;p&gt;Mandatory screenshot (be aware, to get menus and stuff working, we here randomly copied all files into the right user local directories):&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2015/10/kate-on-windows1.png&#34;&gt;&lt;img class=&#34;aligncenter size-medium wp-image-3647&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2015/10/kate-on-windows1-300x239.png&#34; alt=&#34;Kate on Windows&#34; width=&#34;300&#34; height=&#34;239&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2015/10/kate-on-windows1-300x239.png 300w, https://kate-editor.org/wp-content/uploads/2015/10/kate-on-windows1.png 840w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dominik Haumann did help us in our bug fixing effort, too. At the end of the sprint he started the painful work to review and fix the use of hard-coded colors in our highlighting files, work nobody really wants to do :=)&lt;/p&gt;
&lt;p&gt;Sven Brauch helped to improve my reintroduced bracket completion to be not completely dumb .P&lt;/p&gt;
&lt;p&gt;All in all, I think it was a productive sprint. Not that we all reached our goals, but we did make progress.&lt;/p&gt;
&lt;p&gt;I think Kate &amp;amp; KTextEditor will be in a very good shape for the 15.16 KF5 Frameworks  and the next KDE Applications release. In addition you always get again momentum to work on more stuff in the close future by meeting up in person and do some socializing aka eating ;)&lt;/p&gt;
&lt;p&gt;Therefore, to wrap it up: Nice work all guys, thanks by the Kate maintainer to all people that joint the sprint and special thanks to Milian for setting it up and the KDE e.V. for sponsoring it ;=)&lt;/p&gt;
&lt;p&gt;P.S. Yeah, sponsoring implies that the e.V. has money for that. To keep such spring sponsoring possible in the future =&amp;gt; &lt;a href=&#34;https://www.kde.org/community/donations/index.php#money&#34; target=&#34;_blank&#34;&gt;give us money&lt;/a&gt;!&lt;/p&gt;</description></item><item><title>Kate/KDevelop 2015</title><link>https://kate-editor.org/2015/10/10/katekdevelop-2015/</link><pubDate>Sat, 10 Oct 2015 20:48:57 +0000</pubDate><guid>https://kate-editor.org/2015/10/10/katekdevelop-2015/</guid><description>&lt;p&gt;From the 7th to the 11th of October Kate and KDevelop contricutors once again met to work on both Kate and KDevelop.&lt;/p&gt;
&lt;p&gt;The work in Kate was mostly spent on fixing bugs, as can be seen by the following bug chart for Kate:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2015/10/bugcharts.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3639&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2015/10/bugcharts.png&#34; alt=&#34;Kate Bug Charts&#34; width=&#34;787&#34; height=&#34;587&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2015/10/bugcharts.png 787w, https://kate-editor.org/wp-content/uploads/2015/10/bugcharts-300x224.png 300w&#34; sizes=&#34;(max-width: 787px) 100vw, 787px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That is, more than 300 bug and wish reports were closed. Granted, many of the reports were just old and given our limited manpower we were closing many wishes since it is unlikely that old wishes get implemented. Then again, we also fixed a lot of bugs that required code changes, and also fine tuning of KTextEditor and Kate. The fixed bugs are roughly &lt;a href=&#34;https://bugs.kde.org/buglist.cgi?bug_status=RESOLVED&amp;chfield=resolution&amp;chfieldfrom=2015-10-04&amp;chfieldto=2015-10-11&amp;chfieldvalue=FIXED&amp;list_id=1301793&amp;product=kate&amp;product=frameworks-ktexteditor&amp;query_format=advanced&amp;resolution=FIXED&#34; target=&#34;_blank&#34;&gt;KDE bug tracker&lt;/a&gt; (yes, the auto-brackets option is back!), besides there are also a lot of changes there were not listed in bug reports. We hope the changes are useful to you, so be sure to get the KDE Frameworks version 5.16 as soon as it&amp;#8217;s released :-)&lt;/p&gt;</description></item><item><title>Qt World Summit &#43; Kate/KDevelop Sprint in Berlin</title><link>https://kate-editor.org/2015/10/09/qt-world-summit-katekdevelop-sprint-in-berlin/</link><pubDate>Fri, 09 Oct 2015 08:39:44 +0000</pubDate><guid>https://kate-editor.org/2015/10/09/qt-world-summit-katekdevelop-sprint-in-berlin/</guid><description>&lt;p&gt;This week is really busy, first three days of Qt World Summit and now hacking away at the Kate/KDevelop sprint in Berlin.&lt;/p&gt;
&lt;p&gt;This year my personal goal will be to get our bugs &amp;amp; wishes back into shape.&lt;/p&gt;
&lt;p&gt;One major decision I as the maintainer did take was to close all wishes that not got changed since two years. Our team is very small and we have plenty of real bugs to take care of (and their number is rising) such that we will never be able to implement random requests.&lt;/p&gt;
&lt;p&gt;If an user is really interested in the feature to come into existance, the wish can be reopened. Still, if no new arguments are brought up that might lead to some more interest by the Kate team, I think that won&amp;#8217;t help a lot. The best solution would be if people could provide patches, which in some cases, like for missing highlighting features in the syntax files, is really easy. At least it should be for the advanced user crowd attracted by an advanced text editor.&lt;/p&gt;</description></item><item><title>Again about Relicensing KDE’s Source Code</title><link>https://kate-editor.org/2015/08/09/again-about-relicensing/</link><pubDate>Sun, 09 Aug 2015 19:37:58 +0000</pubDate><guid>https://kate-editor.org/2015/08/09/again-about-relicensing/</guid><description>&lt;p&gt;To get started with KDE development, newcomers usually first sent patches. Having sent several patches, the newcomers are typically encouraged by us (the reviewers) to apply for a KDE contributor account. This application includes the question of &amp;#8220;who encouraged you to apply for a KDE contributor account&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Then, the KDE sysadmins contact the mentioned developers to make sure the application is valid and trustworthy.  Hence, you, as someone who encouraged others to apply for an account, get a mail with the subject &amp;#8220;Developer account application approval [&amp;#8230;]&amp;#8221;.&lt;/p&gt;
&lt;p&gt;To all KDE contributors: Given you probably also were involved with getting other contributors involved with KDE, please follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Filter your KDE mails for &amp;#8220;Developer account application approval&amp;#8221;&lt;/li&gt;
&lt;li&gt;For each contributor, get the contributors commit name (you can look this up on identity.kde.org &amp;gt; Prople.&lt;/li&gt;
&lt;li&gt;Check, whether the new contributor added him/herself to the &lt;a href=&#34;https://phabricator.kde.org/source/kde-dev-scripts/browse/master/relicensecheck.pl&#34; target=&#34;_blank&#34;&gt;relicensecheck.pl&lt;/a&gt; script.&lt;/li&gt;
&lt;li&gt;If not, please send this contributor a mail and encourage him/her to add him/herself to this script.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You really should check this, since you are also responsible for getting these new contributors commit access.&lt;/p&gt;
&lt;p&gt;I did that with 8 contributors. 7 already added themselves within one week. Only one is not reachable by mail anymore&amp;#8230; So it seems to work quite well.&lt;/p&gt;</description></item><item><title>Plasma 5: Keeping an Eye on the Disk Quota</title><link>https://kate-editor.org/2015/08/02/plasma-5-keeping-an-eye-on-the-disk-quota/</link><pubDate>Sun, 02 Aug 2015 09:39:43 +0000</pubDate><guid>https://kate-editor.org/2015/08/02/plasma-5-keeping-an-eye-on-the-disk-quota/</guid><description>
&lt;p&gt;At this year&amp;#8217;s KDE conference Akademy, I was working on a small plasmoid to continuously track the disk quota.&lt;/p&gt;
&lt;p&gt;The disk quota is usually used in enterprise installations where network shares are mounted locally. Typically, sysadmins want to avoid that users copy lots of data into their folders, and therefor set quotas (the quota limit has nothing to do with the physical size of a partition). Typically, once a user gets over the hard limit of the quota, the account is blocked and the user cannot login anymore. This happens from time to time, since the users are not really aware of the current quota limit and the already used disk space.&lt;/p&gt;
&lt;h3 id=&#34;disk-quota-as-plasmoid&#34;&gt;Disk Quota as Plasmoid&lt;/h3&gt;
&lt;p&gt;Here is where the &amp;#8220;Disk Quota&amp;#8221; plasmoid helps: Once added to the panel, it shows all quota limits when clicking on the plasmoid:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3603&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota.png&#34; alt=&#34;Disk Quota&#34; width=&#34;537&#34; height=&#34;382&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota.png 537w, https://kate-editor.org/wp-content/uploads/2015/08/diskquota-300x213.png 300w&#34; sizes=&#34;(max-width: 537px) 100vw, 537px&#34; /&gt;&lt;/a&gt;On mouse over, a nice tool tip shows the used quota in percent (in case multiple quota limits exist, the highest quota is displayed):&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-tooltip.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3604&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-tooltip.png&#34; alt=&#34;Disk Quota ToolTip&#34; width=&#34;498&#34; height=&#34;188&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-tooltip.png 498w, https://kate-editor.org/wp-content/uploads/2015/08/diskquota-tooltip-300x113.png 300w&#34; sizes=&#34;(max-width: 498px) 100vw, 498px&#34; /&gt;&lt;/a&gt;When a quota is &amp;gt; 50% but smaller than 75%, the quota icon gets orange:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-low.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3605&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-low.png&#34; alt=&#34;Disk Quota &gt; 50%&amp;rdquo; width=&amp;ldquo;543&amp;rdquo; height=&amp;ldquo;379&amp;rdquo; srcset=&amp;ldquo;/wp-content/uploads/2015/08/diskquota-low.png 543w, /wp-content/uploads/2015/08/diskquota-low-300x209.png 300w&amp;rdquo; sizes=&amp;ldquo;(max-width: 543px) 100vw, 543px&amp;rdquo; /&amp;gt;&lt;/a&gt; And if the quota is between 75% and 90%, the quota icon gets red: &lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-medium1.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3607&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-medium1.png&#34; alt=&#34;diskquota-medium&#34; width=&#34;542&#34; height=&#34;366&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-medium1.png 542w, https://kate-editor.org/wp-content/uploads/2015/08/diskquota-medium1-300x203.png 300w&#34; sizes=&#34;(max-width: 542px) 100vw, 542px&#34; /&gt;&lt;/a&gt;Finally, a quota &amp;gt; 90% will urge the user to cleanup data by showing a exclamation mark as well:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-high.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3608&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-high.png&#34; alt=&#34;High Disk Quota&#34; width=&#34;535&#34; height=&#34;376&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-high.png 535w, https://kate-editor.org/wp-content/uploads/2015/08/diskquota-high-300x211.png 300w&#34; sizes=&#34;(max-width: 535px) 100vw, 535px&#34; /&gt;&lt;/a&gt;Clicking on a quota entry will launch &lt;a href=&#34;https://en.wikipedia.org/wiki/Filelight&#34; target=&#34;_blank&#34;&gt;Filelight&lt;/a&gt; in the correct folder, if it is installed.&lt;/p&gt;
&lt;h3 id=&#34;disk-quota-in-system-tray&#34;&gt;Disk Quota in System Tray&lt;/h3&gt;
&lt;p&gt;If the quota plasmoid is shown in the system tray (configure the systray and add it there), then the quota information is shown inline in the system tray popup:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-systray.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3609&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-systray.png&#34; alt=&#34;Disk Quota in System Tray&#34; width=&#34;654&#34; height=&#34;510&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-systray.png 654w, https://kate-editor.org/wp-content/uploads/2015/08/diskquota-systray-300x234.png 300w&#34; sizes=&#34;(max-width: 654px) 100vw, 654px&#34; /&gt;&lt;/a&gt;As soon as the quota is equal to or greater than 50%, the quota icon automatically gets visible in the system tray panel:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-systray-medium.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3610&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-systray-medium.png&#34; alt=&#34;Disk Quota - Attention&#34; width=&#34;691&#34; height=&#34;507&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-systray-medium.png 691w, https://kate-editor.org/wp-content/uploads/2015/08/diskquota-systray-medium-300x220.png 300w&#34; sizes=&#34;(max-width: 691px) 100vw, 691px&#34; /&gt;&lt;/a&gt;Finally, if the quota is &amp;gt;= 98%, the quota icon pulses to get the user&amp;#8217;s attention (a nice Plasma 5 feature!).&lt;/p&gt;
&lt;p&gt;To decrease the quota again, simply click on the respective quota entry in the list view. This launches &lt;a href=&#34;https://en.wikipedia.org/wiki/Filelight&#34; target=&#34;_blank&#34;&gt;Filelight&lt;/a&gt; with the correct location.&lt;/p&gt;
&lt;h3 id=&#34;code-internals&#34;&gt;Code Internals&lt;/h3&gt;
&lt;p&gt;As of now, the Disk Quota plasmoid internally calls the command line tool &amp;#8216;&lt;strong&gt;quota&lt;/strong&gt;&amp;#8216; to retrieve the quota information. The output of this tool is parsed and then interpreted to show the quota information as can be seen in the screen shots. If the quota command line tool is not installed, then the Disk Quota plasmoid shows diagnostics like this:&lt;/p&gt;
&lt;h3 id=&#34;img-class-aligncenter-size-full-wp-image-3612-src-wp-content-uploads-2015-08-diskquota-missing-png-alt-disk-quota-missing-width-546-height-367-srcset-wp-content-uploads-2015-08-diskquota-missing-png-546w-wp-content-uploads-2015-08-diskquota-missing-300x202-png-300w-sizes-max-width-546px-100vw-546px-8-infos-for-packagers&#34;&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-missing.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3612&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-missing.png&#34; alt=&#34;Disk Quota missing&#34; width=&#34;546&#34; height=&#34;367&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2015/08/diskquota-missing.png 546w, https://kate-editor.org/wp-content/uploads/2015/08/diskquota-missing-300x202.png 300w&#34; sizes=&#34;(max-width: 546px) 100vw, 546px&#34; /&gt;&lt;/a&gt;Infos for Packagers&lt;/h3&gt;
&lt;p&gt;Since Disk Quota uses the command line tool &amp;#8216;quota&amp;#8217; and launches &amp;#8216;filelight&amp;#8217; when clicking on quota entries, you should ship &amp;#8216;quota&amp;#8217; and &amp;#8216;filelight&amp;#8217; when installing this applet. Most certainly, this plasmoid is only useful for networked systems (with remote mount points) and enterprise installations.&lt;/p&gt;
&lt;h3 id=&#34;release-info&#34;&gt;Release Info&lt;/h3&gt;
&lt;p&gt;Status: Included in Plasma 5.5. ( &lt;a href=&#34;https://git.reviewboard.kde.org/r/124589/&#34; target=&#34;_blank&#34;&gt;Review Request: Disk Quota&lt;/a&gt;)&lt;/p&gt;
&lt;h3 id=&#34;credit-where-credit-is-due&#34;&gt;Credit where Credit is Due&lt;/h3&gt;
&lt;p&gt;During implementation lots of questions popped up. Thankfully, we were all at the KDE conference Akademy, and Kai, Sebas, Marco, Martin and the Visual Design group (for design help and icons) were there for quick help &amp;#8211; Thanks a lot! Hope you all like the result :-)&lt;/p&gt;</description></item><item><title>Akademy 2015 &amp; Kate</title><link>https://kate-editor.org/2015/07/31/akademy-2015-kate/</link><pubDate>Fri, 31 Jul 2015 08:53:34 +0000</pubDate><guid>https://kate-editor.org/2015/07/31/akademy-2015-kate/</guid><description>&lt;p&gt;Today, I will travel back home from Akademy 2015.&lt;/p&gt;
&lt;p&gt;I must say, it was really a nice KDE meeting and I had a lot of fun ;=)&lt;br /&gt;
The first day the KDE e.V. general assembly did take place, then two days of actually interesting talks (including the great announcement of Plasma Mobile). After some more days with interesting BoFs and hacking, Akademy is now ending for me.&lt;/p&gt;
&lt;p&gt;I didn&amp;#8217;t do that much work on Kate, I mostly did small bugfixes for the applications bundled with the KDE Applications releases regarding their HiDPI support, finally no Konsole that can&amp;#8217;t redraw correctly on scrolling on a HiDPI screen with scaling activated!&lt;/p&gt;
&lt;p&gt;For Kate, the most stuff I did was porting one more plugin (the text filter plugin), fixing some small bugs and rearranging the search bars for in document and in files search. I hope it now is a bit nicer to use, still that is not the final state and I guess we will ask the VDG for more input later on. (btw., if you see any HiDPI glitches in Kate/KTextEditor master, please inform me, I really want to have non-pixelated output ;=)&lt;/p&gt;
&lt;p&gt;A big thanks to all organizers &amp;amp; helpers of Akademy 2015! You did a great job, it was a lot of fun, the location was nice, the social event + day trip was good, all fine :) One of the nicer Akademy experiences! Lets hope that the flight home works out, as Dominik is taking the same plane, otherwise the Kate workforce will be seriously diminished.&lt;/p&gt;</description></item><item><title>Licensing of KDE Code</title><link>https://kate-editor.org/2015/07/26/licensing-of-kde-code/</link><pubDate>Sun, 26 Jul 2015 12:57:27 +0000</pubDate><guid>https://kate-editor.org/2015/07/26/licensing-of-kde-code/</guid><description>&lt;p&gt;Akademy, the yearly KDE conference is alive and kicking. During the last days we were discussing again about potential KDE licensing issues (for instance code that is licensed under GPLv2, but not GPLv3). That&amp;#8217;s why KDE is maintaining a relicense checker script, that &lt;strong&gt;every KDE contributor&lt;/strong&gt; should enter herself/himself. I&amp;#8217;ve blogged about it already &lt;a href=&#34;https://kate-editor.org/2015/02/21/add-yourself-to-the-relicense-checker-script/&#34; target=&#34;_blank&#34;&gt;in January 2015&lt;/a&gt;, but it cannot hurt to repeat it from time to time: From the &lt;a title=&#34;KDE Relicensing&#34; href=&#34;https://techbase.kde.org/Projects/KDE_Relicensing&#34; target=&#34;_blank&#34;&gt;KDE relicensing page&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
A couple of KDE dependent projects or even libraries have moved or are going to move to GPLv3.
&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
Unfortunately, GPL v3 is incompatible with GPL v2. This means that it is not possible to create a project linking GPL v2 and v3 code together. There is no problem for projects which are licensed GPLv2+ (version 2 or above).
&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
A few parts of KDE are currently licensed as GPLv2 only. So far we have no reason to believe that this was something other than an oversight. However, we still need to validate with the individual copyright holders that a relicense to GPLv2+ or GPLv2+v3 is okay with them.
&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
Therefore, in an effort we’re trying to identify the contributors that have contributed under the terms of GPLv2 and where the “+” part was not explicitly mentioned. If we know that all contributors agreed to a relicense, we can go ahead and flip the license of the individual source file.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Short story: If you have not done so yet, &lt;strong&gt;please add yourself to the kde &lt;a title=&#34;KDE Relicense Checker&#34; href=&#34;https://projects.kde.org/projects/kde/kdesdk/kde-dev-scripts/repository/revisions/master/entry/relicensecheck.pl&#34; target=&#34;_blank&#34;&gt;relicensecheck.pl&lt;/a&gt; file!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you cannot add yourself right now, please consider sending a mail to &lt;a href=&#34;mailto:kde-devel@kde.org&#34; target=&#34;_blank&#34;&gt;kde-devel@kde.org&lt;/a&gt; publically stating that you&amp;#8217;re ok with relicensing all your contributions hosted on the KDE services under either  GPLv23, LGPLv23, GPLv2+, LGPLv2+. Additionally, you can give the membership of the KDE e.V. the credentials to relicense your contributions in future (this makes a lot of sense if you cannot contribute to KDE anymore and are no longer around). Many of the KDE contributors did this already. Thanks! :-)&lt;/p&gt;
&lt;p&gt;PS: The official way to give KDE the rights to change licenses would be by signing the &lt;a href=&#34;https://ev.kde.org/rules/fla.php&#34; target=&#34;_blank&#34;&gt;KDE e.V.&amp;#8217;s FLA&lt;/a&gt;. Please note, that the KDE e.V. will not abuse this by immediately changing licenses you chose. Instead, this mostly about emergency cases (think of someone who suddenly passes away). But the script mentioned above is already a good start, since we can use it to quickly scan our code and identify problematic parts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; With signing the FLA, you give the KDE e.V. several rights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;update KDE SC license&lt;/li&gt;
&lt;li&gt;can protect KDE projects/code&lt;/li&gt;
&lt;li&gt;can proect you (e.g. in copyright lawsuits)&lt;/li&gt;
&lt;li&gt;make sure your code will live on even if you can&amp;#8217;t contribute anymore&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is important to note, thought, that signing the FLA also includes that the KDE e.V. gives you back all your rights, so for you and your contributions, nothing changes. There is a BOF session about all this on Monday, so make sure you attend if you&amp;#8217;re interested!&lt;/p&gt;</description></item><item><title>KDE Applications Versioning</title><link>https://kate-editor.org/2015/07/26/kde-applications-versioning/</link><pubDate>Sun, 26 Jul 2015 12:25:23 +0000</pubDate><guid>https://kate-editor.org/2015/07/26/kde-applications-versioning/</guid><description>&lt;p&gt;A common problem for many applications contained in the KDE Applications releases are non-incremented version numbers. Often the maintainer forgets to update the version number of the application, like I did it for Kate since the first KF5 based release.&lt;/p&gt;
&lt;p&gt;This means: On Bugzilla, I get bugreports that always tell me &amp;#8220;Kate 5.0.0&amp;#8221;, not very helpful.&lt;/p&gt;
&lt;p&gt;KDE Frameworks solves this by automatic setting of the current framework release version in all framework CMakeLists.txt.&lt;/p&gt;
&lt;p&gt;For KDE Applications, we have now optional the same concept. For details: visit &lt;a href=&#34;https://community.kde.org/Applications/Versioning&#34; target=&#34;_blank&#34;&gt;&lt;a href=&#34;https://community.kde.org/Applications/Versioning&#34;&gt;https://community.kde.org/Applications/Versioning&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In short: If you are to lazy to update your version number yourself or are just fine with using the same version number als the KDE Applications releases, you can add the following three lines to your toplevel CMakeLists.txt:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# KDE Application Version, managed by release script&amp;lt;br /&amp;gt;
set (KDE_APPLICATIONS_VERSION_MAJOR &amp;quot;15&amp;quot;)&amp;lt;br /&amp;gt;
set (KDE_APPLICATIONS_VERSION_MINOR &amp;quot;04&amp;quot;)&amp;lt;br /&amp;gt;
set (KDE_APPLICATIONS_VERSION_MICRO &amp;quot;0&amp;quot;)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;These variables will then be patched by the release scripts to the &amp;#8220;right&amp;#8221; version for the current release series.&lt;br /&gt;
You can than either just use the MICRO version to suffix your own applications version to differentiate the bugfix releases or like Kate construct your complete version number from the three vars and be done ;=)&lt;/p&gt;
&lt;p&gt;I hope this helps to have more consistent and more important meaningful version numbers once again in the applications we bundle. Thanks to all people that made this &amp;#8220;magic&amp;#8221; happen ;=)&lt;/p&gt;</description></item><item><title>Reception of Plasma Mobile</title><link>https://kate-editor.org/2015/07/26/reception-of-plasma-mobile/</link><pubDate>Sun, 26 Jul 2015 10:04:04 +0000</pubDate><guid>https://kate-editor.org/2015/07/26/reception-of-plasma-mobile/</guid><description>&lt;p&gt;The yearly KDE conference Akademy is currently being held with lots of interesting talks and workshops. One big thing that was announced yesterday is &lt;a href=&#34;https://dot.kde.org/2015/07/25/plasma-mobile-free-mobile-platform&#34; target=&#34;_blank&#34;&gt;Plasma Mobile, a free mobile platform&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2015/07/phone-still-small.jpg&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3559&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2015/07/phone-still-small.jpg&#34; alt=&#34;Plasma Mobile, a Free Mobile Platform&#34; width=&#34;400&#34; height=&#34;256&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2015/07/phone-still-small.jpg 400w, https://kate-editor.org/wp-content/uploads/2015/07/phone-still-small-300x192.jpg 300w&#34; sizes=&#34;(max-width: 400px) 100vw, 400px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The presentation of Plasma Mobile was quite impressive: A video of using Plasma Mobile on a Nexus 5 showed a nice  visual design, smooth transitions and quite some usable functionality already. This impression was confirmed later when I was playing around with Plasma Mobile on the Nexus 5 myself.&lt;/p&gt;
&lt;p&gt;So good job, plasma team!&lt;/p&gt;
&lt;p&gt;Plasma Mobile already raised quite some interest in lots of news sites, with lots of user comments (mostly positive), see for instance:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Slashdot: &lt;a href=&#34;http://tech.slashdot.org/story/15/07/25/1326220/kde-community-announces-fully-open-source-plasma-mobile&#34; target=&#34;_blank&#34;&gt;KDE Community Announces Fully Open Source Plasma Mobile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OSNews: &lt;a href=&#34;http://www.osnews.com/story/28730/Plasma_Phone_OS_a_KDE_project_for_mobile&#34; target=&#34;_blank&#34;&gt;Plasma Phone OS, a KDE project for mobile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hacker News: &lt;a href=&#34;https://news.ycombinator.com/item?id=9947146&#34; target=&#34;_blank&#34;&gt;Plasma Mobile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Reddit: &lt;a href=&#34;http://www.reddit.com/r/kde/comments/3ek970/plasma_mobile_on_nexus_5_kwinwayland_in_action/&#34; target=&#34;_blank&#34;&gt;Plasma Mobile on Nexus 5 (Kwin/Wayland in action)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Golem: &lt;a href=&#34;http://www.golem.de/news/konkurrenz-fuer-jolla-und-ubuntu-phone-kde-plasma-5-laeuft-auf-smartphones-1507-115426.html&#34; target=&#34;_blank&#34;&gt;KDE Plasma 5 läuft auf Smartphones&lt;/a&gt; (german)&lt;/li&gt;
&lt;li&gt;Heise: &lt;a href=&#34;http://www.heise.de/newsticker/meldung/Plasma-Mobile-bringt-KDE-5-aufs-Smartphone-2763073.html&#34; target=&#34;_blank&#34;&gt;Plasma Mobile bringt KDE 5 auf Smartphones&lt;/a&gt; (german)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What&amp;#8217;s important to note is that the project is still in a very early stage of development, and its target is to be really usable around mid of 2016. As such, there are most certainly stability issues and lots of features missing.&lt;/p&gt;
&lt;p&gt;But this also opens opportunities: If you are into mobile platforms, this is the right time to get in contact and contribute! The plasma developers are really nice people and welcome every single contribution, be it in terms of brainstorming ideas (e.g. graphical mockups), code, or organizing developer events. So get in touch now through the &lt;a href=&#34;http://forums.plasma-mobile.org/forumdisplay.php?fid=38&#34; target=&#34;_blank&#34;&gt;Plasma Mobile forums&lt;/a&gt; and through the &lt;a href=&#34;https://mail.kde.org/mailman/listinfo/plasma-devel&#34; target=&#34;_blank&#34;&gt;Plasma Contributor Mailing List&lt;/a&gt;! Just say hi and ask how to get involved :-)&lt;/p&gt;</description></item><item><title>KF5 &amp; Plasma 5 at work ;=)</title><link>https://kate-editor.org/2015/06/07/kf5-plasma5-at-work/</link><pubDate>Sun, 07 Jun 2015 13:46:25 +0000</pubDate><guid>https://kate-editor.org/2015/06/07/kf5-plasma5-at-work/</guid><description>&lt;p&gt;In the last months, I didn&amp;#8217;t get much time to work on Kate nor KTextEditor. Beside some small bugfixes and cleanups I got nothing commited :/&lt;/p&gt;
&lt;p&gt;Guess one of the main issues is, I don&amp;#8217;t use the KF5 based version of Kate that much ATM. At home, it is the only editor I use, but I have not much time to hack at home anyway.&lt;/p&gt;
&lt;p&gt;Therefore today I installed the same setup on my work machine and will now use the KF5 based Kate for all of my day job, perhaps that motivates me more to take a look at the issues the Qt5/KF5 port still has.
(And I will work in a KDE Plasma 5 session with most stuff KF5 based now, including all important stuff like the nice Konsole ;=)&lt;/p&gt;
&lt;p&gt;First update: The &lt;a href=&#34;https://kate-editor.org/get-it/&#34;&gt;Get It&lt;/a&gt; page got an update to show how to install KF5 based Kate/KWrite from kate.git on openSUSE 13.2 ;) Feel free to send in the needed hints for other distros (to kwrite-devel@kde.org).&lt;/p&gt;</description></item><item><title>Kate from KDE Applications 15.04 – KF 5.9</title><link>https://kate-editor.org/2015/05/03/kate-15-04-kf-5-9/</link><pubDate>Sun, 03 May 2015 16:29:19 +0000</pubDate><guid>https://kate-editor.org/2015/05/03/kate-15-04-kf-5-9/</guid><description>&lt;p&gt;I reinstalled my home machine last week with openSUSE 13.2 and installed their latest 15.04 packages from the KDE repos ;=)&lt;/p&gt;
&lt;p&gt;That is the first time that I use a distro-shipped Kate that is based on KF5 (and no other Kate 4.x is installed any more as escape route).&lt;/p&gt;
&lt;p&gt;I think I already have seen 1-2 glitches (like not needed questions for reload and some repaint issue on reload), still, overall, I am happy with what is shipped as 15.04.&lt;/p&gt;
&lt;p&gt;Thanks to all people contributing to KF5 and Kate 5.x! Well done!&lt;br /&gt;
And thanks to the packagers of 15.04, too. Nice to have up-to-date applications with just an additional repository to add!&lt;/p&gt;</description></item><item><title>Add yourself to the relicense checker script</title><link>https://kate-editor.org/2015/02/21/add-yourself-to-the-relicense-checker-script/</link><pubDate>Sat, 21 Feb 2015 10:28:54 +0000</pubDate><guid>https://kate-editor.org/2015/02/21/add-yourself-to-the-relicense-checker-script/</guid><description>&lt;p&gt;From the &lt;a title=&#34;KDE Relicensing&#34; href=&#34;https://techbase.kde.org/Projects/KDE_Relicensing&#34; target=&#34;_blank&#34;&gt;KDE relicensing page&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
A couple of KDE dependent projects or even libraries have moved or are going to move to GPLv3.
&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
Unfortunately, GPL v3 is incompatible with GPL v2. This means that it is not possible to create a project linking GPL v2 and v3 code together. There is no problem for projects which are licensed GPLv2+ (version 2 or above).
&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
A few parts of KDE are currently licensed as GPLv2 only. So far we have no reason to believe that this was something other than an oversight. However, we still need to validate with the individual copyright holders that a relicense to GPLv2+ or GPLv2+v3 is okay with them.
&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
Therefore, in an effort we&amp;#8217;re trying to identify the contributors that have contributed under the terms of GPLv2 and where the &amp;#8220;+&amp;#8221; part was not explicitly mentioned. If we know that all contributors agreed to a relicense, we can go ahead and flip the license of the individual source file.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Short story: If you have not done so yet, &lt;strong&gt;please add yourself to the kde &lt;a title=&#34;KDE Relicense Checker&#34; href=&#34;https://projects.kde.org/projects/kde/kdesdk/kde-dev-scripts/repository/revisions/master/entry/relicensecheck.pl&#34; target=&#34;_blank&#34;&gt;relicensecheck.pl&lt;/a&gt; file!&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>What holds you on KDE</title><link>https://kate-editor.org/2015/01/11/what-holds-you-on-kde/</link><pubDate>Sun, 11 Jan 2015 15:55:32 +0000</pubDate><guid>https://kate-editor.org/2015/01/11/what-holds-you-on-kde/</guid><description>&lt;p&gt;Look &lt;a title=&#34;What holds you on KDE&#34; href=&#34;http://www.reddit.com/r/kde/comments/2ruq7y/what_holds_you_on_kde/&#34; target=&#34;_blank&#34;&gt;here&lt;/a&gt;, if you are interested.&lt;/p&gt;</description></item><item><title>Kate5 on Mac</title><link>https://kate-editor.org/2015/01/03/kate5-on-mac/</link><pubDate>Sat, 03 Jan 2015 16:52:44 +0000</pubDate><guid>https://kate-editor.org/2015/01/03/kate5-on-mac/</guid><description>&lt;p&gt;Given that the KF5 based Kate works OK on Windows, I would like to get the Mac version up and running, too.&lt;/p&gt;
&lt;p&gt;As virtualization of MacOS X is kind of &amp;#8220;forbidden&amp;#8221; and not that nicely usable anyway, as no nice accelerating drivers are available for the standard vm solutions, I just went out into the world and bought some Retina MacBook.&lt;/p&gt;
&lt;p&gt;I followed the nice guide on &lt;a href=&#34;https://github.com/haraldF/homebrew-kf5&#34;&gt;https://github.com/haraldF/homebrew-kf5&lt;/a&gt; (thanks Harald :=) and got some installed Kate/KWrite (after patching kio to skip X11 detection).&lt;/p&gt;
&lt;p&gt;But ok, not that usable, at least without any investigation which env vars are missing per default you get a Kate that crashs or just shows the main window central content without any actions/menus/toolbars/sidebars/&amp;#8230;&lt;/p&gt;
&lt;p&gt;In addition, the application is scaled, as the manifest that tells we are able to handle retina bla stuff is missing.&lt;/p&gt;
&lt;p&gt;Guess lots of work ahead, but given I have now some Mac, I will work on that in the following months ;)&lt;/p&gt;
&lt;p&gt;P.S. I never had a Mac before and got often told by &amp;#8220;Mac Fans&amp;#8221; that I should switch to some &amp;#8220;real&amp;#8221; operating system from my stupid borked unusable cluttered hacky &amp;#8230; Linux. Given that the new shiny MacBook directly stalled for ever during the guided &amp;#8220;create your user and give us all your data&amp;#8221; installation wizard on first boot, I am not that impressed ;=) My mother would have been stuck and after some googling that seems to be a &amp;#8220;known issue&amp;#8221;, at least for me, after a hard reboot, the thingy worked and I had a login, more luck than others :P&lt;/p&gt;</description></item><item><title>Qt 5.4 on Red Hat Enterprise 5</title><link>https://kate-editor.org/2014/12/22/qt-5-4-on-red-hat-enterprise-5/</link><pubDate>Mon, 22 Dec 2014 19:25:44 +0000</pubDate><guid>https://kate-editor.org/2014/12/22/qt-5-4-on-red-hat-enterprise-5/</guid><description>&lt;p&gt;For my job, I need to take care of the support of old Linux distributions for our products, therefore I experimented in building Qt 5.x for Red Hat Enterprise 5 (or CentOS 5 or other clones).&lt;/p&gt;
&lt;p&gt;Whereas Red Hat Enterprise 6 works more or less out of the box, to build Qt (even with WebKit and Co.) on Red Hat Enterprise 5, more work is needed. Even the xcb library is not yet existent there.&lt;/p&gt;
&lt;p&gt;Therefore, here a small howto, for other people having problems with building it. It contains some hacks and any input is for sure nice to have as an comment (to help others to avoid my faults).&lt;/p&gt;
&lt;p&gt;Disclaimer: I am not responsible for creating a completely messy and buggy Qt 5.x build :=)&lt;/p&gt;
&lt;p&gt;First, lets assume you have some CentOS 5.11 box or chroot.&lt;/p&gt;
&lt;p&gt;You will need some new development toolsets to get rolling:&lt;/p&gt;
&lt;p&gt;wget &lt;a href=&#34;http://people.centos.org/tru/devtools-1.1/devtools-1.1.repo&#34;&gt;http://people.centos.org/tru/devtools-1.1/devtools-1.1.repo&lt;/a&gt; -O /etc/yum.repos.d/devtools-1.1.repo&lt;br /&gt;
wget &lt;a href=&#34;http://people.centos.org/tru/devtools-2/devtools-2.repo&#34;&gt;http://people.centos.org/tru/devtools-2/devtools-2.repo&lt;/a&gt; -O /etc/yum.repos.d/devtools-2.repo&lt;/p&gt;
&lt;p&gt;I tend to use the version 2, version 1.1 does work, too (GCC 4.7.2 vs. 4.8.2).&lt;/p&gt;
&lt;p&gt;We will needed EPEL, for a more up-to-date python (2.6, for xcb):&lt;/p&gt;
&lt;p&gt;wget &lt;a href=&#34;http://ftp.tu-chemnitz.de/pub/linux/fedora-epel/5/x86_64/epel-release-5-4.noarch.rpm&#34;&gt;http://ftp.tu-chemnitz.de/pub/linux/fedora-epel/5/x86_64/epel-release-5-4.noarch.rpm&lt;/a&gt;&lt;br /&gt;
rpm -i epel-release-5-4.noarch.rpm&lt;/p&gt;
&lt;p&gt;Then, lets install the minimal deps (I install both toolsets, you can choose one):&lt;/p&gt;
&lt;p&gt;yum install devtoolset-1.1 devtoolset-2 python26 fontconfig-devel libX11-devel libXau-devel libXext-devel libXrender-devel&lt;/p&gt;
&lt;p&gt;Then, get some compile shell ready:&lt;/p&gt;
&lt;p&gt;scl enable devtoolset-2 bash&lt;/p&gt;
&lt;p&gt;I will just for excercise build Qt and stuff into /tmp/usr/(qt)?&lt;/p&gt;
&lt;p&gt;To build Qt, you need libxcb, get that (with deps):&lt;/p&gt;
&lt;p&gt;# package config for xcb stuff&lt;br /&gt;
export PKG_CONFIG_PATH=/tmp/usr/lib/pkgconfig&lt;/p&gt;
&lt;p&gt;# xcb proto&lt;br /&gt;
wget &lt;a href=&#34;http://xcb.freedesktop.org/dist/xcb-proto-1.11.tar.gz&#34;&gt;http://xcb.freedesktop.org/dist/xcb-proto-1.11.tar.gz&lt;/a&gt;&lt;br /&gt;
tar -xzf xcb-proto-1.11.tar.gz&lt;br /&gt;
cd xcb-proto-1.11&lt;br /&gt;
./configure &amp;#8211;prefix=/tmp/usr&lt;br /&gt;
make -j8&lt;br /&gt;
make install&lt;br /&gt;
cd ..&lt;/p&gt;
&lt;p&gt;# pthread stubs&lt;br /&gt;
wget &lt;a href=&#34;http://xcb.freedesktop.org/dist/libpthread-stubs-0.3.tar.gz&#34;&gt;http://xcb.freedesktop.org/dist/libpthread-stubs-0.3.tar.gz&lt;/a&gt;&lt;br /&gt;
tar -xzf libpthread-stubs-0.3.tar.gz&lt;br /&gt;
cd libpthread-stubs-0.3&lt;br /&gt;
./configure &amp;#8211;prefix=/tmp/usr&lt;br /&gt;
make -j8&lt;br /&gt;
make install&lt;br /&gt;
cd ..&lt;/p&gt;
&lt;p&gt;# xcb&lt;br /&gt;
wget &lt;a href=&#34;http://xcb.freedesktop.org/dist/libxcb-1.11.tar.gz&#34;&gt;http://xcb.freedesktop.org/dist/libxcb-1.11.tar.gz&lt;/a&gt;&lt;br /&gt;
tar -xzf libxcb-1.11.tar.gz&lt;br /&gt;
cd libxcb-1.11&lt;br /&gt;
./configure &amp;#8211;prefix=/tmp/usr&lt;br /&gt;
make -j8&lt;br /&gt;
make install&lt;br /&gt;
cd ..&lt;/p&gt;
&lt;p&gt;Now we are ready to build Qt 5.4, at least some parts ;=)&lt;br /&gt;
I skip here the GL stuff, I don&amp;#8217;t need it and I skip some other modules.&lt;/p&gt;
&lt;p&gt;# unpack qt&lt;br /&gt;
tar -xzf qt-everywhere-opensource-src-5.4.0.tar.gz&lt;br /&gt;
cd qt-everywhere-opensource-src-5.4.0&lt;/p&gt;
&lt;p&gt;# no perf events =&amp;gt; patch that out, won&amp;#8217;t compile, at least not for me because of missing syscall/broken kernel header&lt;br /&gt;
sed -i &amp;#8220;s/#define QTESTLIB_USE_PERF_EVENTS/#undef QTESTLIB_USE_PERF_EVENTS/g&amp;#8221; qtbase/src/testlib/qbenchmark_p.h&lt;/p&gt;
&lt;p&gt;# configure with some defines to work on centos 5 (fake some defines)&lt;br /&gt;
./configure -R &amp;#8216;\\$$ORIGIN&amp;#8217; -D _X_INLINE=inline -D XK_dead_currency=0xfe6f -D XK_ISO_Level5_Lock=0xfe13 -D FC_WEIGHT_EXTRABLACK=215 -D FC_WEIGHT_ULTRABLACK=FC_WEIGHT_EXTRABLACK -v -opensource -confirm-license -sysconfdir /etc/xdg -prefix /tmp/usr/qt -release -shared -qt-zlib -qt-libpng -qt-libjpeg -qt-pcre -qt-xcb -qt-xkbcommon -xkb-config-root /usr/share/X11/xkb -no-xcb-xlib -c++11 -nomake examples -nomake tests -no-dbus -no-icu -no-opengl -skip activeqt -skip androidextras -skip connectivity -skip enginio -skip location -skip macextras -skip multimedia -skip quick1 -skip sensors -skip serialport -skip wayland -skip webchannel -skip webengine -skip webkit -skip webkit-examples -skip websockets -skip winextras -skip x11extras&lt;/p&gt;
&lt;p&gt;# build and install&lt;br /&gt;
make -j8&lt;br /&gt;
make install&lt;/p&gt;
&lt;p&gt;=&amp;gt; You have some Qt, but keep in mind you need to bundle at least the libxcb.so* library, as your Red Hat Enterprise 5.x guys won&amp;#8217;t have it!&lt;/p&gt;</description></item><item><title>KDE at its very best!</title><link>https://kate-editor.org/2014/12/15/kde-at-its-best/</link><pubDate>Mon, 15 Dec 2014 21:32:53 +0000</pubDate><guid>https://kate-editor.org/2014/12/15/kde-at-its-best/</guid><description>&lt;p&gt;Recently, there were some thoughts on &lt;a title=&#34;Where KDE is going&#34; href=&#34;http://www.baggerspion.net/2014/12/the-pillars-of-kde-now/&#34; target=&#34;_blank&#34;&gt;where KDE is going&lt;/a&gt;, and  related to that what&amp;#8217;s the driving force behind it in terms of the pillars of KDE. Albeit it is true our development model changed significantly, I&amp;#8217;m not convinced that it&amp;#8217;s all about git.&lt;/p&gt;
&lt;p&gt;No, I rather believe that it is the excitement about the KDE that makes it stand out &amp;#8211; KDE as a community if you wish, but also KDE as a software project.&lt;/p&gt;
&lt;p&gt;Going back to the late nineties, I was developing small games for DOS (Turpo Pascal, anyone? Snake and Gorillas in QBasic? :-) ) and also for Windows. At around that time, Linux got also a bit more popular so that I finally had a SuSE 6.0 in my hands. I installed it and was able to run KDE 2, iirc (?). It certainly was interesting, but then I also wasn&amp;#8217;t involved in any free software projects, so it also wasn&amp;#8217;t &lt;em&gt;that&lt;/em&gt; a big deal.&lt;/p&gt;
&lt;p&gt;Still, I started to look into how to develop GUI applications for Linux. Since under Windows I used MFC (oh well, now it&amp;#8217;s out, but you know, I quickly got back on the right track) I found Qt quite nice (for CPoint you had QPoint, for CDialog a QDialog, and so on). As I used KDE in Linux, I started to change small things like an Emoticon preview in Kopete (one of my first contributions?), or some wizards for KDevelop in 2003. These were projects that were fairly easy to compile and run. Still, what might seem so little was a huge success for the following reason:&lt;/p&gt;
&lt;p&gt;More or less still being child, getting in touch with C++, KDE, and all the tools around it was completely new. CVS? Never heard about it before, and anyways, what was a version control system? How it worked with the mailing lists. With entering a bug. Compiling kdelibs: It took me more than 2 weeks to succeed (Which btw. to myself proves that even at that time it was really hard for a newbe to compile KDE, just like today). All in all, these were times where I learned &lt;em&gt;a lot&lt;/em&gt;. I started to read the cvs-commit mailing list (around 400 mails a day, I read them almost all, more than 5 years long).&lt;/p&gt;
&lt;p&gt;But that was not yet it. It continued like that for &lt;em&gt;years&lt;/em&gt;. For instance, understanding how KIO slaves worked was just &lt;em&gt;amazing&lt;/em&gt;. How all KDE components integrate into and interact with each other. There were a lot of parts where KDE was simply the best in terms of the software technology it provided and created.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
To me, this was KDE at its best.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In my opinion, KDE followed this route for a long time, also with KDE4. I even say KDE still follows this way today.&lt;/p&gt;
&lt;p&gt;But it&amp;#8217;s much harder to get excited about it. Why? Think of yourself as seeing snow for the first time. It&amp;#8217;s just awesome, you&amp;#8217;re excited and can&amp;#8217;t believe how awesome this is. Or maybe also New Years eve with nicely looking fireworks coming. It&amp;#8217;s something you simply can&amp;#8217;t wait for enough. Kind of like a small child&amp;#8230; This is the excitement KDE raised in lots of us. Getting a new KDE release was totally something I wanted. I saw the improvements everywhere. What also helped a lot was the detailed commit digest Derek Kite worked on so hard each week, showing what was going on even with detailed discussions and screenshots (today the KDE commit digest is mostly an auto-generated list of commits, which I already have through the KDE commit filter).&lt;/p&gt;
&lt;p&gt;Today, I know all the details. All the KDE technology. Of course, it got even better over time, and certainly still is an immensely powerful technology. But I&amp;#8217;m not that much excited about it anymore.&lt;/p&gt;
&lt;p&gt;I believe this in itself is not an issue. For exactly this reason, developers come and go, leaving room for other developers to implement their ideas. It helps the project to stay young and agile.&lt;/p&gt;
&lt;p&gt;It is often said, the KDE has grown up. This is certainly a good thing for instance in terms of the KDE e.V. supporting the KDE project as much as possible, or the KDE Free Qt Foundation that helps us to make sure Qt will always be freely available to us, or a strong background in legal issues.&lt;/p&gt;
&lt;p&gt;At the same time, it is a very bad thing in terms of getting people excited about KDE. We need developers with freaky ideas who just sit down and implement new features (btw., this is very much true for all free software projects). For instance, why has no one come up with a better KXmlGui concept? I&amp;#8217;m sure it can be done better!&lt;/p&gt;
&lt;p&gt;Where does that put us? Is there really no cool stuff in KDE?&lt;/p&gt;
&lt;p&gt;Well, the reason for this post is to show that we did not loose what once was cool. In fact, we see it every day. For instance, yesterday I was using Dolphin and had to change a lot between subfolders in the same level (e.g. from some_folder/foo to some_folder/bar and so on). I accidentally used the mouse wheel over &amp;#8220;foo&amp;#8221;, and whohooo! You can switch to the next folder just by scrolling with the mouse wheel over the navigation bar. This is immensely useful, and in fact, this is why KDE shines also today, it&amp;#8217;s just not so visible to users and maybe also to developers. You now may say that it&amp;#8217;s just some little detail. But this is exactly it: Yesterday I was totally amazed by how cool this is, just like 10 years back from now&amp;#8230; Therefore, I say, this still is&lt;/p&gt;
&lt;blockquote&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
KDE at its very Best!
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Getting people excited about KDE is what defines KDE&amp;#8217;s future, not git.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edit (imho):&lt;/strong&gt; I would like to add something here. When reading these kind of blogs, you may get the impression that KDE is getting a less and less attractive platform, or that KDE is kind of dying. This is absolutely not the case. Quite contrary: With KDE&amp;#8217;s foundation libraries, and applications being about to released on top of the KDE Frameworks 5 libraries, KDE can certainly make the statement that the project and its software will definitely be available and certainly just as strong in 10 years from now. I have absolutely no doubt that you can count on that. And &lt;em&gt;that&lt;/em&gt; is a really cool thing only few free software projects can claim! Let&amp;#8217;s talk about it again in 2024 :-)&lt;/p&gt;
&lt;p&gt;PS: On a unrelated note, KDE currently runs the &lt;a title=&#34;KDE End of Year 2014 Fundraiser&#34; href=&#34;https://www.kde.org/fundraisers/yearend2014/&#34; target=&#34;_blank&#34;&gt;End of Year 2014 Fundraiser&lt;/a&gt;. Support is very much welcome!&lt;/p&gt;</description></item><item><title>Kate5 on Windows</title><link>https://kate-editor.org/2014/11/30/kate5-on-windows/</link><pubDate>Sun, 30 Nov 2014 15:52:10 +0000</pubDate><guid>https://kate-editor.org/2014/11/30/kate5-on-windows/</guid><description>&lt;p&gt;Here it goes, Kate5 running on Windows:&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2014/11/kate5-on-windows.png&#34;&gt;&lt;img class=&#34;aligncenter wp-image-3466 size-full&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/11/kate5-on-windows.png&#34; alt=&#34;Kate5 on Windows with Missing Icons and Bad Font&#34; width=&#34;896&#34; height=&#34;705&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/11/kate5-on-windows.png 896w, https://kate-editor.org/wp-content/uploads/2014/11/kate5-on-windows-300x236.png 300w&#34; sizes=&#34;(max-width: 896px) 100vw, 896px&#34; /&gt;&lt;/a&gt;This is an early version of Kate5 on Windows. It runs just fine but has some glitches, such as the &lt;del&gt;white lines between selected text lines, or wrong margins in the search&amp;amp;replace bar, or showing a &amp;#8216;+1&amp;#8217; in the top right corner, although all documents are visible&lt;/del&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;text-decoration: underline;&#34;&gt;&lt;strong&gt;Update:&lt;/strong&gt;&lt;/span&gt; After installing oxygen-icons and switching the font to Consolas (what Visual Studio uses), the glitches above are gone. Here is an updated screenshot:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2014/11/kate5-on-windows1.png&#34;&gt;&lt;img class=&#34;aligncenter wp-image-3470 size-full&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/11/kate5-on-windows1.png&#34; alt=&#34;Kate5 on Windows With Icons and Better Font&#34; width=&#34;894&#34; height=&#34;708&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/11/kate5-on-windows1.png 894w, https://kate-editor.org/wp-content/uploads/2014/11/kate5-on-windows1-300x237.png 300w&#34; sizes=&#34;(max-width: 894px) 100vw, 894px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So essentially it works, and if all goes well, we hope to provide a good text editor experience with Kate5 on Windows in the next year(s). To this end, we are currently discussing having a joint Kate/KDevelop/Windows developer sprint early next year.&lt;/p&gt;
&lt;p&gt;You can support this also by donating to the &lt;a title=&#34;KDE End of Year 2014 Fundraiser&#34; href=&#34;https://www.kde.org/fundraisers/yearend2014/&#34; target=&#34;_blank&#34;&gt;End of Year 2014 fundraiser&lt;/a&gt;. Thanks!&lt;/p&gt;</description></item><item><title>Support Kate and KDE by Donating Money</title><link>https://kate-editor.org/2014/10/18/support-kate-and-kde-by-donating-money/</link><pubDate>Sat, 18 Oct 2014 13:46:59 +0000</pubDate><guid>https://kate-editor.org/2014/10/18/support-kate-and-kde-by-donating-money/</guid><description>&lt;p&gt;Since some weeks, the Kate homepage features a way to support Kate and KDE by donating money to the KDE e.V., see this screenshot:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-3441&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/10/kate-donate.png&#34; alt=&#34;Donating Money to Kate&#34; width=&#34;673&#34; height=&#34;475&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/10/kate-donate.png 673w, https://kate-editor.org/wp-content/uploads/2014/10/kate-donate-300x211.png 300w&#34; sizes=&#34;(max-width: 673px) 100vw, 673px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;The reason for showing a donation pane might not be obvious, since the KDE project is open source and mostly developed by lots of contributors in their free time. So why do we need money?&lt;/p&gt;
&lt;p&gt;The KDE project, and thus also the Kate project, highly depends on getting financial support. For instance, our IT infrastructure running the KDE websites and all sorts of services such as mailing lists or hosting KDE&amp;#8217;s source code along with the version control systems rely on it. All these services need money. And here is where the KDE e.V., KDE&amp;#8217;s non-profit organization comes into play. KDE e.V.&amp;#8217;s &lt;a title=&#34;KDE e.V. Mission Statement&#34; href=&#34;https://ev.kde.org/whatiskdeev.php&#34; target=&#34;_blank&#34;&gt;purpose&lt;/a&gt; is &lt;em&gt;the promotion and distribution of free desktop software in terms of free software, and KDE in particular, to promote the free exchange of knowledge and equality of opportunity in accessing software as well as education, science and research&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;For instance, the KDE e.V. supports developers through travel reimbursement, such that contributors that could otherwise not attend &lt;a title=&#34;Developer Meetings&#34; href=&#34;https://ev.kde.org/activities/devmeetings/&#34; target=&#34;_blank&#34;&gt;developer meetings&lt;/a&gt; are still able to take part. These developer meetings have proven to be immensely useful to the success of KDE, and typically a developer sprint moves a project forward by magnitues, as you can see in the &lt;a title=&#34;List of Developer Strints&#34; href=&#34;https://community.kde.org/KDE_e.V./Sprints&#34; target=&#34;_blank&#34;&gt;list of past developer meetings&lt;/a&gt;. Next to that, there is also the &lt;a title=&#34;Annual KDE Conference&#34; href=&#34;https://akademy.kde.org/&#34; target=&#34;_blank&#34;&gt;annual KDE conference&lt;/a&gt; where all KDE contributors and users are invited to discuss and shape the future of KDE. Next to other events, KDE is usually also present at fairs such as the CeBit or LinuxTag. There, we also need material and support to make a good presentation of KDE. Another significant job of KDE e.V. is to support KDE legally. For instance, the KDE e.V. is maintaining an agreement with the owners of Qt in terms of the &lt;a title=&#34;KDE Free Qt Foundation&#34; href=&#34;https://www.kde.org/community/whatiskde/kdefreeqtfoundation.php&#34; target=&#34;_blank&#34;&gt;KDE Free Qt Foundation&lt;/a&gt;, which potentially is also of high interest for companies using Qt.&lt;/p&gt;
&lt;p&gt;Several days ago we also started the &lt;a title=&#34;KDE End of Year 2014 Fundraiser&#34; href=&#34;https://www.kde.org/fundraisers/yearend2014/&#34; target=&#34;_blank&#34;&gt;KDE End of Year 2014 Fundraiser&lt;/a&gt;, through which we hope to get a significant amount of money that we can plan with in the next year.&lt;/p&gt;
&lt;p&gt;Please, if you use KDE at home or in your company, please &lt;a title=&#34;Donate to KDE&#34; href=&#34;https://www.kde.org/fundraisers/yearend2014/&#34; target=&#34;_blank&#34;&gt;make a donation&lt;/a&gt;. And if you are a company, please consider being generous! Your support is much more needed and appreciated than you might think! Thanks you!&lt;/p&gt;</description></item><item><title>Kate’s Mascot: Kate the Woodpecker</title><link>https://kate-editor.org/2014/10/12/kates-mascot-kate-the-woodpecker/</link><pubDate>Sun, 12 Oct 2014 12:47:54 +0000</pubDate><guid>https://kate-editor.org/2014/10/12/kates-mascot-kate-the-woodpecker/</guid><description>&lt;p&gt;After the first KF 5 release, I contacted the creator of the Krita mascot Kiki and the KF 5  dragons artwork, Tyson Tan, if he would be interested in design a Kate mascot, too. He immediately agreed to help out and after some months of roundtrips, here we go!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kate has a mascot: &lt;em&gt;Kate the Woodpecker&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The short design summary (by Tyson Tan):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Why a woodpecker? I said I was going to draw a humming bird, but she turned out to look more like a woodpecker, and the sound a woodpecker makes knocking on a tree is coincidentally similar to the sound of keyboard strokes).&lt;/p&gt;
&lt;p&gt;Kate is female because of her name. I thought about other names like Klicky and Katherine, but I would rather save them for other future KDE projects to pick up as their names.&lt;/p&gt;
&lt;p&gt;Design elements:&lt;br /&gt;
&amp;#8220;{}&amp;#8221; on the chest, &amp;#8220;/&amp;#8221; of the feathers, and &amp;#8220;*&amp;#8221; in the eyes.&lt;br /&gt;
The wing feathers also resembles multiple document tabs.&lt;br /&gt;
Color scheme inspired by doxygen source code highlighting.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And how does the first version of the mascot look like? Here is the mandatory version 1.0 mascot picture:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2014/10/mascot_20140930_kate_fin.png&#34;&gt;&lt;img class=&#34;aligncenter size-large wp-image-3429&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/10/mascot_20140930_kate_fin-853x1024.png&#34; alt=&#34;Kate Mascot: Kate the Woodpecker&#34; width=&#34;474&#34; height=&#34;569&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/10/mascot_20140930_kate_fin-853x1024.png 853w, https://kate-editor.org/wp-content/uploads/2014/10/mascot_20140930_kate_fin-249x300.png 249w&#34; sizes=&#34;(max-width: 474px) 100vw, 474px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tyson Tan allows that artwork to be  Creative Commons BY-SA and/or GPL and/or GFDL licensed and donates it to the KDE Kate project.&lt;/p&gt;
&lt;p&gt;This is version 1.0, changes might be made and more variants are possible in the future.&lt;/p&gt;
&lt;p&gt;Thanks to Tyson Tan for this contribution, he rocks (more of his artwork can be found on his &lt;a title=&#34;Tyson Tan&#34; href=&#34;http://tysontan.com/&#34; target=&#34;_blank&#34;&gt;homepage&lt;/a&gt;).  We will see the mascot soon a lot more on the Kate homepage and other Kate material.&lt;/p&gt;
&lt;p&gt;This once more shows: the community shall never underestimate any non-code contributions. You designers, translators, documentation writers, &amp;#8230;., that help us all out, you all rock!&lt;/p&gt;</description></item><item><title>Auto-loading Projects in the Projects Plugin (Kate 5)</title><link>https://kate-editor.org/2014/10/12/autoloading-projects-plugin-kate-5/</link><pubDate>Sun, 12 Oct 2014 12:18:00 +0000</pubDate><guid>https://kate-editor.org/2014/10/12/autoloading-projects-plugin-kate-5/</guid><description>&lt;p&gt;Since KDE SC 4.10, Kate ships with the &lt;a href=&#34;https://kate-editor.org/2012/11/02/using-the-projects-plugin-in-kate/&#34; title=&#34;Using the Projects Plugin&#34;&gt;Projects plugin&lt;/a&gt;. This plugin provides an automatically generated structured list of files belonging to a project. Currently, in Kate 5, the Projects plugin looks like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2014/10/projectsplugin.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3417&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/10/projectsplugin.png&#34; alt=&#34;Projects Plugin in Kate 5&#34; width=&#34;1017&#34; height=&#34;637&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/10/projectsplugin.png 1017w, https://kate-editor.org/wp-content/uploads/2014/10/projectsplugin-300x187.png 300w&#34; sizes=&#34;(max-width: 1017px) 100vw, 1017px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;What&amp;#8217;s new in the Project plugin in Kate 5 since some weeks is an auto-loading feature. In 4.x times you needed to create a &lt;a href=&#34;https://kate-editor.org/2012/11/02/using-the-projects-plugin-in-kate/&#34; title=&#34;.kateproject file&#34;&gt;.kateproject file&lt;/a&gt; that was then read by the Projects plugin to populate the listview. This still works in Kate 5, of course. But if a .kateproject file does not exists, you can now still read the file list from the version control system. To this end, auto-loading for the respective version control system needs to be enabled in the settings (enabled by default):&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2014/10/projectsplugin-autoload.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3420&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/10/projectsplugin-autoload.png&#34; alt=&#34;Autoloading Kate Projects&#34; width=&#34;657&#34; height=&#34;508&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/10/projectsplugin-autoload.png 657w, https://kate-editor.org/wp-content/uploads/2014/10/projectsplugin-autoload-300x231.png 300w&#34; sizes=&#34;(max-width: 657px) 100vw, 657px&#34; /&gt;&lt;/a&gt;We hope this is useful to you :-)&lt;/p&gt;</description></item><item><title>Kate needs you!</title><link>https://kate-editor.org/2014/09/23/kate-needs-you/</link><pubDate>Tue, 23 Sep 2014 19:54:26 +0000</pubDate><guid>https://kate-editor.org/2014/09/23/kate-needs-you/</guid><description>&lt;p&gt;The next major step in Kate&amp;#8217;s evolution is close: Kate based on KDE Frameworks 5.&lt;/p&gt;
&lt;p&gt;Whereas it already works well enough for me (and others), it would be nice to clear out as many issues as possible before we have our first official KF 5 based release.&lt;/p&gt;
&lt;p&gt;Our Bugzilla is full with smaller and larger Kate/KTextEditor (aka KatePart) issues, see:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&#34;Kate Bugs&#34; href=&#34;https://bugs.kde.org/buglist.cgi?product=frameworks-ktexteditor&amp;product=kate&amp;bug_status=UNCONFIRMED&amp;bug_status=CONFIRMED&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_severity=critical&amp;bug_severity=grave&amp;bug_severity=major&amp;bug_severity=crash&amp;bug_severity=normal&amp;bug_severity=minor&#34; target=&#34;_blank&#34;&gt;Our bugs&lt;/a&gt; in the KDE bugtracker&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Kate Wishes&#34; href=&#34;https://bugs.kde.org/buglist.cgi?product=frameworks-ktexteditor&amp;product=kate&amp;bug_status=UNCONFIRMED&amp;bug_status=CONFIRMED&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_severity=wishlist&#34; target=&#34;_blank&#34;&gt;Our wishes&lt;/a&gt; in the KDE bugtracker&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Whereas Kate/KTextEditor has people working on it and continue to improve it over time, we don&amp;#8217;t have enough people to keep track and care for all our reported bugs/wishs.&lt;/p&gt;
&lt;p&gt;Therefore, if you have a clue about Qt and if you use Kate or any application using our KTextEditor editing component, like KDevelop, Kile, &amp;#8230;. =&amp;gt; Think about helping us out.&lt;/p&gt;
&lt;p&gt;&lt;a title=&#34;KDE Frameworks 5 Building HowTo&#34; href=&#34;https://community.kde.org/Frameworks/Building&#34; target=&#34;_blank&#34;&gt;Here&lt;/a&gt; is a nice guide how to build KF 5 stuff.&lt;/p&gt;
&lt;p&gt;We are happy to review your patches, any help is welcome!&lt;/p&gt;
&lt;p&gt;(And yes, shame on me, during Akademy I found patches older than one year hanging around on Bugzilla, now applied, and still some controversial ones are floating around.)&lt;/p&gt;
&lt;p&gt;Even if you are no developer, reviewing bugs/wishs and killing off issues that got already solved or are not applicable would already be a great help!&lt;/p&gt;</description></item><item><title>Kate and KTextEditor 5 after Akademy 2014</title><link>https://kate-editor.org/2014/09/13/kate-and-ktexteditor-5-after-akademy-2014/</link><pubDate>Sat, 13 Sep 2014 11:15:42 +0000</pubDate><guid>https://kate-editor.org/2014/09/13/kate-and-ktexteditor-5-after-akademy-2014/</guid><description>
&lt;p&gt;The yearly &lt;a title=&#34;Akademy KDE Conference&#34; href=&#34;https://akademy.kde.org/2014&#34; target=&#34;_blank&#34;&gt;KDE conference Akademy&lt;/a&gt; just ended, so it&amp;#8217;s time to look at what changed in the holy Kate in the Frameworks 5 land.&lt;/p&gt;
&lt;h3 id=&#34;ktexteditor-framework&#34;&gt;KTextEditor Framework&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&#34;Git reloading documents&#34; href=&#34;http://lists.kde.org/?l=kde-commits&amp;m=141051301229217&amp;w=2&#34; target=&#34;_blank&#34;&gt;silent reload of document&lt;/a&gt;: Switching a git branch, Kate always pops up a dialog asking whether to reload the document. With this patch, if the document is version controlled by git, the git hash of the file computed and then it&amp;#8217;s checked whether the file exists in git. If so, the file is reloaded without asking you. This should be very handy for developers using git! Thanks to Sven Brauch for this idea!&lt;/li&gt;
&lt;li&gt;new &lt;a title=&#34;Kate Highlighting Unit Testing Infrastructure&#34; href=&#34;http://lists.kde.org/?l=kde-commits&amp;m=141029053616802&amp;w=2&#34; target=&#34;_blank&#34;&gt;highlighting unit testing&lt;/a&gt; infrastructure&lt;/li&gt;
&lt;li&gt;several new syntax highlighting files&lt;/li&gt;
&lt;li&gt;cursor down in the last line in the document moves the cursor to the end of the line, same for the cursor up behavior, after just 8 years a bugzilla wish becomes true ;)&lt;/li&gt;
&lt;li&gt;properly load/save the search &amp;amp; replace history&lt;/li&gt;
&lt;li&gt;fix kateversion tags in all our &amp;gt;200 highlighting files, thanks to Martin Walch&lt;/li&gt;
&lt;li&gt;as always: lots of improvements to the vi input mode&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;kate-application&#34;&gt;Kate Application&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;use native dialogs on all platforms, including OS X, Windows&lt;/li&gt;
&lt;li&gt;split view: action to &lt;a title=&#34;Kate5: Toggle splitter orientation&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=116826&#34; target=&#34;_blank&#34;&gt;toggle splitter orientation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;the toolbar is by default turned off (see screenshot), resulting in a very cleaned up interface. You can turn it on in the Settings menu.&lt;/li&gt;
&lt;li&gt;new document switcher plugin (see screenshot) through Ctrl+Tab, providing quick access to the most recently used documents (similar to Alt+Tab in kwin), based on KDevelops code&lt;/li&gt;
&lt;li&gt;improvements to the tab bar&lt;/li&gt;
&lt;li&gt;revive, cleanup and improve the text snippet plugin by Sven Brauch&lt;/li&gt;
&lt;li&gt;projects plugin: &lt;a title=&#34;Autoloading of Kate Projects&#34; href=&#34;http://lists.kde.org/?l=kde-commits&amp;m=141029235617502&amp;w=2&#34; target=&#34;_blank&#34;&gt;autoload project&lt;/a&gt; even if no .kateproject is found (configurable to not clash with the auto-generated cmake .kateproject file), implemented by &lt;em&gt;Michal Humpula&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;the Plasma 5 applet to start a Kate session is back, thanks to the work of Josef Wenninger&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-3379&#34; alt=&#34;Kate Document Switcher&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/09/kate-documentswitcher.png&#34; width=&#34;785&#34; height=&#34;533&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/09/kate-documentswitcher.png 785w, https://kate-editor.org/wp-content/uploads/2014/09/kate-documentswitcher-300x203.png 300w&#34; sizes=&#34;(max-width: 785px) 100vw, 785px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;A big thanks to the organizers of this year&amp;#8217;s Akademy, and a big thanks to all our &lt;a title=&#34;Akademy 2014 Sponsors&#34; href=&#34;https://akademy.kde.org/2014/sponsors&#34; target=&#34;_blank&#34;&gt;sponsors&lt;/a&gt; and supporting members. The location was amazing and the venue allowed us all to have a very productive week! Looking forward to next year! :-)&lt;/p&gt;</description></item><item><title>Akademy 2014 – Soon ;=)</title><link>https://kate-editor.org/2014/09/01/akademy-2014-soon/</link><pubDate>Mon, 01 Sep 2014 18:12:41 +0000</pubDate><guid>https://kate-editor.org/2014/09/01/akademy-2014-soon/</guid><description>&lt;p&gt;Only some days until the yearly &lt;a title=&#34;Akademy 2014&#34; href=&#34;https://akademy.kde.org/2014&#34; target=&#34;_blank&#34;&gt;Akademy&lt;/a&gt; starts.&lt;/p&gt;
&lt;p&gt;Its a real great thing to get known to other KDE/Qt contributors and meet old and new friends.&lt;/p&gt;
&lt;p&gt;Already amazed, lets hope the airlines don&amp;#8217;t go on strike during my travel :=)&lt;/p&gt;
&lt;p&gt;See you all there, lets have fun &amp;amp; be productive! Already now thanks to all people that help to organize this cool event and all our &lt;a title=&#34;Sponsors&#34; href=&#34;https://akademy.kde.org/2014/sponsors&#34; target=&#34;_blank&#34;&gt;sponsors&lt;/a&gt;!&lt;br /&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2014/09/Banner400.going_.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3371&#34; alt=&#34;Banner400.going&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/09/Banner400.going_.png&#34; width=&#34;400&#34; height=&#34;178&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/09/Banner400.going_.png 400w, https://kate-editor.org/wp-content/uploads/2014/09/Banner400.going_-300x133.png 300w&#34; sizes=&#34;(max-width: 400px) 100vw, 400px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kate “master” branch now KF5 based!</title><link>https://kate-editor.org/2014/07/24/kate-master-branch-now-kf5-based/</link><pubDate>Thu, 24 Jul 2014 18:18:55 +0000</pubDate><guid>https://kate-editor.org/2014/07/24/kate-master-branch-now-kf5-based/</guid><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;from today on, the master branch of kate.git is KF5 based.&lt;/p&gt;
&lt;p&gt;That means, for the next KDE applications release after 4.14, Kate will use the awesome KF5 stuff!&lt;/p&gt;
&lt;p&gt;The KTextEditor framework is already in a good shape and most active KatePart development is since months pure KF5 based.&lt;/p&gt;
&lt;p&gt;The same should now be true for Kate itself (and KWrite).&lt;/p&gt;
&lt;p&gt;Pâté will need a lot of love, as PyQt5 is there, but PyKDE5/PyKF5 still in the works.&lt;/p&gt;
&lt;p&gt;Happy hacking, help us to make KF5 based Kate awesome, too.&lt;/p&gt;
&lt;p&gt;For 4.14: keep fixing bugs, but all new shiny stuff that might regress things really should only go into our KF5 based master branch!&lt;/p&gt;</description></item><item><title>Help to make KF5 awesome!</title><link>https://kate-editor.org/2014/06/02/help-to-make-kf5-awesome/</link><pubDate>Mon, 02 Jun 2014 16:46:01 +0000</pubDate><guid>https://kate-editor.org/2014/06/02/help-to-make-kf5-awesome/</guid><description>&lt;p&gt;You like KDE software?&lt;/p&gt;
&lt;p&gt;You like to have a polished and nice KDE Frameworks 5 release?&lt;/p&gt;
&lt;p&gt;But you can&amp;#8217;t help out yourself by coding, translating, bug finding, designing, documenting and whatever?&lt;/p&gt;
&lt;p&gt;=&amp;gt; Feel free to fund our &lt;a title=&#34;Fund Raising for Randa 2014&#34; href=&#34;http://www.kde.org/fundraisers/randameetings2014/&#34; target=&#34;_blank&#34;&gt;Randa Meetings 2014&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Perhaps it feels strange that a free/open source project wants money, but sprints &amp;amp; meetings are not for free, given you need to pay for the accommodations, travel, rooms for hacking, &amp;#8230;&lt;/p&gt;
&lt;p&gt;Therefore: Spread the word and help us to reach &lt;a title=&#34;Fund Raising for Randa 2014&#34; href=&#34;http://www.kde.org/fundraisers/randameetings2014/&#34; target=&#34;_blank&#34;&gt;our fundraising goal&lt;/a&gt;!&lt;/p&gt;</description></item><item><title>Links about C&#43;&#43; and Programming</title><link>https://kate-editor.org/2014/05/13/links-about-c-and-programming/</link><pubDate>Tue, 13 May 2014 13:28:42 +0000</pubDate><guid>https://kate-editor.org/2014/05/13/links-about-c-and-programming/</guid><description>&lt;p&gt;Just like &lt;a href=&#34;https://kate-editor.org/2011/08/28/coding-style-and-api-design/&#34; title=&#34;Coding Style and API Design&#34;&gt;some&lt;/a&gt; time &lt;a href=&#34;https://kate-editor.org/2014/01/17/interfacing-lua-with-templates-in-c11/&#34; title=&#34;Interfacing lua with C++11&#34;&gt;ago&lt;/a&gt;, here are several links that might be of interest:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&#34;C++11 compiler support overview&#34; href=&#34;http://www.italiancpp.org/wp-content/uploads/2014/03/CppISO-Feb2014-r1.pdf&#34; target=&#34;_blank&#34;&gt;C++11 compiler support overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Five new algorithms to C++11&#34; href=&#34;http://codexpert.ro/blog/2014/05/07/five-new-algorithms-to-cpp11-you-should-know-about/&#34; target=&#34;_blank&#34;&gt;Five new algorithms to C++11 that you should know about&lt;/a&gt;:  Interesting read about std::all_of, any_of, none_of, is_sorted, is_sorted_until, is_partitioned and some others. (And &lt;a title=&#34;Generic numeric algorithms&#34; href=&#34;http://codexpert.ro/blog/2014/04/18/generic-numeric-algorithms-in-header-numeric/&#34; target=&#34;_blank&#34;&gt;here&lt;/a&gt; some more generic numeric algorithms)&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;noexcept - what for?&#34; href=&#34;http://akrzemi1.wordpress.com/2014/04/24/noexcept-what-for/&#34; target=&#34;_blank&#34;&gt;noexcept &amp;#8211; what for?&lt;/a&gt; An interesting read about C++11&amp;#8217;s noexcept. Also interesting: &lt;a title=&#34;Use noexcept whenever possible&#34; href=&#34;http://scottmeyers.blogspot.de/2014/03/declare-functions-noexcept-whenever.html&#34; target=&#34;_blank&#34;&gt;Scott Meyers&amp;#8217; thoughts&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;An overview of C++14 language features&#34; href=&#34;http://cpprocks.com/an-overview-of-c14-language-features/&#34; target=&#34;_blank&#34;&gt;An overview of C++14 language features&lt;/a&gt;: Mostly highlights constexpr and auto&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;C++11 move semantics&#34; href=&#34;http://accu.org/content/conf2014/Howard_Hinnant_Accu_2014.pdf&#34; target=&#34;_blank&#34;&gt;All about C++11 move semantics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Number and string conversion in C++11&#34; href=&#34;http://codexpert.ro/blog/2014/04/14/standard-way-of-converting-between-numbers-and-strings-in-cpp11/&#34; target=&#34;_blank&#34;&gt;Number and string conversion in C++11&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;What you should know about C++11&#34; href=&#34;http://bfilipek.hubpages.com/hub/What-you-should-know-about-C11&#34; target=&#34;_blank&#34;&gt;What you should know about C++11&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Lock-free data structures (&lt;a title=&#34;Lock-free data structures part 1&#34; href=&#34;http://kukuruku.co/hub/cpp/lock-free-data-structures-introduction&#34; target=&#34;_blank&#34;&gt;part 1&lt;/a&gt;, &lt;a title=&#34;Lock-free data structures part 2&#34; href=&#34;http://kukuruku.co/hub/cpp/lock-free-data-structures-basics-atomicity-and-atomic-primitives&#34; target=&#34;_blank&#34;&gt;part 2&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Use of assertions&#34; href=&#34;http://blog.regehr.org/archives/1091&#34; target=&#34;_blank&#34;&gt;Use of assertions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Static code analysis of Qt5&#34; href=&#34;http://www.viva64.com/en/b/0251/&#34; target=&#34;_blank&#34;&gt;Static code analysis of Qt5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Stack-based bytecode interpreter&#34; href=&#34;http://gameprogrammingpatterns.com/bytecode.html&#34; target=&#34;_blank&#34;&gt;Interpreter pattern vs. stack-based bytecode interpreter&lt;/a&gt;: very good introduction to bytecode interpreters&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Overview of design patterns&#34; href=&#34;http://www.celinio.net/techblog/wp-content/uploads/2009/09/designpatterns1.jpg&#34; target=&#34;_blank&#34;&gt;Overview of design patterns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Programming sucks&#34; href=&#34;http://stilldrinking.org/programming-sucks&#34; target=&#34;_blank&#34;&gt;Programming sucks&lt;/a&gt;: There is quite some truth in this, although this is probably less valid in open source projects.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Linux Voice – Kate wins the advanced text editors group test</title><link>https://kate-editor.org/2014/04/21/linux-voice-kate-wins-the-advanced-text-editors-group-test/</link><pubDate>Mon, 21 Apr 2014 16:21:23 +0000</pubDate><guid>https://kate-editor.org/2014/04/21/linux-voice-kate-wins-the-advanced-text-editors-group-test/</guid><description>&lt;p&gt;Happy news arrived on the kwrite-devel mailing list &lt;a href=&#34;http://lists.kde.org/?l=kwrite-devel&amp;#038;m=139776572524753&amp;#038;w=2&#34; title=&#34;Linux Voice Verdict&#34; target=&#34;_blank&#34;&gt;with this post&lt;/a&gt; before Easter ;)&lt;/p&gt;
&lt;p&gt;Kate has won the advanced text editor comparison in the &lt;a title=&#34;Linux Voice&#34; href=&#34;http://www.linuxvoice.com/&#34; target=&#34;_blank&#34;&gt;Linux Voice&lt;/a&gt; magazine &amp;#8211; &lt;a title=&#34;Linux Voice - Issue 2&#34; href=&#34;http://www.linuxvoice.com/issue-2-is-out/&#34; target=&#34;_blank&#34;&gt;Issue 2&lt;/a&gt;, yeah ;)&lt;/p&gt;
&lt;p&gt;Nice to see that our work on Kate is awarded.&lt;/p&gt;
&lt;p&gt;About Linux Voice: Seems to be some pretty new magazine about Linux &amp;amp; Open Source (Issue 2 says it all) and they promise to give 50% of their profit back to the Free Software community, developers and events. Hope that works out, it is a nice goal.&lt;/p&gt;
&lt;p&gt;P.S. And yeah, this is just one comparison and no, lets not start the &amp;#8220;editors wars, &amp;#8230; edition&amp;#8221; in the comments, there are a lot of text editors to choose between and depending on your needs and preferences Kate might not be your favorite ;)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.linuxvoice.com/&#34;&gt;&lt;img class=&#34;wp-image-3338 alignright&#34; title=&#34;Linux Voice&#34; alt=&#34;Featured in Linux Voice&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/04/lv_button.png&#34; width=&#34;300&#34; height=&#34;123&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/04/lv_button.png 500w, https://kate-editor.org/wp-content/uploads/2014/04/lv_button-300x123.png 300w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Coming in 4.13: Improvements in the project plugin</title><link>https://kate-editor.org/2014/04/09/coming-in-4-13-improvements-in-the-project-plugin/</link><pubDate>Wed, 09 Apr 2014 20:01:29 +0000</pubDate><guid>https://kate-editor.org/2014/04/09/coming-in-4-13-improvements-in-the-project-plugin/</guid><description>
&lt;p&gt;Since version 4.10 Kate comes with a simple project plugin, as introduced &lt;a href=&#34;https://kate-editor.org/2012/11/02/using-the-projects-plugin-in-kate/&#34; target=&#34;_blank&#34;&gt;here&lt;/a&gt; .&lt;br /&gt;
The project plugin works by automatically reading a simple json file and providing the information found there to various parts and plugins in Kate.&lt;/p&gt;
&lt;h2 id=&#34;8220-opening-8221-a-project&#34;&gt;&amp;#8220;Opening&amp;#8221; a project&lt;/h2&gt;
&lt;p&gt;Projects are opened automatically by Kate. Whenever a file is opened, Kate goes the directories from that file upwards until it finds a file named .kateproject , which defines the project. This is a simple json file, which is intended to be written manually by the user.&lt;/p&gt;
&lt;p&gt;The .kateproject file defines the name of the project, the set of files which belong to the project, and optionally commands for the &lt;a href=&#34;https://kate-editor.org/2014/03/16/coming-in-4-13-improvements-in-the-build-plugin/&#34; target=&#34;_blank&#34;&gt;build plugin&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;In 4.13, &amp;#8220;out-of-source&amp;#8221; project files are now also supported (actually already in 4.12).  What does that mean ? You can create a .kateproject file in some directory, but it will refer to a different directory as root of the project. This is useful if you have multiple build trees for one source tree, and then need different build commands for each build tree.&lt;/p&gt;
&lt;p&gt;Creating such a .kateproject file is easy, simply add a top-level &amp;#8220;directory&amp;#8221; entry:&lt;/p&gt;
&lt;pre&gt;{
&#34;name&#34;: &#34;MyProject&#34;,
&#34;directory&#34;: &#34;/home/alex/src/myproject&#34;,
&#34;files&#34;: [ { &#34;filters&#34;: [ &#34;*.cpp&#34;, &#34;*.h&#34;] } ]
}&lt;/pre&gt;
&lt;p&gt;So if you create this file e.g. in /home/alex/src/myproject-build/.kateproject, once the project is opened, the files below /home/alex/src/myproject/ will belong to the project &amp;#8220;MyProject&amp;#8221;. Again, to &amp;#8220;open&amp;#8221; this project, open &lt;em&gt;any&lt;/em&gt; file in the same directory as the .kateproject file or any of its subdirectories in Kate. Kate will again automatically find the .kateproject file and load it.&lt;/p&gt;
&lt;h2 id=&#34;support-for-the-improved-build-plugin&#34;&gt;Support for the improved build plugin&lt;/h2&gt;
&lt;p&gt;In 4.13 the build plugin has seen &lt;a href=&#34;https://kate-editor.org/2014/03/16/coming-in-4-13-improvements-in-the-build-plugin/&#34; target=&#34;_blank&#34;&gt;several improvements&lt;/a&gt;, the main one being that it is now possible to define an arbitrary number of targets, instead of being limited to 3. This is fully supported by the project plugin. Also the &amp;#8220;old&amp;#8221; format is still fully supported, and the .kateproject files can even contain both the old and the new format, so it works with the build plugin in version before 4.13 and also after.&lt;/p&gt;
&lt;p&gt;Below there is a simple example for a hello-world project, which defines 4 targets for the build plugin: build all, clean, install and building just &amp;#8220;hello&amp;#8221;:&lt;/p&gt;
&lt;pre&gt;{
    &#34;name&#34;: &#34;Hello&#34;,
    &#34;files&#34;: [ { &#34;filters&#34;: [ &#34;*.cpp&#34;, &#34;*.h&#34;] } ],
    &#34;build&#34;: {
        &#34;directory&#34;: &#34;/home/alex/src/tests/hello/build&#34;,
        &#34;targets&#34;:[
             {&#34;name&#34;:&#34;all&#34;, &#34;build_cmd&#34;:&#34;make -j4 all&#34;}
            ,{&#34;name&#34;:&#34;clean&#34;, &#34;build_cmd&#34;:&#34;make -j4 clean&#34;}
            ,{&#34;name&#34;:&#34;hello&#34;, &#34;build_cmd&#34;:&#34;make -j4 hello&#34;}
            ,{&#34;name&#34;:&#34;install&#34;, &#34;build_cmd&#34;:&#34;make install&#34;}
        ],
        &#34;default_target&#34;: &#34;all&#34;,
        &#34;clean_target&#34;: &#34;clean&#34;
    }
}&lt;/pre&gt;
&lt;p&gt;So,  for each target, a &amp;#8220;name&amp;#8221; and a &amp;#8220;build_cmd&amp;#8221; is defined, and that&amp;#8217;s it. One of the targets can be chosen to be the default target (which can be assigned a dedicated shortcut in the build plugin), and one can be chosen to be the &amp;#8220;clean&amp;#8221; target (again, which can be assigned a dedicated shortcut in the build plugin).&lt;/p&gt;
&lt;p&gt;The screenshot below shows what you get when opening this project in Kate:&lt;/p&gt;
&lt;figure id=&#34;attachment_3274&#34; aria-describedby=&#34;caption-attachment-3274&#34; style=&#34;width: 1016px&#34; class=&#34;wp-caption aligncenter&#34;&gt;[&lt;img class=&#34; wp-image-3274&#34; alt=&#34;kate-project-plugin-manual1&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/03/kate-project-plugin-manual1.png&#34; width=&#34;1016&#34; height=&#34;795&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/03/kate-project-plugin-manual1.png 1016w, https://kate-editor.org/wp-content/uploads/2014/03/kate-project-plugin-manual1-300x234.png 300w&#34; sizes=&#34;(max-width: 1016px) 100vw, 1016px&#34; /&gt;][1]&lt;figcaption id=&#34;caption-attachment-3274&#34; class=&#34;wp-caption-text&#34;&gt;Build plugin showing 4 targets from a .kateproject file&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I mentioned above that both the &amp;#8220;old&amp;#8221; and the new build plugin can be supported within one .kateproject file. To do that, simply put both target definitions in the file, they don&amp;#8217;t interfer:&lt;/p&gt;
&lt;pre&gt;{
    &#34;name&#34;: &#34;Hello&#34;,
    &#34;files&#34;: [ { &#34;filters&#34;: [ &#34;*.cpp&#34;, &#34;*.h&#34;] } ],
    &#34;build&#34;: {
        &#34;directory&#34;: &#34;/home/alex/src/tests/hello/build&#34;,
        &#34;targets&#34;:[
             {&#34;name&#34;:&#34;all&#34;, &#34;build_cmd&#34;:&#34;make -j4 all&#34;}
            ,{&#34;name&#34;:&#34;clean&#34;, &#34;build_cmd&#34;:&#34;make -j4 clean&#34;}
            ,{&#34;name&#34;:&#34;hello&#34;, &#34;build_cmd&#34;:&#34;make -j4 hello&#34;}
            ,{&#34;name&#34;:&#34;install&#34;, &#34;build_cmd&#34;:&#34;make install&#34;}
        ],
        &#34;default_target&#34;: &#34;all&#34;,
        &#34;clean_target&#34;: &#34;clean&#34;,
        &#34;build&#34;: &#34;make -j4 all&#34;,
        &#34;clean&#34;: &#34;make -j4 clean&#34;,
        &#34;quick&#34;: &#34;make -j4 install&#34;,
    }
}&lt;/pre&gt;
&lt;p&gt;Here, additionally to the 4 custom build targets, the three hardcoded targets &amp;#8220;build&amp;#8221;, &amp;#8220;clean&amp;#8221; and &amp;#8220;quick&amp;#8221; for the &amp;#8220;old&amp;#8221; build plugin are defined. When this project is opened in Kate 4.13 or newer, these three old entries are ignored, and only the four new entries are used. When this project is opened in Kat 4.12 or earlier, the four new targets are ignored and only the old ones are used.&lt;/p&gt;
&lt;p&gt;In the case that an &amp;#8220;old&amp;#8221; .kateproject file is opened, which contains only the old entries, these are used, and the three entries are used to create three targets, as shown in the screenshot below:&lt;/p&gt;
&lt;figure id=&#34;attachment_3294&#34; aria-describedby=&#34;caption-attachment-3294&#34; style=&#34;width: 989px&#34; class=&#34;wp-caption aligncenter&#34;&gt;[&lt;img class=&#34;size-full wp-image-3294&#34; alt=&#34;Build plugin showing 3 targets from an &amp;quot;old&amp;quot; .kateproject file&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/03/kate-project-plugin-old-project-file.png&#34; width=&#34;989&#34; height=&#34;760&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/03/kate-project-plugin-old-project-file.png 989w, https://kate-editor.org/wp-content/uploads/2014/03/kate-project-plugin-old-project-file-300x230.png 300w&#34; sizes=&#34;(max-width: 989px) 100vw, 989px&#34; /&gt;][2]&lt;figcaption id=&#34;caption-attachment-3294&#34; class=&#34;wp-caption-text&#34;&gt;Build plugin showing 3 targets from an &amp;#8220;old&amp;#8221; .kateproject file&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&#34;using-the-project-plugin-with-cmake-based-projects&#34;&gt;Using the project plugin with CMake-based projects&lt;/h2&gt;
&lt;p&gt;Until now, the only way to create .kateproject files was to write them manually. If you are using Kate with C/C++ projects which are built using CMake, there are more news for you. &lt;a href=&#34;http://www.cmake.org/pipermail/cmake/2014-March/057283.html&#34; target=&#34;_blank&#34;&gt;CMake 3.0.0&lt;/a&gt; will be released soon, and among others, it will contain a generator for, guess what: project files for the Kate project plugin!  With that, run CMake, select &amp;#8220;Kate &amp;#8211; Unix Makefiles&amp;#8221; as generator, and there you go, everything set up ready to use for you, including all targets of the project available in the build plugin.&lt;/p&gt;
&lt;p&gt;Below is a screenshot showing running cmake-gui on CMake itself:&lt;/p&gt;
&lt;figure id=&#34;attachment_3300&#34; aria-describedby=&#34;caption-attachment-3300&#34; style=&#34;width: 812px&#34; class=&#34;wp-caption aligncenter&#34;&gt;[&lt;img class=&#34;size-full wp-image-3300&#34; alt=&#34;Running cmake-gui on the CMake sources, showing the available generators&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/03/kate-cmake-cmake.png&#34; width=&#34;812&#34; height=&#34;583&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/03/kate-cmake-cmake.png 812w, https://kate-editor.org/wp-content/uploads/2014/03/kate-cmake-cmake-300x215.png 300w&#34; sizes=&#34;(max-width: 812px) 100vw, 812px&#34; /&gt;][3]&lt;figcaption id=&#34;caption-attachment-3300&#34; class=&#34;wp-caption-text&#34;&gt;Running cmake-gui on the CMake sources, showing the available generators&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;As you can see, &lt;a href=&#34;http://martine.github.io/ninja/manual.html&#34; target=&#34;_blank&#34;&gt;ninja&lt;/a&gt; is also supported.&lt;/p&gt;
&lt;p&gt;Personally I still prefer Makefiles, especially for use with Kate projects. When using the Makefile generator, you get build targets for compiling every individual source file into an object file. This can save a lot of time when working on some source file and trying to get it to compile. Instead of starting to build everything, which involves dependency checking, and linking afterwards, you can simply just compile that one file (via the quick target select dialog of the updated &lt;a href=&#34;https://kate-editor.org/2014/03/16/coming-in-4-13-improvements-in-the-build-plugin/&#34;&gt;build plugin&lt;/a&gt;), and if it failed, simply build the previous target again (there&amp;#8217;s a shortcut for that) until it compiles, and then switch back to building everything (by building the default target).&lt;/p&gt;
&lt;p&gt;In the screenshot below you can see Kate having loaded the project for CMake itself, listing the whole bunch of source files on the left, a long list of available build targets in the lower part, and the select-target-dialog on top, filtered already and the target for compiling cmMakefile.cxx is selected.&lt;/p&gt;
&lt;figure id=&#34;attachment_3303&#34; aria-describedby=&#34;caption-attachment-3303&#34; style=&#34;width: 945px&#34; class=&#34;wp-caption aligncenter&#34;&gt;[&lt;img class=&#34;size-full wp-image-3303&#34; alt=&#34;Kate showing a full project for CMake itself&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/03/kate-project-plugin-cmake-select-targets.png&#34; width=&#34;945&#34; height=&#34;872&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/03/kate-project-plugin-cmake-select-targets.png 945w, https://kate-editor.org/wp-content/uploads/2014/03/kate-project-plugin-cmake-select-targets-300x276.png 300w&#34; sizes=&#34;(max-width: 945px) 100vw, 945px&#34; /&gt;][5]&lt;figcaption id=&#34;caption-attachment-3303&#34; class=&#34;wp-caption-text&#34;&gt;Kate showing a full project for CMake itself&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;After trying to compile the file, Kate shows you which errors occurred, and using a dedicated shortcut (I set it to F9) it jumps to the line in the code:&lt;/p&gt;
&lt;figure id=&#34;attachment_3276&#34; aria-describedby=&#34;caption-attachment-3276&#34; style=&#34;width: 939px&#34; class=&#34;wp-caption aligncenter&#34;&gt;[&lt;img class=&#34;size-full wp-image-3276&#34; alt=&#34;Build plugin: jump to error works&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/03/kate-project-plugin-cmake-compile-file-error.png&#34; width=&#34;939&#34; height=&#34;721&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/03/kate-project-plugin-cmake-compile-file-error.png 939w, https://kate-editor.org/wp-content/uploads/2014/03/kate-project-plugin-cmake-compile-file-error-300x230.png 300w&#34; sizes=&#34;(max-width: 939px) 100vw, 939px&#34; /&gt;][6]&lt;figcaption id=&#34;caption-attachment-3276&#34; class=&#34;wp-caption-text&#34;&gt;Build plugin: jump to error works&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;As can be seen, there is the parsed error, the status tells you that there were errors when building the target &amp;#8220;cmMakefile.cxx.o&amp;#8221;, and if you want to try again, there&amp;#8217;s a &amp;#8220;Build again&amp;#8221; button right there.&lt;/p&gt;
&lt;p&gt;Now, how do you actually open CMake-generated projects in Kate? The .kateproject file is generated in the build tree, and usually you never have to open any files from the build tree in Kate.  But to open the project in Kate, you have to open any, at least one, file from the build tree (this will trigger searching the .kateproject file, which will point the project plugin to the source tree). To help with this, CMake additionally generates a file &amp;#8220;ProjectName@buildDirectory.kateproject&amp;#8221; in the top level build dir, right next to the generated .kateproject file. Open this file, and Kate loads the project.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&#34;attachment_3279&#34; aria-describedby=&#34;caption-attachment-3279&#34; style=&#34;width: 939px&#34; class=&#34;wp-caption aligncenter&#34;&gt;[&lt;img class=&#34;size-full wp-image-3279&#34; alt=&#34;Loading a project via opening the &amp;quot;dummy&amp;quot; ProjectName@BuildDir.kateproject file&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/03/kate-project-plugin-cmake-project-file.png&#34; width=&#34;939&#34; height=&#34;721&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/03/kate-project-plugin-cmake-project-file.png 939w, https://kate-editor.org/wp-content/uploads/2014/03/kate-project-plugin-cmake-project-file-300x230.png 300w&#34; sizes=&#34;(max-width: 939px) 100vw, 939px&#34; /&gt;][7]&lt;figcaption id=&#34;caption-attachment-3279&#34; class=&#34;wp-caption-text&#34;&gt;Loading a project via opening the &amp;#8220;dummy&amp;#8221; ProjectName@BuildDir.kateproject file&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;This has been done in the screenshot above,  and already you&amp;#8217;re ready to go !&lt;/p&gt;
&lt;h2 id=&#34;documentation&#34;&gt;Documentation&lt;/h2&gt;
&lt;p&gt;Last but not least, starting with 4.13, you can find documentation for the project json file in &lt;PREFIX&gt;/share/apps/apps/kate/plugins/project/kateproject.example.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So that&amp;#8217;s it for now, I hope you find the new stuff useful. :-)&lt;/p&gt;</description></item><item><title>Kate: What’s cool, and what should be improved?</title><link>https://kate-editor.org/2014/03/18/kate-whats-cool-and-what-should-be-improved/</link><pubDate>Tue, 18 Mar 2014 10:59:06 +0000</pubDate><guid>https://kate-editor.org/2014/03/18/kate-whats-cool-and-what-should-be-improved/</guid><description>&lt;p&gt;This is sort of a poll: Please write in the comments below exactly&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;one line about what you like&lt;/strong&gt; on Kate, and&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;one line what you want improved.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please spread the word so we get a lot of feedback &amp;#8211; Thanks! :-)&lt;/p&gt;</description></item><item><title>Coming in 4.13: Improvements in the build plugin</title><link>https://kate-editor.org/2014/03/16/coming-in-4-13-improvements-in-the-build-plugin/</link><pubDate>Sun, 16 Mar 2014 21:51:08 +0000</pubDate><guid>https://kate-editor.org/2014/03/16/coming-in-4-13-improvements-in-the-build-plugin/</guid><description>&lt;p&gt;Kate comes with a build plugin, which supports running make, or &lt;a href=&#34;http://martine.github.io/ninja/&#34; target=&#34;_blank&#34;&gt;ninja&lt;/a&gt;,  or actually any arbitrary command directly from within Kate. This is obvisouly  useful when using Kate as development editor, and this plugin has seen several improvements for the 4.13 release.&lt;/p&gt;
&lt;p&gt;A small change, but for affected developers a major improvement, is that Kate  can now parse warning and error messages from the Intel compilers, icpc and icc.&lt;br /&gt;
So for those of you using icpc, Kate can now automatically jump to the line of code which caused the error. Actually you don&amp;#8217;t have to wait for 4.13 for this, it is already available since 4.12.3.&lt;/p&gt;
&lt;p&gt;Beside that, there are improvements which benefit all users of the build plugin. Let&amp;#8217;s start with a screenshot, which already shows one of the major changes.&lt;/p&gt;
&lt;figure id=&#34;attachment_3245&#34; aria-describedby=&#34;caption-attachment-3245&#34; style=&#34;width: 660px&#34; class=&#34;wp-caption aligncenter&#34;&gt;[&lt;img class=&#34; wp-image-3245 &#34; alt=&#34;kate-targets&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/03/kate-targets-300x220.png&#34; width=&#34;660&#34; height=&#34;484&#34; /&gt;][1]&lt;figcaption id=&#34;caption-attachment-3245&#34; class=&#34;wp-caption-text&#34;&gt;Build plugin showing the list of targets and the Build-menu&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Up to 4.12, it was possible to create multiple &amp;#8220;targets&amp;#8221;, and each of these targets could contain a &amp;#8220;Build&amp;#8221; command, a &amp;#8220;Clean&amp;#8221; command and a &amp;#8220;Quick&amp;#8221; command.  As of 4.13, the build plugin is not limited anymore to these three commands. As can be seen in the screenshot, every &amp;#8220;target set&amp;#8221; can now  contain an arbitrary number of actual targets.&lt;br /&gt;
They are listed in a table widget. To add a target, click the green &amp;#8220;plus&amp;#8221;-button in the lower right. This will  append a target to the end of the list. It can be edited by simply double clicking it (or pressing F2 while keyboard focus is in the table).&lt;br /&gt;
To delete a target, click the &amp;#8220;minus&amp;#8221;-button right next to the &amp;#8220;plus&amp;#8221;&lt;br /&gt;
One of the targets can be marked as the &amp;#8220;default&amp;#8221; target. This will typically be  the target which runs &amp;#8220;make all&amp;#8221;. Additionally one target can be marked  as the &amp;#8220;clean&amp;#8221; target, this will typically be &amp;#8220;make clean&amp;#8221;. For these two special  targets separate keyboard shortcuts can be assigned, so they are always  quickly available.&lt;/p&gt;
&lt;p&gt;A whole set of actions which can be bound to shortcuts can be seen here:&lt;/p&gt;
&lt;figure id=&#34;attachment_3246&#34; aria-describedby=&#34;caption-attachment-3246&#34; style=&#34;width: 320px&#34; class=&#34;wp-caption aligncenter&#34;&gt;[&lt;img class=&#34; wp-image-3246 &#34; alt=&#34;build-shortcuts&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/03/build-shortcuts-300x215.png&#34; width=&#34;320&#34; height=&#34;231&#34; /&gt;][2]&lt;figcaption id=&#34;caption-attachment-3246&#34; class=&#34;wp-caption-text&#34;&gt;Configuring keyboard shortcuts for the build plugin&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now to the actually interesting part: building something.&lt;br /&gt;
There are multiple ways how to start building a target.&lt;/p&gt;
&lt;p&gt;The default and the clean targets can be built directly using keyboard shortcuts, in the screenshot above I assigned F8 to the default target.&lt;br /&gt;
To build another than the default target, you can select the target you want in the table and then build it by clicking the blue &amp;#8220;check&amp;#8221;-button next to the &amp;#8220;plus&amp;#8221; and &amp;#8220;minus&amp;#8221; buttons.&lt;br /&gt;
For keyboard users, there is a quick-select dialog. It shows a list with the names of all targets, which can be filtered by typing part of the target name. That&amp;#8217;s a really quick way to build any of the available targets. Here&amp;#8217;s a screenshot:&lt;/p&gt;
&lt;figure id=&#34;attachment_3247&#34; aria-describedby=&#34;caption-attachment-3247&#34; style=&#34;width: 660px&#34; class=&#34;wp-caption aligncenter&#34;&gt;[&lt;img class=&#34;wp-image-3247 &#34; alt=&#34;kate-targets-quick-select&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/03/kate-targets-quick-select-300x220.png&#34; width=&#34;660&#34; height=&#34;484&#34; /&gt;][3]&lt;figcaption id=&#34;caption-attachment-3247&#34; class=&#34;wp-caption-text&#34;&gt;The Quick-select dialog for building a target&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Once building has started, the output is displayed in the log view.&lt;br /&gt;
As can be seen, there is only one output tab left, where the &amp;#8220;level of detail&amp;#8221; can be adjusted using a slider. While building, the plugin automatically switches to the log display.&lt;/p&gt;
&lt;figure id=&#34;attachment_3248&#34; aria-describedby=&#34;caption-attachment-3248&#34; style=&#34;width: 660px&#34; class=&#34;wp-caption aligncenter&#34;&gt;[&lt;img class=&#34; wp-image-3248 &#34; alt=&#34;kate-build-log&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/03/kate-build-log-300x235.png&#34; width=&#34;660&#34; height=&#34;517&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/03/kate-build-log-300x235.png 300w, https://kate-editor.org/wp-content/uploads/2014/03/kate-build-log-1024x802.png 1024w, https://kate-editor.org/wp-content/uploads/2014/03/kate-build-log.png 1053w&#34; sizes=&#34;(max-width: 660px) 100vw, 660px&#34; /&gt;][4]&lt;figcaption id=&#34;caption-attachment-3248&#34; class=&#34;wp-caption-text&#34;&gt;Build plugin showing the output while building.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Also new, there is now a simple status display, which tells you which target is currently being built or was built previously.&lt;br /&gt;
Next to it, there is yet another way to start a build, the &amp;#8220;Build again&amp;#8221; button. Once some target has been built, using this button the same target can be built again. Oh, and there is now also a button to cancel a build, in case you forgot the assigned keyboard shortcut.&lt;/p&gt;
&lt;p&gt;When building has finished, the output tab automatically switches to a parsed output mode, which lists the warning &amp;#8211; and error messages. By double clicking on one of them or using the keyboard shortcut of your choice, I assigned F9,  you can jump directly to the line of code which caused the error.&lt;/p&gt;
&lt;figure id=&#34;attachment_3249&#34; aria-describedby=&#34;caption-attachment-3249&#34; style=&#34;width: 660px&#34; class=&#34;wp-caption aligncenter&#34;&gt;[&lt;img class=&#34; wp-image-3249 &#34; alt=&#34;kate-build-error&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/03/kate-build-error-300x226.png&#34; width=&#34;660&#34; height=&#34;498&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/03/kate-build-error-300x226.png 300w, https://kate-editor.org/wp-content/uploads/2014/03/kate-build-error-1024x773.png 1024w, https://kate-editor.org/wp-content/uploads/2014/03/kate-build-error.png 1062w&#34; sizes=&#34;(max-width: 660px) 100vw, 660px&#34; /&gt;][5]&lt;figcaption id=&#34;caption-attachment-3249&#34; class=&#34;wp-caption-text&#34;&gt;Build plugin showing the parsed errors after the build failed.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;All that together, should make the build plugin even more useful than before.&lt;br /&gt;
Have fun compiling ! :-)&lt;/p&gt;
&lt;p&gt;Alex&lt;/p&gt;</description></item><item><title>Kate Part (KF5): New Default Styles for better Color Schemes</title><link>https://kate-editor.org/2014/03/07/kate-part-kf5-new-default-styles-for-better-color-schemes/</link><pubDate>Fri, 07 Mar 2014 21:31:06 +0000</pubDate><guid>https://kate-editor.org/2014/03/07/kate-part-kf5-new-default-styles-for-better-color-schemes/</guid><description>
&lt;p&gt;Kate Part gained 17 new default styles in addition to the existing 14 default styles. These changes are available for Kate based on the KDE frameworks 5 initiative and currently live in &lt;a title=&#34;KTextEditor git module&#34; href=&#34;https://projects.kde.org/projects/frameworks/ktexteditor/repository&#34; target=&#34;_blank&#34;&gt;ktexteditor.git module&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Default Styles are &lt;span style=&#34;line-height: 1.5;&#34;&gt;predefined font and color styles that are used by Kate Part&amp;#8217;s syntax highlighting. For instance, Kate Part always had a default style for comments. Therewith, the comments in all syntax highlighting files look the same (by default, a gray color). Or keywords are by default always bold and black.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;However, during the last years it became apparent that the list of 14 default styles were not always enough. Consequently, lots of syntax highlighting files defined their own hard-coded colors. For instance, doxygen comments were hard-coded in a dark blue color. The problem with hard-coded colors is that they do not adapt when changing the default styles. Hence, doxygen comments were barely readable on a dark color scheme.&lt;/p&gt;
&lt;p&gt;Therefore, a discussion took place on kwrite-devel (&lt;a title=&#34;Discussion about Default Styles&#34; href=&#34;http://lists.kde.org/?l=kwrite-devel&amp;m=139293479701378&amp;w=2&#34; target=&#34;_blank&#34;&gt;thread 1&lt;/a&gt;, &lt;a title=&#34;Discussion about Default Styles&#34; href=&#34;http://lists.kde.org/?l=kwrite-devel&amp;m=139271439016152&amp;w=2&#34; target=&#34;_blank&#34;&gt;thread 2&lt;/a&gt;, &lt;a title=&#34;Final list of Default Styles&#34; href=&#34;http://lists.kde.org/?l=kwrite-devel&amp;m=139327713701324&amp;w=2&#34; target=&#34;_blank&#34;&gt;thread 3&lt;/a&gt;) that ended in 17 new default styles and a categorization of these as follows (the new default styles are bold):&lt;/p&gt;
&lt;p&gt;Category &amp;#8220;&lt;strong&gt;Normal Text and Source Code&lt;/strong&gt;&amp;#8221;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dsNormal: default for normal text and source code.&lt;/li&gt;
&lt;li&gt;dsKeyword: Used for language keywords.&lt;/li&gt;
&lt;li&gt;dsFunction: Used for function definitions and function calls.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsVariable&lt;/strong&gt;: Used for variables, if applicable. Example: $foo in PHP.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsControlFlow&lt;/strong&gt;: Used for control flow highlighting, e.g., if, then, else, return, continue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsOperator&lt;/strong&gt;: Used for operators such as +, -, *, / and :: etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsBuiltIn&lt;/strong&gt;: Used for built-in language classes and functions, if applicable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsExtension&lt;/strong&gt;: Used for extensions, such as Qt or boost.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsPreprocessor&lt;/strong&gt;: Used for preprocessor statements.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsAttribute&lt;/strong&gt;: Used for attributes of functions or objects, e.g. @override in Java, or __declspec(&amp;#8230;) and __attribute__((&amp;#8230;))in C/C++.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Category &amp;#8220;&lt;strong&gt;Strings &amp;amp; Characters&lt;/strong&gt;&amp;#8221;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dsChar: Used for a single character.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsSpecialChar&lt;/strong&gt;: Used for an escaped character in strings, e.g. &amp;#8220;hello\n&amp;#8221;.&lt;/li&gt;
&lt;li&gt;dsString: Default for strings.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsVerbatimString&lt;/strong&gt;: Used for verbatim strings such as HERE docs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsSpecialString&lt;/strong&gt;: Used for special strings such as regular expressions in ECMAScript or LaTeX math mode.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsImport&lt;/strong&gt;: Used for includes, imports, modules, or LaTeX packages&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Category &amp;#8220;&lt;strong&gt;Numbers, Types &amp;amp; Constants&lt;/strong&gt;&amp;#8221;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dsDataType: Used for data types such as int, char, float etc.&lt;/li&gt;
&lt;li&gt;dsDecVal: Used for decimal values.&lt;/li&gt;
&lt;li&gt;dsBaseN: Used for numbers with base other than 10.&lt;/li&gt;
&lt;li&gt;dsFloat: Used for floating point numbers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsConstant&lt;/strong&gt;: Used for language constants, e.g. True, False, None in Python or nullptr in C/C++.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Category &amp;#8220;&lt;strong&gt;Comments &amp;amp; Documentation&lt;/strong&gt;&amp;#8221;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dsComment: Used for normal comments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsDocumentation&lt;/strong&gt;: Used for comments that reflect API documentation, e.g., the default style for /** */ comments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsAnnotation&lt;/strong&gt;: Used for annotations in comments, e.g. @param in Doxygen or JavaDoc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsCommentVar&lt;/strong&gt;: Used to refer to variables in a comment, e.g. after @param &lt;identifier&gt; in Doxygen or JavaDoc.&lt;/li&gt;
&lt;li&gt;dsRegionMarker: Used for region markers, typically defined by BEGIN/END.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsInformation&lt;/strong&gt;: Used for information, e.g. the keyword @note in Doxygen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsWarning&lt;/strong&gt;: Used for warnings, e.g. the keyword @warning in Doxygen.&lt;/li&gt;
&lt;li&gt;dsAlert: Used for comment specials such as TODO and WARNING in comments.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Category &amp;#8220;&lt;strong&gt;Miscellaneous&lt;/strong&gt;&amp;#8221;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dsOthers: Used for attributes that do not match any of the other default styles.&lt;/li&gt;
&lt;li&gt;dsError: Used to indicate wrong syntax.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;existing-syntax-highlighting-files&#34;&gt;Existing Syntax Highlighting Files&lt;/h3&gt;
&lt;p&gt;If the new default styles are not used, syntax highlighting files are backwards compatible to Kate Part in KDE SC 4. However, the plan is to use the new default styles where applicable to avoid hard-coded colors. To this end, the &lt;strong&gt;kateversion&lt;/strong&gt; attribute in the &lt;strong&gt;language&lt;/strong&gt; element will be set to 5.0 (yes, Kate Part&amp;#8217;s version changed from 3 to 5 to match KDE frameworks 5) to avoid loading incompatible syntax highlighting xml files in older Kate Part versions. Example:&lt;/p&gt;
&lt;pre&gt;&amp;lt;language name=&#34;C++&#34; &lt;strong&gt;kateversion=&#34;5.0&#34;&lt;/strong&gt; [other attributes omitted]&amp;gt;&lt;/pre&gt;
&lt;p&gt;With the new default styles, the Default Styles tab looks as follows:&lt;br /&gt;
&lt;a style=&#34;line-height: 1.5;&#34; href=&#34;https://kate-editor.org/wp-content/uploads/2014/03/default-styles-5.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3231&#34; alt=&#34;Default Styles in KF5&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/03/default-styles-5.png&#34; width=&#34;994&#34; height=&#34;1034&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/03/default-styles-5.png 994w, https://kate-editor.org/wp-content/uploads/2014/03/default-styles-5-288x300.png 288w, https://kate-editor.org/wp-content/uploads/2014/03/default-styles-5-984x1024.png 984w&#34; sizes=&#34;(max-width: 994px) 100vw, 994px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In comparison, the KDE 4.x version looks like this:&lt;br /&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2014/03/default-styles-4.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3235&#34; alt=&#34;Default Styles in KDE 4&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/03/default-styles-4.png&#34; width=&#34;923&#34; height=&#34;615&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/03/default-styles-4.png 923w, https://kate-editor.org/wp-content/uploads/2014/03/default-styles-4-300x199.png 300w&#34; sizes=&#34;(max-width: 923px) 100vw, 923px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The new default style colors are not fixed yet, so improvements and additional color themes we can ship with Kate Part by default are a welcome addition!&lt;/p&gt;
&lt;h3 id=&#34;a-note-at-3rd-party-developers&#34;&gt;A Note at 3rd Party Developers&lt;/h3&gt;
&lt;p&gt;There are other implementations (such as in &lt;a title=&#34;Qt Creator&#39;s Kate Syntax Highlighting&#34; href=&#34;http://doc.qt.digia.com/qtcreator-2.4/creator-highlighting.html&#34; target=&#34;_blank&#34;&gt;Qt Creator&lt;/a&gt; or for &lt;a title=&#34;Haskell Kate Syntax Highlighting&#34; href=&#34;http://hackage.haskell.org/package/highlighting-kate&#34; target=&#34;_blank&#34;&gt;Haskell&lt;/a&gt;). If you developers read this, we encourage you to add these default styles as well once Kate Part 5 is released (stable). Otherwise, the new syntax highlighting files may not be compatible.&lt;/p&gt;</description></item><item><title>Jump to Next/Prev Modified Line</title><link>https://kate-editor.org/2014/02/20/jump-to-nextprev-modified-line/</link><pubDate>Thu, 20 Feb 2014 21:27:19 +0000</pubDate><guid>https://kate-editor.org/2014/02/20/jump-to-nextprev-modified-line/</guid><description>&lt;p&gt;In &lt;a href=&#34;https://kate-editor.org/2011/12/21/kate-in-kde-4-8/&#34; title=&#34;Kate in KDE 4.8&#34;&gt;KDE SC 4.8&lt;/a&gt;, Kate was extended by the &lt;a href=&#34;https://kate-editor.org/2011/09/06/line-modification-system/&#34; title=&#34;Line Modification Indicators&#34;&gt;line modification indicators&lt;/a&gt;. These indicators show you what lines currently contain unsaved data, but also lines that were once changed but now are saved to disk:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2014/02/modified-lines.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3205&#34; alt=&#34;Modified Lines&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/02/modified-lines.png&#34; width=&#34;430&#34; height=&#34;129&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/02/modified-lines.png 430w, https://kate-editor.org/wp-content/uploads/2014/02/modified-lines-300x90.png 300w&#34; sizes=&#34;(max-width: 430px) 100vw, 430px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With Kate in KDE 4.13, we have two new actions in the Edit menu:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Move to Previous Modified Line&lt;/li&gt;
&lt;li&gt;Move to Next Modified Line&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the screenshot above, moving to the next modified line does nothing, since we are already at the very end of the document. Moving to the previous modified line first goes to line 4, then to line 2, and finally to line 1. By default, no shortcuts are assigned, so if you you want to use this, it makes a lot of sense to configure shortcuts.&lt;/p&gt;
&lt;p&gt;Modified and saved lines are treated equally, so maybe we should rather call it &amp;#8220;touched&amp;#8221; lines, since all lines that were touched by the user at some point in the edit history are taken into account.&lt;/p&gt;
&lt;p&gt;The rationale behind these two actions is to allow fast navigation in the text that you actually work on. Jumping over hundreds of untouched lines is quite handy.&lt;/p&gt;
&lt;p&gt;Hope this is useful :-)&lt;/p&gt;</description></item><item><title>Lumen – A Code-Completion Plugin for the D Programming Language</title><link>https://kate-editor.org/2014/02/20/lumen-a-code-completion-plugin-for-the-d-programming-language/</link><pubDate>Thu, 20 Feb 2014 14:11:03 +0000</pubDate><guid>https://kate-editor.org/2014/02/20/lumen-a-code-completion-plugin-for-the-d-programming-language/</guid><description>&lt;p&gt;&lt;span style=&#34;line-height: 1.5;&#34;&gt;I am &lt;/span&gt;&lt;span style=&#34;line-height: 1.5;&#34;&gt;the original author of the Lumen KTextEditor plugin and I am happy to announce, I just committed it to the Kate repository for KDE 4.13!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Lumen is just the name for a plugin providing code-completion for th&lt;span style=&#34;line-height: 1.5;&#34;&gt;e D programming language in KTextEditor/Kate and KDevelop. But Lumen is just a connection between the editor and the &lt;/span&gt;&lt;em style=&#34;line-height: 1.5;&#34;&gt;D Completion Daemon (a server providing all the information)&lt;/em&gt;&lt;span style=&#34;line-height: 1.5;&#34;&gt; called  &lt;/span&gt;&lt;a style=&#34;line-height: 1.5;&#34; title=&#34;DCD - D completion Daemon&#34; href=&#34;https://github.com/Hackerpilot/DCD&#34;&gt;DCD&lt;/a&gt;&lt;span style=&#34;line-height: 1.5;&#34;&gt;. The plugin currently supports all major features of the completion server: feeding the server with imp&lt;/span&gt;&lt;span style=&#34;line-height: 1.5;&#34;&gt;ort files, displaying documentation and several types of completion:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Imports:&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
&lt;img class=&#34;size-full wp-image-3181 aligncenter&#34; style=&#34;line-height: 1.5;&#34; alt=&#34;example of lumen (imports)&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/02/import01.png&#34; width=&#34;381&#34; height=&#34;189&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/02/import01.png 381w, https://kate-editor.org/wp-content/uploads/2014/02/import01-300x148.png 300w&#34; sizes=&#34;(max-width: 381px) 100vw, 381px&#34; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Basic Completion:&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2014/02/completion01.png&#34;&gt;&lt;img class=&#34;size-full wp-image-3183 aligncenter&#34; alt=&#34;example of lumen (code completion)&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/02/completion01.png&#34; width=&#34;310&#34; height=&#34;335&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/02/completion01.png 310w, https://kate-editor.org/wp-content/uploads/2014/02/completion01-277x300.png 277w&#34; sizes=&#34;(max-width: 310px) 100vw, 310px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Completion (overloaded Function):&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2014/02/completion02.png&#34;&gt;&lt;img class=&#34;size-full wp-image-3184 aligncenter&#34; alt=&#34;example of lumen (code completion)&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/02/completion02.png&#34; width=&#34;415&#34; height=&#34;362&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/02/completion02.png 415w, https://kate-editor.org/wp-content/uploads/2014/02/completion02-300x261.png 300w&#34; sizes=&#34;(max-width: 415px) 100vw, 415px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Calltips:&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2014/02/calltip01.png&#34;&gt;&lt;img class=&#34; wp-image-3182 aligncenter&#34; alt=&#34;example of lumen (calltips)&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/02/calltip01.png&#34; width=&#34;509&#34; height=&#34;259&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/02/calltip01.png 509w, https://kate-editor.org/wp-content/uploads/2014/02/calltip01-300x152.png 300w&#34; sizes=&#34;(max-width: 509px) 100vw, 509px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To make Lumen work you have to install &lt;a href=&#34;https://github.com/Hackerpilot/DCD&#34;&gt;DCD&lt;/a&gt;, unfortunately no Linux distribution has DCD packaged so far. Luckily the D community provides a remedy.&lt;/p&gt;
&lt;p&gt;For all Debian/apt based distributions like Ubuntu and Debian of course, there is the &lt;a href=&#34;http://d-apt.sourceforge.net/&#34;&gt;d-apt&lt;/a&gt;, simply follow the instructions on how to setup the apt-repository and install DCD via apt.  For Archlinux exists an &lt;a href=&#34;https://aur.archlinux.org/packages/dcd-git/&#34;&gt;AUR Package&lt;/a&gt;. Everyone else has to setup DCD manually, but it&amp;#8217;s really not hard, simply follow &lt;a href=&#34;https://github.com/Hackerpilot/DCD#setup&#34;&gt;these instructions&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After installing DCD edit _~/.config/dcd/dcd.conf&lt;em&gt; (create if it does not exist already) and add a path to your D include/import files (phobos), for me this is &lt;/em&gt;/usr/include/dlang/dmd_ (on ArchLinux), for other installations this would most likely be &lt;em&gt;/usr/include/d&lt;/em&gt;. Furthermore Lumen will try to read a &lt;em&gt;.lumenconfig&lt;/em&gt; in every parent folder of the currently opened D source file and add every line in this file as include path to the DCD server. Add all dependencies of your current project to this file.&lt;/p&gt;
&lt;p&gt;Now start the completion server with &lt;em&gt;dcd-server&lt;/em&gt;, enable the Lumen plugin in your settings and you will have code completion for the D programming language in your favorite editor!&lt;/p&gt;</description></item><item><title>Kate/KDevelop/Skanlite Sprint Wrap-Up</title><link>https://kate-editor.org/2014/02/02/katekdevelop-sprint-wrap-up/</link><pubDate>Sun, 02 Feb 2014 13:20:42 +0000</pubDate><guid>https://kate-editor.org/2014/02/02/katekdevelop-sprint-wrap-up/</guid><description>&lt;p&gt;From 18th to 25th of January 2014, the Kate, KDevelop and Skanlite developers met in Barcelona to work on these projects full time for a week. Full time usually implies about 14 hours per person a day (yes, besides food, we do nothing but developing). 11 developers working 14 hours a day for 7 days makes a total of 1078 hours. If we divide this by 8 hours, the typical amount of work hours in a day, this makes 134 man-days of work, or about 27 weeks of continued development time. While this calculation is a bit theoretical, it is still very valid to estimate the amount of work that is put into these projects during such a sprint, especially since usually developers have far less time for development in their spare time.&lt;/p&gt;
&lt;p&gt;The efforts focus mostly on KDE Frameworks 5, so what is listed next is mostly relevant only for the KF5/Qt5 version of Kate etc. Going through the Kate and Skanlite commits from 18th to the 25th of January, we have (not listing all commits):&lt;/p&gt;
&lt;p&gt;January, 18th (arrival day):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KTextEditor::Cursor and KTextEditor::Range are declared as &lt;a title=&#34;Q_MOVABLE_TYPE&#34; href=&#34;http://commits.kde.org/ktexteditor/fec814f1f654bd6c43a13a8b748c9f6ed6b15a54&#34; target=&#34;_blank&#34;&gt;Q_MOVABLE_TYPE&lt;/a&gt;, telling Qt containers that these primitive types can be mem-moved without copy constructor.&lt;/li&gt;
&lt;li&gt;since KTextEditor and KatePart are now merged into a single list, the &lt;a title=&#34;API changes&#34; href=&#34;http://commits.kde.org/ktexteditor/f539e1c80c9191bb3a7409473c14bd713696d98e&#34; target=&#34;_blank&#34;&gt;API was changed&lt;/a&gt; such that KTextEditor::Editor::instance() is a singleton. Therefore, KTextEditor::Document::editor() was dropped, as it is not needed anymore.&lt;/li&gt;
&lt;li&gt;vi input mode: new &lt;a title=&#34;Sentence Text Object&#34; href=&#34;http://commits.kde.org/kate/50593e34dfa0330e3226c0b24ac709b29ef27a4f&#34; target=&#34;_blank&#34;&gt;sentence text object&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Merged Interfaces&#34; href=&#34;http://commits.kde.org/ktexteditor/59b824fded498cc6860f2ded302e71e5255b6af0&#34; target=&#34;_blank&#34;&gt;merged&lt;/a&gt; code completion models&lt;/li&gt;
&lt;li&gt;some API &lt;a title=&#34;API cleanups&#34; href=&#34;http://commits.kde.org/ktexteditor/e0f07584dfbde2e8854ce7dea05603904814310f&#34; target=&#34;_blank&#34;&gt;cleanups&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;removed ModeInterface&#34; href=&#34;http://commits.kde.org/ktexteditor/b8531da93806b953496efc2a166a36a86bad1d49&#34; target=&#34;_blank&#34;&gt;removed ModeInterface&lt;/a&gt;, which was never implemented&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;January, 19th:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;vi input mode: enabled &lt;a title=&#34;vi input mode numbered registers&#34; href=&#34;http://commits.kde.org/kate/5562332777f35d0885c208a03c0c1086b656467f&#34; target=&#34;_blank&#34;&gt;numbered registers&lt;/a&gt; for &amp;#8220;q&amp;#8221; command&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;less hacks&#34; href=&#34;http://commits.kde.org/ktexteditor/1deece7853c5542f70482e6a9487fca001aa5cd5&#34; target=&#34;_blank&#34;&gt;removed hack&lt;/a&gt; setSuppressOpeningErrorDialogs&lt;/li&gt;
&lt;li&gt;cleaner codeflow for &lt;a title=&#34;Default Encoding&#34; href=&#34;http://commits.kde.org/ktexteditor/5bf99370ec0ee3dbe2b3e33351d8216029efc6da&#34; target=&#34;_blank&#34;&gt;default encoding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;more &lt;a title=&#34;API cleanup&#34; href=&#34;http://commits.kde.org/ktexteditor/6ad6841e9844ef59772b8a417fb2bb5f390cb5d2&#34; target=&#34;_blank&#34;&gt;API cleanups&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;merged &lt;a title=&#34;Merged Interface&#34; href=&#34;http://commits.kde.org/ktexteditor/f60875167fd807866df33d22a5353b7ad497d2c7&#34; target=&#34;_blank&#34;&gt;HighlightInterface&lt;/a&gt; into KTE::Document&lt;/li&gt;
&lt;li&gt;change &lt;a title=&#34;BC Editor&#34; href=&#34;http://commits.kde.org/ktexteditor/6c48751ad38e461befe40ae64575268a1d94ea46&#34; target=&#34;_blank&#34;&gt;Editor implementation&lt;/a&gt; such that it can be extended in a binary compatible way&lt;/li&gt;
&lt;li&gt;make &lt;a title=&#34;Find previous button in searchbar in vi mode&#34; href=&#34;http://commits.kde.org/kate/001dac5b457fca84ea9872fd9e5ebc8262942630&#34; target=&#34;_blank&#34;&gt;find previous button&lt;/a&gt; in searchbar in vi-mode work&lt;/li&gt;
&lt;li&gt;change &lt;a title=&#34;View implementation&#34; href=&#34;http://commits.kde.org/ktexteditor/e9a418bcfb198a78c04667d02e5aab9c4d16f59d&#34; target=&#34;_blank&#34;&gt;View implementation&lt;/a&gt; such that it can be extended in a binary compatible way&lt;/li&gt;
&lt;li&gt;change &lt;a title=&#34;BC Document&#34; href=&#34;http://commits.kde.org/ktexteditor/9d94e9b19892e093c188fa650df223b73a79543b&#34; target=&#34;_blank&#34;&gt;Document implementation&lt;/a&gt; such that it can be extended in a binary comptible way&lt;/li&gt;
&lt;li&gt;vi input mode: &lt;a title=&#34;vimode: added the &amp;quot;(&amp;quot; and &amp;quot;)&amp;quot; motions&#34; href=&#34;http://commits.kde.org/kate/7c431c5706a9fcd544775e203a6351d6b0d2204c&#34; target=&#34;_blank&#34;&gt;added &amp;#8220;(&amp;#8221; and &amp;#8220;)&amp;#8221; motions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;run astyle on &lt;a title=&#34;atyle on KTE interfaces&#34; href=&#34;http://commits.kde.org/ktexteditor/cdef90c0bcc7e0e6636618f0edfee6940d82114f&#34; target=&#34;_blank&#34;&gt;KTextEditor interfaces&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;API cleanup&#34; href=&#34;http://commits.kde.org/ktexteditor/984110c67f22fe19bcaf8b17286c92c1551f2103&#34; target=&#34;_blank&#34;&gt;API cleanup&lt;/a&gt;: return strings by value&lt;/li&gt;
&lt;li&gt;port &lt;a title=&#34;Qt5 Accessibility&#34; href=&#34;http://commits.kde.org/ktexteditor/dbc4c0709a7832ff7c8a17009ece346fbe610a6c&#34; target=&#34;_blank&#34;&gt;accessibility interface&lt;/a&gt; to Qt5 (&lt;a title=&#34;more&#34; href=&#34;http://commits.kde.org/ktexteditor/7f0c00fd2ca1813cb62ac405bd10cd833e782186&#34; target=&#34;_blank&#34;&gt;more&lt;/a&gt;, &lt;a title=&#34;more&#34; href=&#34;http://commits.kde.org/ktexteditor/37a79b2aed45278e7ce9de23fa3759e4584e1178&#34; target=&#34;_blank&#34;&gt;more&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;start of &lt;a title=&#34;Start porting libksane&#34; href=&#34;http://commits.kde.org/libksane/5b8884e016786bcef2ae6430ca612ed2290f1307&#34; target=&#34;_blank&#34;&gt;porting libksane&lt;/a&gt; to Qt5 and KDE Frameworks 5 (&lt;a title=&#34;more libksane porting&#34; href=&#34;http://commits.kde.org/libksane/14a01a01c3ef90f46df25be3aaac70456670b32b&#34; target=&#34;_blank&#34;&gt;more&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;make &lt;a title=&#34;KateRenderer improvements&#34; href=&#34;http://commits.kde.org/ktexteditor/e53632b0e86a12a3cf1f7b0a49170160eaf211a5&#34; target=&#34;_blank&#34;&gt;KateRenderer&lt;/a&gt; work without a view&lt;/li&gt;
&lt;li&gt;add back KTextEditor::Document::&lt;a title=&#34;KTE::Document::print()&#34; href=&#34;http://commits.kde.org/ktexteditor/60c47b178a0409ed7963b40dd927091f77468e97&#34; target=&#34;_blank&#34;&gt;print/printPreview()&lt;/a&gt; interface&lt;/li&gt;
&lt;li&gt;file tree: add &lt;a title=&#34;Print Actions in Context menu of file tree&#34; href=&#34;http://commits.kde.org/kate/789d2d8fb07b7803ef58fea65c640da4f40ff39f&#34; target=&#34;_blank&#34;&gt;print actions&lt;/a&gt; to context menu&lt;/li&gt;
&lt;li&gt;remove complex &lt;a href=&#34;http://commits.kde.org/ktexteditor/60a2de20ccf0ed98a1c39c2b9f65c04ade46e1e8&#34; title=&#34;remove complex KTE signal&#34;&gt;KTE::Document::textChanged()&lt;/a&gt; signal&lt;/li&gt;
&lt;li&gt;libksane: &lt;a href=&#34;http://commits.kde.org/libksane/43e238d2028c6a8e7b4e6ca42878356c81c95009&#34; title=&#34;remove compiler warnings&#34;&gt;remove compiler warnings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;port the &lt;a title=&#34;port gdb backtrace browser&#34; href=&#34;http://commits.kde.org/kate/e6f7b7c8aea55a98852b41dd4f94eca20c5381f7&#34; target=&#34;_blank&#34;&gt;gdb backtrace browser&lt;/a&gt; plugin to Qt5 and the new KTextEditor plugin interfaces&lt;/li&gt;
&lt;li&gt;adapt the Konsole plugin to &lt;a title=&#34;Konsole plugin interface changes&#34; href=&#34;http://commits.kde.org/kate/a14a93ee39af2e3d486dc6360ac61eae48d5a625&#34; target=&#34;_blank&#34;&gt;interface changes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;gdb backtrace browser: compile &lt;a title=&#34;less kde4support&#34; href=&#34;http://commits.kde.org/kate/e5356f57dedc9feffa15b52827676f13e43a2ebf&#34; target=&#34;_blank&#34;&gt;without kde4support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;new Qt connect syntax&#34; href=&#34;http://commits.kde.org/ktexteditor/3df630b5ec345d4011dad88be2dfef32e976cd72&#34; target=&#34;_blank&#34;&gt;fix invalid disconnect&lt;/a&gt; due to new Qt connect syntax (tricky one!)&lt;/li&gt;
&lt;li&gt;libksane: &lt;a title=&#34;move kde4support from libksane&#34; href=&#34;http://commits.kde.org/libksane/3e0f2b1fb01a727aa7f04a02c9fcec04ac9c864a&#34; target=&#34;_blank&#34;&gt;remove kde4support&lt;/a&gt; (&lt;a title=&#34;more&#34; href=&#34;http://commits.kde.org/libksane/1647f68d9945044c0685f95950c81ecb59a3bbd0&#34; target=&#34;_blank&#34;&gt;more&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;KTE::Document: &lt;a title=&#34;only emit the textInserted/Removed stuff on editing actions, not file close/reload&#34; href=&#34;http://commits.kde.org/ktexteditor/0d8c29d1b4b49e1811ac8b46824043cb65415b4f&#34; target=&#34;_blank&#34;&gt;do not emit signals&lt;/a&gt; on file close&lt;/li&gt;
&lt;li&gt;gdb backtrace browser &lt;a title=&#34;bt browser ported&#34; href=&#34;http://commits.kde.org/kate/dad4ca3a6f35ecebe7d9a0ab41c754744f711348&#34; target=&#34;_blank&#34;&gt;fully ported&lt;/a&gt;, ran &lt;a title=&#34;astyle&#34; href=&#34;http://commits.kde.org/kate/f743187951e5924d4b8b166e9ad6416a9e7af9e6&#34; target=&#34;_blank&#34;&gt;astyle&lt;/a&gt;, add &lt;a title=&#34;bt browser unit test&#34; href=&#34;http://commits.kde.org/kate/55821d993404ee45109cfd5351b9ee0bc657acc5&#34; target=&#34;_blank&#34;&gt;unit test&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;delete KTextEditor::Smart* &lt;a title=&#34;remove convenience includes&#34; href=&#34;http://commits.kde.org/kde4support/8358f77eb3ed8ba9897903e3abb2e0966979be7e&#34; target=&#34;_blank&#34;&gt;convenience includes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KTextEditor::Editor is a &lt;a title=&#34;KTE::Editor singleton&#34; href=&#34;http://commits.kde.org/kate/ed637dd2ee083efe2cea935309235e8f35a2cdd3&#34; target=&#34;_blank&#34;&gt;singleton&lt;/a&gt; now&lt;/li&gt;
&lt;li&gt;libksane: make &lt;a title=&#34;make install for libksane&#34; href=&#34;http://commits.kde.org/libksane/1cb52ebd487421e0f0fcfb1d234673e63109c25b&#34; target=&#34;_blank&#34;&gt;make install&lt;/a&gt; work&lt;/li&gt;
&lt;li&gt;KWrite: &lt;a title=&#34;less singletons&#34; href=&#34;http://commits.kde.org/kate/65064825e7f233b4a25c282449bce4c115cd0cff&#34; target=&#34;_blank&#34;&gt;singleton cleanup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;refactor KTextEditor module: &lt;a title=&#34;no src/src&#34; href=&#34;http://commits.kde.org/ktexteditor/6dc4fa82dd8844562f561645aea3d1789c3c8ee4&#34; target=&#34;_blank&#34;&gt;part 1&lt;/a&gt;, &lt;a title=&#34;refactor&#34; href=&#34;http://commits.kde.org/ktexteditor/e1f1f80e9c7d4a9fecd98f794156fa5991c78ed5&#34; target=&#34;_blank&#34;&gt;part 2&lt;/a&gt;, &lt;a title=&#34;refactor&#34; href=&#34;http://commits.kde.org/kate/493d2eab17c4ce455df530899addb5fa1f9838fa&#34; target=&#34;_blank&#34;&gt;part 3&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;vi input mode: don&amp;#8217;t launch commands &lt;a title=&#34;vi-mode: don&#39;t launch commands trough commandBar&#34; href=&#34;http://commits.kde.org/ktexteditor/01a8dd4edd9d38cb56a0422fa352b297500f4890&#34; target=&#34;_blank&#34;&gt;through commandBar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;remove autobrace plugin in favour of &lt;a title=&#34;we shall use sanebrace plugin for KF5&#34; href=&#34;http://commits.kde.org/kate/6b272c40e49f7566a666671af4a539d8387392b6&#34; target=&#34;_blank&#34;&gt;sanebrace plugin&lt;/a&gt; in KF5&lt;/li&gt;
&lt;li&gt;vi input mode: add &lt;a title=&#34;vimode: added the paragraph text object.&#34; href=&#34;http://commits.kde.org/kate/8037623d6b42ef52d2d664de7488fc074a919100&#34; target=&#34;_blank&#34;&gt;paragraph text object&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KateScriptDocument &lt;a title=&#34;use default scheme, no need for view&#34; href=&#34;http://commits.kde.org/ktexteditor/79cba8b7ccdb9ec6b89ca7907014256eb1641a70&#34; target=&#34;_blank&#34;&gt;cleanups&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;more &lt;a title=&#34;more cleanups&#34; href=&#34;http://commits.kde.org/ktexteditor/ac591aefe0c24341faa02a4686fc42d65e993aef&#34; target=&#34;_blank&#34;&gt;interface cleanups&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix &lt;a title=&#34;Fix XML indentation after self-closing tags&#34; href=&#34;http://commits.kde.org/kate/98c6e9fd68966278e411a7891a04b5bc0b76fc0b&#34; target=&#34;_blank&#34;&gt;XML indentation&lt;/a&gt; after self-closing tags&lt;/li&gt;
&lt;li&gt;completion model: properly emit &lt;a title=&#34;Emit layoutChanged when the completion model filter changes&#34; href=&#34;http://commits.kde.org/kate/cb90c51a152f93e84e914d3e0754a9ac4b5cc22d&#34; target=&#34;_blank&#34;&gt;layoutChanged&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SQL plugin: &lt;a title=&#34;start SQL plugin port&#34; href=&#34;http://commits.kde.org/kate/1e919a19aca1728f8c5c36b1f61545cee99c4003&#34; target=&#34;_blank&#34;&gt;start port&lt;/a&gt;, &lt;a title=&#34;more porting&#34; href=&#34;http://commits.kde.org/kate/97c3db1dc58460573fa9aa9e71c7a7f7e45e0f7b&#34; target=&#34;_blank&#34;&gt;more porting&lt;/a&gt;, &lt;a title=&#34;more ported&#34; href=&#34;http://commits.kde.org/kate/ab4e7210cce190515e14c77696882dcf4b4715d7&#34; target=&#34;_blank&#34;&gt;and more&lt;/a&gt;¸&lt;a title=&#34;more porting&#34; href=&#34;http://commits.kde.org/kate/b1d9bea7951ee8373580e6c18e3379fa6ee5c49c&#34; target=&#34;_blank&#34;&gt;more&lt;/a&gt;, &lt;a title=&#34;more porting&#34; href=&#34;http://commits.kde.org/kate/6c9dd0ba59c8c0182d3a1666a38074516c87431e&#34; target=&#34;_blank&#34;&gt;more&lt;/a&gt;, &lt;a title=&#34;more&#34; href=&#34;http://commits.kde.org/kate/1811dea1ddc6bb649f2339d8f40e76dc5b3d7a87&#34; target=&#34;_blank&#34;&gt;.&lt;/a&gt;&lt;a title=&#34;more&#34; href=&#34;http://commits.kde.org/kate/24cc5954bb105e0f6c5a4d8cdf5e10a8fe6a011b&#34; target=&#34;_blank&#34;&gt;.&lt;/a&gt;&lt;a title=&#34;more&#34; href=&#34;http://commits.kde.org/kate/b1ce76ef962b43263e002c1b3ffd84f4c0118c45&#34; target=&#34;_blank&#34;&gt;.&lt;/a&gt;&lt;a title=&#34;more&#34; href=&#34;http://commits.kde.org/kate/f2f646040f5cfe63f80c81465454f63b96158615&#34; target=&#34;_blank&#34;&gt;.&lt;/a&gt;&lt;a title=&#34;fix xmlgui&#34; href=&#34;http://commits.kde.org/kate/357aba70f542244bda86923b4c1e1aa31ebf9c67&#34; target=&#34;_blank&#34;&gt;.&lt;/a&gt;, &lt;a title=&#34;kate sql is back&#34; href=&#34;http://commits.kde.org/kate/654f8da8260c078ff7773e8af11643b72081995d&#34; target=&#34;_blank&#34;&gt;done!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;libksane: adhere to &lt;a title=&#34;rename the sourcefolder from libksane to src&#34; href=&#34;http://commits.kde.org/libksane/57d41a52e78e15becb51dbedd01c6cead2c057dc&#34; target=&#34;_blank&#34;&gt;KF5 frameworks template&lt;/a&gt;, &lt;a title=&#34;libksane, frameworks&#34; href=&#34;http://commits.kde.org/libksane/d6f576adcb836cf62e328f34a1181255e1697a91&#34; target=&#34;_blank&#34;&gt;more&lt;/a&gt;, &lt;a title=&#34;more&#34; href=&#34;http://commits.kde.org/libksane/22229f2373c55c74befc1f654854215a9b782862&#34; target=&#34;_blank&#34;&gt;more&lt;/a&gt;, &lt;a title=&#34;libksane works&#34; href=&#34;http://commits.kde.org/libksane/0db5e64875a0a0e2bd17432704c7d3de89e2dca5&#34; target=&#34;_blank&#34;&gt;works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skanlite: &lt;a title=&#34;cmake works, but does not compile yet&#34; href=&#34;http://commits.kde.org/skanlite/277950c3e30420ab4eafe67b5d2b2042afb26307&#34; target=&#34;_blank&#34;&gt;start porting&lt;/a&gt; to KDE Frameworks 5&lt;/li&gt;
&lt;li&gt;port &lt;a title=&#34;Port the CTags plugin to frameworks and re-enable building&#34; href=&#34;http://commits.kde.org/kate/01ee01427750604a80a41510e470f790847cc3e8&#34; target=&#34;_blank&#34;&gt;CTags plugin&lt;/a&gt; to KTextEditor framework&lt;/li&gt;
&lt;li&gt;vi input mode: &lt;a title=&#34;vi-mode: remove cmdLineBar usage from KateViEmulatedCommandBar&#34; href=&#34;http://commits.kde.org/ktexteditor/a57d0ee2465b764929fa5a01fb1cf44838500825&#34; target=&#34;_blank&#34;&gt;cleanups&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;vi input mode: remove vi specifics from &lt;a title=&#34;remove vi specific parts from KateCmdLineEdit&#34; href=&#34;http://commits.kde.org/ktexteditor/9307fa13b968f664b96904e8b987e24a05b91065&#34; target=&#34;_blank&#34;&gt;KateCmdLineEdit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix &lt;a title=&#34;add target property: EXPORT_NAME &amp;quot;FooBar&amp;quot;&#34; href=&#34;http://commits.kde.org/kdeexamples/4ace48993bc2a8cb1891247d4e8ba1bff48ba95e&#34; target=&#34;_blank&#34;&gt;frameworks template&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;January, 20th:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fix &lt;a title=&#34;Fix indentation when an opening bracket is not in code&#34; href=&#34;http://commits.kde.org/kate/18ace497e8dfc44f0fdd860a710767379ac3a72c&#34; target=&#34;_blank&#34;&gt;cstyle indenter bug&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;cleanup cmake lists&#34; href=&#34;http://commits.kde.org/kate/078c08d1b5dd2bcfb225cfc6296a73f9e18981e2&#34; target=&#34;_blank&#34;&gt;cleanup&lt;/a&gt; cmake files&lt;/li&gt;
&lt;li&gt;port &lt;a title=&#34;filebrowser is back&#34; href=&#34;http://commits.kde.org/kate/82d1b8daea4285c65600220c67b03319b982da46&#34; target=&#34;_blank&#34;&gt;File System Browser&lt;/a&gt; plugin to new KTextEditor plugin interfaces&lt;/li&gt;
&lt;li&gt;fix &lt;a title=&#34;Fix opening of files by using QUrl::fromUserInput() in stead of QUrl()&#34; href=&#34;http://commits.kde.org/kate/f4585e8a37eadac4931c42aa9a1450e7c125d890&#34; target=&#34;_blank&#34;&gt;porting bugs&lt;/a&gt;, &lt;a title=&#34;fix porting bugs&#34; href=&#34;http://commits.kde.org/kate/9a8c405462a1dd5ac01e3ebdcde74ebd1028aacd&#34; target=&#34;_blank&#34;&gt;more fixing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;xml tools: &lt;a title=&#34;initial port of xml completion plugin&#34; href=&#34;http://commits.kde.org/kate/a23814ba19d6193d482067fdfd79486bdbff258b&#34; target=&#34;_blank&#34;&gt;port&lt;/a&gt; to new KTextEditor interfaces, &lt;a title=&#34;xml completion plugin: remove kde4 support&#34; href=&#34;http://commits.kde.org/kate/20f692f263491d51731d3c1e706c38811ecb68db&#34; target=&#34;_blank&#34;&gt;remove kde4support&lt;/a&gt;, run &lt;a title=&#34;astyle: format code&#34; href=&#34;http://commits.kde.org/kate/1170457cb72e03a67c50c2303a3092604ecd0192&#34; target=&#34;_blank&#34;&gt;astyle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;huge KWrite &lt;a title=&#34;cleanup KWrite even more&#34; href=&#34;http://commits.kde.org/kate/c6782b720ee8c5251c0d87adf3bac9a64de4d870&#34; target=&#34;_blank&#34;&gt;code cleanup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;let &lt;a title=&#34;let automoc do the job&#34; href=&#34;http://commits.kde.org/kate/138943e28069d8e8086543a8ac3878c2e1ab588a&#34; target=&#34;_blank&#34;&gt;automoc&lt;/a&gt; do the work&lt;/li&gt;
&lt;li&gt;move filetree &amp;#8220;Documents&amp;#8221; to &lt;a title=&#34;filetree is just a plugin&#34; href=&#34;http://commits.kde.org/kate/0c71220477f6a9a33de9b04caf14f383bfbc430e&#34; target=&#34;_blank&#34;&gt;addons&lt;/a&gt; folder, add &lt;a title=&#34;add Messages&#34; href=&#34;http://commits.kde.org/kate/9d8f091f037ae64b4bbe5f5faa86377e86b417ff&#34; target=&#34;_blank&#34;&gt;Messages.sh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KMessageWidget: &lt;a title=&#34;extend KMessageWidget animation info&#34; href=&#34;http://commits.kde.org/kwidgetsaddons/c5fe6c274be46d49cb836426463c8af0407258a6&#34; target=&#34;_blank&#34;&gt;extend API&lt;/a&gt;, show &lt;a title=&#34;show an example image in the API documentation of KMessageWidget&#34; href=&#34;http://commits.kde.org/kwidgetsaddons/56125958066c87bcfe1835fabd143891d46a06f5&#34; target=&#34;_blank&#34;&gt;example image&lt;/a&gt; in docs&lt;/li&gt;
&lt;li&gt;remove &lt;a title=&#34;the world hates the tip of the day for an advanced editor &#34; href=&#34;http://commits.kde.org/kate/de6e3f794309c3a01d0f78a4250d51afe9c453fd&#34; target=&#34;_blank&#34;&gt;tip of the day&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix generation of &lt;a title=&#34;move up the real main dox file&#34; href=&#34;http://commits.kde.org/ktexteditor/e4ca13be334ef2111ee9e953d72573d9da1adec0&#34; target=&#34;_blank&#34;&gt;API documentaion&lt;/a&gt;, extend &lt;a title=&#34;add API documentation&#34; href=&#34;http://commits.kde.org/kwidgetsaddons/3bb0688b6a8edf95afad4a4f8b7d7ed8f02d23ab&#34; target=&#34;_blank&#34;&gt;API documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;removed &lt;a title=&#34;Removed the KateScriptConsole.&#34; href=&#34;http://commits.kde.org/kate/55186a6b94135e60cb1ccf6064f26d352b90dce1&#34; target=&#34;_blank&#34;&gt;KateScriptConsole&lt;/a&gt;, was unfortunately not used much&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;split unit tests&#34; href=&#34;http://commits.kde.org/kate/02c94fbb7317ba91ab021e1b9af41cf8579cff96&#34; target=&#34;_blank&#34;&gt;refactor&lt;/a&gt; unit tests, &lt;a title=&#34;split all unit tests&#34; href=&#34;http://commits.kde.org/kate/90357e3702c38a25c0fbcc1816c69c42f8325185&#34; target=&#34;_blank&#34;&gt;more&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;vi input mode: &lt;a title=&#34;vimode: fixed two crashes related to the undo/redo operations.&#34; href=&#34;http://commits.kde.org/kate/3539e7687b91de49f7d68b719d27b9f76e4d8379&#34; target=&#34;_blank&#34;&gt;fix two crashes&lt;/a&gt; in undo/redo operations&lt;/li&gt;
&lt;li&gt;use new KMessageWidget API in KatePart&amp;#8217;s &lt;a title=&#34;adapt to KMessageWidget in KWidgetAddons&#34; href=&#34;http://commits.kde.org/ktexteditor/0c3b65574284797539197d7b720d2a9a31b21c91&#34; target=&#34;_blank&#34;&gt;notification system&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;fix queuing of search wrap messages when holding down F3&#34; href=&#34;http://commits.kde.org/ktexteditor/79fd507a4f2ad6b774e25752592db7e9cc0dc4fa&#34; target=&#34;_blank&#34;&gt;fix queuing&lt;/a&gt; of &amp;#8220;Search Wrapped&amp;#8221; messages&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Port the GDB plugin to frameworks&#34; href=&#34;http://commits.kde.org/kate/34fce7c98b0cfa00ce8debcd3bb2c7db3ab96380&#34; target=&#34;_blank&#34;&gt;port GDB Plugin&lt;/a&gt; to new KTextEditor interfcaes in KDE frameworks 5&lt;/li&gt;
&lt;li&gt;Skanlite: use &lt;a title=&#34;Use frameworks cmake templates. Compiles but runtime error (see FIXMEs).&#34; href=&#34;http://commits.kde.org/skanlite/c6543cc5d9fcda986ae34a111fb7cf3bfa5c1423&#34; target=&#34;_blank&#34;&gt;cmake frameworks template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;turn &lt;a title=&#34;dyn word wrap on per default&#34; href=&#34;http://commits.kde.org/ktexteditor/5556c9e8ade33342dea3456eed1862dea3653ff6&#34; target=&#34;_blank&#34;&gt;dynamic word wrap&lt;/a&gt; on by default&lt;/li&gt;
&lt;li&gt;completion popup: &lt;a title=&#34;sort completion items which match the capitalization of what was typed first&#34; href=&#34;http://commits.kde.org/kate/40382e49906be035a2a8ae26d0ea8ef416b3027d&#34; target=&#34;_blank&#34;&gt;better sorting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Build Plugin: add support for &lt;a title=&#34;build plugin: add support for Intel icpc error messages&#34; href=&#34;http://commits.kde.org/kate/33f5deef3f7537d2c4269b912e97df230291e2fc&#34; target=&#34;_blank&#34;&gt;Intel icpc error messages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;port &lt;a title=&#34;A first rough port&#34; href=&#34;http://commits.kde.org/kate/1bfdca1ae15c4f4aff26be7cf3d033a0b8a32e83&#34; target=&#34;_blank&#34;&gt;Open Header&lt;/a&gt; plugin¸ &lt;a title=&#34;A littlebit of QLatin1String to QStringLiteral conversion&#34; href=&#34;http://commits.kde.org/kate/e22fc431712f2c58a96d0f48b0f40776f952addb&#34; target=&#34;_blank&#34;&gt;cleanups&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;January, 21th:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kate App: less &lt;a title=&#34;less friends&#34; href=&#34;http://commits.kde.org/kate/f81ff78a53eb7a3a76567f1b61bd35671f5de8f5&#34; target=&#34;_blank&#34;&gt;friend classes&lt;/a&gt;, and even &lt;a title=&#34;less friends&#34; href=&#34;http://commits.kde.org/kate/8141ccd00c867c6a679be79d18fa822e2f8e102c&#34; target=&#34;_blank&#34;&gt;more less friends&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kate App: &lt;a title=&#34;KateWaiter in own file&#34; href=&#34;http://commits.kde.org/kate/e81f4bd908ed4f60dd9eb0893e761d230d9e9c2a&#34; target=&#34;_blank&#34;&gt;refactor&lt;/a&gt; waiter class&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;search always for .kateconfig upwards&#34; href=&#34;http://commits.kde.org/ktexteditor/33a4e9e9e740b4c351360841c4357bd81af19b72&#34; target=&#34;_blank&#34;&gt;.kateconfig files&lt;/a&gt; are now always searched in ALL parent folders (not configurable anymore)&lt;/li&gt;
&lt;li&gt;better &lt;a title=&#34;better recursion guard, like if have in the project plugin&#34; href=&#34;http://commits.kde.org/ktexteditor/162b785e751d56ac125fa568e3c369b0d5f5046b&#34; target=&#34;_blank&#34;&gt;recursion guard&lt;/a&gt; for .kateconfig lookup&lt;/li&gt;
&lt;li&gt;DocumentPrivate::closeUrl() &lt;a title=&#34;small cleanups&#34; href=&#34;http://commits.kde.org/ktexteditor/977acc5975ee62ccb1cf6deea1e08649d9d891e2&#34; target=&#34;_blank&#34;&gt;cleanup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skanlite: &lt;a title=&#34;Introduce QDialogButtonBox because the setButtons(KDialog::User1...) etc. is not available anymore&#34; href=&#34;http://commits.kde.org/libksane/b60a536fafba1b77a1fcd2ad105d68287de12d5b&#34; target=&#34;_blank&#34;&gt;port dialogs&lt;/a&gt;, use &lt;a title=&#34;use QApplication instead of KApplication&#34; href=&#34;http://commits.kde.org/skanlite/54b8ff0fa326045578f1af3a2cfd8aa5bae43797&#34; target=&#34;_blank&#34;&gt;QApplication&lt;/a&gt;¸more &lt;a title=&#34;fix FIXMEs: button enabling/disabling and rename some widget variables to better see what they are used for&#34; href=&#34;http://commits.kde.org/libksane/f462baff7edd7fa9ebb76864661c22ccb44ed344&#34; target=&#34;_blank&#34;&gt;porting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KTextEditor API documentation: &lt;a title=&#34;more KDE4 -&gt; KF5 porting notes&amp;rdquo; href=&amp;ldquo;&lt;a href=&#34;http://commits.kde.org/ktexteditor/6d4b8dd991d936a6ad30be52dda9544e18aba603&amp;quot;&#34;&gt;http://commits.kde.org/ktexteditor/6d4b8dd991d936a6ad30be52dda9544e18aba603&amp;quot;&lt;/a&gt; target=&amp;rdquo;_blank&amp;rdquo;&amp;gt;porting notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Search: &lt;a title=&#34;ctrl+h: set cursor position to end of selection&#34; href=&#34;http://commits.kde.org/ktexteditor/754f23797b176422875c846522e1404618b77c13&#34; target=&#34;_blank&#34;&gt;Ctrl+H&lt;/a&gt; now sets cursor to end of selection&lt;/li&gt;
&lt;li&gt;KTextEditor: start adding a &lt;a title=&#34;integrate a decent statusbar&#34; href=&#34;http://commits.kde.org/ktexteditor/2d0f9881d872ec5fbba6dd64a58a00cb98966d35&#34; target=&#34;_blank&#34;&gt;default status bar&lt;/a&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
&lt;a title=&#34;use integrated status bar, need to add API to hide it&#34; href=&#34;http://commits.kde.org/kate/16c0e4a1be8a53966603b09f307d38b3e74250fa&#34; target=&#34;_blank&#34;&gt;KWrite&lt;/a&gt;: use KTextEditor default status bar
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
&lt;a title=&#34;use integrated status bar, need to add API to hide it, for file name we will have extra widget soon dominik must be faster&#34; href=&#34;http://commits.kde.org/kate/334ca9835c6dda622a0b8f2ed79f00a08172b88f&#34; target=&#34;_blank&#34;&gt;Kate App&lt;/a&gt;: use KTextEditor default status bar
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
Status bar: &lt;a title=&#34;integrate a decent statusbar&#34; href=&#34;http://commits.kde.org/ktexteditor/f5cae065eee28c0dd9ae8446ab92d750bb077b17&#34; target=&#34;_blank&#34;&gt;finetuning&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
&lt;a title=&#34;add MainWindow::closeView/splitView and Application::quit methods&#34; href=&#34;http://commits.kde.org/ktexteditor/25c484af021e62d010b92c882029bb2d01ea2b5f&#34; target=&#34;_blank&#34;&gt;KTE::Application&lt;/a&gt;: add closeView/splitView, quit() methods
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
&lt;a title=&#34;add Qt style api for disabling the status bar&#34; href=&#34;http://commits.kde.org/ktexteditor/ccd7be29a41122857a734dfc5a44a48eb3c2a995&#34; target=&#34;_blank&#34;&gt;add API&lt;/a&gt; to disable default status bar
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
add &lt;a title=&#34;finally: sane switch of mode &amp; encoding via status bar&#34; href=&#34;http://commits.kde.org/ktexteditor/eac65e431524eea2c2e8fc48b8bb1e0b2378f27f&#34; target=&#34;_blank&#34;&gt;Encoding and Mode&lt;/a&gt; to status bar
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
Status bar: port modified on disk &lt;a title=&#34;port modified on disk notification&#34; href=&#34;http://commits.kde.org/ktexteditor/63497b565dcfbe7402af97ce1005e38bb3ae9509&#34; target=&#34;_blank&#34;&gt;notification&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
&lt;a title=&#34;seems to work with KF5, except for the save/restoreWindowSize of the dialog&#34; href=&#34;http://commits.kde.org/kate/2899f2ab5c2838c6d55737fe51194eb71a0e6977&#34; target=&#34;_blank&#34;&gt;port&lt;/a&gt; close except like plugin
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
&lt;a title=&#34;Before stating (especially important for network files) search in the list of opened documents&#34; href=&#34;http://commits.kde.org/kate/cc573ab35fc9f08e5f58e1670eeb077a3475d11d&#34; target=&#34;_blank&#34;&gt;Open Header plugin&lt;/a&gt;: search list of open document before stating files
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
Skanlite: start &lt;a title=&#34;So first step is to port all KDialog to QDialog. Step one is done. skanlite compiles but there are additional fixmes to fix.&#34; href=&#34;http://commits.kde.org/skanlite/86780c2e7f0f0b9dad7d5834718048dcd4b6d6df&#34; target=&#34;_blank&#34;&gt;porting&lt;/a&gt; KDialog to QDialog, fix &lt;a title=&#34;main dialog: connect Help, About, Settings and Close button. Close still crashes the application.&#34; href=&#34;http://commits.kde.org/skanlite/67ffca9066e2af8aeee791dd84f0d1737da48b9a&#34; target=&#34;_blank&#34;&gt;help button&lt;/a&gt;, and &lt;a title=&#34;Fix Settings dialog: make the Ok and Cancel button work&#34; href=&#34;http://commits.kde.org/skanlite/64e10b78dbe2d7796fea02cbcbd6bccd6e443017&#34; target=&#34;_blank&#34;&gt;more&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
Kate App: add &lt;a title=&#34;start adding a tabbar to the view space&#34; href=&#34;http://commits.kde.org/kate/f952657a81e8154afa869fbb6e988f30c9255c06&#34; target=&#34;_blank&#34;&gt;built-in tab bar&lt;/a&gt; for switching documents in a LRU fashion
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
Kate config dialog: fix &lt;a title=&#34;fix help button&#34; href=&#34;http://commits.kde.org/kate/10b6360da8ac1f9bc25f22f66db2402e919bad38&#34; target=&#34;_blank&#34;&gt;help button&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
template interface, use &lt;a title=&#34;port away from plain C to QHostInfo, want windows to work &#34; href=&#34;http://commits.kde.org/ktexteditor/7c6ca9880540cbc49085485b764181ba781a2931&#34; target=&#34;_blank&#34;&gt;QHostInfo&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
port &lt;a title=&#34;replacement for not existing delayed menu in QPushButton. Future feature in menu, but not yet there&#34; href=&#34;http://commits.kde.org/kate/66e417c8fa9c1ae45b456e891afde32ca7a8605b&#34; target=&#34;_blank&#34;&gt;session chooser&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
Kate App: &lt;a title=&#34;remove unused functions&#34; href=&#34;http://commits.kde.org/kate/52eb91b02483c3d14283379e7183a4aa9a980503&#34; target=&#34;_blank&#34;&gt;ViewManager cleanup&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
port the &lt;a title=&#34;Port the build plugin to frameworks&#34; href=&#34;http://commits.kde.org/kate/65e53a8bfaf1527c3c1c1a1da6b8db65b1a628ae&#34; target=&#34;_blank&#34;&gt;Build plugin&lt;/a&gt; to the new KTextEditor interfaces
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
word completion: &lt;a title=&#34;no beep, no notifications&#34; href=&#34;http://commits.kde.org/ktexteditor/3bfbd687d53f9d6125f3ecb8ff7052aa4b76c6e1&#34; target=&#34;_blank&#34;&gt;remove beep()&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
&lt;a title=&#34;Fix skanlite version. Fix AboutData handling. Use QCommandLineParser. Fix main dialog crash after exit.&#34; href=&#34;http://commits.kde.org/skanlite/92933bebb13bd513ed19bdda269956322bc849b5&#34; target=&#34;_blank&#34;&gt;Skanlite&lt;/a&gt;: fix about data handling, use QCommandLineParser
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
&lt;a title=&#34;let automoc do its job&#34; href=&#34;http://commits.kde.org/ktexteditor/2e8f3c5ef56debf48be8850b7124485190b1675f&#34; target=&#34;_blank&#34;&gt;less&lt;/a&gt; *.moc &lt;a title=&#34;let automoc do its job&#34; href=&#34;http://commits.kde.org/ktexteditor/6a2c124e39485f28280d65cdf0faf002d08a6deb&#34; target=&#34;_blank&#34;&gt;includes&lt;/a&gt;
&lt;/li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;January, 22th:&lt;/p&gt;
&lt;p&gt;&lt;li style=&#34;text-align: left;&#34;&gt;
vi input mode: expose more motions in &lt;a title=&#34;vimode: added some motions that were missing in visual mode.&#34; href=&#34;http://commits.kde.org/kate/5c712e5c71526c80486e6593a35f780902472be2&#34; target=&#34;_blank&#34;&gt;visual mode&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
status bar: &lt;a title=&#34;resort statusbar&#34; href=&#34;http://commits.kde.org/ktexteditor/8d86bac77dd4e98893cc7c36f828041f2db3347e&#34; target=&#34;_blank&#34;&gt;better sorting&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
tab bar: add tab also for &lt;a title=&#34;tab bar: for documents without view, still add a button (lazy loading)&#34; href=&#34;http://commits.kde.org/kate/4c0a321e216d3c96e7608bdc79bcfdb906d91148&#34; target=&#34;_blank&#34;&gt;documents without view&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
tab tracking: &lt;a title=&#34;simplify keeping track of tabs&#34; href=&#34;http://commits.kde.org/kate/db0734e5a309bcb26a150e7373dbddc8369bc3bb&#34; target=&#34;_blank&#34;&gt;simplify&lt;/a&gt;, make tab switching &lt;a title=&#34;tab bar: make switching work, make quick open work&#34; href=&#34;http://commits.kde.org/kate/4a3e0d86762ff8bda3e28d9146ddfc9348171263&#34; target=&#34;_blank&#34;&gt;work&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
tab bar tabs: &lt;a title=&#34;track document name changes&#34; href=&#34;http://commits.kde.org/kate/3ff416ea03d1f5e79a15da40793e0fd91c68bf52&#34; target=&#34;_blank&#34;&gt;track document name&lt;/a&gt; changes
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
status bar: fix sizing mess (&lt;a title=&#34;start to fix resizing mess of status bar&#34; href=&#34;http://commits.kde.org/ktexteditor/86a3dc664cb4f1bb769bec4fdcf0929ff7b6b920&#34; target=&#34;_blank&#34;&gt;part 1&lt;/a&gt;¸ &lt;a title=&#34;right hiding of status bar&#34; href=&#34;http://commits.kde.org/ktexteditor/a355d261a43c9094691ef2a7b824a538a624420d&#34; target=&#34;_blank&#34;&gt;part 2&lt;/a&gt;, &lt;a title=&#34;right showing of status bar&#34; href=&#34;http://commits.kde.org/ktexteditor/911abc30e3787a5332c6ede9f5aa6376631917a1&#34; target=&#34;_blank&#34;&gt;part 3&lt;/a&gt;, &lt;a title=&#34;fixup pixmap computation&#34; href=&#34;http://commits.kde.org/ktexteditor/bb37e9e944394fedeeea9e1e894beffe800348e3&#34; target=&#34;_blank&#34;&gt;part 4&lt;/a&gt;, &lt;a title=&#34;fonts too small&#34; href=&#34;http://commits.kde.org/ktexteditor/ae67dc7effbc9f31b097bf8bd3ec008f533c60f0&#34; target=&#34;_blank&#34;&gt;part 5&lt;/a&gt;)
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
work around QSpinBox &lt;a title=&#34;Work around that QSpinbox suffix is not singular/pluralizable&#34; href=&#34;http://commits.kde.org/ktexteditor/5aeb612f80dba8bf7b02c72238b5f7ba7dfc1d7c&#34; target=&#34;_blank&#34;&gt;pluralizable issues&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
revert quick open &lt;a title=&#34;revert: Even more quick way to switch to a previous document&#34; href=&#34;http://commits.kde.org/kate/3255ca929dd82e70a907cca66454e3a809c431bc&#34; target=&#34;_blank&#34;&gt;shortcut&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
fix &lt;a title=&#34;fix viewChanged signals&#34; href=&#34;http://commits.kde.org/kate/1bed751cd26ac57983d4d15309d5f4f6d41c8db2&#34; target=&#34;_blank&#34;&gt;viewChanged()&lt;/a&gt; signals
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
search &amp;amp; replace plugin: fix &lt;a title=&#34;fix plugin signals&#34; href=&#34;http://commits.kde.org/kate/1fa1ba07a38c157841c53aa5ca2f71322037a9f5&#34; target=&#34;_blank&#34;&gt;signals&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
&lt;a title=&#34;we include a tabbar soon per default, if people want the other variants, they might port them from master, no need to waste our time&#34; href=&#34;http://commits.kde.org/kate/9c2d2d709404058ccaa3ea82b6714f720320c684&#34; target=&#34;_blank&#34;&gt;remove all tab bar plugins&lt;/a&gt; due to the built-in one
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
&lt;a title=&#34;sync syntax file changes from master&#34; href=&#34;http://commits.kde.org/ktexteditor/6c19b27f84777671d4ab43d5a17df0bab15707c7&#34; target=&#34;_blank&#34;&gt;sync&lt;/a&gt; syntax xml file changes from master
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
Skanlite: fix &lt;a title=&#34;SaveLocation: fix layout&#34; href=&#34;http://commits.kde.org/skanlite/1ba15a3bc4a0291264b12df766badf5c34d265bc&#34; target=&#34;_blank&#34;&gt;layout&lt;/a&gt;¸more &lt;a title=&#34;Fix in SaveLocation. ShowImageDialog: use QDialog instead of KDialog.&#34; href=&#34;http://commits.kde.org/skanlite/31050787b5ae8edf0677c6c32701f8743d39c239&#34; target=&#34;_blank&#34;&gt;porting&lt;/a&gt;, less &lt;a title=&#34;SaveLocation: replace KComboBox with the Q one&#34; href=&#34;http://commits.kde.org/skanlite/8b1a074524cdbfe01d1b8551b4d6e7b529462671&#34; target=&#34;_blank&#34;&gt;K classes&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
status bar: &lt;a title=&#34;no resize between status bar, goto line and internal command line&#34; href=&#34;http://commits.kde.org/ktexteditor/93a54cfdf076f7cb4826ec8ab9b90d9fbfcd7fe3&#34; target=&#34;_blank&#34;&gt;no resize &lt;/a&gt;between status bar, goto line and internal command line, &lt;a title=&#34;no resize between status bar, goto line and internal command line&#34; href=&#34;http://commits.kde.org/ktexteditor/cd056e8eda8e197eecffb57bd1b05e3930aad98d&#34; target=&#34;_blank&#34;&gt;more&lt;/a&gt;, &lt;a title=&#34;no resize between status bar, goto line and internal command line&#34; href=&#34;http://commits.kde.org/ktexteditor/782ec7fd896293b49c92eb3b05acda3410d38e16&#34; target=&#34;_blank&#34;&gt;more&lt;/a&gt;¸&lt;a title=&#34;no resize between status bar, goto line and internal command line and vi mode bars&#34; href=&#34;http://commits.kde.org/ktexteditor/1b72757fb9fe1c21766235864c448770067decde&#34; target=&#34;_blank&#34;&gt;more&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
add &lt;a title=&#34;add split actions to view space bar&#34; href=&#34;http://commits.kde.org/kate/c65410cb03efbf7748aef9da68d16abc8cc358c5&#34; target=&#34;_blank&#34;&gt;split view actions&lt;/a&gt; to view space navigation tab bar
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
no document &lt;a title=&#34;backport: no document duplicates in quick open&#34; href=&#34;http://commits.kde.org/kate/b3526463273180f85a1574d05f97920b39c39d75&#34; target=&#34;_blank&#34;&gt;duplicates&lt;/a&gt; in quick open
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
&lt;a title=&#34;Fix broken scrollbar when opening remote files&#34; href=&#34;http://commits.kde.org/kate/807cac0e3f0899eb46f12de4b7b546f6cee9fba8&#34; target=&#34;_blank&#34;&gt;fix broken scroll bars&lt;/a&gt; when opening remove files
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
derive KateViewSpace from &lt;a title=&#34;some cleanups&#34; href=&#34;http://commits.kde.org/kate/42039be2bb58573afc6fd1544783600875697cc7&#34; target=&#34;_blank&#34;&gt;QWidget&lt;/a&gt; instead of QFrame
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
remove focus rect from &lt;a title=&#34;we DON&#39;T want a focus rect, like most other full size widgets&#34; href=&#34;http://commits.kde.org/ktexteditor/71de642980b5da57bc871883e76e4b0c75caa4ec&#34; target=&#34;_blank&#34;&gt;view&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
Fix &lt;a title=&#34;fix painting bug&#34; href=&#34;http://commits.kde.org/kate/712e671041265164536cce5fda6b3b7bac1a12c4&#34; target=&#34;_blank&#34;&gt;painting bug &lt;/a&gt;when scrolling while floating widgets are shown
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
allow &lt;a title=&#34;allow splitters to survive without views&#34; href=&#34;http://commits.kde.org/kate/d946b239d0d84acada5aadc20dfdcc6a68cc380c&#34; target=&#34;_blank&#34;&gt;empty&lt;/a&gt; view spaces
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
cleanup of ViewManager and ViewSpace logic (&lt;a title=&#34;use right createView, of viewmanager, not viewspace&#34; href=&#34;http://commits.kde.org/kate/9830288878e756219dbb41d16ae13b2fc123299b&#34; target=&#34;_blank&#34;&gt;1&lt;/a&gt;, &lt;a title=&#34;for delayed update, disable repaints&#34; href=&#34;http://commits.kde.org/kate/ac9d02b0267ebbfa85c10cbd624ff67901c9b636&#34; target=&#34;_blank&#34;&gt;2&lt;/a&gt;, 3,
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
extend &lt;a title=&#34;Add ConfigIface keys: icon border, folding, lineno, modification markers&#34; href=&#34;http://commits.kde.org/kate/2b581a487ed32dfaffc63e6c48df630637c5d41b&#34; target=&#34;_blank&#34;&gt;ConfigInterface&lt;/a&gt;: icon-border-color, folding-marker-color, line-number-color, modification-markers
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
Skanlite: bug finding in &lt;a title=&#34;Found bug in QFileDialog KDE integration&#34; href=&#34;http://commits.kde.org/skanlite/06ba636dd6b220a5e0f5e49c5e706fbe1e2a81e4&#34; target=&#34;_blank&#34;&gt;framworksintegration&lt;/a&gt; module, fix &lt;a title=&#34;SaveImageDialog: fix focus handling&#34; href=&#34;http://commits.kde.org/skanlite/1a71f4fc5777ea92a25381e8cf97a14b565888e7&#34; target=&#34;_blank&#34;&gt;focus&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
status bar: make &lt;a title=&#34;Indentation/spaces/tabs can now be configured from the status bar&#34; href=&#34;http://commits.kde.org/ktexteditor/b0b1158790779695cb3c51e9a492ef8dfa4da28d&#34; target=&#34;_blank&#34;&gt;spaces and tabs&lt;/a&gt; configurable
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
use &lt;a title=&#34;use popup menu in view space bar&#34; href=&#34;http://commits.kde.org/kate/81ecf94bcb5964cd6eec21a84aa69669c3513488&#34; target=&#34;_blank&#34;&gt;popup&lt;/a&gt; for split actions in view space bar
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
show short cut in tool tip (&lt;a title=&#34;show short cut in tool tips&#34; href=&#34;http://commits.kde.org/kate/50b12866e5115b8886fc8def0e4cd8453c7816a2&#34; target=&#34;_blank&#34;&gt;cool one!&lt;/a&gt;)
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
remove KTE::View::&lt;a title=&#34;remove not needed information message signal, now done internally with the ktexteditor messages, fixup statusbar&#34; href=&#34;http://commits.kde.org/ktexteditor/5d602188905366d7ac6187c7305c20cb0e9320aa&#34; target=&#34;_blank&#34;&gt;informationMessage&lt;/a&gt;() in favour of the MessageInterface
&lt;/li&gt;&lt;/p&gt;
&lt;p&gt;January, 23th:&lt;/p&gt;
&lt;p&gt;&lt;li style=&#34;text-align: left;&#34;&gt;
Kate, KWrite: show modification &lt;a title=&#34;show the modification asterisk in the titlebar, although I&#39;m unsure about that. The test [modified] would be better I think&#34; href=&#34;http://commits.kde.org/kate/ebc06973bfbac3a2769fd4309252459a1c798d89&#34; target=&#34;_blank&#34;&gt;asterisk&lt;/a&gt; in title bar
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
view space tab bar: &lt;a title=&#34;rename setTabURL to setTabToolTip&#34; href=&#34;http://commits.kde.org/kate/7fa787bf4c3caa1aab9f79f07ca0a0ee6a2ab857&#34; target=&#34;_blank&#34;&gt;refactor&lt;/a&gt;, &lt;a title=&#34;rename setTabURL to setTabToolTip&#34; href=&#34;http://commits.kde.org/kate/7fa787bf4c3caa1aab9f79f07ca0a0ee6a2ab857&#34; target=&#34;_blank&#34;&gt;polish&lt;/a&gt;, fix &lt;a title=&#34;fix sizing of view space bar switchers&#34; href=&#34;http://commits.kde.org/kate/baf33965718f20785f3ed073a910b5fe6e51d281&#34; target=&#34;_blank&#34;&gt;sizing of tabs&lt;/a&gt;, &lt;a title=&#34;no one pixel border&#34; href=&#34;http://commits.kde.org/kate/f8c3de208c11aaa9e616554508f51940c0cd244d&#34; target=&#34;_blank&#34;&gt;more&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
status bar: &lt;a title=&#34;status bar no accels&#34; href=&#34;http://commits.kde.org/ktexteditor/bb42531b0d3a730cf0774be03ff2df5097dd41df&#34; target=&#34;_blank&#34;&gt;polishing&lt;/a&gt;, &lt;a title=&#34;cleanup status bar once more&#34; href=&#34;http://commits.kde.org/ktexteditor/18c71aae37f8404a1e8ab25134e1bf78b0a6dad7&#34; target=&#34;_blank&#34;&gt;cleanups&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
relicense &lt;a title=&#34;relicense to LGPLv2+&#34; href=&#34;http://commits.kde.org/kate/e6a42c64dd60ce15d6a9eb36ab6ae0d07eb1cea5&#34; target=&#34;_blank&#34;&gt;file tree&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
Kate&amp;#8217;s view manager: &lt;a title=&#34;small cleanups&#34; href=&#34;http://commits.kde.org/kate/08010e22c0fc5e685e869e95463daa4130192dfd&#34; target=&#34;_blank&#34;&gt;cleanup&lt;/a&gt;, more &lt;a title=&#34;cleanup internal API&#34; href=&#34;http://commits.kde.org/kate/87d5a0fdb44a5569db573f45fcff54b3791143eb&#34; target=&#34;_blank&#34;&gt;cleanup&lt;/a&gt;¸&lt;a title=&#34;cleanup internal API&#34; href=&#34;http://commits.kde.org/kate/7ce75cee8304c2711fd82ff93ef8be41a9662f90&#34; target=&#34;_blank&#34;&gt;more&lt;/a&gt;, &lt;a title=&#34;cleanup internal API&#34; href=&#34;http://commits.kde.org/kate/b9a8a8b8512d327b6552e52949f6096c4bb51068&#34; target=&#34;_blank&#34;&gt;more&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
KWrite: reformat to &lt;a title=&#34;kdelibs coding style, like ktexteditor, astyle-kdelibs for the win&#34; href=&#34;http://commits.kde.org/kate/8bb2c6d3ebadb6018ee109ba75263d9d667f3bbf&#34; target=&#34;_blank&#34;&gt;kdelibs coding style&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
Kate: reformat to &lt;a title=&#34;kdelibs coding style, like ktexteditor, astyle-kdelibs for the win&#34; href=&#34;http://commits.kde.org/kate/5ca1a06dc50572d0ac44d71a1d9a0ea084f58bd6&#34; target=&#34;_blank&#34;&gt;kdelibs coding style&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
set Document &lt;a title=&#34;Set the document really read only if files have too long lines&#34; href=&#34;http://commits.kde.org/kate/aa71f2c7105df0662c421b3caf3a7b9c4a0f5d5c&#34; target=&#34;_blank&#34;&gt;read-only&lt;/a&gt; on too long lines wrap
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
view space tab buttons: &lt;a title=&#34;elide too long text&#34; href=&#34;http://commits.kde.org/kate/430985175bfb26b4d30e7850e2db472baf30c250&#34; target=&#34;_blank&#34;&gt;elide&lt;/a&gt; if too long text
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
view space tab bar: add action &amp;#8220;&lt;a title=&#34;close other views action, too&#34; href=&#34;http://commits.kde.org/kate/b182d5c0107b0e452acb25a29820b53c76191a5f&#34; target=&#34;_blank&#34;&gt;Close other Views&lt;/a&gt;&amp;#8220;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
&lt;a title=&#34;better way to disable updates to avoid nasty flicker&#34; href=&#34;http://commits.kde.org/kate/a355c5a1ba91c1fcff0f4faee0de1d4c880b64fa&#34; target=&#34;_blank&#34;&gt;avoid flicker&lt;/a&gt; in Kate
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
Kate: in fullscreen mode, &lt;a title=&#34;KF5: If the window is fullscreen, show a toolbutton as a corner widget for the menubar.&#34; href=&#34;http://commits.kde.org/kate/dd2af34e0565201b90bba8892bf4e349c55042c5&#34; target=&#34;_blank&#34;&gt;show a button&lt;/a&gt; in the corner of the menu bar to escape the fullscreen mode
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
KTextEditor: &lt;a title=&#34;In KF5 the jump to bracket and select to bracket actions are now shown in the Edit menu&#34; href=&#34;http://commits.kde.org/ktexteditor/c27cd0eef1957467f0bd7b661cb3001d644481a6&#34; target=&#34;_blank&#34;&gt;add actions&lt;/a&gt; jump to bracket and select to bracket
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
API documentation: &lt;a title=&#34;Split Mainpage.dox up&#34; href=&#34;http://commits.kde.org/ktexteditor/49f259c728fe1930c38bb940c6f7a9306d879642&#34; target=&#34;_blank&#34;&gt;split docs&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
kate view space tab bar: implement &lt;a title=&#34;implement correct document switching&#34; href=&#34;http://commits.kde.org/kate/ab6b678d4d12c0369c37f13becc8b053a92711a3&#34; target=&#34;_blank&#34;&gt;correct document switching&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
tab bar: attempt for &lt;a title=&#34;fix hiding and try better sizing&#34; href=&#34;http://commits.kde.org/kate/ed08440085e3e24b3b79a359585b604a22d38a60&#34; target=&#34;_blank&#34;&gt;better sizing&lt;/a&gt;, &lt;a title=&#34;try to fix sizing issues&#34; href=&#34;http://commits.kde.org/kate/5114139736a2bda7c5b6dac7f1fbb2935a4d1848&#34; target=&#34;_blank&#34;&gt;again&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
API documentation: update &lt;a title=&#34;add note about status bar&#34; href=&#34;http://commits.kde.org/ktexteditor/41953bf897906ccd1eef3fac478b461607846171&#34; target=&#34;_blank&#34;&gt;porting guide&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
better &lt;a title=&#34;swap line numbers and mode&#34; href=&#34;http://commits.kde.org/ktexteditor/67152a940c10e672be40a7907e740ec027a8b909&#34; target=&#34;_blank&#34;&gt;order&lt;/a&gt; of elements in status bar¸&lt;a title=&#34;not bold&#34; href=&#34;http://commits.kde.org/ktexteditor/7319cec115df54f0c818fc79d10c1f23ad1fee92&#34; target=&#34;_blank&#34;&gt;not bold&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
Kate: turn SessionConfigWigdet into &lt;a title=&#34;Add sessionsconfigwidge.ui and remove manual UI code. Add stub for &amp;quot;Number of entries in recent file list&amp;quot;&#34; href=&#34;http://commits.kde.org/kate/7babcb82097e3823fa0a1eaa609c443a3ac6abc6&#34; target=&#34;_blank&#34;&gt;.ui-file&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
&lt;a title=&#34;app/ =&gt; src/&amp;rdquo; href=&amp;ldquo;&lt;a href=&#34;http://commits.kde.org/kate/751431df3eaa48b96cd905c7fff11e28da0aad86&amp;quot;&#34;&gt;http://commits.kde.org/kate/751431df3eaa48b96cd905c7fff11e28da0aad86&amp;quot;&lt;/a&gt; target=&amp;rdquo;_blank&amp;rdquo;&amp;gt;refactor&lt;/a&gt; Kate source code
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
attempt to make tab bar work as &lt;a title=&#34;first fix attempt, still not all corner cases&#34; href=&#34;http://commits.kde.org/kate/86ed12852fd2c22362792407d6566fa05ac9cdb5&#34; target=&#34;_blank&#34;&gt;expected&lt;/a&gt;, &lt;a title=&#34;more correct coping with for remove a view&#34; href=&#34;http://commits.kde.org/kate/81dfc45eb2ee0dbad922064e1ad747ac233d7e3d&#34; target=&#34;_blank&#34;&gt;another one&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
Python plugin &lt;a title=&#34;Solve the problem w/ toolviews destroy (first w/ color_tools)&#34; href=&#34;http://commits.kde.org/kate/d8b0da4111325abc0b9657bef8d001e236b68560&#34; target=&#34;_blank&#34;&gt;updates&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
Kate View Space: allow to &lt;a title=&#34;allow to have one splitter full-size&#34; href=&#34;http://commits.kde.org/kate/a539ed4b8cb57472407c96e57a055666c07aa97b&#34; target=&#34;_blank&#34;&gt;maximize&lt;/a&gt; a view space (cool!)
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
refactor Kate View Space &lt;a title=&#34;fix crash on open document if only one document that is untitled and fresh is around&#34; href=&#34;http://commits.kde.org/kate/13917d21f6126df9f4a051926a1f6ceeaa9887e5&#34; target=&#34;_blank&#34;&gt;a bit&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
small cleanup of &lt;a title=&#34;less view list iterations&#34; href=&#34;http://commits.kde.org/kate/2d9d29992c9a8fbc9ee8cb7896295c11026fa27f&#34; target=&#34;_blank&#34;&gt;view manager&lt;/a&gt;¸ &lt;a title=&#34;less view list iterations&#34; href=&#34;http://commits.kde.org/kate/c6cfde60c590b3a5a058d5cbafe3ee65ab5cb1e3&#34; target=&#34;_blank&#34;&gt;again&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
&lt;a title=&#34;no stupid lists in kateviewmanager, still some linear lookups, thought&#34; href=&#34;http://commits.kde.org/kate/b25f4c7e86f280645804379320f18fa7940322bb&#34; target=&#34;_blank&#34;&gt;performance&lt;/a&gt;: use QHash instead of QList for lookups
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
more &lt;a title=&#34;start to remove more API&#34; href=&#34;http://commits.kde.org/kate/6dc03faa59c772dd1b7785daf38cf24a403cf1e3&#34; target=&#34;_blank&#34;&gt;cleanups&lt;/a&gt; with respect to view/document management, &lt;a title=&#34;start to remove more API&#34; href=&#34;http://commits.kde.org/kate/5b252b9cf92420e4777c4aa1be3410abf616340b&#34; target=&#34;_blank&#34;&gt;remove more API&lt;/a&gt;, and &lt;a title=&#34;start to remove more API&#34; href=&#34;http://commits.kde.org/kate/1cef23651ee8a7ea68b3bb10b13a866a03e4c094&#34; target=&#34;_blank&#34;&gt;more removal&lt;/a&gt;¸ &lt;a title=&#34;start to remove more API&#34; href=&#34;http://commits.kde.org/kate/3ed547be75ce9d67c381260d639d082768ef1ed4&#34; target=&#34;_blank&#34;&gt;more&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
fix bug in &lt;a title=&#34;This should fix &amp;quot;length of input parameter&amp;quot; highlighting for bash&#34; href=&#34;http://commits.kde.org/ktexteditor/5a5c7f37c061bf8b68346861057848df65268b7a&#34; target=&#34;_blank&#34;&gt;bash.xml&lt;/a&gt;
&lt;/li&gt;
&lt;li style=&#34;text-align: left;&#34;&gt;
loading message for file with too long lines: provide button to reload &lt;a title=&#34;The message that appears after loading, if lines have been wrapped &#34; href=&#34;http://commits.kde.org/ktexteditor/abdfa809c6056941f0194911ac6a41c035919703&#34; target=&#34;_blank&#34;&gt;without limit&lt;/a&gt;
&lt;/li&gt;&lt;/p&gt;
&lt;p&gt;January, 24th:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&#34;start to cleanup the view activation mess, less direct function calls, more relying on the signals we have anyway&#34; href=&#34;http://commits.kde.org/kate/9b959ab779e2d329b833cde75aecc9241aa71581&#34; target=&#34;_blank&#34;&gt;huge refactor&lt;/a&gt; of how document management works&lt;/li&gt;
&lt;li&gt;fix &lt;a title=&#34;start to cleanup the view activation mess, less direct function calls, more relying on the signals we have anyway&#34; href=&#34;http://commits.kde.org/kate/0be717bce2493999df2c4e89801fc924a0e96503&#34; target=&#34;_blank&#34;&gt;view activation&lt;/a&gt; workflow&lt;/li&gt;
&lt;li&gt;avoid &lt;a title=&#34;avoid empty view spaces&#34; href=&#34;http://commits.kde.org/kate/dac9f442b343cc8de427dcd9916f290b908bc5fd&#34; target=&#34;_blank&#34;&gt;empty view spaces&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;view manager: &lt;a title=&#34;less public API&#34; href=&#34;http://commits.kde.org/kate/caf582f34c6348226e1aa45151b4af32396602fa&#34; target=&#34;_blank&#34;&gt;less public api&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;avoid &lt;a title=&#34;deleteDoc itself shall not be ever called, else hell breaks loose &#34; href=&#34;http://commits.kde.org/kate/ff4c8b11415ad88302eb59cf9c3d0a20539742a6&#34; target=&#34;_blank&#34;&gt;hell&lt;/a&gt; breaking loose&lt;/li&gt;
&lt;li&gt;document manager: &lt;a title=&#34;less public API&#34; href=&#34;http://commits.kde.org/kate/aada429e1f6824cd30644135f3034ea88ab47cba&#34; target=&#34;_blank&#34;&gt;less public api&lt;/a&gt;, same for &lt;a title=&#34;less public API&#34; href=&#34;http://commits.kde.org/kate/0d0ff493c4e874367d987005886ba34f39bbe497&#34; target=&#34;_blank&#34;&gt;view manager&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;cleanups&#34; href=&#34;http://commits.kde.org/kate/842975244173a8fd455fc3740607020a77a267e7&#34; target=&#34;_blank&#34;&gt;include&lt;/a&gt; cleanups&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;move plugins one level up&#34; href=&#34;http://commits.kde.org/kate/9c3f3829aac6ce0f9ca83d673bfaefcb6f02d729&#34; target=&#34;_blank&#34;&gt;move plugins&lt;/a&gt;, same for &lt;a title=&#34;move plasma stuff up, too&#34; href=&#34;http://commits.kde.org/kate/8a1f8af8656d866528a3364fcaa6a05ae344cf25&#34; target=&#34;_blank&#34;&gt;plasma launcher&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;improve &lt;a title=&#34;expanding tree widget: take the TextAlignment data role into account&#34; href=&#34;http://commits.kde.org/ktexteditor/86f26238e78399a1bbff4583de29d21459b032ec&#34; target=&#34;_blank&#34;&gt;expanding tree&lt;/a&gt; in code completion&lt;/li&gt;
&lt;li&gt;tab bar: &lt;a title=&#34;remove button id from buttons&#34; href=&#34;http://commits.kde.org/kate/93ad7b68a1d86b469963eadd897c999155a92c90&#34; target=&#34;_blank&#34;&gt;huge&lt;/a&gt; &lt;a title=&#34;remove unused code, rename index to id&#34; href=&#34;http://commits.kde.org/kate/6b58e3d4bf590d1030e58b107f01ab67fd04156f&#34; target=&#34;_blank&#34;&gt;code&lt;/a&gt; &lt;a title=&#34;do not tolerate wrong input: add asserts&#34; href=&#34;http://commits.kde.org/kate/1876076d6f37d82258317556ae0352fb83c5451d&#34; target=&#34;_blank&#34;&gt;cleanup&lt;/a&gt;, close action as &lt;a title=&#34;allow to close a document via context menu&#34; href=&#34;http://commits.kde.org/kate/016a61ecc4d83014506e356b77278a734bc20ee9&#34; target=&#34;_blank&#34;&gt;context menu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;ignore pure url drops&#34; href=&#34;http://commits.kde.org/ktexteditor/91f48579ca146db20f221217a66a95e90c951996&#34; target=&#34;_blank&#34;&gt;avoid&lt;/a&gt; recursive opening of folders&lt;/li&gt;
&lt;li&gt;Kate: add Recent File List count &lt;a title=&#34;Recent File List Entry Count: persist setting&#34; href=&#34;http://commits.kde.org/kate/231f78a0cb7049da9ceea92e8a1c923ed7cbd133&#34; target=&#34;_blank&#34;&gt;setting&lt;/a&gt;, &lt;a title=&#34;apply RecentFilesMaxCount to m_fileOpenRecent&#34; href=&#34;http://commits.kde.org/kate/a635753b302f754a27ea2ea911353b55e15e502e&#34; target=&#34;_blank&#34;&gt;more&lt;/a&gt;¸and &lt;a title=&#34;apply coding suggestions from REVIEW:115291&#34; href=&#34;http://commits.kde.org/kate/f05f03556d44dd17c169b4eb31df33d452154519&#34; target=&#34;_blank&#34;&gt;done&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;double click on Line/Column in status bar: open &lt;a title=&#34;Statusbar: doubleclick on line/column label opens GoToLine&#34; href=&#34;http://commits.kde.org/ktexteditor/e8978ecc0d6d3162d07aea135e956f794b70dbb1&#34; target=&#34;_blank&#34;&gt;goto bar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;status bar: double click toggles &lt;a title=&#34;Statusbar: doubleclick on insert mode label toggles between INSERT and OVERWRITE.&#34; href=&#34;http://commits.kde.org/ktexteditor/37e61d64087158fee24855b0b58cd0b01da44483&#34; target=&#34;_blank&#34;&gt;INSERT/OVR&lt;/a&gt;¸and &lt;a title=&#34;clean code&#34; href=&#34;http://commits.kde.org/ktexteditor/d95f9b016bced2c8687f5a7d65923d7742aa8198&#34; target=&#34;_blank&#34;&gt;cleanup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kate: &lt;a title=&#34;remove even more flicker&#34; href=&#34;http://commits.kde.org/kate/32d900bf9de6e6ff9ba791dc580fe11ef7786984&#34; target=&#34;_blank&#34;&gt;less flicker&lt;/a&gt; caused by doc manager&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;remove useless API&#34; href=&#34;http://commits.kde.org/ktexteditor/a2d7536689bdeb50780c3f0af7ece6c4488cc1d0&#34; target=&#34;_blank&#34;&gt;remove api&lt;/a&gt; from editor&lt;/li&gt;
&lt;li&gt;KateGlobal: &lt;a title=&#34;less linear search in lists&#34; href=&#34;http://commits.kde.org/ktexteditor/a1de48d6fd0dcde23da5d8bbbb4cbff9378a6996&#34; target=&#34;_blank&#34;&gt;less linear searches&lt;/a&gt; in lists&lt;/li&gt;
&lt;li&gt;view space tab bar: add &lt;a title=&#34;add close buttons, better highlight for active tab&#34; href=&#34;http://commits.kde.org/kate/2ab8be72e1ee900be298709f41567f947d03f286&#34; target=&#34;_blank&#34;&gt;close button&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;no hard-coded &lt;a title=&#34;no hardcoded plugins&#34; href=&#34;http://commits.kde.org/kate/6f38002e2e12bbc6fa7ca7a783dfec7727ec1e51&#34; target=&#34;_blank&#34;&gt;plugin loading&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;resort status bar &lt;a title=&#34;resort status bar once more&#34; href=&#34;http://commits.kde.org/ktexteditor/efeebc587fcbba68ff78d0e36493e5e1277bb060&#34; target=&#34;_blank&#34;&gt;once more&lt;/a&gt; :-)&lt;/li&gt;
&lt;li&gt;Kate Part&amp;#8217;s default indentation is now &lt;a title=&#34;more sane defaults for indentation&#34; href=&#34;http://commits.kde.org/ktexteditor/ecd2deb5e32379d37ab4d55712da35dfde8f91d1&#34; target=&#34;_blank&#34;&gt;4 spaces&lt;/a&gt; (fix &lt;a title=&#34;adjust to new indentation defaults&#34; href=&#34;http://commits.kde.org/ktexteditor/16c44229a4974087cba8c0921d1fa4a930582841&#34; target=&#34;_blank&#34;&gt;unit test&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Kate View Space: &lt;a title=&#34;merge tabs of closed viewspace into new active viewspace&#34; href=&#34;http://commits.kde.org/kate/b2009c8357b56e1bcfd3c623352da96c25178f15&#34; target=&#34;_blank&#34;&gt;merge tabs&lt;/a&gt; of closed view space into active view space&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;fix indent options&#34; href=&#34;http://commits.kde.org/ktexteditor/a30476dc528cfcbd806906f8e0c5bf1cce22c490&#34; target=&#34;_blank&#34;&gt;fix&lt;/a&gt; indent &lt;a title=&#34;fix indent options&#34; href=&#34;http://commits.kde.org/ktexteditor/668f9005a58316f555692d3982fff0a1bd04edf9&#34; target=&#34;_blank&#34;&gt;option&lt;/a&gt; caused by indent width change&lt;/li&gt;
&lt;li&gt;adapt message catalog to &lt;a title=&#34;katepart4.pot =&gt; ktexteditor5.pot&amp;rdquo; href=&amp;ldquo;&lt;a href=&#34;http://commits.kde.org/ktexteditor/5e5ea3bf69e62f9a09324ebb385af88f20477413&amp;quot;&#34;&gt;http://commits.kde.org/ktexteditor/5e5ea3bf69e62f9a09324ebb385af88f20477413&amp;quot;&lt;/a&gt; target=&amp;rdquo;_blank&amp;rdquo;&amp;gt;ktexteditor5.pot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;cleanup &lt;a title=&#34;sync&#34; href=&#34;http://commits.kde.org/ktexteditor/cdf6a760f4897fc99001150feae8e780ba7128c5&#34; target=&#34;_blank&#34;&gt;TODO&lt;/a&gt; list&lt;/li&gt;
&lt;li&gt;Kate: &lt;a title=&#34;merge show/hide single-view-mode&#34; href=&#34;http://commits.kde.org/kate/b2f42a5150adbc3fda4e9c76c706f90c8d7eccd2&#34; target=&#34;_blank&#34;&gt;merge&lt;/a&gt; show/hide single-view-mode&lt;/li&gt;
&lt;li&gt;KTE::Document: use a &lt;a title=&#34;use a hash&#34; href=&#34;http://commits.kde.org/ktexteditor/e0d265d276c14a14932c141610be3d8706c7baec&#34; target=&#34;_blank&#34;&gt;hash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kate view space tab bar: allow to &lt;a title=&#34;allow to show/hide tabs&#34; href=&#34;http://commits.kde.org/kate/b7cffaee7e064f9f03ddc6f871b5988a5b8b13ff&#34; target=&#34;_blank&#34;&gt;hide tab bar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KTextEditor plugins: allow with &lt;a title=&#34;allow to list all apps that shall load the plugin per default&#34; href=&#34;http://commits.kde.org/ktexteditor/675a750b1322c1cdae96fd94b713e508165c8e2e&#34; target=&#34;_blank&#34;&gt;X-KTextEditor-Load-Default&lt;/a&gt; to add apps that load a plugin by default, implement in &lt;a title=&#34;honor the &#39;load me per default if my app name is mentioned in the list&#39; X-KTextEditor-Load-Default attribute&#34; href=&#34;http://commits.kde.org/kate/e573c502f4297ffce0f71f7d17fa41517e3f4d22&#34; target=&#34;_blank&#34;&gt;Kate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;load Search &amp;amp; Replace plugin and File Tree by &lt;a title=&#34;filelist and search in files per default&#34; href=&#34;http://commits.kde.org/kate/654a1fa3e1c8089bbd9acd01eaf608c37dfc800c&#34; target=&#34;_blank&#34;&gt;default&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;cleanup &lt;a title=&#34;fix KTextEditor::TextHintInterface&#34; href=&#34;http://commits.kde.org/ktexteditor/aff96872b052deea12beada0816db1e246751035&#34; target=&#34;_blank&#34;&gt;KTextEditor::TextHintInterface&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;avoid crash on &lt;a title=&#34;activate one stupid view at least or kate will fail only on the FIRST time ever started&#34; href=&#34;http://commits.kde.org/kate/6d70b7b4300c99ea3719cfc9378d3230b9ad38ec&#34; target=&#34;_blank&#34;&gt;first&lt;/a&gt; Kate start&lt;/li&gt;
&lt;li&gt;status bar indent settings: &lt;a title=&#34;fix event filter + Other -&gt; &amp;quot;Other&amp;hellip;&amp;quot;&amp;rdquo; href=&amp;ldquo;&lt;a href=&#34;http://commits.kde.org/ktexteditor/9d06984a613e5827c8fedb7ed3caea4f5d90f2ea&amp;quot;&#34;&gt;http://commits.kde.org/ktexteditor/9d06984a613e5827c8fedb7ed3caea4f5d90f2ea&amp;quot;&lt;/a&gt; target=&amp;rdquo;_blank&amp;rdquo;&amp;gt;indicate dialog&lt;/a&gt; with &amp;#8230;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;January, 25th (departure day):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nice breakfast with croissants, then to the airport :-)&lt;/li&gt;
&lt;li&gt;double click in empty space in tab bar creates &lt;a title=&#34;double click in empty space of tab bar crates new empty document&#34; href=&#34;http://commits.kde.org/kate/06168866c65fa65267dd00a8cd8321230371968c&#34; target=&#34;_blank&#34;&gt;new document&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;swap quick open and window splitting button&#34; href=&#34;http://commits.kde.org/kate/bc992a9527c0c2d6c9b978849ec1d0d75fdfe2af&#34; target=&#34;_blank&#34;&gt;swap&lt;/a&gt; quick open and window splitting buttons in view space tab bar&lt;/li&gt;
&lt;li&gt;Projects plugin: only create tool views &lt;a title=&#34;create tool views on demand only&#34; href=&#34;http://commits.kde.org/kate/47fc7d5cbf377d9f1ebd7244710836bb5165561d&#34; target=&#34;_blank&#34;&gt;if applicable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;port some commits from &lt;a title=&#34;build plugin: add support for Intel icpc error messages&#34; href=&#34;http://commits.kde.org/kate/ae58159832573fdf70edc12e39827cff1ac5710a&#34; target=&#34;_blank&#34;&gt;KDE 4&lt;/a&gt; branch to &lt;a title=&#34;build plugin: fix stuff broken recently&#34; href=&#34;http://commits.kde.org/kate/4bfbcf0bbf3c6e4375d1745c210a2d811e9f7fb9&#34; target=&#34;_blank&#34;&gt;KF5 branch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;allow detection of &lt;a title=&#34;allow detection of encoding by HTML encoding&#34; href=&#34;http://commits.kde.org/ktexteditor/91e1030a512910d120175bf519c1662a35cff68c&#34; target=&#34;_blank&#34;&gt;HTML encoding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;vi input mode: fix some &lt;a title=&#34;vi-mode: fix visual mode tests&#34; href=&#34;http://commits.kde.org/ktexteditor/b0e0f4550cc2ef0d0f7109ccea79283879190208&#34; target=&#34;_blank&#34;&gt;unit tests&lt;/a&gt;¸more &lt;a title=&#34;vi-mode: enable more tests&#34; href=&#34;http://commits.kde.org/ktexteditor/83923f69d923c1fe443a3d12ab09cd9177d603bd&#34; target=&#34;_blank&#34;&gt;tests&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;same for file tree &lt;a title=&#34;try to fix filetreemodel listMode tests&#34; href=&#34;http://commits.kde.org/kate/a3c1034f0ba0717c510f917b3c5244c192cdf687&#34; target=&#34;_blank&#34;&gt;unit tests&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skanlite: &lt;a title=&#34;more porting&#34; href=&#34;http://commits.kde.org/skanlite/f586c4ef9200b217e869605fbf4b026cf669b73d&#34; target=&#34;_blank&#34;&gt;more porting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the days after the sprint we did a lot more fine tuning and cleanups with respect to the changes we did during the sprint. So let&amp;#8217;s have a look at Kate before the sprint:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/12/kate_on_kf5.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3044&#34; alt=&#34;Kate on KF5&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/12/kate_on_kf5.png&#34; width=&#34;762&#34; height=&#34;527&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/12/kate_on_kf5.png 762w, https://kate-editor.org/wp-content/uploads/2013/12/kate_on_kf5-300x207.png 300w&#34; sizes=&#34;(max-width: 762px) 100vw, 762px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kate after the sprint:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2014/02/kate-2014-01.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3164&#34; alt=&#34;Kate after the Developer Sprint&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/02/kate-2014-01.png&#34; width=&#34;760&#34; height=&#34;528&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/02/kate-2014-01.png 760w, https://kate-editor.org/wp-content/uploads/2014/02/kate-2014-01-300x208.png 300w&#34; sizes=&#34;(max-width: 760px) 100vw, 760px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So Kate changed in several ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New status bar: The status bar is in the KTextEditor interfaces now. That implies that KDevelop, Kile, and all other applications using the KTextEditor framework will have the same status bar.&lt;/li&gt;
&lt;li&gt;It is now possible to change the indent settings (tabs, spaces) through the status bar. The same holds for the encoding and the current highlighting.&lt;/li&gt;
&lt;li&gt;Double click on &amp;#8220;Line: &amp;#8230;, Column: &amp;#8230;&amp;#8221; switches into goto-mode (Ctrl+G).&lt;/li&gt;
&lt;li&gt;Double click on INSERT changes to OVERWRITE mode, if not in vi input mode.&lt;/li&gt;
&lt;li&gt;New Tab Bar in each view space: This tab bar shows the documents you are working on in a least recently used (LRU) fashion. It only shows as many tabs as fit into the tab bar, since we want to avoid horizonal scrolling (it does not scale). If not all documents fit into the tab bar, just use the Documents tab on the left, or the quick open icon in the view space tab bar bar on the right to to launch quick open.&lt;/li&gt;
&lt;li&gt;Since we now have a tab bar, we can now show the splitting actions at a more prominent place on the very right. New features include to hide inactive views, which equals maximizing the current view space.&lt;/li&gt;
&lt;li&gt;Yes, no worries, the tab bar can be disabled.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We&amp;#8217;ll cover the workflow of the tab bar in a separate blog post.&lt;/p&gt;
&lt;p&gt;&amp;#8230;oh, and we have much more in the pipe (not related to the sprint) :-)&lt;/p&gt;</description></item><item><title>Kate/KDevelop Sprint – Finishing Line</title><link>https://kate-editor.org/2014/01/25/katekdevelop-sprint-finishing-line/</link><pubDate>Sat, 25 Jan 2014 01:47:16 +0000</pubDate><guid>https://kate-editor.org/2014/01/25/katekdevelop-sprint-finishing-line/</guid><description>&lt;p&gt;Saturday most Kate developers will depart, therefore now the most work has been finalized (or at least brought to some intermediate state that works OK).&lt;/p&gt;
&lt;p&gt;Below, the mandatory screenshot, Kate started without any configuration set in the framework branch, new and shiny:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2014/01/kate_kf5.png&#34;&gt;&lt;img class=&#34;size-full wp-image-3138 alignnone&#34; alt=&#34;KF5 Kate after Sprint&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/01/kate_kf5.png&#34; width=&#34;890&#34; height=&#34;677&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/01/kate_kf5.png 890w, https://kate-editor.org/wp-content/uploads/2014/01/kate_kf5-300x228.png 300w&#34; sizes=&#34;(max-width: 890px) 100vw, 890px&#34; /&gt;&lt;/a&gt;Find the differences :P&lt;/p&gt;
&lt;p&gt;And one screenshot with some files open:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2014/01/kate_kf5_files.png&#34;&gt;&lt;img class=&#34;size-full wp-image-3144 alignnone&#34; alt=&#34;KF5 Kate with Files&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/01/kate_kf5_files.png&#34; width=&#34;890&#34; height=&#34;677&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/01/kate_kf5_files.png 890w, https://kate-editor.org/wp-content/uploads/2014/01/kate_kf5_files-300x228.png 300w&#34; sizes=&#34;(max-width: 890px) 100vw, 890px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kate/KDevelop Sprint – Status Bar Take 2</title><link>https://kate-editor.org/2014/01/23/katekdevelop-sprint-status-bar-take-2/</link><pubDate>Thu, 23 Jan 2014 16:51:06 +0000</pubDate><guid>https://kate-editor.org/2014/01/23/katekdevelop-sprint-status-bar-take-2/</guid><description>&lt;p&gt;After the first initial status bar integration into the KatePart, we thought a bit more about what users might expect. Looking at the competition, one common feature is to allow quick-switching the indentation settings.&lt;/p&gt;
&lt;p&gt;Joseph gave that a try and we now have an even better version available in the KF5 KTextEditor framework.&lt;/p&gt;
&lt;p&gt;Mandatory screenshot (KWrite, Kate or other applications using it will look the same), updated version after feedback below:&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2014/01/kwrite1.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3130&#34; alt=&#34;KF5 Status Bar Take 2&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/01/kwrite1.png&#34; width=&#34;781&#34; height=&#34;493&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/01/kwrite1.png 781w, https://kate-editor.org/wp-content/uploads/2014/01/kwrite1-300x189.png 300w&#34; sizes=&#34;(max-width: 781px) 100vw, 781px&#34; /&gt;&lt;/a&gt;(Update: Using now again non-bold + Line/Column swapped with status)&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2014/01/kwrite2.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3134&#34; alt=&#34;KF5 Status Bar Take 2-2&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/01/kwrite2.png&#34; width=&#34;751&#34; height=&#34;466&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/01/kwrite2.png 751w, https://kate-editor.org/wp-content/uploads/2014/01/kwrite2-300x186.png 300w&#34; sizes=&#34;(max-width: 751px) 100vw, 751px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kate/KDevelop Sprint – Improved Status Bar</title><link>https://kate-editor.org/2014/01/21/kate-kdevelop-sprint-improved-status-bar/</link><pubDate>Tue, 21 Jan 2014 17:50:43 +0000</pubDate><guid>https://kate-editor.org/2014/01/21/kate-kdevelop-sprint-improved-status-bar/</guid><description>&lt;p&gt;Just started to introduce a default status bar to KatePart.&lt;/p&gt;
&lt;p&gt;Instead of  forcing all applications to implement an own one with varying quality and features, it provides a default status bar that is an improved variant of the status bar of the Kate application. Now Kate and KWrite have exactly the same features there ;)&lt;/p&gt;
&lt;p&gt;If the host application doesn&amp;#8217;t want that, the KTextEditor interface allows to deactivate it completely.&lt;/p&gt;
&lt;p&gt;The new status bar allows e.g. finally to switch the file mode (== highlighting) and encoding directly from the status bar ;)&lt;/p&gt;
&lt;p&gt;Mandatory screenshot:&lt;br /&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2014/01/kwrite.png&#34;&gt;&lt;img class=&#34;size-full wp-image-3117 aligncenter&#34; alt=&#34;KWrite KF5 with new status bar&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2014/01/kwrite.png&#34; width=&#34;623&#34; height=&#34;392&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2014/01/kwrite.png 623w, https://kate-editor.org/wp-content/uploads/2014/01/kwrite-300x188.png 300w&#34; sizes=&#34;(max-width: 623px) 100vw, 623px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kate/KDevelop Sprint – First Weekend</title><link>https://kate-editor.org/2014/01/20/kate-kdevelop-sprint-first-weekend/</link><pubDate>Mon, 20 Jan 2014 13:52:58 +0000</pubDate><guid>https://kate-editor.org/2014/01/20/kate-kdevelop-sprint-first-weekend/</guid><description>&lt;p&gt;Here we sit, in Barcelona, hacking away at KTextEditor &amp;amp; Kate.&lt;br /&gt;
During the first 2 days, we already got some stuff done, like cleaning up KTextEditor interfaces and port more parts to KF5 (like ctags plugin, sql plugin, &amp;#8230;).&lt;/p&gt;
&lt;p&gt;More and more, KTextEditor &amp;amp; Kate get into a usable state for frameworks ;)&lt;br /&gt;
It is really good to have some free days in a nice location to focus on that goal!&lt;/p&gt;
&lt;p&gt;We will not fundamentally change a lot of stuff but really concentrate on long term items we had on the radar for the 4.x =&amp;gt; 5.x change and on having a GOOD 5.0 release that is as usable as the 4.x series with hopefully only as few regressions as possible.&lt;/p&gt;</description></item><item><title>Interfacing Lua With Templates in C&#43;&#43;11</title><link>https://kate-editor.org/2014/01/17/interfacing-lua-with-templates-in-c11/</link><pubDate>Fri, 17 Jan 2014 15:13:41 +0000</pubDate><guid>https://kate-editor.org/2014/01/17/interfacing-lua-with-templates-in-c11/</guid><description>&lt;p&gt;I thought I&amp;#8217;d share a very interesting read about how to wrap the lua C bindings with C++11 variadic templates: &lt;a title=&#34;Interfacing Lua With Templates in C++11&#34; href=&#34;http://www.jeremyong.com/blog/2014/01/10/interfacing-lua-with-templates-in-c-plus-plus-11/&#34; target=&#34;_blank&#34;&gt;part 1&lt;/a&gt;, &lt;a title=&#34;Interfacing Lua With Templates in C++11 Continued&#34; href=&#34;http://www.jeremyong.com/blog/2014/01/14/interfacing-lua-with-templates-in-c-plus-plus-11-continued/&#34; target=&#34;_blank&#34;&gt;part 2&lt;/a&gt;, &lt;a title=&#34;Interfacing Lua with C++11&#34; href=&#34;http://www.jeremyong.com/blog/2014/01/21/interfacing-lua-with-templates-in-c-plus-plus-11-conclusion/&#34; target=&#34;_blank&#34;&gt;part 3&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;These type of cool articles pop up from time to time on &lt;a title=&#34;Reddit C++&#34; href=&#34;http://www.reddit.com/r/cpp&#34; target=&#34;_blank&#34;&gt;reddit/r/cpp&lt;/a&gt;, so if you are interested in C++ topics, this is definitely worth to follow.&lt;/p&gt;</description></item><item><title>KTextEditor on Frameworks 5: Timing is everything</title><link>https://kate-editor.org/2014/01/11/ktexteditor-on-frameworks-5-timing-is-everything/</link><pubDate>Sat, 11 Jan 2014 22:14:36 +0000</pubDate><guid>https://kate-editor.org/2014/01/11/ktexteditor-on-frameworks-5-timing-is-everything/</guid><description>
&lt;p&gt;This is a follow-up to Aaron&amp;#8217;s blog &lt;a title=&#34;Frameworks 5: Timing is everything&#34; href=&#34;http://aseigo.blogspot.com/2014/01/frameworks-5-timing-is-everything.html&#34; target=&#34;_blank&#34;&gt;Frameworks 5: Timing is everything&lt;/a&gt;, put into the perspective of Kate and the KTextEditor interfaces. In short, Aaron suggests application developers the following:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style=&#34;line-height: 1.5;&#34;&gt;When Frameworks 5 has a firm release schedule, then it makes sense to start coordinating application releases targets with that and syncing up development cycles.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I agree with this entirely, provided it&amp;#8217;s really about applications. In the context of Kate, this is not the case, since the term &amp;#8216;Kate&amp;#8217; usually also refers to the &amp;#8216;KTextEditor&amp;#8217; interfaces along with its implementation &amp;#8216;Kate Part&amp;#8217;.&lt;/p&gt;
&lt;p&gt;In essence, the KTextEditor interfaces together with Kate Part provide a text editor in a library that can be used by applications, or more to the point, &lt;strong&gt;KTextEditor+Kate Part build a framework&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In fact, about a week ago, the KTextEditor interfaces and Kate Part were split out of the kate.git repository. So from now on, kate.git contains the Kate and KWrite applications. The &lt;strong&gt;ktexteditor.git&lt;/strong&gt; module contains the KTextEditor interfaces and Kate Part.&lt;/p&gt;
&lt;p&gt;ktexteditor.git is is a tier3 framework and meanwhile officially part of the frameworks initiative: if you want so, KDE now provides &lt;strong&gt;58 frameworks&lt;/strong&gt; instead of the &lt;a title=&#34;Frameworks 5 Announcement&#34; href=&#34;http://dot.kde.org/2014/01/07/frameworks-5-tech-preview&#34; target=&#34;_blank&#34;&gt;previously announced 57&lt;/a&gt;!&lt;/p&gt;
&lt;h3 id=&#34;why-timing-is-everything&#34;&gt;Why timing is everything&lt;/h3&gt;
&lt;p&gt;Now what about timing? Started on November 28th 2013, Christoph pushed the first compiling version of Kate into the frameworks branch. This was very good timing, since the split of kdelibs into all the frameworks was more or less just finished at that time. Or to put it the other way round: Christoph started porting Kate pretty much as early as the KF5 initialive allowed us &amp;#8211; cool!&lt;/p&gt;
&lt;p&gt;Around that time by coincidence, Michal started to work on Kate in the master branch and committed lots of cool features. However, since Kate was already rudimentary ported to Qt5 and KF5, the code base diverged more and more, so merging got more complicated. Therefore, Michal started to work in Kate&amp;#8217;s frameworks branch. And within &lt;em&gt;only a week&lt;/em&gt; (!), Kate, KWrite, the KTextEditor interfaces and Kate Part build without a single warning, meaning that the code was completely free of Qt4 and kde4support &amp;#8211; &lt;em&gt;wow!&lt;/em&gt; :-)&lt;/p&gt;
&lt;p&gt;Again, a month before would have been too early &amp;#8211; so this was perfect timing. The result was a pretty stable and mostly bug-free Kate in mid of December.&lt;/p&gt;
&lt;p&gt;Well, not completely free of porting bugs. For instance, file saving did not work correctly, ending up in data corruption. It turned out that this was an issue in the framework karchive, which David Faure was able to reproduce and fix. This is good timing in the sense that without Kate&amp;#8217;s usage of karchive, the bug would have probably ended up in the &lt;a title=&#34;Frameworks 5 TP1&#34; href=&#34;http://dot.kde.org/2014/01/07/frameworks-5-tech-preview&#34; target=&#34;_blank&#34;&gt;technical preview TP1&lt;/a&gt;. But it didn&amp;#8217;t &amp;#8211; yay! :-)&lt;/p&gt;
&lt;p&gt;Last but not least, the Kate and KDevelop developers planned already months ago to have a joint Kate/KDevelop sprint from 18th to 26th of January, 2014. Given the current state of Kate and KTextEditor, this again is perfect timing, since most of the KTextEditor cleanup are already done. So the Kate developers can focus on the needs of e.g. KDevelop, on fine-tuning and implementing interfaces, etc. So in about two weeks, when our developer sprint will have ended, Kate will most probably shine as it never did before. And this is the case already &lt;em&gt;now&lt;/em&gt;, even before a firm release date of &lt;a title=&#34;Plasma 2 Technology Preview&#34; href=&#34;http://dot.kde.org/2013/12/20/plasma-2-technology-preview&#34; target=&#34;_blank&#34;&gt;Plasma 2&lt;/a&gt; exists.&lt;/p&gt;
&lt;p&gt;This is great news for Kate and all applications that use the KTextEditor interfaces, as Kate/KTextEditor already now reached a maturity that they never had before.&lt;/p&gt;
&lt;p&gt;And this is so awesome! I cannot think of better timing :-) Thanks to all who made this happen!&lt;/p&gt;</description></item><item><title>Kate in 4.12</title><link>https://kate-editor.org/2014/01/09/kate-in-4-12/</link><pubDate>Thu, 09 Jan 2014 10:20:30 +0000</pubDate><guid>https://kate-editor.org/2014/01/09/kate-in-4-12/</guid><description>
&lt;p&gt;Since the KDE SC 4.12 release a month ago, it&amp;#8217;s about time to look at the changes of Kate in 4.12:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&#34;line-height: 1.5;&#34;&gt;Vi input mode: &lt;/span&gt;&lt;a style=&#34;line-height: 1.5;&#34; title=&#34;Macro support in Kate&#39;s vi input mode&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=288351&#34; target=&#34;_blank&#34;&gt;complete macro support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Heavily improved &lt;a href=&#34;https://kate-editor.org/2013/09/06/kate-vim-progress/&#34; title=&#34;Improved Vi input mode&#34;&gt;vi input mode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kate-editor.org/2013/09/09/multi-line-text-editing-in-kate/&#34; title=&#34;Multi-column text editing in Kate&#34;&gt;Multi-column text editing&lt;/a&gt; (thanks to Andrey Matveyakin)&lt;/li&gt;
&lt;li&gt;MiniMap: align to the top (instead of vertically centered)&lt;/li&gt;
&lt;li&gt;Projects plugin: modified files now show a modified icon&lt;/li&gt;
&lt;li&gt;Improved &lt;a href=&#34;https://kate-editor.org/2013/12/01/kate-cboost-style-indenter/&#34; title=&#34;C++/Boost Style indenter&#34;&gt;C++/Boost Style indenter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;in total, &lt;a title=&#34;Kate bug fixes for KDE SC 4.12&#34; href=&#34;https://bugs.kde.org/buglist.cgi?resolution=FIXED&amp;resolution=WORKSFORME&amp;resolution=UPSTREAM&amp;resolution=DOWNSTREAM&amp;query_format=advanced&amp;bug_status=RESOLVED&amp;bug_status=CLOSED&amp;longdesc=4.12&amp;longdesc_type=allwordssubstr&amp;product=kate&amp;list_id=900016&#34; target=&#34;_blank&#34;&gt;21 issues&lt;/a&gt; (including wishes and bugs) were fixed&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;what-comes-next&#34;&gt;What comes next?&lt;/h3&gt;
&lt;p&gt;Kate will get more polishing in the next 4.x releases, for instance, in KDE SC 4.13 Kate optionally supports &lt;a href=&#34;https://kate-editor.org/2013/11/06/animated-bracket-matching-in-kate-part/&#34; title=&#34;Animated bracket matching in Kate&#34;&gt;animated bracket matching&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;However, as already mentioned in &lt;a href=&#34;https://kate-editor.org/2013/09/09/kate-in-4-11/&#34; title=&#34;Kate in 4.11&#34;&gt;Kate in 4.11&lt;/a&gt;, &lt;span style=&#34;line-height: 1.5;&#34;&gt;the main efforts are put into making Kate on Qt5 and Frameworks 5 rock solid. Already now Kate, KWrite and Kate Part are fully ported, i.e. all are free of KDE4support libraries. A preview (already one month old!) can be &lt;a title=&#34;Kate on 5&#34; href=&#34;https://kate-editor.org/2013/12/08/kate-on-kde-frameworks-5/&#34;&gt;found here&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Besides that, Kate and KDevelop again join forces and there is a developer meeting from 18th to 25th of January 2014. So expect quite some blogs about Kate on 5 then!&lt;/p&gt;</description></item><item><title>Kate Licensing</title><link>https://kate-editor.org/2014/01/03/kate-licensing/</link><pubDate>Fri, 03 Jan 2014 07:12:02 +0000</pubDate><guid>https://kate-editor.org/2014/01/03/kate-licensing/</guid><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;a long time ago, the license of most parts of Kate/KWrite/KatePart/KTextEditor was LGPLv2+ (in the old time, where it was named KWritePart/Kant/&amp;#8230;, the original KWrite had that license originally, at least all parts of the component of it).&lt;/p&gt;
&lt;p&gt;Then, we changed that to be LGPLv2 (only).&lt;/p&gt;
&lt;p&gt;It seems, that was a poor choice, as we now run in v2 vs. v3 vs. any later version problems.&lt;/p&gt;
&lt;p&gt;Most parts of the code are easy to relicense, as the contributors either acknowledged the request to change the license to that to the Kate team (on kwrite-devel@kde.org) or added themselves to the relicensecheck.pl in kde-dev-scripts.git.&lt;/p&gt;
&lt;p&gt;KTextEditor is now LGPLv2+ only, which is nice ;)&lt;/p&gt;
&lt;p&gt;KatePart is only missing the re-licensing of some files.&lt;/p&gt;
&lt;p&gt;Kate has more files to look at, but should be less a problem, as it has less people that did commits, compared to the part.&lt;/p&gt;
&lt;p&gt;So, if you didn&amp;#8217;t already get a mail from me about some &amp;#8220;please allow on kwrite-devel@kde.org for license change to LGPLv2+&amp;#8221; and you know you have contributed, even if it was only some patch, it would be really nice to get some short &amp;#8220;I am ok with LGPLv2+&amp;#8221; on kwrite-devel@kde.org.&lt;/p&gt;
&lt;p&gt;That will make it much easier to sort out the remaining issues!&lt;/p&gt;
&lt;p&gt;This really would help to have no licensing issues coming up in the future years and further incompatibilities. I really would like to strife for LGPLv2+ only code in KTextEditor/KatePart/Kate, at least in the core parts (e.g. without the plugins), which seems to be realistic in the short term to reach.&lt;/p&gt;
&lt;p&gt;Thanks a lot and a happy new year.&lt;/p&gt;</description></item><item><title>Multiple Windows &amp; Kate on KF5</title><link>https://kate-editor.org/2013/12/22/multiple-windows-kate-on-kf5/</link><pubDate>Sun, 22 Dec 2013 17:16:40 +0000</pubDate><guid>https://kate-editor.org/2013/12/22/multiple-windows-kate-on-kf5/</guid><description>&lt;p&gt;In KDE 4, you can open a new window for Kate via &amp;#8220;View -&amp;gt; New Window&amp;#8221;.&lt;/p&gt;
&lt;p&gt;This won&amp;#8217;t start a new application instance but just add an other Kate main window to the current instance (which shows the same documents &amp;amp; session &amp;amp; projects).&lt;/p&gt;
&lt;p&gt;This is kind of complex to handle internally and we think about dropping that behavior and instead launching just an other Kate application instance if you trigger that menu action.&lt;/p&gt;
&lt;p&gt;Pro: Easier code structure, less to maintain, less bugs. Each window is an own process, e.g. if one crashs, not the others die, too.&lt;/p&gt;
&lt;p&gt;Contra: You will loose the have the same documents open in two windows with syncing (as the two windows would then be individual processes).&lt;/p&gt;
&lt;p&gt;Any opinions about that out there in the lazy web? Feedback is welcome.&lt;/p&gt;</description></item><item><title>Kate on KDE Frameworks 5</title><link>https://kate-editor.org/2013/12/08/kate-on-kde-frameworks-5/</link><pubDate>Sun, 08 Dec 2013 17:03:01 +0000</pubDate><guid>https://kate-editor.org/2013/12/08/kate-on-kde-frameworks-5/</guid><description>&lt;p&gt;After the initial porting of KTextEditor interfaces and KatePart, now the Kate application itself runs on KF5, too.&lt;br /&gt;
It still has a LOT of issues (and I marked all commented out pieces with FIXME KF5), but at least, it launches and loads the essential file tree plugin and allows you to open files via the &amp;#8220;Open&amp;#8221; action. Any help in fixing the remaining issues is welcome (and removing deprecated cruft), but keep in mind, it might eat all the files you edit :)&lt;br /&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/12/kate_on_kf5.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3044&#34; title=&#34;Kate on KF5&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/12/kate_on_kf5.png&#34; alt=&#34;&#34; width=&#34;762&#34; height=&#34;527&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/12/kate_on_kf5.png 762w, https://kate-editor.org/wp-content/uploads/2013/12/kate_on_kf5-300x207.png 300w&#34; sizes=&#34;(max-width: 762px) 100vw, 762px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That means now all stuff in the &amp;#8220;frameworks&amp;#8221; branch of kate.git beside the &amp;#8220;addons&amp;#8221; directory containing plugins/plasma stuff at least compiles and launches with KF5.&lt;/p&gt;
&lt;p&gt;Now the question is how we handle further development. Shall we switch to &amp;#8220;frameworks&amp;#8221; for all major stuff in interfaces/part/application and only let feature work be done in the &amp;#8220;master&amp;#8221; branch for addons (which we then can port later on)?&lt;/p&gt;
&lt;p&gt;Feedback is welcome ;)&lt;/p&gt;</description></item><item><title>Current State of Kate on 5</title><link>https://kate-editor.org/2013/12/04/current-state-of-kate-on-5/</link><pubDate>Tue, 03 Dec 2013 23:14:14 +0000</pubDate><guid>https://kate-editor.org/2013/12/04/current-state-of-kate-on-5/</guid><description>&lt;p&gt;Just a quick update on the frameworks 5 port: KTextEditor,  Kate Part and KWrite build and run. Kate is not yet ported and does not compile. These changes were already committed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;made KTE::Cursor and KTE::Range non-virtual for maximum speed&lt;/li&gt;
&lt;li&gt;removed KTE::EditorChooser, since Kate Part is the only implementation since over 10 years. Just use KTE::Editor* editor = KTE::editor(); to get KatePart.&lt;/li&gt;
&lt;li&gt;new signal KTE::Document::readWriteChanged()&lt;/li&gt;
&lt;li&gt;removed KTE::LoadSaveFilterCheckPlugin, was unused since years&lt;/li&gt;
&lt;li&gt;removed all KTE::Smart* classes in favor of KTE::Moving* classes&lt;/li&gt;
&lt;li&gt;merged KTE::CoordinatesToCursorInterface into KTE::View&lt;/li&gt;
&lt;li&gt;new: KTE::Range KTE::Document::wordRangeAt(KTE::Cursor)&lt;/li&gt;
&lt;li&gt;new: QString KTE::Document::wordAt(KTE::Cursor)&lt;/li&gt;
&lt;li&gt;new: KTE::DocumentCursor&lt;/li&gt;
&lt;li&gt;ported lots of KSharedPtr to QSharedData&lt;/li&gt;
&lt;li&gt;updated Mainpage.dox to reflect porting notes&lt;/li&gt;
&lt;li&gt;some small interface cleanups and additions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please feel free to join the porting fun. Just follow the &lt;a title=&#34;Build KDE Frameworks&#34; href=&#34;http://community.kde.org/Frameworks/Building&#34; target=&#34;_blank&#34;&gt;Frameworks compile guide&lt;/a&gt; and checkout the git branch &amp;#8220;frameworks&amp;#8221; in the Kate git module.&lt;/p&gt;</description></item><item><title>Kate: “C&#43;&#43;/boost Style” Indenter</title><link>https://kate-editor.org/2013/12/01/kate-cboost-style-indenter/</link><pubDate>Sun, 01 Dec 2013 19:36:38 +0000</pubDate><guid>https://kate-editor.org/2013/12/01/kate-cboost-style-indenter/</guid><description>
&lt;p&gt;Greetings from the Kate land again. This time, Alex Turbov will spend a few words about his &amp;#8220;C++/boost Style&amp;#8221; indenter that is part of Kate Part for several releases.&lt;/p&gt;
&lt;h3 id=&#34;the-initial-motivation&#34;&gt;The Initial Motivation&lt;/h3&gt;
&lt;p&gt;This indenter (initially) was designed to help _code typing_ in a &amp;#8220;boost::mpl&amp;#8221; style (i.e. with leading comma in formatted (template) parameters list). One may read the rationale of such approach in the &amp;#8220;&lt;a title=&#34;C++ Template Metaprogramming&#34; href=&#34;http://www.boostpro.com/mplbook/&#34; target=&#34;_blank&#34;&gt;C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond&lt;/a&gt;&amp;#8221; by David Abrahams and Aleksey Gurtovoy. It is really easy to miss a comma when invoke metafunctions and it usually leads to a lot of complicated compile errors. The indenting technique should help to visualize the control syntax and prevent stupid errors like missed commas.&lt;/p&gt;
&lt;p&gt;Small example:&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;typedef typename boost::mpl::fold&amp;lt;
typename boost::mpl::transform_view&amp;lt;
Seq
, boost::remove_pointer
&amp;gt;::type
, boost::mpl::long_
, boost::mpl::eval_if&amp;lt;
boost::mpl::less
, boost::mpl::_2
, boost::mpl::_1
&amp;gt;
&amp;gt;::type type;&lt;/pre&gt;
&lt;p&gt;In practice I&amp;#8217;ve noticed that this style can be used to format long function calls or even `for` statements. Actually everything that can be split into several lines could be formatted that way. And yes, it is convenient to have a delimiter (comma, semicolon, whatever) as a leading character to make it visually noticeable.&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;// Inheritance list formatting
struct sample
: public base_1
, public base_2
, ...
, public base_N
{
// Parameter list formatting
void foo(
const std::string&amp; param_1 ///&amp;lt; A string parameter
, double param_2 ///&amp;lt; A double parameter
, ...
, const some_type&amp; param_N ///&amp;lt; An user defined type parameter
)
{
// Split `for` parts into few shorter lines
for (
auto first = std::begin(param_1)
, last = std::end(param_1)
; it != last &amp;&amp; !is_found &amp;&amp; !is_exit_requested
; ++it
)
{
auto val = check_some_condition()
? get_then_value()
: get_else_value()
;
}
}
};&lt;/pre&gt;
&lt;p&gt;It looks unusual for awhile :) but later it becomes (quite) normal and easy to read and edit :) Really! When you want to add one more parameter to a function declaration it takes less typing if compare to a &amp;#8220;traditional&amp;#8221; way :) (especially if you have some help from an editor, like move/duplicate the current line or a selected block up/down by a hot-key or having an indenter like this :)&lt;/p&gt;
&lt;p&gt;Next improvements was designed to simplify typing C++ code, using most common syntactic rules, like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;add spaces around operators and after a comma&lt;/li&gt;
&lt;li&gt;add space after control keywords, but not after a function name in a call expression&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Further improvements bring to the indenter some cute features and nowadays I&amp;#8217;d prefer to consider it similar to a T9 (input method) for C++ coding, but not as a &amp;#8220;real indenter&amp;#8221; in contrast to others, shipped with &lt;a title=&#34;Kate&#34; href=&#34;http://kate-editor.org&#34; target=&#34;_blank&#34;&gt;kate&lt;/a&gt; out of the box :) Particularly this indenter &amp;#8220;exploit&amp;#8221; can see &amp;#8220;impossible&amp;#8221; syntax and (try to) transform it to something &amp;#8220;reasonable&amp;#8221; &amp;#8212; i.e. just like T9 it tries to be a predictive.&lt;/p&gt;
&lt;p&gt;For example, if you have autobrackets plugin turned ON, when typing `some(nested(` gives you `some(nested(|))` w/ `|` indicating a current cursor position. If you press `,` at this position, it gives you the following snippet `some(nested(), |)` supposing that you want to add one more parameter to a `some()` call. While typing `;` looks like you&amp;#8217;ve done with that nested calls and gives you the `some(nested());|` snippet. Both cases help you to avoid couple of redundant key presses ;)&lt;/p&gt;
&lt;p&gt;&amp;#8230; but do not even try to use this indenter to (re)format blocks of code! :) It can do some really simple/primitive formatting, but far from good &amp;#8212; as I&amp;#8217;ve mentioned above: this &amp;#8220;not quite indenter&amp;#8221;™ designed to help you to __&amp;#8221;do little more with less typing&amp;#8221;__ for C++ ;)&lt;/p&gt;
&lt;h3 id=&#34;some-of-the-features&#34;&gt;Some of the Features&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;to start a C-style comment block type `/&lt;em&gt;` and press ENTER key &amp;#8212; it gives you
&lt;pre&gt;/&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;|
*/&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-family: Georgia, &#39;Times New Roman&#39;, &#39;Bitstream Charter&#39;, Times, serif; font-size: 13px; line-height: 19px;&#34;&gt;to start &lt;code&gt;doxygen&lt;/code&gt; comment block use &lt;code&gt;/**&lt;/code&gt; + ENTER. Every following ENTER just extend the current block.&lt;/span&gt;&lt;/li&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;to start C++ style comment just type `//` it will add a one space after ;)&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I prefer to have on-line-comments (i.e. C++-style comments after some expression) to be aligned at 60th position. So typing `//` will automatically move comment to that position if there was some code before. Moreover the indenter tries to keep that comments when you use ENTER key to break some complex expressions into a few lines
&lt;pre&gt;// Before pressing ENTER at position marked by &amp;lsquo;|&amp;rsquo;
some_call_with_long parameters_list(|param1, &amp;hellip;, paramN); // Comment starts here&amp;hellip;
// After pressing ENTER: keep comment at the original line
some_call_with_long parameters_list( // Comment starts here&amp;hellip;
|param1, &amp;hellip;, paramN);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-family: Georgia, &#39;Times New Roman&#39;, &#39;Bitstream Charter&#39;, Times, serif; font-size: 13px; line-height: 19px;&#34;&gt;Also try to use &lt;em&gt;ENTER&lt;/em&gt; in the middle of a comment text ;-)&lt;/span&gt;&lt;/li&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;pre&gt;&lt;span style=&#34;font-family: Georgia, &#39;Times New Roman&#39;, &#39;Bitstream Charter&#39;, Times, serif; font-size: 13px; line-height: 19px;&#34;&gt;typing `///` gives you `/// ` (with a space) or `///&amp;lt; ` depending on presence of code at the current line&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;span style=&#34;font-family: Georgia, &#39;Times New Roman&#39;, &#39;Bitstream Charter&#39;, Times, serif; font-size: 13px; line-height: 19px;&#34;&gt;from time to time I use grouping in a doxygen documentation, so typing &lt;code&gt;//@&lt;/code&gt; gives you:&lt;/span&gt;
&lt;pre&gt;//@{
|
//@}&lt;/pre&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;always add a space after `,` character &amp;#8212; simple, but really convenient! really soon you&amp;#8217;ve stopped typing a space after any comma and feel yourself inconvenient with other indenters ;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;typing `&amp;lt;` without a space after some identifier adds a closing angle bracket (like notorious autobrackets plugin do for other bracket types), because template instantiation guessed. So typing `std::vector&amp;lt;|` gives you `std::vector&amp;lt;|&amp;gt;`. But `std::cout&amp;lt;|&amp;gt;` turns into `std::cout &amp;lt;&amp;lt; |` after pressing one more `&amp;lt;` ;-)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;a lot punctuation characters being typed withing parenthesis is a some operator (or at least part of), so will be moved out of parenthesis (most likely call expression). Try to type various punctuators at marked position in the following snippet `some(|)`&amp;#8230;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;typing a backslash in on a line of a long `MACRO` definition cause realign all others to fit to a longest line:
&lt;pre&gt;#define PP_FORM_A_ROW(State, Data, Elem) &lt;br /&gt;
{ &lt;br /&gt;
{ &lt;br /&gt;
field_path( &lt;br /&gt;
BOOST_PP_TUPLE_ELEM(2, 0, Data) &lt;br /&gt;
, BOOST_PP_TUPLE_ELEM(2, 1, Data) &lt;br /&gt;
, BOOST_PP_TUPLE_ELEM(2, 0, Elem) &lt;br /&gt;
) &lt;br /&gt;
, BOOST_PP_TUPLE_ELEM(2, 1, Elem) &lt;br /&gt;
} &lt;br /&gt;
, manage_config_keys::action::GET &lt;br /&gt;
},&lt;/pre&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;ul&gt;
&lt;li&gt;typing `R&amp;#8221;` will initiate a raw string literal&lt;/ul&gt;
&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This advanced indenter  has some other (smaller) features to reduce typing. Hope, you&amp;#8217;ll like them if found! ;)&lt;/p&gt;
&lt;p&gt;PS: The other things I&amp;#8217;ve found useful when typing C++ code can be plugged with some Python plugins dedicated to C++.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>KatePart/KWrite arrives in the KDE Frameworks 5 world</title><link>https://kate-editor.org/2013/11/28/katepartkwrite-arrives-in-the-kde-frameworks-5-world/</link><pubDate>Thu, 28 Nov 2013 22:03:20 +0000</pubDate><guid>https://kate-editor.org/2013/11/28/katepartkwrite-arrives-in-the-kde-frameworks-5-world/</guid><description>&lt;p&gt;After starting the &amp;#8220;frameworks&amp;#8221; branch in kate.git more than a week ago but doing not much beside an initial KTextEditor compile &amp;amp; link port I felt a big guilty ;)&lt;/p&gt;
&lt;p&gt;Given a lot of people blog about the progress of programs X and Y for Qt 5.2 and KDE Frameworks 5 I guess it is time that KatePart joins this club.&lt;/p&gt;
&lt;p&gt;Some hours later, a &amp;#8216;working&amp;#8217; version of KatePart and KWrite have landed in the &amp;#8220;frameworks&amp;#8221; branch of kate.git. KWrite launches, loads the part and the open action even works (command line parsing is off-line btw. ATM).&lt;/p&gt;
&lt;p&gt;From the &lt;a title=&#34;Commit to have some working KWrite on KF5&#34; href=&#34;http://quickgit.kde.org/?p=kate.git&amp;a=commit&amp;h=90a97f7ad51e3d7e4af57265133dad37f57f2e89&#34; target=&#34;_blank&#34;&gt;let it run ;)&lt;/a&gt;  commit on, KWrite should at least launch and open files via file dialog and here is the mandatory screenshot (a KDE Frameworks 5 KWrite over an Kate 4.x window):&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/11/kwrite_on_kf5.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3013&#34; title=&#34;KWrite on KDE Frameworks 5&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/11/kwrite_on_kf5.png&#34; alt=&#34;&#34; width=&#34;769&#34; height=&#34;615&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/11/kwrite_on_kf5.png 769w, https://kate-editor.org/wp-content/uploads/2013/11/kwrite_on_kf5-300x239.png 300w&#34; sizes=&#34;(max-width: 769px) 100vw, 769px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I marked all places where I commented stuff out or did a hack with &amp;#8220;FIXME KF5&amp;#8221; in a comment or &amp;#8220;#if 0&amp;#8221; region. Help welcome, Kate application still to be ported ;) But please mark your &amp;#8220;hacks&amp;#8221; in the same fashion, otherwise, we will never find them again.&lt;/p&gt;
&lt;p&gt;To remember the history, the initial KatePart KDE 4 port happened more than 8 years ago, here a screenshots of that time (2005-05-15):&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/11/katetest-kde4-20050515-more.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3019&#34; title=&#34;KWrite on KDE 4 - Initial Port&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/11/katetest-kde4-20050515-more.png&#34; alt=&#34;&#34; width=&#34;856&#34; height=&#34;497&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/11/katetest-kde4-20050515-more.png 856w, https://kate-editor.org/wp-content/uploads/2013/11/katetest-kde4-20050515-more-300x174.png 300w&#34; sizes=&#34;(max-width: 856px) 100vw, 856px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I think the first KDE Frameworks 5 version looks a bit better. Thanks a lot for all the people getting both the kdelibs frameworks branch in such good shape and all the contributors to Qt 5.x!&lt;/p&gt;
&lt;p&gt;The Kate team will do its best to make the KDE Frameworks 5 version of Kate as popular &lt;a href=&#34;http://aseigo.blogspot.de/2013/11/kate-has-won.html&#34; target=&#34;_blank&#34;&gt;as the 4.x variant is&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>KDE Frameworks 5 &amp; Kate, let the fun begin :)</title><link>https://kate-editor.org/2013/11/19/kde-frameworks-5-kate-let-the-fun-begin/</link><pubDate>Tue, 19 Nov 2013 21:42:03 +0000</pubDate><guid>https://kate-editor.org/2013/11/19/kde-frameworks-5-kate-let-the-fun-begin/</guid><description>&lt;p&gt;After thinking some days about how to tackle the 4.x =&amp;gt; 5.x transition in Kate (KTextEditor/Part/Application) and the nice &amp;#8220;what we should do&amp;#8221; blog by Dominik, I think the time for fun is there.&lt;/p&gt;
&lt;p&gt;Therefore I started to port our stuff to KF5 in the &lt;a title=&#34;First commit to frameworks in kate.git&#34; href=&#34;http://quickgit.kde.org/?p=kate.git&amp;a=commit&amp;h=12beef19865de5decb4f3ef8099fea7f1407066c&#34; target=&#34;_blank&#34;&gt;&amp;#8220;frameworks&amp;#8221;&lt;/a&gt; branch.&lt;/p&gt;
&lt;p&gt;The basic idea would be: get it compiling and running.&lt;/p&gt;
&lt;p&gt;Then we can decide if the frameworks branch is a mere &amp;#8220;hack to see if it works&amp;#8221; experiment which can be later used to port master without a lot of work or if we say &amp;#8220;ok, works kind of well&amp;#8221; and we just switch development over for new features from master to frameworks and with that from 4.x to 5.x.&lt;/p&gt;
&lt;p&gt;The KTextEditor interfaces compile now, KatePart should be the next thing to tackle.  Then KWrite and Kate.&lt;/p&gt;
&lt;p&gt;Happy hacking ;)&lt;/p&gt;
&lt;p&gt;(To get a working KF5 development environment, just follow &lt;a title=&#34;KF5 Build Howto&#34; href=&#34;http://community.kde.org/Frameworks/Building&#34; target=&#34;_blank&#34;&gt;this howto&lt;/a&gt;.)&lt;/p&gt;</description></item><item><title>Kate on 5: The Future of KTextEditor and Kate Part</title><link>https://kate-editor.org/2013/11/11/kate-on-5-the-future-of-ktexteditor-and-kate-part/</link><pubDate>Mon, 11 Nov 2013 20:02:41 +0000</pubDate><guid>https://kate-editor.org/2013/11/11/kate-on-5-the-future-of-ktexteditor-and-kate-part/</guid><description>
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/11/modularization.png&#34;&gt;&lt;img class=&#34;alignright wp-image-2938&#34; title=&#34;KDE Frameworks 5 Modularization&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/11/modularization-270x300.png&#34; alt=&#34;&#34; width=&#34;146&#34; height=&#34;162&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/11/modularization-270x300.png 270w, https://kate-editor.org/wp-content/uploads/2013/11/modularization.png 584w&#34; sizes=&#34;(max-width: 146px) 100vw, 146px&#34; /&gt;&lt;/a&gt;Recently, there was a &lt;a title=&#34;KDE Frameworks 5&#34; href=&#34;http://dot.kde.org/2013/09/25/frameworks-5&#34; target=&#34;_blank&#34;&gt;dot story about Frameworks 5&lt;/a&gt;: Started in spring of 2011, the KDE software stack is undergoing a heavy split. The idea is to modularize the KDE libraries into lots of rather small units. Each unit has well-defined dependencies, depending on whether it&amp;#8217;s in the tier 1, tier 2, or tier 3 layer, and depending on whether it provides plain functionality, integration, or a solution. If you haven&amp;#8217;t yet, please read the article on the dot for a better understanding.&lt;/p&gt;
&lt;p&gt;With this modularization, the question arises about what will happen to the KTextEditor interfaces and its implementation Kate Part – and of course all the applications using Kate Part through the KTextEditor interfaces, namely Kate, KWrite, KDevelop, Kile, RKWard, and all the others&amp;#8230; The purpose of this blog is to give an answer to these questions, and to start a discussion to get feedback.&lt;/p&gt;
&lt;h3 id=&#34;a-bit-of-history-funny-read-here-2&#34;&gt;A Bit of History (&lt;a href=&#34;https://kate-editor.org/2010/08/15/kate-history/&#34; title=&#34;Kate&#39;s History&#34;&gt;Funny Read Here&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;Since not everyone is familiar with &amp;#8220;Kate &amp;amp; friends&amp;#8221; and its sources, let&amp;#8217;s have a quick look at its software architecture:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-2962&#34; title=&#34;Kate&#39;s Software Architecture&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/11/architecture.png&#34; alt=&#34;&#34; width=&#34;714&#34; height=&#34;274&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/11/architecture.png 714w, https://kate-editor.org/wp-content/uploads/2013/11/architecture-300x115.png 300w&#34; sizes=&#34;(max-width: 714px) 100vw, 714px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;From this figure, we can see that the software stack has 3 layers: the application layer, the interfaces layer and the backend layer. KTextEditor provides an interface to all functions of an advanced editor component: Documents, Views, etc. (&lt;a title=&#34;KTextEditor API Documentation&#34; href=&#34;http://api.kde.org/4.11-api/kdelibs-apidocs/interfaces/ktexteditor/html/kte_design.html&#34; target=&#34;_blank&#34;&gt;see also the API documentation&lt;/a&gt;). However, KTextEditor itself does not implement the functionality. So it&amp;#8217;s just a thin layer that is guaranteed to stay compatible for a long time (for the KDE 4 line, KTextEditor is compatible since  2007, so as of now 7 years). This compatibility, or better yet _interface continuity_ is required, since applications in the Application layer use the KTextEditor interfaces to embed a text editor component. The implementation of the text editor itself is completely hidden in Kate Part. Think of a backend library implementing all the KTextEditor interfaces. When an application queries KDE for a KTextEditor component, KDE loads a Kate Part behind the scenes and returns a pointer to the respective KTextEditor classes. This has the advantage, that Kate Part itself can be change without breaking any applications, as long as the interfaces stay the same. Now, with KDE Frameworks 5, this principle will not change. However, interfaces will undergo a huge cleanup, as will be explained now. As a consequence, all nodes that point to or from the KTextEditor node, namely Kate Part on the backend layer as well as applications, will need to adapt to these interfaces.&lt;/p&gt;
&lt;h3 id=&#34;milestone-1-ktexteditor-and-kate-part-on-5&#34;&gt;Milestone 1: KTextEditor and Kate Part on 5&lt;/h3&gt;
&lt;p&gt;KTextEditor will be a separate unit in the frameworks split. Therefore, the KTextEditor interfaces will not come bundled with one monolithic &amp;#8216;kdelibs&amp;#8217; as it was the case for that last 10 years. Instead, the KTextEditor interfaces are developed and provided in a separate git repository. This is already now the case: The KTextEditor interfaces exist as a copy in &lt;a title=&#34;Kate git repository&#34; href=&#34;https://projects.kde.org/projects/kde/applications/kate/repository&#34; target=&#34;_blank&#34;&gt;Kate&amp;#8217;s git repository&lt;/a&gt;, and relevant changes were merged into kdelibs/interfaces/ktexteditor in the KDE 4.x line. For &amp;#8220;KTextEditor on 5,&amp;#8221; the first milestone will be to get KTextEditor compile with the libraries and tools from the frameworks 5 branch. Along with this port, the KTextEditor interfaces have a lot of places that are annotated with &amp;#8220;KDE 5 todos.&amp;#8221; That is, the KTextEditor interfaces will undergo a huge cleanup, providing an even better API for developers than before.&lt;/p&gt;
&lt;p&gt;Currently, the KTextEditor and therewith also its implementation Kate Part use the KParts component model. The KParts model allows to easily embed Kate Part in other applications along with Kate Part&amp;#8217;s actions and menus. Further, Kate Part internally uses KIO to load and save files to support network transparent text editing. KParts itself and KIO are both Tier 3 solutions. This implies that KTextEditor along with its implementation Kate Part are a Tier 3 solution.&lt;/p&gt;
&lt;p&gt;In other words, a straight port and cleanup of KTextEditor and Kate Part will depend on a lot of high level frameworks. This solution will provide all the features the KTextEditor interfaces provides right now in the KDE SC 4.x line.&lt;/p&gt;
&lt;p&gt;Currently, we plan one major change in the KTextEditor on 5: We will remove KTextEditor plugins. Over the last 10 years, we got close to no contributions to the KTextEditor plugins. Existing KTextEditor plugins partly clash with code in Kate Part (for instance the Auto Brackets with the Autobrace plugin), and merging the plugin&amp;#8217;s xml gui into the KTextEditor::Views always requires some hacks to avoid flickering and make it work correctly. Besides, if the KTextEditor plugins are removed, for instance the Kate config dialog only shows one &amp;#8220;Plugins&amp;#8221; item instead of two. This is much cleaner to the user. Existing functionality, like for instance the &amp;#8220;Highlight Selected Text&amp;#8221; plugin, will be included into Kate Part directly. The same holds true for the HTML export feature. This is a bold change. So if you want to discuss this, please write to our mailing list &lt;a href=&#34;mailto:kwrite-devel@kde.org&#34; title=&#34;kwrite-devel@kde.org&#34;&gt;kwrite-devel@kde.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The time frame for the KTextEditor port &amp;amp; cleanup is rather short: We want to provide rather stable KTextEditor interfaces so that other applications can rely on it. Therefore, we will probably create a frameworks branch in the Kate git repository in December (&lt;a title=&#34;Ongoing Discussion about Kate on 5&#34; href=&#34;http://lists.kde.org/?t=138399875900002&amp;r=1&amp;w=4&#34; target=&#34;_blank&#34;&gt;current proposal on kwrite-devel&lt;/a&gt;). Binary and source incompatible changes will be allowed until other applications like KDevelop or Kile are ported to Frameworks 5. Then, the KTextEditor interfaces will again stay binary compatible for years.&lt;/p&gt;
&lt;h3 id=&#34;milestone-2-kwrite-and-kate-on-5&#34;&gt;Milestone 2: KWrite and Kate on 5&lt;/h3&gt;
&lt;p&gt;KWrite is just a thin wrapper around the KTextEditor interfaces and therewith Kate Part. Therefore, KWrite will mostly support just the same functionality as it provides now. The same holds true for Kate. However, Kate itself provides quite a lot of advanced features, for instance to have multiple main windows (View &amp;gt; New Window), or sessions, and a good plugin infrastructure. Of course, Kate itself will also undergo cleanups: i) cleanups due to changes in the KTextEditor interfaces, and ii) cleanups like for instance moving the &lt;a href=&#34;https://kate-editor.org/2012/11/02/using-the-projects-plugin-in-kate/&#34; title=&#34;Using the Projects Plugin&#34;&gt;Projects plugin&lt;/a&gt; Kate itself, making it more easily accessible to other plugins like the Search &amp;amp; Replace or Build plugin. We will also remove support for multiple main windows through &amp;#8220;View &amp;gt; New Window.&amp;#8221; This is due to the fact, that many Kate plugin developers were not aware of this feature, and therefore completely messing up their code by not separating the logic from the view, resulting in crashes or broken behavior when using multiple main windows. Removing the support for multiple main windows, we will loose this feature. However, we get simpler and more maintainable code.&lt;/p&gt;
&lt;p&gt;There are other small details that will change. For instance, as it looks right now, the Python pate host plugin in Kate on 5 will only support Python 3 (&lt;a title=&#34;Python plugins in Kate&#34; href=&#34;http://lists.kde.org/?t=138408441700001&amp;r=1&amp;w=2&#34; target=&#34;_blank&#34;&gt;current discussion on kwrite-devel&lt;/a&gt;). Python developers, you are welcome to contribute here, as always! :-)&lt;/p&gt;
&lt;h3 id=&#34;milestone-3-more-modularization-in-the-ktexteditor-interfaces&#34;&gt;Milestone 3: More Modularization in the KTextEditor Interfaces?&lt;/h3&gt;
&lt;p&gt;Milestone 1 &amp;amp; milestone 2 will happen rather sooner than later (fixed dates will follow once we&amp;#8217;re sure we can satisfy them). Since the transition to Frameworks 5 allows us to change KTextEditor interfaces, it is the right time to think how we can improve the KTextEditor interfaces and its implementation Kate Part even further. For instance, on the mailing list, the idea was raised to make the KParts model optional. This could be achieved for instance by deriving KTextEditor::Document from QObject directly, and create a thin KParts wrapper, say KTextEditor::DocumentPart that wraps KTextEditor::Document. This would be a major change, though, and possibly require a lot of changes in applications using the KTextEditor interfaces. As of now, it is unclear whether such a solution is feasible.&lt;/p&gt;
&lt;p&gt;Another idea was raised at this year&amp;#8217;s &lt;a title=&#34;Akademy 2013&#34; href=&#34;http://akademy2013.kde.org/&#34; target=&#34;_blank&#34;&gt;Akademy in Bilbao&lt;/a&gt;: Split Kate Part&amp;#8217;s highlighting into a separate library. This way, other applications could use the Kate Part&amp;#8217;s highlighting system. Think of a command line tool to create highlighted html pages, or a syntax highlighter for QTextEdits. The highlighting engine right now is mostly internal to Kate Part, so such a split could happen also later after the initial release of KTextEditor on 5.&lt;/p&gt;
&lt;h3 id=&#34;join-us&#34;&gt;Join Us!&lt;/h3&gt;
&lt;p&gt;The Kate text editor only exists thanks to all its contributors. Moving to frameworks, it is the perfect time to follow and contribute to the development of Kate. In fact, you can learn a lot (!) in contributing. In case you are interested, have ideas or want to discuss with us, please join our mailing list &lt;a href=&#34;mailto:kwrite-devel@kde.org&#34; title=&#34;Kate Mailing List&#34;&gt;kwrite-devel@kde.org&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Animated Bracket Matching in Kate Part</title><link>https://kate-editor.org/2013/11/06/animated-bracket-matching-in-kate-part/</link><pubDate>Wed, 06 Nov 2013 15:20:43 +0000</pubDate><guid>https://kate-editor.org/2013/11/06/animated-bracket-matching-in-kate-part/</guid><description>&lt;p&gt;Kate in 4.13 will have a new features: &lt;strong&gt;Animated bracket matching!&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
&lt;img class=&#34;alignnone size-full wp-image-2924&#34; title=&#34;Animated Bracket Matching: Light color scheme&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/11/lightcs.gif&#34; alt=&#34;&#34; width=&#34;350&#34; height=&#34;100&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/11/lightcs.gif 350w, https://kate-editor.org/wp-content/uploads/2013/11/lightcs-300x85.gif 300w&#34; sizes=&#34;(max-width: 350px) 100vw, 350px&#34; /&gt;&lt;br /&gt; &lt;img class=&#34;alignnone size-full wp-image-2925&#34; title=&#34;Animated Bracket Matching: Dark color scheme&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/11/darkcs.gif&#34; alt=&#34;&#34; width=&#34;350&#34; height=&#34;100&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/11/darkcs.gif 350w, https://kate-editor.org/wp-content/uploads/2013/11/darkcs-300x85.gif 300w&#34; sizes=&#34;(max-width: 350px) 100vw, 350px&#34; /&gt;
&lt;/p&gt;
&lt;p&gt;Since the feature might be visually distracting, it is turned off by default. To enable this feature, you have to go into the &amp;#8220;Appearance&amp;#8221; config page and check &amp;#8220;[x] Animate bracket matching.&amp;#8221; Due to feature and message freeze, this feature will be available in 4.13 and not in 4.12.&lt;/p&gt;
&lt;p&gt;By the way, over the years we were asked several times to add the feature to jump to the matching bracket. This feature already exists. It is called &amp;#8220;Move to Matching Bracket&amp;#8221; and is bound by default to the shortcut &amp;#8220;Ctrl+6&amp;#8221;. You can change the shortcut in the &amp;#8220;Configure Shortcuts&amp;#8221; dialog.&lt;/p&gt;</description></item><item><title>Kate XML Completion: Converting DTD to MetaDTD</title><link>https://kate-editor.org/2013/10/26/kate-xml-completion-converting-dtd-to-metadtd/</link><pubDate>Sat, 26 Oct 2013 11:36:47 +0000</pubDate><guid>https://kate-editor.org/2013/10/26/kate-xml-completion-converting-dtd-to-metadtd/</guid><description>
&lt;p&gt;Kate has this nifty little plugin called &amp;#8220;&lt;a title=&#34;Kate XML Completion Plugin&#34; href=&#34;http://docs.kde.org/development/en/applications/kate/kate-application-plugin-xmltools.html&#34; target=&#34;_blank&#34;&gt;XML Completion&lt;/a&gt;.&amp;#8221; This plugin loads a Meta DTD file and uses this information for context sensitive completion. To use it, you first have to load it in the settings dialog, and then assign a Meta DTD through the XML menu:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;size-full wp-image-2904 aligncenter&#34; title=&#34;Kate XML Completion: Assign Meta DTD&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/10/assign-dtd.png&#34; alt=&#34;&#34; width=&#34;511&#34; height=&#34;178&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/10/assign-dtd.png 511w, https://kate-editor.org/wp-content/uploads/2013/10/assign-dtd-300x104.png 300w&#34; sizes=&#34;(max-width: 511px) 100vw, 511px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;In our example, we work on a Kate XML highlighting definition file and therefore loaded the file &amp;#8220;language.dtd.xml&amp;#8221; which is shipped with Kate. Having assigned a Meta DTD file, we now have these nice code hints:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-2905&#34; title=&#34;Kate XML Completion in Action&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/10/xml-completion.png&#34; alt=&#34;&#34; width=&#34;574&#34; height=&#34;251&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/10/xml-completion.png 574w, https://kate-editor.org/wp-content/uploads/2013/10/xml-completion-300x131.png 300w&#34; sizes=&#34;(max-width: 574px) 100vw, 574px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Kate ships with several Meta DTD files, such as HTML4 (strict, loose) or XHTML 1.0 transitional, KConfigXT DTD, KPartsGUI or XSLT. While this is really cool, you may ask about arbitrary DTDs you may be using. Unfortunately, Kate only supports Meta DTD, so what now?&lt;/p&gt;
&lt;h3 id=&#34;installing-dtdparser&#34;&gt;Installing dtdparser&lt;/h3&gt;
&lt;p&gt;Luckily, the tool &lt;a title=&#34;DTDParse&#34; href=&#34;http://nwalsh.com/perl/dtdparse/index.html&#34; target=&#34;_blank&#34;&gt;dtdparser&lt;/a&gt; (&lt;a title=&#34;DTD Parser on Sourceforge&#34; href=&#34;http://sourceforge.net/projects/dtdparse/&#34; target=&#34;_blank&#34;&gt;on sourceforge&lt;/a&gt;) converts a DTD to Meta DTD. We first need to install dtdparse. Since openSUSE does not provide a package (what about other distros?), I downloaded &lt;a title=&#34;dtdparse download&#34; href=&#34;http://sourceforge.net/projects/dtdparse/files/latest/download?source=dlp&#34; target=&#34;_blank&#34;&gt;SGML-DTDParse-2.00.zip&lt;/a&gt;, extracted it and ran (see README file)&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;perl Makefile.PL&lt;/pre&gt;
&lt;p&gt;Make sure there are no missing perl dependencies. I for instance had to install perl-Text-DelimMatch and perl-XML-DOM:&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;sudo zypper install perl-Text-DelimMatch perl-XML-DOM&lt;/pre&gt;
&lt;p&gt;Then continue with the build and install process (the result of make test should be PASS):&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;make
make test
sudo make install&lt;span style=&#34;font-family: Georgia, &#39;Times New Roman&#39;, &#39;Bitstream Charter&#39;, Times, serif; font-size: 13px; line-height: 19px;&#34;&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Now we successfully installed dtdparse on the system. So we are finally ready to convert DTDs.&lt;/p&gt;
&lt;h3 id=&#34;converting-dtd-to-meta-dtd-with-dtdparser&#34;&gt;Converting DTD to Meta DTD with dtdparser&lt;/h3&gt;
&lt;p&gt;Having installed dtdparser, it is as easy as calling&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;dtdparse file.dtd &amp;gt; file.dtd.xml&lt;/pre&gt;
&lt;p&gt;to convert a DTD to Meta DTD. The conversion should work out of the box. If you want, you can edit the generated .xml file, for instance the &amp;#8220;title&amp;#8221; attribute is always set to &amp;#8220;?untitled?&amp;#8221;. While this is not used by the XML Completion plugin (yet?), it&amp;#8217;s still nicer to have it properly fixed.&lt;/p&gt;
&lt;h3 id=&#34;contributing-meta-dtds-to-kate&#34;&gt;Contributing Meta DTDs to Kate&lt;/h3&gt;
&lt;p&gt;Whenever you have a DTD that is of use also for other users, please send the generated Meta DTD to &lt;a href=&#34;mailto:kwrite-devel@kde.org&#34; title=&#34;Mail To kwrite-devel@kde.org&#34;&gt;kwrite-devel@kde.org&lt;/a&gt; (our &lt;a title=&#34;Kate Mailing List&#34; href=&#34;https://mail.kde.org/mailman/listinfo/kwrite-devel&#34; target=&#34;_blank&#34;&gt;mailing list&lt;/a&gt;). Further, it would be really cool if someone added support to convert DTDs on the fly to Meta DTD, so the Kate XML Completion plugin would just work for DTDs as well. Any takers?&lt;/p&gt;
&lt;h3 id=&#34;call-at-distribution-packagers&#34;&gt;Call at Distribution Packagers&lt;/h3&gt;
&lt;p&gt;Please consider including dtdparser by default, as it seems to be a very useful too. Are there alternatives to convert DTD to Meta DTD?&lt;/p&gt;</description></item><item><title>Video Tutorials Learning C&#43;&#43; (in German)</title><link>https://kate-editor.org/2013/10/23/video-tutorials-learning-c-in-german/</link><pubDate>Wed, 23 Oct 2013 13:39:43 +0000</pubDate><guid>https://kate-editor.org/2013/10/23/video-tutorials-learning-c-in-german/</guid><description>&lt;p&gt;I just stumbled over a really good &lt;a title=&#34;Learning C++ (German)&#34; href=&#34;http://www.youtube.com/watch?v=nFM0SuPSxnc&amp;list=PLfthkO_8dYCqARBKnZQm6Ck614Td9Vmz7&#34; target=&#34;_blank&#34;&gt;tutorial on youtube&lt;/a&gt; that teaches C++ from the very beginning (in German). The tutorial is split into lots of small episodes, each about 10 to 15 minutes. The quality of these tutorials is very good in terms of video, voice and also contents. Subject is mostly &amp;#8220;pure&amp;#8221; C++ and later a bit of Qt is used, so it does not cover C nor lots of additional libraries. Still, if you want to understand the details, you might want to give it a try :-)&lt;/p&gt;
&lt;p&gt;PS: The tutorials use Kate Part, just look at the code folding bar on the left. So &lt;a title=&#34;Author&#34; href=&#34;http://bytesnobjects.dev.geekbetrieb.de/kontakt&#34; target=&#34;_blank&#34;&gt;the author&lt;/a&gt; is definitely doing something right :-p&lt;/p&gt;</description></item><item><title>Multiple Keyboard Layouts and Shortcuts</title><link>https://kate-editor.org/2013/10/07/multiple-keyboard-layouts-and-shortcuts/</link><pubDate>Mon, 07 Oct 2013 16:21:47 +0000</pubDate><guid>https://kate-editor.org/2013/10/07/multiple-keyboard-layouts-and-shortcuts/</guid><description>
&lt;p&gt;KDE has a very handy feature to switch keyboard layouts on the fly. This is for instance useful if you use the German keyboard layout by default, and the US layout for programming. To enable keyboard layout switching, go into System Settings &amp;gt; Input Devices (category Hardware) &amp;gt; Keyboard item &amp;gt; Layouts tab:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-2879&#34; title=&#34;Keyboard Layout Settings&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/10/keyboard-layouts.png&#34; alt=&#34;&#34; width=&#34;741&#34; height=&#34;620&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/10/keyboard-layouts.png 741w, https://kate-editor.org/wp-content/uploads/2013/10/keyboard-layouts-300x251.png 300w&#34; sizes=&#34;(max-width: 741px) 100vw, 741px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Here, &amp;#8216;&lt;strong&gt;[x] Configure layouts&lt;/strong&gt;&amp;#8216; is checked, enabling the list view. I added the German keyboard layout, and then the English (US) layout. Notice also, that the shortcut is set to &amp;#8216;&lt;strong&gt;Ctrl+Alt+K&lt;/strong&gt;&amp;#8216;. Clicking apply, a tiny little indicator appears in the panel:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/10/keyboard-layout-panel.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-2880&#34; title=&#34;Switching Keyboard Layouts in the Panel&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/10/keyboard-layout-panel.png&#34; alt=&#34;&#34; width=&#34;303&#34; height=&#34;108&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/10/keyboard-layout-panel.png 303w, https://kate-editor.org/wp-content/uploads/2013/10/keyboard-layout-panel-300x106.png 300w&#34; sizes=&#34;(max-width: 303px) 100vw, 303px&#34; /&gt;&lt;/a&gt; You now can quickly switch with Ctrl+Alt+K between the German and the US layout. Quite efficient, especially since the keyboard layout config page allows to switch the language on application basis.&lt;/p&gt;
&lt;h3 id=&#34;unchanged-keyboard-shortcuts&#34;&gt;Unchanged Keyboard Shortcuts&lt;/h3&gt;
&lt;p&gt;Switching the keyboard layout has one potential issue, though: The shortcuts remain unchanged. So if undo is mapped to &lt;em&gt;Ctrl+z&lt;/em&gt; in the German layout, it is still mapped to &lt;em&gt;Ctrl+z&lt;/em&gt; in the US layout. Note that by &amp;#8216;z&amp;#8217; we refer to the hardware key on the keyboard. As a consequence, in the US layout, hitting the hardware key &amp;#8216;y&amp;#8217; on the German keyboard inserts the character &amp;#8216;z&amp;#8217;, but the z in &lt;em&gt;Ctrl+z&lt;/em&gt; is still on the hardware key &amp;#8216;z&amp;#8217;. This behavior may or may not be wanted.&lt;/p&gt;
&lt;p&gt;Getting more into detail reveals that the order of the keyboard layouts in the first screen shot is of importance: If you first add the German &amp;#8216;&lt;em&gt;de&lt;/em&gt;&amp;#8216; layout, and then the English &amp;#8216;&lt;em&gt;us&lt;/em&gt;&amp;#8216; layout, then the shortcuts will always use the Germany keyboard layout, independent of what keyboard layout is chosen.&lt;/p&gt;
&lt;p&gt;Reversely, if you first add the English &amp;#8216;us&amp;#8217; layout, and then the German &amp;#8216;&lt;em&gt;de&lt;/em&gt;&amp;#8216; layout, then the shortcuts will always use the English &amp;#8216;&lt;em&gt;us&lt;/em&gt;&amp;#8216; keyboard layout.&lt;/p&gt;
&lt;p&gt;So it seems that the order defines a priority, and the shortcuts always use the first entry in the list.&lt;/p&gt;
&lt;p&gt;The correct solution to fix this would (in my humble opinion) be to add an option &amp;#8216;&lt;strong&gt;[x] Shorcuts follow keyboard layout&lt;/strong&gt;&amp;#8216; or similar. But since this option does not exist, let&amp;#8217;s do a quick hack to still get what we want here.&lt;/p&gt;
&lt;h3 id=&#34;a-workaround&#34;&gt;A Workaround&lt;/h3&gt;
&lt;p&gt;First we reset the shortcut in the settings of the keyboard layout options:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-2881&#34; title=&#34;Reset Keyboard Shortcut to Switch Keyboard Layouts&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/10/keyboard-layout-no-shortcut.png&#34; alt=&#34;&#34; width=&#34;266&#34; height=&#34;172&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Click apply and close the dialog. Now, the shortcut &amp;#8216;&lt;strong&gt;Ctrl+Alt+K&lt;/strong&gt;&amp;#8216; is unbound. Our idea is now to create a script that toggles the keyboard layout by calling &lt;strong&gt;setxkbmap&lt;/strong&gt; with the appropriate parameters and bind this script via a global shortcut to &amp;#8216;&lt;strong&gt;Ctrl+Alt+K&lt;/strong&gt;&amp;#8216;.&lt;/p&gt;
&lt;p&gt;To this end, we first have to create the script. So let&amp;#8217;s first type `&lt;strong&gt;setxkbmap -query&lt;/strong&gt;` in the console and check the output. For me, this results in:&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;$ setxkbmap -query
rules: evdev
model: pc101
layout: de,us
variant: nodeadkeys,&lt;/pre&gt;
&lt;p&gt;From this, we can follow that the current xkb layout is achieved with:&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;setxkbmap -model pc101 -layout de,us -variant nodeadkeys&lt;/pre&gt;
&lt;p&gt;Now, let&amp;#8217;s switch the &lt;strong&gt;de,us&lt;/strong&gt; to &lt;strong&gt;us,de&lt;/strong&gt; and try the following:&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;setxkbmap -model pc101 -layout us,de -variant nodeadkeys&lt;/pre&gt;
&lt;p&gt;Notice, that the keyboard layout indicator in the panel switched to &amp;#8216;&lt;strong&gt;us&lt;/strong&gt;&amp;#8216;. Calling the first variant with &lt;strong&gt;de,us&lt;/strong&gt; again, we get back to the German layout.&lt;/p&gt;
&lt;p&gt;This discovery leads us to the following script &lt;strong&gt;switch-keyboard-layout.sh&lt;/strong&gt;:&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;#!/bin/sh
# query xkb map: us,de -&amp;gt; us is primary; de,us -&amp;gt; de is primary
dummy=`setxkbmap -query | grep us,de`
# return value 0: us,de; return value != 0, de,us
if [ $? -ne 0 ]; then
# de is primary, now make us primary in list
setxkbmap -model pc101 -layout us,de -variant nodeadkeys
else
# us is primary, now make de primary in list
setxkbmap -model pc101 -layout de,us -variant nodeadkeys
fi&lt;/pre&gt;
&lt;p&gt;Save this script somewhere to &lt;strong&gt;switch-keyboard-layout.sh&lt;/strong&gt; and make it executable with&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;chmod 755 switch-keyboard-layout.sh&lt;/pre&gt;
&lt;p&gt;Each time we execute this script, the keyboard layout is toggled.&lt;/p&gt;
&lt;p&gt;Next, we go into System Settings again and navigate to Shortcuts and Gestures (Common Appearance and Behavior), there in the Custom Shortcuts we add a new Command/URL item named &amp;#8216;SwitchKeyboardLayout&amp;#8217; as follows:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-2885&#34; title=&#34;Create global shortcut to switch Keyboard Layout&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/10/global-shortcut.png&#34; alt=&#34;&#34; width=&#34;663&#34; height=&#34;426&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/10/global-shortcut.png 663w, https://kate-editor.org/wp-content/uploads/2013/10/global-shortcut-300x192.png 300w&#34; sizes=&#34;(max-width: 663px) 100vw, 663px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;As a comment for this new item, we write &amp;#8216;&lt;strong&gt;Switch Keyboard Layout&lt;/strong&gt;&amp;#8216;, in the &amp;#8216;&lt;strong&gt;Trigger&lt;/strong&gt;&amp;#8216; tab, bind the global shortcut to &amp;#8216;&lt;strong&gt;Ctrl+Alt+K&lt;/strong&gt;&amp;#8216;, and in the &amp;#8216;&lt;strong&gt;Action&lt;/strong&gt;&amp;#8216; tab, choose the &lt;strong&gt;switch-keyboard-layout.sh&lt;/strong&gt; script. Finally click &lt;strong&gt;Apply&lt;/strong&gt;, and close the dialog.&lt;/p&gt;
&lt;p&gt;Now, hitting Ctrl+Alt+K calls our script and correctly toggles the keyboard layout &lt;em&gt;including&lt;/em&gt; the shortcuts.&lt;/p&gt;
&lt;p&gt;Unfortunately, this approach does not support e.g. switching the keyboard layout on application basis as the switching policy of the Keyboard settings (first screen shot) allows. Still it works.&lt;/p&gt;
&lt;p&gt;A final remark, though: For GTK applications this works out of the box. So is there any real reason why this is not the case for KDE / Qt applications? A real fix would be very much appreciated, I&amp;#8217;d be also fine with an option. But not providing this feature at all is very thin ice&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: This issue was reported as KDE &lt;a title=&#34; Shortcuts ignore keyboard layout&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=197552&#34; target=&#34;_blank&#34;&gt;bug #197552&lt;/a&gt; in 2009, and resolved as an upstream issue. However, it never was reported to Qt upstream. If I may say so, this is not how resolving bugs in KDE usually works. Grrr&amp;#8230;&lt;/p&gt;</description></item><item><title>Multi-Line Text Editing in Kate</title><link>https://kate-editor.org/2013/09/09/multi-line-text-editing-in-kate/</link><pubDate>Mon, 09 Sep 2013 20:51:04 +0000</pubDate><guid>https://kate-editor.org/2013/09/09/multi-line-text-editing-in-kate/</guid><description>&lt;p&gt;Right after the &lt;a href=&#34;https://kate-editor.org/2013/09/06/kate-vim-progress/&#34; title=&#34;Vim Features&#34;&gt;vim blog&lt;/a&gt; and the &amp;#8216;&lt;a href=&#34;https://kate-editor.org/2013/09/09/kate-in-4-11/&#34; title=&#34;Kate in 4.11&#34;&gt;what&amp;#8217;s new in 4.11&lt;/a&gt;&amp;#8216; blog we have another feature that was &lt;a title=&#34;Multi-line editing in block selection mode&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=211251&#34; target=&#34;_blank&#34;&gt;long requested&lt;/a&gt; and finally is available in 4.12: Multi-line editing in block selection mode.&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-2869&#34; title=&#34;Multiline Text Editing in Kate (KDE SC 4.12)&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/09/multiline-editing.gif&#34; alt=&#34;&#34; width=&#34;470&#34; height=&#34;220&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/09/multiline-editing.gif 470w, https://kate-editor.org/wp-content/uploads/2013/09/multiline-editing-300x140.gif 300w&#34; sizes=&#34;(max-width: 470px) 100vw, 470px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Needless to say that it also supports undo/redo and pasting text. Kudos go to Andrey Matveyakin for implementing it!&lt;/p&gt;</description></item><item><title>Kate in 4.11</title><link>https://kate-editor.org/2013/09/09/kate-in-4-11/</link><pubDate>Mon, 09 Sep 2013 10:06:26 +0000</pubDate><guid>https://kate-editor.org/2013/09/09/kate-in-4-11/</guid><description>
&lt;p&gt;Another release cycle gone, and the &lt;a title=&#34;KDE SC 4.11&#34; href=&#34;http://kde.org/announcements/4.11/&#34; target=&#34;_blank&#34;&gt;KDE Software Compilation 4.11&lt;/a&gt; is out in the open (well, for quite some time already), and with that it is time to talk about what changed in Kate the last half year since the &lt;a href=&#34;https://kate-editor.org/2013/01/06/kate-in-kde-4-10/&#34; title=&#34;Kate in KDE 4.10&#34;&gt;4.10 release&lt;/a&gt;. Besides the usual bug fixing (&lt;a title=&#34;Kate Bug Fixes since KDE 4.10&#34; href=&#34;https://bugs.kde.org/buglist.cgi?list_id=750185&amp;resolution=FIXED&amp;resolution=WORKSFORME&amp;resolution=UPSTREAM&amp;resolution=DOWNSTREAM&amp;query_format=advanced&amp;bug_status=RESOLVED&amp;bug_status=CLOSED&amp;longdesc=4.11&amp;longdesc_type=allwordssubstr&amp;product=kate&#34; target=&#34;_blank&#34;&gt;~50 bugs&lt;/a&gt; since 4.10), the following sections present some major improvements and features of Kate in 4.11.&lt;/p&gt;
&lt;h3 id=&#34;python-plugins&#34;&gt;Python Plugins&lt;/h3&gt;
&lt;p&gt;Since KDE 4.10, Kate features the Python »Pâté« plugin. This plugin basically wraps the API of all Kate application interfaces. Therewith, together with the Python KDE (PyKDE) bindings you can develop full-featured Kate plugins in Python. Being relatively new, there are quite some Python plugins available already now (see &lt;a href=&#34;https://kate-editor.org/2013/05/31/a-rich-python-console-and-more-in-kate-editor/&#34; title=&#34;Python plugins&#34;&gt;this blog&lt;/a&gt;, &lt;a href=&#34;https://kate-editor.org/2013/02/18/new-plugins-to-the-kate-utils-to-python-javascript-django-and-xml/&#34; title=&#34;Python plugins&#34;&gt;this blog&lt;/a&gt;, or &lt;a href=&#34;https://kate-editor.org/2012/12/02/python-plugin-gets-support-for-python3/&#34; title=&#34;Python3 support&#34;&gt;this blog&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;@Python community: You can interpret this as an invitation for writing lots of cool addons for the Kate text editor in python. All contributions are usually &lt;a href=&#34;https://kate-editor.org/join-us/&#34; title=&#34;Join Us&#34;&gt;very much welcome&lt;/a&gt;!&lt;/p&gt;
&lt;h3 id=&#34;vi-input-mode&#34;&gt;Vi Input Mode&lt;/h3&gt;
&lt;p&gt;Enabling the &lt;a href=&#34;https://kate-editor.org/kate-vi-mode/&#34; title=&#34;Kate vi input mode&#34;&gt;vi input mode&lt;/a&gt; turns Kate into a full-fleged vim compatible editor: modal editing exactly like in vim. This mode is especially suited for vim users who want a fully KDE integrated text editor with all the beloved vim features. Started as GSoC project in 2010, the vi input mode evolved over the years to become a very mature alternative to vim itself. However, there is always room for improvements. The good news is, that Kate Part&amp;#8217;s vi input mode gained a lot of attention thanks to Simon, mostly in the form of small &lt;a href=&#34;https://kate-editor.org/2013/03/16/kate-vim-mode-papercuts-bonus-emscripten-qt-stuff&#34;&gt;&amp;#8220;papercuts&amp;#8221;&lt;/a&gt; that fixed small bugs and annoyances and made behaviour more compatible with Vim, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yank highlighting, which helps you to see what text you just yanked;&lt;img class=&#34;aligncenter&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/09/kateyankhighlight.gif&#34; alt=&#34;&#34; /&gt;&lt;/li&gt;
&lt;li&gt;&amp;#8220;Yank to clipboard&amp;#8221; (courtesy of Fabian Kosmale!);&lt;/li&gt;
&lt;li&gt;The &amp;#8220;last edit&amp;#8221; markers, &amp;#8220;.&amp;#8221;, &amp;#8220;[&amp;#8221; and &amp;#8220;]&amp;#8221;;&lt;/li&gt;
&lt;li&gt;Recursive vs non-recursive mappings, for if you want to e.g. map &amp;#8220;j&amp;#8221; to &amp;#8220;gj&amp;#8221; &amp;#8230;&lt;/li&gt;
&lt;li&gt;&amp;#8230; plus plenty of fixes to gj and gk;&lt;/li&gt;
&lt;li&gt;and countless other small tweaks to things like the &amp;#8220;inner block&amp;#8221; text object; cursor position after paste; fixes to ctrl-a/x (add to/ subtract from number under cursor); making more motions available in Visual Mode and more motions counted, etc!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One fairly major change is the introduction of an experimental Emulated Vim Command Bar. This, as you will probably have guessed, is a replacement for the current Search dialog that behaves more like Vim&amp;#8217;s, allowing one to e.g. insert the contents of registers via ctrl-r; dismiss via ctrl-c/ ctrl-[ as well as ESC; work properly with both forward (&amp;#8220;/&amp;#8221;) and backward (&amp;#8220;?&amp;#8221;) incremental searches; use smart case for case-sensitivity; allow the use of Vim-style regex&amp;#8217;s etc. As an extension to Vim, I&amp;#8217;ve also added the ability to auto-complete words from the document via ctrl-space: not that useful for searching, but very useful for when you want to do a search+replace command (command mode (&amp;#8220;:&amp;#8221;) did not make it into 4.11, alas).&lt;br /&gt;
&lt;img class=&#34;aligncenter&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/09/katevimsearch.gif&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;In 4.11, it is disabled by default as it is not yet ready for primetime, but may be enabled by setting the hidden config option &amp;#8220;Vi Input Mode Emulate Command Bar&amp;#8221; to &amp;#8220;true&amp;#8221;. It is much more powerful and featureful in current master (see the blog &lt;a href=&#34;https://kate-editor.org/2013/09/06/kate-vim-progress/&#34;&gt;here!&lt;/a&gt;) and will likely be the default in 4.12.&lt;/p&gt;
&lt;h3 id=&#34;new-text-folding&#34;&gt;New Text Folding&lt;/h3&gt;
&lt;p&gt;Back in &lt;a href=&#34;https://kate-editor.org/2011/12/21/kate-in-kde-4-8/&#34; title=&#34;Kate in KDE 4.8&#34;&gt;KDE SC 4.8&lt;/a&gt;, Kate got a new code folding implementation as part of the yearly GSoC project. Compared to the previous implementation, the amount of bugs indeed reduced, but during the 4.9 and 4.10 release it became apparent, that the code folding was still not where it should be. Maybe writing a good code folding implementation was also a bit too much in terms of a newby developer in a GSoC project.&lt;/p&gt;
&lt;p&gt;So Christoph sat down and wrote it completely new from scratch, this time &lt;a href=&#34;https://kate-editor.org/2013/03/24/text-folding-reloaded/&#34; title=&#34;Kate Text Folding&#34;&gt;very clean&lt;/a&gt; and &lt;a href=&#34;https://kate-editor.org/2013/03/27/new-text-folding-in-kate-git-master/&#34; title=&#34;Kate Text Folding&#34;&gt;simple&lt;/a&gt;. And as a new feature, the text folding is now per view, so the folded parts can be different in each view of a document. And as another feature for those who do not use text folding at all: Not using text folding means you have zero overhead, no matter how large the file. Besides that, code folding in Python works now better than ever before, in fact, it should be bug-free.&lt;/p&gt;
&lt;h3 id=&#34;passive-notifications-ktexteditor-interfaces&#34;&gt;Passive Notifications &amp;amp; KTextEditor Interfaces&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/2012/11/06/passive-notifications-in-kate-part/&#34; title=&#34;Introducing passive notifications&#34;&gt;Passive notifications&lt;/a&gt; are meant to provide a non-intrusive way showing notifications (replacing &lt;a title=&#34;KPassivePopup API documentation&#34; href=&#34;http://api.kde.org/4.10-api/kdelibs-apidocs/kdeui/html/classKPassivePopup.html&#34; target=&#34;_blank&#34;&gt;KPassivePopup&lt;/a&gt;). Used e.g. by the &lt;a title=&#34;Data Recovery in KDE 4.10&#34; href=&#34;https://kate-editor.org/2012/10/25/data-recovery-in-4-10/&#34; target=&#34;_blank&#34;&gt;data recovery&lt;/a&gt;, these notifications were also introduced for the &lt;a href=&#34;https://kate-editor.org/2013/04/02/kate-search-replace-highlighting-in-kde-4-11/&#34; title=&#34;Search &amp;amp; replace in KDE 4.11&#34;&gt;search &amp;amp; replace feature&lt;/a&gt; (most of this is already available in KDE SC 4.10.3). In KDE SC 4.11, the interface for showing these passive notifications got officially included into the &lt;a title=&#34;KTextEditor::MessageInterface&#34; href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1MessageInterface.html&#34; target=&#34;_blank&#34;&gt;KTextEditor interfaces&lt;/a&gt;, meaning that applications like Kile or KDevelop can show notifications as well. (Issues in KDE 4.11.0 should be fixed for 4.11.1).&lt;/p&gt;
&lt;p&gt;Next to the KTextEditor::MessageInterface, Kate has a so-called &lt;a title=&#34;KTextEditor::TextHintInterface&#34; href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1TextHintInterface.html&#34; target=&#34;_blank&#34;&gt;TextHintInterface&lt;/a&gt; since year 2003, but it seems its implementation never got finished. For 4.11, Sven Brauch stepped up and finally fixed the &lt;a title=&#34;TextHintInterface&#34; href=&#34;http://commits.kde.org/kate/93da1d1d18ea594be9fdb42a9789247de0f18397&#34; target=&#34;_blank&#34;&gt;text hint interface&lt;/a&gt;. So showing &lt;a title=&#34;TextHintInterface in action&#34; href=&#34;http://scummos.blogspot.de/2013/08/gsoc-collaborative-text-editing-in-kate.html&#34; target=&#34;_blank&#34;&gt;tool tips for text under the mouse&lt;/a&gt; (section Text tooltips) is as easy as it was never before:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;size-full wp-image-2690 aligncenter&#34; title=&#34;KTextEditor::TextHintInterface showing a tool tip&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/08/tooltips.png&#34; alt=&#34;&#34; width=&#34;393&#34; height=&#34;137&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/08/tooltips.png 393w, https://kate-editor.org/wp-content/uploads/2013/08/tooltips-300x104.png 300w&#34; sizes=&#34;(max-width: 393px) 100vw, 393px&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;saving-files&#34;&gt;Saving Files&lt;/h3&gt;
&lt;p&gt;When saving files, Kate uses the class &lt;a title=&#34;KSaveFile&#34; href=&#34;http://api.kde.org/4.11-api/kdelibs-apidocs/kdecore/html/classKSaveFile.html&#34; target=&#34;_blank&#34;&gt;KSaveFile&lt;/a&gt; (in Qt5 available as QSaveFile thanks to David Faure). In short, to avoid data loss, KSaveFile saves the file to a temporary file in the same directory as the target file, and on successful write finally moves the temporary file to the target filename. If the folder of the file does not allow creating new files, KSaveFile automatically falls back to writing the file directly. In this case, data loss could happen if e.g. the system crashes in this moment, but saving the file would otherwise be not possible at all.&lt;/p&gt;
&lt;h3 id=&#34;what-comes-next&#34;&gt;What Comes Next?&lt;/h3&gt;
&lt;p&gt;Announced just a few days ago, the KDE community prepares for &lt;a title=&#34;KDE Release Plan&#34; href=&#34;http://dot.kde.org/2013/09/04/kde-release-structure-evolves&#34; target=&#34;_blank&#34;&gt;KDE Frameworks 5 and much more&lt;/a&gt;: The KDE libraries and the KDE Plasma Workspace are now in long term support mode, meaning that bugs will get fixed for another two years. That means that the KTextEditor interfaces are frozen as well, there will not be any feature updates at all in the KTextEditor interfaces itself. Since Kate Part and the Kate Application are developed outside of kdelibs, Kate Part and Kate will most certainly see another feature release. Especially, since there are already a lot of improvements for the &lt;a href=&#34;https://kate-editor.org/?p=2727&#34; title=&#34;Vi Input Mode in KDE SC 4.12&#34;&gt;vi input mode in the pipe&lt;/a&gt; for Kate in KDE SC 4.12.&lt;/p&gt;
&lt;p&gt;After that, we plan to port Kate to Qt5 and the new frameworks 5 libraries. We already added a lot of &amp;#8220;KDE 5&amp;#8221; todo-markers to the Kate source code, meaning that we will probably work on a 5 port rather sooner than later. We will address this schedule in a separate post later this year, so stay tuned!&lt;/p&gt;</description></item><item><title>Kate Vim Progress</title><link>https://kate-editor.org/2013/09/06/kate-vim-progress/</link><pubDate>Fri, 06 Sep 2013 15:13:50 +0000</pubDate><guid>https://kate-editor.org/2013/09/06/kate-vim-progress/</guid><description>
&lt;p&gt;Hi all,&lt;/p&gt;
&lt;p&gt;Just an eye-glazingly brief blog post about some of the stuff I&amp;#8217;ve been working on in the Kate Vim emulation mode since my last &lt;a href=&#34;https://kate-editor.org/2013/03/16/kate-vim-mode-papercuts-bonus-emscripten-qt-stuff&#34;&gt;blog&lt;/a&gt;. Once more, I&amp;#8217;ll mostly be dumping them all as bullet points, Gräßlin-Style™, with some longer sections on the more important changes, but this time around I&amp;#8217;ve added some nifty animated gifs which you can skip to should the full text prove too harrowing!&lt;/p&gt;
&lt;p&gt;In roughly chronological order, I:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed regression with gv (&amp;#8220;re-select last selection&amp;#8221;).&lt;/li&gt;
&lt;li&gt;Laid the groundwork for improved behaviour when repeating a change that involved an auto-completion, for now just fixing a &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=311831&#34;&gt;bug&lt;/a&gt; where if auto-completion was automatically invoked and we repeat the change via &amp;#8220;.&amp;#8221;, only a portion of what we typed gets repeated.&lt;/li&gt;
&lt;li&gt;As promised, implemented &amp;#8220;yank highlighting&amp;#8221;, which shows the portion of the text that you just yanked; very handy if you do complex yanks like e.g &amp;#8220;y2f)&amp;#8221;:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/09/kateyankhighlight.gif&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/09/kateyankhighlight-static.png&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;center&gt;
&lt;em&gt;&amp;#8220;Yank Highlighting&amp;#8221;, 444KB, Click to Play.&lt;/em&gt;
&lt;/center&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed a &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=293120&#34;&gt;bug&lt;/a&gt; with keypad handling.&lt;/li&gt;
&lt;li&gt;Made ctrl-p and ctrl-n wrap around in completion lists.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#8230; and a biggie:&lt;/p&gt;
&lt;h2 id=&#34;emulated-vim-command-bar&#34;&gt;Emulated Vim Command Bar&lt;/h2&gt;
&lt;p&gt;There are quite a lot of issues with the interaction between Vim mode and Kate&amp;#8217;s own Find dialog:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The cursor is not positioned at the beginning of the match.&lt;/li&gt;
&lt;li&gt;The full match is not highlighted.&lt;/li&gt;
&lt;li&gt;&amp;#8220;?&amp;#8221; does not search backwards(!)&lt;/li&gt;
&lt;li&gt;The Find dialog cannot be used in mappings.&lt;/li&gt;
&lt;li&gt;The Find dialog could not be used to either record or playback macros.&lt;/li&gt;
&lt;li&gt;Aborts Visual Mode when summoned.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;etc. On top of that, we miss out on some nice features of Vim&amp;#8217;s search bars, such as ctrl-r for insertion of register contents; ctrl-w for deleting previous word; ctrl-h for delete; ctrl-b/e for jumping to the beginning or end (more conveniently located, IMO, than HOME or END); plus the Qt regex syntax is different from Vim&amp;#8217;s. In light of this, I decided to add a new KateViewBarWidget called &amp;#8220;KateViEmulatedCommandBar&amp;#8221;:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/09/katevimsearch.gif&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/09/katevimsearch-static.png&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;center&gt;
&lt;em&gt;&amp;#8220;Emulated Command Bar Search&amp;#8221;, 697KB, Click to Play.&lt;/em&gt;
&lt;/center&gt;This behaves much more like Vim, and has the features and bugfixes mentioned above; it even does a reasonable job (in current master; it missed 4.11) of translating Vim regexes to Qt ones e.g. with Vim, a &amp;#8220;+&amp;#8221; is a literal &amp;#8220;+&amp;#8221;, not an &amp;#8220;at least one of the preceding&amp;#8221; marker; with Qt it is the reverse. The emulated command bar performs this, and other, conversions for you.&lt;/p&gt;
&lt;p&gt;The searches carried out can be repeated correctly via &amp;#8220;n&amp;#8221; and &amp;#8220;N&amp;#8221;. Search history can be navigated via ctrl-p and ctrl-n, and searches &amp;#8220;external&amp;#8221; to the emulated command bar (e.g. those carried out by &amp;#8220;*&amp;#8221; and &amp;#8220;#&amp;#8221;) are added to this history. &amp;#8220;Smart Case&amp;#8221; is used for specifying case-sensitivity &amp;#8211; if the search term has any capitals, then the search is assumed to be case-sensitive; else it is case-insensitive. More on the emulated command bar later! Back to the micro-fixes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Distinguished recursive vs non-recursive mappings; inspired by this &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=314415&#34;&gt;bug report&lt;/a&gt; which highlighted a nasty crashing problem if we tried to map j -&amp;gt; gj and k -&amp;gt; gk &amp;#8230;&lt;/li&gt;
&lt;li&gt;&amp;#8230; and relatedly, completely reworked gk and gj, fixing a bunch of bugs in the process.&lt;/li&gt;
&lt;li&gt;Yet more fixes to the &amp;#8220;inner block&amp;#8221; text object, which is much more complex than you would credit!&lt;/li&gt;
&lt;li&gt;A bunch of fixes and patches to ctrl-a/ctrl-x (&amp;#8220;increment/ decrement number under-or-to-the-right-of cursor&amp;#8221;) culminating in me just writing the whole thing from scratch :)&lt;/li&gt;
&lt;li&gt;Indented paste (]p, ]P etc).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Everything above made it for 4.11, I think. The Emulated Command Bar was disabled by default but can be enabled by setting the hidden config option &amp;#8220;Vi Input Mode Emulate Command Bar&amp;#8221; to &amp;#8220;true&amp;#8221;. Continuing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Made &amp;#8220;/&amp;#8221; and &amp;#8220;?&amp;#8221;, when using the Emulated Command Bar, usable as (countable) motions: so one can, for example, do d3/foo&lt;enter&gt; to delete up to just before the third occurence of &amp;#8220;foo&amp;#8221;.&lt;/li&gt;
&lt;li&gt;Allowed one to set the whole selection to a given text object even after we&amp;#8217;ve formed a selection in Visual Mode e.g. you can start visual mode, navigate to inside a pair of brackets, and do &amp;#8220;ib&amp;#8221; to re-set the current selection to just the inside of that pair of brackets. I think this worked once upon a time and I broke it, so this is more of a regression fix than a new feature :/&lt;/li&gt;
&lt;li&gt;Made the emulated command bar usable for Commands (like the &amp;#8220;F7&amp;#8221; command box in normal Kate) as well as for forwards and backwards searches when summoned via &amp;#8220;:&amp;#8221;. Note that since the emulated command bar is usable in mappings, we can now incorporate the execution of your Javascript script(s) into the Vim key mapping system, which could end up being a very powerful addition.&lt;/li&gt;
&lt;li&gt;Allowed mappings for InsertMode and VisualMode as well as for NormalMode. Oddly, this was accomplished mainly as a side-effect of a fix for a tiny bug with mappings. There is no gui for this, yet, but I&amp;#8217;ve implemented imap, vmap, inoremap, etc so they can be set from the command line. I&amp;#8217;ve also added the &lt;space&gt; special key for use in mappings, so that you can do e.g. imap a&lt;space&gt;b c&lt;space&gt;d to specify a mapping containing spaces from the command line.&lt;/li&gt;
&lt;li&gt;Implemented &amp;#8220;g~&amp;#8221; (&amp;#8220;toggle case&amp;#8221; with motion).&lt;/li&gt;
&lt;li&gt;A bunch more fixes for t/T/f/F to bring them more in line with Vim&amp;#8217;s behaviour, especially when there aren&amp;#8217;t enough characters to find.&lt;/li&gt;
&lt;li&gt;Made &amp;#8216;r&amp;#8217; (&amp;#8220;replace single character&amp;#8221;) counted, so it can actually replace several characters.&lt;/li&gt;
&lt;li&gt;Made &amp;#8220;\C&amp;#8221; (&amp;#8220;case-sensitivity marker&amp;#8221;) work in the emulated command-bar search: this marker is used to specify that the current search should be case-sensitive (handy if you want a case-sensitive search for an all-lower-case search term) after which it is stripped out and ignored completely.&lt;/li&gt;
&lt;li&gt;Made &amp;#8220;//&amp;#8221; and &amp;#8220;??&amp;#8221; (&amp;#8220;repeat last search forward/ backwards&amp;#8221;) work in the emulated command bar, and also allow the &amp;#8220;/e&amp;#8221; marker (&amp;#8220;place the cursor at the end of the match&amp;#8221;), although this latter is a little buggy at the moment.&lt;/li&gt;
&lt;li&gt;Added fix for the usage of Alt-0, Alt-1 etc shortcuts in normal mode; this is for use with KDevelop&amp;#8217;s automatic refactoring support which relies on these shorcuts (e.g. &amp;#8220;Rename [variable] to [newvariable] Alt-0 | Hide Alt-1&amp;#8221;, etc).&lt;/li&gt;
&lt;li&gt;A bunch of fixes for J (&amp;#8220;join lines&amp;#8221;), including making it work in Visual Mode when the selection runs from top to bottom; not crashing if all lines are empty; fixing countedness (it would join one too many lines); cursor positioning after the join; etc.&lt;/li&gt;
&lt;li&gt;Fixed occasional bug where counted inserts e.g. 5ixyz&lt;esc&gt; would start each repetition on a new line.&lt;/li&gt;
&lt;li&gt;Implemented iW and aW (&amp;#8220;inner/ a WORD&amp;#8221;) text objects.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#8230; and then on to:&lt;/p&gt;
&lt;h2 id=&#34;making-the-emulated-command-bar-suitable-for-default&#34;&gt;Making the Emulated Command Bar Suitable for Default&lt;/h2&gt;
&lt;p&gt;The emulated command bar has a lot of advantages over the default Find dialog and command-line for Kate Vim users, but there are drawbacks, too: firstly, it can only perform regex searches and not literal searches, which is awkward when searching for complex expressions pasted from your document that may contain characters that have a special meaning when interpreted as regex&amp;#8217;s (e.g. &amp;#8220;*&amp;#8221;) or which have special meaning in a Vim search bar (e.g. &amp;#8220;/&amp;#8221; when searching forward, and &amp;#8220;?&amp;#8221; when searching backwards). The necessity of going through the search term and escaping all such characters is a big strike against its use.&lt;/p&gt;
&lt;p&gt;Secondly, Vim&amp;#8217;s Find/ Replace dialog has most of the same flaws, when used in Vim mode, as its Find dialog has: in fact, incremental Find &amp;amp; Replace doesn&amp;#8217;t &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=182508&#34;&gt;work&lt;/a&gt; at all with Vim mode(!), and the emulated command bar is of no use here.&lt;/p&gt;
&lt;p&gt;Since I&amp;#8217;d really like to make the emulated command bar the default (and possibly only) option for use in Vim mode, I really needed to sort out a solution for these two dealbreakers.&lt;/p&gt;
&lt;p&gt;For the first, there are basically two options: one is to add some kind of flag that says &amp;#8220;look for literal matches for this string; don&amp;#8217;t treat it as a regex!&amp;#8221;; the other is to make it easy to perform the escaping of special characters. I eventually opted for the second, as it allowed one to treat portions of an expression as a regex if one desired, plus it allowed one to always use the same delimiters in a sed-replace expression (i.e. :s/find/replace/gci) without having to worry about whether the &amp;#8220;find&amp;#8221; term contained &amp;#8220;/&amp;#8221;&amp;#8216;s or not. So I added a shortcut (ctrl-g) to the emulated command bar that behaved much like ctrl-r (&amp;#8220;insert contents of the following register&amp;#8221;) except that it escapes the inserted register contents in such a way that a &lt;em&gt;regex&lt;/em&gt; search for the contents would behave the same as a &lt;em&gt;literal&lt;/em&gt; search for the contents. The gif below highlights the problem and the solution; the &amp;#8220;:) :) :)&amp;#8221; bit used ctrl-g to insert the (correctly escaped) yanked expression:&lt;br /&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/09/katevimctrl-g.gif&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/09/katevimctrl-g-static.png&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;center&gt;
&lt;em&gt;&amp;#8220;Escape Expression for Regex&amp;#8221;, 483KB, Click to Play.&lt;/em&gt;
&lt;/center&gt;For the second problem, improving the good old sed-replace seemed the obvious choice, so I added some code in the emulated command bar to translate the regex in the &amp;#8220;find&amp;#8221; term from Vim style to Qt style. Kate&amp;#8217;s own Find/ Replace dialog maintains separate histories for both the &amp;#8220;find&amp;#8221; and &amp;#8220;replace&amp;#8221; terms, so I needed to follow suit if I wanted the emulated command bar to be a credible replacement: if the cursor is placed over the &amp;#8220;find&amp;#8221; or &amp;#8220;replace&amp;#8221; terms in a sed-replace expression, pressing ctrl-p will summon the relevant history:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/09/katevimsedreplacehistory.gif&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/09/katevimsedreplacehistory-static.png&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;center&gt;
&lt;em&gt;&amp;#8220;Sed Search/ Replace History&amp;#8221;, 259KB, Click to Play.&lt;/em&gt;
&lt;/center&gt;Kate&amp;#8217;s own Find/ Replace dialog makes it easy to focus on the &amp;#8220;find&amp;#8221; and &amp;#8220;replace&amp;#8221; fields, so I also added shortcuts &amp;#8220;ctrl-d&amp;#8221; and &amp;#8220;ctrl-f&amp;#8221; to the emulated command bar that clears and places the cursor at the &amp;#8220;find&amp;#8221; and &amp;#8220;replace&amp;#8221; portions of a sed-replace expression, respectively. As an extra bonus, ctrl-space can be used anywhere in the emulated command bar to complete words from the document, which is handy when filling out your find/ replace terms.&lt;/p&gt;
&lt;p&gt;Still missing, though, were interactive search and replace; multi-line search; usage of \U and \L in the &amp;#8220;replace&amp;#8221; expression to make regex captures upper/ lower cased; etc. Multi-line search and \U and \L codes are available in a class called KateRegExpSearch, so I initially pulled out the guts of the SedReplace code and replaced it with that, and then made the whole thing interactive:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/09/katevimmultilinesedreplace.gif&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/09/katevimmultilinesedreplace-static.png&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;center&gt;
&lt;em&gt;&amp;#8220;Sed Multi-Line&amp;#8221;, 399KB, Click to Play.&lt;/em&gt;
&lt;/center&gt;(in the gif above, I constructed my regex with the standard &amp;#8220;/&amp;#8221; search bar so I could get immediate feedback as I am a giant regex baby who still needs his stabilisers; this final regex was then added to the &amp;#8220;find&amp;#8221; history, which I then added to the sed-replace search expression with a ctrl-d + ctrl-p).&lt;/p&gt;
&lt;p&gt;The emulated command bar now seemed to me to be a decent alternative to Kate&amp;#8217;s own Find/ Find &amp;amp; Replace dialogs, so with that out of the way, I then moved on to &amp;#8230;&lt;/p&gt;
&lt;h2 id=&#34;macro-support&#34;&gt;Macro Support!&lt;/h2&gt;
&lt;p&gt;The lack of macro support is what got me into Kate Vim hacking in the first place, so it seems weird that it ended up being almost the last thing I tackled. The reason, of course, is that macro support would be a bit crippled if we couldn&amp;#8217;t run searches or execute commands in our macros, so I really needed to finish the emulated command bar first. It ended up being quite easy in the end; the main difficulty was in interacting with mappings, especially the situation where a mapping triggered a macro which in turn needed to execute another mapping! Anyway, here&amp;#8217;s a small, real-life example of a Kate Vim macro in action:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/09/katevimmacro.gif&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/09/katevimmacro-static.png&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;center&gt;
&lt;em&gt;&amp;#8220;Macro&amp;#8221;, 300KB, Click to Play.&lt;/em&gt;
&lt;/center&gt;One difficulty with macros comes from recording and replaying auto-completions. In Vim itself, macros are &amp;#8220;dumb&amp;#8221; sequence of keypresses that are recorded and replayed verbatim, including those that summon, navigate and execute lists of completions. In Kate Vim, though, this approach doesn&amp;#8217;t work so well, partly because the available completions at any time are less predictable (e.g. we could have a function appear in the list of completions when we record the macro, but not when we replay it, due to e.g. problems with the C++ parser etc) and also because, in KDevelop at least, the added completions are context-sensitive: for example, a completion of a function will add its own opening bracket if there is not one immediately after the cursor position, but will re-use the existing one otherwise. The &amp;#8220;repeat last change&amp;#8221; runs into a similar problem and has some measures to mitigate this, but is still far from fool-proof. The gif below illustrates the problem:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/09/katevimcompletion-old.gif&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/09/katevimcompletion-old-static.png&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;center&gt;
&lt;em&gt;&amp;#8220;Old Completion&amp;#8221;, 184KB, Click to Play.&lt;/em&gt;
&lt;/center&gt;In what probably represents the worst effort:payoff ratio in all of history, I spent a while re-working the macro recording and playback system to store attributes of completions as they occur, and then attempt to play them back using the same context-sensitive system; the &amp;#8220;repeat last change&amp;#8221; mechanism was re-worked to also use this system, so I&amp;#8217;ll use that to demonstrate:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/09/katevimcompletion-new.gif&#34;&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/09/katevimcompletion-new-static.png&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;center&gt;
&lt;em&gt;&amp;#8220;New Completion&amp;#8221;, 176KB, Click to Play.&lt;/em&gt;
&lt;/center&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s about it for macro support; now back to the small changes!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed regression where opening a view and immediately giving it a selection (for example, by clicking an entry in KDevelop&amp;#8217;s grepview) didn&amp;#8217;t switch to Visual mode, leaving us with a &amp;#8220;stuck&amp;#8221; selection that we needed to manually enter &amp;amp; exit Visual Mode to clear.&lt;/li&gt;
&lt;li&gt;Got rid of the baffling &amp;#8220;No more chars for bookmark&amp;#8221; message every time we set a breakpoint in KDevelop ;)&lt;/li&gt;
&lt;li&gt;Fixed crashes with guu &amp;amp; gUU on empty line.&lt;/li&gt;
&lt;li&gt;Implemented command-mode mappings (cmap etc) for use in the emulated command bar; this was prompted by my preference for using &amp;#8220;ctrl-e&amp;#8221; instead of &amp;#8220;ctrl-g&amp;#8221; for the &amp;#8220;insert escaped register contents&amp;#8221; (&amp;#8216;e&amp;#8217; is right next to &amp;#8216;r&amp;#8217; on my keyboard) and for &amp;#8220;ctrl-m&amp;#8221; instead of &amp;#8220;ctrl-e&amp;#8221; (&amp;#8220;jump to the end of the command bar&amp;#8221;).&lt;/li&gt;
&lt;li&gt;Implemented the *unmap (vunmap, iunmap, cunmap etc) family of commands for removing mappings from the command line.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#8230; and that&amp;#8217;s about it! I&amp;#8217;m going to take a break from Kate stuff for a while to work on some other projects I&amp;#8217;ve been neglecting, but will return to finish off some odds and ends later :)&lt;/p&gt;
&lt;p&gt;The Kate Vim mode is in pretty good shape nowadays, so if you were thinking of trying it out, now (with the current master) would be a good time :)&lt;/p&gt;</description></item><item><title>Intel Threading Building Blocks Scalable Allocator &amp; Valgrind</title><link>https://kate-editor.org/2013/07/29/intel-threading-building-blocks-scalable-allocator-valgrind/</link><pubDate>Mon, 29 Jul 2013 18:01:56 +0000</pubDate><guid>https://kate-editor.org/2013/07/29/intel-threading-building-blocks-scalable-allocator-valgrind/</guid><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;if you ever use the TBB (&lt;a href=&#34;http://threadingbuildingblocks.org/&#34; target=&#34;_blank&#34;&gt;Intel Threading Building Blocks&lt;/a&gt;) allocator to overwrite malloc/free/* and want to use &lt;a href=&#34;http://www.valgrind.org/&#34; target=&#34;_blank&#34;&gt;Valgrind&lt;/a&gt; for leak checking and fail, here is the simple trick to get it working:&lt;/p&gt;
&lt;pre&gt;valgrind --soname-synonyms=somalloc=\*tbbmalloc\* &amp;lt;your-application-here&amp;gt;&lt;/pre&gt;
&lt;p&gt;I missed that hint in the Valgrind documentation for my first tries ;)&lt;/p&gt;
&lt;p&gt;Btw., the scalable allocator from TBB is a really BIG improvement over the normal system allocator on current Linux &amp;amp; Windows machines if you allocate mostly fixed size small object, like what happens if you heavily use STL data structures like std::map/set that are implemented as trees and you have other stuff like DOM/AST like data structures (even in the single threaded case, for which it just saves a LOT of memory).&lt;/p&gt;</description></item><item><title>Ramblings about compilers…</title><link>https://kate-editor.org/2013/07/08/ramblings-about-compilers/</link><pubDate>Mon, 08 Jul 2013 20:03:52 +0000</pubDate><guid>https://kate-editor.org/2013/07/08/ramblings-about-compilers/</guid><description>&lt;p&gt;In my job I work on binary and source level analysis software running on Linux and Windows. One of my tasks is to maintain the build farm and compile environment, therefore I am responsible for keeping care of the compilers and libraries we use (like the beloved &lt;a href=&#34;http://qt-project.org&#34; title=&#34;Qt Project&#34; target=&#34;_blank&#34;&gt;Qt&lt;/a&gt;, congratulations for the nice 5.1 release, btw.).&lt;/p&gt;
&lt;p&gt;For Linux, we normally use the &lt;a href=&#34;http://gcc.gnu.org&#34; title=&#34;The GNU Compiler Collection&#34; target=&#34;_blank&#34;&gt;GNU C/C++ compiler&lt;/a&gt;. That works out very well since years. We have hit compiler bugs only a few times and there was always already some patch-release out in the wild that fixed our issues. In addition the GCC developers brought a constant stream of improvements in the area of C and C++ standard compliance. I am more than happy with the GCC quality.&lt;/p&gt;
&lt;p&gt;I did some brief experiments with &lt;a href=&#34;http://www.llvm.org/&#34; title=&#34;LLVM Project&#34; target=&#34;_blank&#34;&gt;LLVM/Clang&lt;/a&gt; two years ago and was not that impressed in the stability of the C++ support (especially of the fresh libc++ STL implementation) but even for a such young project, it was fast as light to get issues fixed, like a crash in the unordered containers (see &lt;a href=&#34;http://llvm.org/bugs/show_bug.cgi?id=10278&#34; title=&#34;libc++ Bug 10278&#34; target=&#34;_blank&#34;&gt;Bug 10278&lt;/a&gt;, only some hours from report to fix, even if it was only a trivial size variable used uninitialized in the libc++ implementation). I guess today LLVM would perform ok to compile our software (including Qt), still I will stick to GCC, given we use some libraries that normally only get love for that compiler on Linux (at least at the moment).&lt;/p&gt;
&lt;p&gt;But now, after my experiences with open source compilers, lets take a look at the wonderful world of Windows.&lt;/p&gt;
&lt;p&gt;I know for Windows GCC variants are available (like the 32 bit MinGW-builds shipped with some Qt library variant) and some experimental work on some LLVM able to compile applications using Windows SDK headers is ongoing. Still, the most common way on Windows is to use the Visual Studio compiler and given we always have some libraries of 3rd-parties around that we need to use and that are Visual Studio compiled the Microsoft compiler is more or less unavoidable.&lt;/p&gt;
&lt;p&gt;Now, lets take a look of this fabulous compiler you get there. At the moment two major Version are of interest, the 2010 and 2012 variant of Visual Studio.&lt;/p&gt;
&lt;p&gt;As I started to evaluate Visual Studio 2010 in 2010, I was immediately hit by &lt;a href=&#34;http://support.microsoft.com/kb/2280741/en-us&#34; title=&#34;2010 x64 Bug&#34; target=&#34;_blank&#34;&gt;its nice 64 bit optimizer bug&lt;/a&gt;. Not a single Qt application would start up without immediate segfault&amp;#8230; More about this &lt;a href=&#34;https://connect.microsoft.com/VisualStudio/feedback/details/573323/optimizer-bug-in-vc-2010-64bit&#34; title=&#34;More about x64 optimizer bug&#34; target=&#34;_blank&#34;&gt;here&lt;/a&gt; and even in &lt;a href=&#34;https://bugreports.qt-project.org/browse/QTBUG-11445&#34; title=&#34;Qt Bug about x64 optimizer&#34; target=&#34;_blank&#34;&gt;the Qt bugtracker&lt;/a&gt;, especially the answers from the support are interesting, it seems to be forbidden to return a object per value from a function ;)&lt;/p&gt;
&lt;p&gt;From report to &amp;#8220;hotfix&amp;#8221; it has taken some months, that means with the release version of 2010, you couldn&amp;#8217;t build any optimized x64 application using Qt (and I guess most other evil libraries using object on the stack that got misaligned by the optimizer) for some months.&lt;/p&gt;
&lt;p&gt;Afterwards I was that adventurous to install the &lt;a href=&#34;http://www.microsoft.com/en-us/download/details.aspx?id=23691&#34; title=&#34;2010 SP1&#34; target=&#34;_blank&#34;&gt;SP1&lt;/a&gt; to get the included further compiler fixes. Unfortunately that meant I got all my x64 compilers deleted, but no problem, just close to a month later (until which you need to reinstall your Visual Studio/SDK without SP1 and reapply you hotfix) you got again &lt;a href=&#34;http://www.microsoft.com/en-us/download/details.aspx?id=23691&#34; title=&#34;Get x64 compilers back&#34; target=&#34;_blank&#34;&gt;some fix&lt;/a&gt; that reinstalls the compilers that SP1 will remove. Really, you will need to install the 2010 + SP1 + then a fix that restores the compilers SP1 removes if you want to have a working VS 2010 Express for x64 (or stay without SP1 and use the above hotfix for the x64 compiler).&lt;/p&gt;
&lt;p&gt;For Visual Studio 2012, which I started to eval months ago, you will get the same story, but reversed. Now we have some nice and nasty &lt;a href=&#34;https://bugreports.qt-project.org/browse/QTBUG-32159&#34; title=&#34;QT Issue about 2012 x86 issue&#34; target=&#34;_blank&#34;&gt;x86 optimizer bug&lt;/a&gt;. That bug is reported since long see &lt;a href=&#34;https://connect.microsoft.com/VisualStudio/feedback/details/780362/optimization-bug-of-range-comparison&#34; title=&#34;More on the x86 optimizer bug&#34; target=&#34;_blank&#34;&gt;here&lt;/a&gt;, it leads to problems for software that use &lt;a href=&#34;http://site.icu-project.org/&#34; title=&#34;ICU&#34; target=&#34;_blank&#34;&gt;libicu&lt;/a&gt;, see the matching &lt;a href=&#34;http://bugs.icu-project.org/trac/ticket/9693&#34; title=&#34;ICU bug&#34; target=&#34;_blank&#34;&gt;icu bug&lt;/a&gt;. But given the simple code pattern that can make it occur, it may hit other parts, too. Until now, no fix, only some &amp;#8220;will be fixed in next version&amp;#8221;&amp;#8230;&lt;/p&gt;
&lt;p&gt;For me that means, I need to stick with 2010 for x86 and with 2012 for x64, given I want to use the pre-build Qt binaries and not to dive into the &amp;#8220;compile qt on windows&amp;#8221; fun once more. I would like 2012 for x86, too, to benefit from the C++11 feature improvements and to not have to support two different compiler variants, but I guess that will have to wait, seems its not that easy to build some working x86 compiler that can do optimizations.&lt;/p&gt;
&lt;p&gt;Therefore, really, +1 to the compiler developers of the GCC and LLVM project. Its amazing what they have archived!&lt;br /&gt;
And +1 for the improvements in the C99 and C++ area in Visual Studio, too. Still I really would be more than happy to get a fix for the x86 optimizer issue in VS 2012. Even no report that it is really fixed in 2013 until now, but I am not sure that was really tried, I didn&amp;#8217;t try it myself because I am lazy and must blog instead ;=)&lt;/p&gt;</description></item><item><title>QUndoStack versus Kate’s Undo System</title><link>https://kate-editor.org/2013/06/25/qundostack-versus-kate-undo-system/</link><pubDate>Tue, 25 Jun 2013 09:08:57 +0000</pubDate><guid>https://kate-editor.org/2013/06/25/qundostack-versus-kate-undo-system/</guid><description>&lt;p&gt;I&amp;#8217;m currently using &lt;a title=&#34;QUndoStack&#34; href=&#34;http://qt-project.org/doc/qt-4.8/qundostack.html&#34; target=&#34;_blank&#34;&gt;QUndoStack&lt;/a&gt; in a project of mine. A QUndoStack contains a list of &lt;a title=&#34;QUndoCommand&#34; href=&#34;http://qt-project.org/doc/qt-4.8/qundocommand.html&#34; target=&#34;_blank&#34;&gt;QUndoCommands&lt;/a&gt; which then can be executed with &lt;a title=&#34;QUndoStack::undo()&#34; href=&#34;http://qt-project.org/doc/qt-4.8/qundostack.html#undo&#34; target=&#34;_blank&#34;&gt;QUndoStack::undo()&lt;/a&gt; and &lt;a title=&#34;QUndoStack::redo()&#34; href=&#34;http://qt-project.org/doc/qt-4.8/qundostack.html#redo&#34; target=&#34;_blank&#34;&gt;QUndoStack:.redo()&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now I thought when deleting an instance of the class Node, I can just hock the creation of the respective UndoDeleteNode class (derived from QUndoCommand) into the destructor, like this:&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;class Node {
public:
// ...
~Node() {
undoStack()-&amp;gt;push(new UndoDeleteNode(this));
}
};
class UndoDeleteNode : public QUndoCommand {
public:
// ...
void undo() {
// create node again
}
void redo() {
// delete node again
}
};&lt;/pre&gt;
&lt;p&gt;Now the problem with this code is, that executing UndoDeleteNode::redo() will delete the node through the undo/redo system. In this case, the destructor ~Node() will create another UndoDeleteNode item. So what I was looking for a way to only create the undo item when the undo/redo system is not active, i.e.:&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;class Node {
public:
// ...
~Node() {
if (&lt;strong&gt;!undoStack()-&amp;gt;undoOrRedoRunning()&lt;/strong&gt;) {
undoStack()-&amp;gt;push(new UndoDeleteNode(this));
} 
}
};&lt;/pre&gt;
&lt;p&gt;I found QUndoStack::isActive(), but isActive() does something completely different. In fact, it looks as if there is no way to tell that the QUndoStack is currently operating. This finally also gets clear by reading the API docs of &lt;a title=&#34;QUndoStack::push()&#34; href=&#34;http://qt-project.org/doc/qt-4.8/qundostack.html#push&#34; target=&#34;_blank&#34;&gt;QUndoStack::push(QUndoCommand* cmd)&lt;/a&gt;:&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;[...] Executes cmd by calling its redo() function. [...]&lt;/pre&gt;
&lt;p&gt;In other words, each QUndoCommand you push on the stack is executed immediately. This obviously is a design decision: Following this paradigm, you should not just call &amp;#8220;delete node;&amp;#8221; Instead, you should simply create a UndoDeleteNode() instance and push it to the stack. The undo command is then immediately executed by calling redo().&lt;/p&gt;
&lt;p&gt;This design has the advantage that developers are forced to go this route. Following this paradigm, you very easily get macro support, since all actions are undo/redo items. This is cool.&lt;/p&gt;
&lt;p&gt;However, what I dislike about this approach is the fact that it seems you loose the nice API to simply delete the node. You cannot write &amp;#8220;delete node;&amp;#8221;. Instead, you have to have some helper class such as a Document, that provides a Document::deleteNode(Node* node) function. This function then just creates a new UndoDeleteNode and pushes it to the stack.&lt;/p&gt;
&lt;p&gt;Is this how the QUndoStack is supposed to be used? Does it imply that the destructor should be protected, and UndoDeleteNode must be a friend class of Node, to avoid other classes from just calling delete Node?&lt;/p&gt;
&lt;p&gt;In Kate, we indeed go the other way: We have a KateUndoManager::isActive(), which indicates whether the edit actions should be tracked by the undo manager or not&amp;#8230;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m not yet convinced that the approach of QUndoStack is ultimately cool. To me it looks like I&amp;#8217;m forced into some design decision I didn&amp;#8217;t want to take. Maybe I&amp;#8217;m missing something?&lt;/p&gt;</description></item><item><title>Akademy 2013</title><link>https://kate-editor.org/2013/06/20/akademy-2013/</link><pubDate>Thu, 20 Jun 2013 07:08:01 +0000</pubDate><guid>https://kate-editor.org/2013/06/20/akademy-2013/</guid><description>&lt;p&gt;So &lt;a title=&#34;Akademy 2013&#34; href=&#34;http://akademy2013.kde.org/&#34; target=&#34;_blank&#34;&gt;Akademy 2013&lt;/a&gt; is nearing and this time it takes place at &lt;a title=&#34;Bilbao on Wikipedia&#34; href=&#34;http://en.wikipedia.org/wiki/Bilbao&#34; target=&#34;_blank&#34;&gt;Bilbao, Spain&lt;/a&gt;. As it happens, Bilbao is located quite near to the beach as well as very close to the mountains. So I stumbled over a page with several &lt;a title=&#34;Hiking trails in Bilbao&#34; href=&#34;http://de.wikiloc.com/routen/wandern/spain/basque-country/bilbao&#34; target=&#34;_blank&#34;&gt;hiking trails starting in Bilbao&lt;/a&gt; ranging from easy to hard. For instance, &lt;a title=&#34;Tough hiking trail&#34; href=&#34;http://de.wikiloc.com/wikiloc/view.do?id=3734247&#34; target=&#34;_blank&#34;&gt;this route&lt;/a&gt; starts in a nearby village and then goes from about 65 meters in height up to 1000 (this is the point where you stop to hack on KDE, of course), and then down to 30 in Bilbao again. Anyone? :-)&lt;/p&gt;
&lt;p&gt;PS: Maybe there are any locals who know the place around and can recommend a hiking track?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter&#34; src=&#34;http://akademy2013.kde.org/sites/akademy2013.kde.org/files/Ak2013Badge2.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;</description></item><item><title>How to convert pdf to svg</title><link>https://kate-editor.org/2013/06/01/how-to-convert-pdf-to-svg/</link><pubDate>Sat, 01 Jun 2013 14:24:01 +0000</pubDate><guid>https://kate-editor.org/2013/06/01/how-to-convert-pdf-to-svg/</guid><description>&lt;p&gt;In a project I&amp;#8217;m currently working on I need to display the result of TeX code. So I thought it would be nice and accurate to compile the TeX code to produce a pdf, and then use libpoppler-qt4 to draw the pdf. This works in principal, but there is a licensing problem: libpoppler is GPL, and I want to use it in a LGPL library.&lt;/p&gt;
&lt;p&gt;So I searched the net and found &lt;a title=&#34;dvipng&#34; href=&#34;https://en.wikipedia.org/wiki/Dvipng&#34; target=&#34;_blank&#34;&gt;dvipng&lt;/a&gt;, which converts a dvi file to png. It even supports transparent backgrounds. So I could convert the dvi file to png through QProcess+dvipng, and then display the png file. This works, but whenever you scale the canvas the result looks ugly since png is not a vector graphic.&lt;/p&gt;
&lt;p&gt;Next, I found &lt;a title=&#34;pdf2svg&#34; href=&#34;http://www.cityinthesky.co.uk/opensource/pdf2svg&#34; target=&#34;_blank&#34;&gt;pdf2svg&lt;/a&gt; that converts a pdf file into the scalable vector graphics format svg. In theory, I then can use &lt;a title=&#34;QSvgRenderer&#34; href=&#34;http://qt-project.org/doc/qt-4.8/qsvgrenderer.html&#34; target=&#34;_blank&#34;&gt;QSvgRenderer&lt;/a&gt; to load and render the SVG on-the-fly using QSvgRenderer::render(QPainter*, &amp;#8230;). So I first tested to convert the pdf to svg with this tool and then view it in InkScape. The result was perfect: InkScape renders the svg file exactly like Okular renders the pdf file:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-2574&#34; title=&#34;pdf2svg&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/06/pdf2svg.png&#34; alt=&#34;&#34; width=&#34;530&#34; height=&#34;198&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/06/pdf2svg.png 530w, https://kate-editor.org/wp-content/uploads/2013/06/pdf2svg-300x112.png 300w&#34; sizes=&#34;(max-width: 530px) 100vw, 530px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;So I looked into the source code of pdf2svg and saw that it uses libpoppler with Cairo. This reflects an additional dependency on cairo, so I went ahead and converted the &lt;a title=&#34;Source code of pdf2svg&#34; href=&#34;http://www.cityinthesky.co.uk/_media/opensource/pdf2svg-0.2.1.tar.gz&#34; target=&#34;_blank&#34;&gt;cairo based code&lt;/a&gt; to Qt, using libpopper-qt4. The code basically boils down to:&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;// create poppler pdf document
Poppler::Document *document = Poppler::Document::load(args[1]);
document-&amp;gt;setRenderBackend(Poppler::Document::ArthurBackend);
document-&amp;gt;setRenderHint(Poppler::Document::Antialiasing, true);
document-&amp;gt;setRenderHint(Poppler::Document::TextAntialiasing, true);
document-&amp;gt;setRenderHint(Poppler::Document::TextHinting, true);
document-&amp;gt;setRenderHint(Poppler::Document::TextSlightHinting, true);
document-&amp;gt;setPaperColor(Qt::transparent);&lt;/pre&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;// prepare QSvgGenerator as QPaintDevice
QSvgGenerator svgGenerator;
svgGenerator.setResolution(72); // resolution in dpi
svgGenerator.setFileName(&#34;out.svg&#34;);
svgGenerator.setSize(document-&amp;gt;page(0)-&amp;gt;pageSize());
// perform painting
QPainter painter(&amp;svgGenerator);
document-&amp;gt;page(0)-&amp;gt;renderToPainter(&amp;painter);
painter.end();&lt;/pre&gt;
&lt;p&gt;This code does indeed generate the svg code for the pdf file. However, the result is surprisingly ugly and wrong:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-2575&#34; title=&#34;pdf2svg-qt4&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/06/pdf2svg-qt4.png&#34; alt=&#34;&#34; width=&#34;223&#34; height=&#34;154&#34; /&gt;&lt;/p&gt;
&lt;p&gt;First, the pen seems too thick, and second the character &amp;#8216;d&amp;#8217; is wrong on the left. I&amp;#8217;ve tried changing the resolution (setResolution()) and also the page size (setSize()) of QSvgGenerator, always getting the same result. Searching the net reveals that QSvgGenerator seems to have quite some glitches with respect to WYSIWYG rendering. I tried to use QSvgGenerator before in 2009 and came out with unusable results. Maybe I&amp;#8217;m missing something?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 1:&lt;/strong&gt; It&amp;#8217;s not QSvgGenerator that is to blame here. It&amp;#8217;s indeed the Arthur backend of libpoppler. I send a patch to the poppler developers that fixes the issue with too bold glyphs. The pahts are still too inaccurate, though.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update2:&lt;/strong&gt; Using &lt;a title=&#34;dvisvgm web page&#34; href=&#34;http://dvisvgm.sourceforge.net/&#34; target=&#34;_blank&#34;&gt;dvisvgm&lt;/a&gt; with the option &lt;a title=&#34;dvisvgm options&#34; href=&#34;http://dvisvgm.sourceforge.net/Manpage&#34; target=&#34;_blank&#34;&gt;&amp;#8211;no-fonts&lt;/a&gt; results in an SVG file that QSvgRenderer renders correctly. So this is the current solution to get a TeX document rendered via SVG in Qt.&lt;/p&gt;</description></item><item><title>A rich python console and more in Kate editor</title><link>https://kate-editor.org/2013/05/31/a-rich-python-console-and-more-in-kate-editor/</link><pubDate>Fri, 31 May 2013 08:32:48 +0000</pubDate><guid>https://kate-editor.org/2013/05/31/a-rich-python-console-and-more-in-kate-editor/</guid><description>&lt;p&gt;I have done some improvements in the plugins: python_console_ipython, python_autocomplete, python_utils, js_utils, xml_pretty and django_utils. &lt;a href=&#34;https://kate-editor.org/2013/02/18/new-plugins-to-the-kate-utils-to-python-javascript-django-and-xml/&#34; target=&#34;_blank&#34;&gt;These plugins&lt;/a&gt; I added a month and a half ago (except python_console_ipython) to the kate repository. I have done two improvements and a new feature:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Now they work with Python2 and &lt;a href=&#34;http://docs.python.org/3/howto/pyporting.html&#34; target=&#34;_blank&#34;&gt;Python3&lt;/a&gt; (except python_autocomplete, this only works with Python2, due &lt;a title=&#34;pysmell&#34; href=&#34;https://pypi.python.org/pypi/pysmell&#34; target=&#34;_blank&#34;&gt;pysmell&lt;/a&gt; dependence)&lt;/li&gt;
&lt;li&gt;Now they have a configuration page (except python_autocomplete, this should not have configuration parameters)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/04/config.png&#34;&gt;&lt;img class=&#34;aligncenter wp-image-2456&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/04/config.png&#34; alt=&#34;&#34; width=&#34;459&#34; height=&#34;331&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/04/config.png 765w, https://kate-editor.org/wp-content/uploads/2013/04/config-300x216.png 300w&#34; sizes=&#34;(max-width: 459px) 100vw, 459px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h6 style=&#34;text-align: center&#34;&gt;
&lt;em&gt;Page Config Plugins&lt;/em&gt;
&lt;/h6&gt;
&lt;p&gt;The new feature is the integration of the python_autocomplete and python_console_ipython plugins with the &lt;a title=&#34;Using the projects plugin in Kate&#34; href=&#34;https://kate-editor.org/2012/11/02/using-the-projects-plugin-in-kate/&#34; target=&#34;_blank&#34;&gt;project plugin&lt;/a&gt;. The behaviour of these plugins depends of the loaded project. That is to say, the python_autocomplete plugin autocompletes with our project modules.&lt;span style=&#34;text-align: center&#34;&gt; Currently the kate community is working to add a new&lt;a href=&#34;https://git.reviewboard.kde.org/r/109326/&#34; target=&#34;_blank&#34;&gt; python autocomplete&lt;/a&gt;  using &lt;a title=&#34;jedi&#34; href=&#34;https://github.com/davidhalter/jedi&#34; target=&#34;_blank&#34;&gt;jedi&lt;/a&gt; (this will work with Python2 and Python3).&lt;/span&gt;&lt;/p&gt;
&lt;p style=&#34;text-align: center&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/04/autocomplete.png&#34;&gt;&lt;img class=&#34;aligncenter wp-image-2460&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/04/autocomplete.png&#34; alt=&#34;&#34; width=&#34;472&#34; height=&#34;281&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/04/autocomplete.png 674w, https://kate-editor.org/wp-content/uploads/2013/04/autocomplete-300x178.png 300w&#34; sizes=&#34;(max-width: 472px) 100vw, 472px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h6 style=&#34;text-align: center&#34;&gt;
&lt;em&gt;Python Autocomplete (with our modules)&lt;/em&gt;
&lt;/h6&gt;
&lt;p style=&#34;text-align: left&#34;&gt;
And the python_console_ipython plugin has something that we can name the project console. A ipython shell with the python path of our project and with the environments variables that the project plugin needs.
&lt;/p&gt;
&lt;p style=&#34;text-align: center&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/04/ipython_console.png&#34;&gt;&lt;img class=&#34;aligncenter wp-image-2463&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/04/ipython_console.png&#34; alt=&#34;&#34; width=&#34;698&#34; height=&#34;388&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/04/ipython_console.png 1164w, https://kate-editor.org/wp-content/uploads/2013/04/ipython_console-300x166.png 300w, https://kate-editor.org/wp-content/uploads/2013/04/ipython_console-1024x569.png 1024w&#34; sizes=&#34;(max-width: 698px) 100vw, 698px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h6 style=&#34;text-align: center&#34;&gt;
&lt;em&gt;IPython Console (converted in a django shell)&lt;/em&gt;
&lt;/h6&gt;
&lt;p style=&#34;text-align: left&#34;&gt;
To use this we need to add in the project file (.kateproject) a new attribute named &amp;#8220;python&amp;#8221;, with this structure:
&lt;/p&gt;
&lt;pre&gt;{
&#34;name&#34;: &#34;MyProject&#34;,
&#34;files&#34;: [ { &#34;git&#34;: 1 } ],
&#34;python&#34;: {
&#34;extraPath&#34;: [&#34;/python/path/1&#34;,
&#34;/python/path/2&#34;,
&#34;/python/path/n&#34;
],
&#34;environs&#34;: {&#34;key&#34;: &#34;value&#34;},
&#34;version&#34;: &#34;3.2&#34;
}
}&lt;/pre&gt;
&lt;p&gt;I am a django developer, as we say in &lt;a title=&#34;Django project&#34; href=&#34;http://www.djangoproject.com/&#34; target=&#34;_blank&#34;&gt;Django&lt;/a&gt; we can come to have a &lt;a title=&#34;django shell&#34; href=&#34;https://docs.djangoproject.com/en/dev/intro/tutorial01/#playing-with-the-api&#34; target=&#34;_blank&#34;&gt;django shell&lt;/a&gt; (python manage.py shell) integrated in our editor. But this feature is a generic feature not tied to Django. This feature can be used by other Python developers. I have added only a specific feature to the django developers. If we set in the project file (.kateproject) the attribute projectType with the value Django, the ipython shell automatically loads the models and the settings like a &lt;a title=&#34;Django extensions&#34; href=&#34;https://pypi.python.org/pypi/django-extensions&#34; target=&#34;_blank&#34;&gt;shell_plus&lt;/a&gt; does.&lt;/p&gt;
&lt;pre&gt;{
&#34;name&#34;: &#34;MyProject&#34;,
&#34;files&#34;: [ { &#34;hg&#34;: 1 } ],
&#34;python&#34;: {
&#34;extraPath&#34;: [&#34;/python/path/1&#34;,
&#34;/python/path/2&#34;,
&#34;/python/path/n&#34;
],
&#34;environs&#34;: {&#34;DJANGO_SETTINGS_MODULE&#34;: &#34;myproject.settings&#34;},
&#34;version&#34;: &#34;2.7.3&#34;,
&#34;projectType&#34;: &#34;django&#34;
}
}&lt;/pre&gt;
&lt;p&gt;I hope you like it :-)&lt;/p&gt;</description></item><item><title>Google Summer of Code 2013</title><link>https://kate-editor.org/2013/04/14/google-summer-of-code-2013/</link><pubDate>Sun, 14 Apr 2013 09:04:30 +0000</pubDate><guid>https://kate-editor.org/2013/04/14/google-summer-of-code-2013/</guid><description>&lt;p&gt;If someone is interested in doing some coding for Kate-Part, Kate, KTexteditor during this years  Summer of Code, just drop a proposal at the kwrite-devel mailing list for discussion.&lt;/p&gt;</description></item><item><title>Kate D-Bus Interfaces, used at all?</title><link>https://kate-editor.org/2013/04/06/kate-d-bus-interfaces-used-at-all/</link><pubDate>Fri, 05 Apr 2013 22:35:49 +0000</pubDate><guid>https://kate-editor.org/2013/04/06/kate-d-bus-interfaces-used-at-all/</guid><description>&lt;p&gt;I just started to clean up the content of kate.git, moving things around, fixing compile warnings and similar stuff.&lt;/p&gt;
&lt;p&gt;I stumbled over warnings in our dbus interfaces.&lt;/p&gt;
&lt;p&gt;The main use of them is to allow Kate to reuse an existing instance for opening files and sessions. This part (e.g. the interface of the application object itself) works fine and is needed.&lt;/p&gt;
&lt;p&gt;But all other interfaces, like the ones for docmanager, mainwindows, &amp;#8230; are mostly non-existant or not implemented. I now play with the idea of just removing the nearly empty skeleton implementations, as it seems nobody missed them during the complete 4.x series.&lt;/p&gt;
&lt;p&gt;Is there somebody out there that actually uses them and if, how?&lt;/p&gt;</description></item><item><title>Kate: Search &amp; Replace Notifications in KDE 4.11</title><link>https://kate-editor.org/2013/04/02/kate-search-replace-highlighting-in-kde-4-11/</link><pubDate>Tue, 02 Apr 2013 19:31:50 +0000</pubDate><guid>https://kate-editor.org/2013/04/02/kate-search-replace-highlighting-in-kde-4-11/</guid><description>&lt;p&gt;In KDE 4.10, the &amp;#8220;Find All&amp;#8221; and &amp;#8220;Replace All&amp;#8221; highlights all matches and at the same time shows &lt;a href=&#34;https://kate-editor.org/2012/11/06/passive-notifications-in-kate-part/&#34; title=&#34;Kate Notifications in KDE 4.10&#34;&gt;a passive notification in a bar below the view&lt;/a&gt;. This bar is animated, and takes quite a lot of place in addition to the search &amp;amp; replace bar.&lt;/p&gt;
&lt;p&gt;Since some days, Kate Part can also show passive notifications floating in the view. Hence, we&amp;#8217;ve changed the passive notification to appear on the bottom right as a small info message, showing the number of matches. However, in order to make this passive notification as small as possible, we removed the &amp;#8220;Close&amp;#8221; button, since the notification is hidden after 3 seconds anyway. Further, we removed the &amp;#8220;Keep Highlighting&amp;#8221; button. If you want to keep the highlights, just do not close the search &amp;amp; replace bar. The following video demonstrates this behavior, first for KDE 4.10, then how it currently will be in KDE 4.11 (&lt;a title=&#34;Kate: Search &amp; Replace Notifications in KDE 4.11&#34; href=&#34;https://www.youtube.com/watch?v=7kDLd7bYJkA&amp;hd=1&#34; target=&#34;_blank&#34;&gt;watch the video in 720p&lt;/a&gt;):&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
&lt;/p&gt;</description></item><item><title>New Text Folding in kate.git master</title><link>https://kate-editor.org/2013/03/27/new-text-folding-in-kate-git-master/</link><pubDate>Wed, 27 Mar 2013 21:16:45 +0000</pubDate><guid>https://kate-editor.org/2013/03/27/new-text-folding-in-kate-git-master/</guid><description>&lt;p&gt;In the kate.git master branch the text folding is now new and shiny.&lt;/p&gt;
&lt;p&gt;In addition to be faster and less memory hungry (no folding tree is around if you fold nothing, it is only created on-demand exactly for the folded regions), the new code is less complex and smaller (and hopefully better documented + unit tested, it actually has a test for most internal operations).&lt;/p&gt;
&lt;p&gt;There is actually now a clean separation, the folding does not mix with highlighting and can be used without it, too.&lt;/p&gt;
&lt;p&gt;This allows for a better integration of indentation based foldings like in Python (and already fixes the most ugly miss-placements of folding regions there) and empowers the user to fold arbitrary regions manually.&lt;/p&gt;
&lt;p&gt;This can be done at the moment with two kate commands (for the F7 command line):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;#8220;fold&amp;#8221; will create persistent fold for the current selection, this fold will stay until next reload of document (will implement some dfold command later, to delete it)&lt;/li&gt;
&lt;li&gt;&amp;#8220;tfold&amp;#8221; will create temporary fold for the current selection, this fold will disappear again on unfolding&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This should allow better vi mode integration, too, as vi is able to fold arbitrary regions, too. (There is an internal API to fold any KTextEditor::Range you pass in, which should allow to fold by regex and other ways, too, if somebody steps up to implement it.)&lt;/p&gt;
&lt;p&gt;If you find glitches, please report them as bugs and please attach some file to reproduce, I am very interested to get this all in even better shape for KDE 4.11, be folding crashs a thing of the past.&lt;/p&gt;
&lt;p&gt;P.S.&lt;/p&gt;
&lt;p&gt;For all people not using folding at all, be happy, it no longer will crash you (and me), as it is a nop if no folding ranges are created by the user and some extreme cases got a speedup of 1000% because of less overhead, like VERY large C++ sources ;)&lt;/p&gt;</description></item><item><title>Text Folding Reloaded</title><link>https://kate-editor.org/2013/03/24/text-folding-reloaded/</link><pubDate>Sun, 24 Mar 2013 15:54:59 +0000</pubDate><guid>https://kate-editor.org/2013/03/24/text-folding-reloaded/</guid><description>&lt;p&gt;If we look at the incoming bug reports, a lot still seem to be located in our code folding implementation.&lt;/p&gt;
&lt;p&gt;The problem of the current code folding code, even after the GSoC rewrite of large parts, is that it is inter weaved with the syntax highlighting engine.&lt;/p&gt;
&lt;p&gt;During highlighting, we try to build up some tree containing all folding start/ends. To accommodate languages that have indentation based folding like Python, we started to fake such starts/ends which are normally tokens like { or }. As these tree can be unbalanced and contain overlapping regions, the implementation is quiet complex.&lt;/p&gt;
&lt;p&gt;Additionally, as the folding relies heavily on the syntax highlighting, which is done per document, it is impossible to have different folding per view.&lt;/p&gt;
&lt;p&gt;After looking again at the code to solve some issues, it got more and more clear to me, that we need to restart that from scratch.&lt;/p&gt;
&lt;p&gt;Instead of feeding the highlighting info into a tree, I started to implement text folding that just allows you to mark regions as folding ranges manually. Then internally a non-overlapping tree of ranges is created that uses our moving cursors to keep track of changes in the document. Each view will have an instance of such a tree, which allows to have folding per view.&lt;/p&gt;
&lt;p&gt;These folds are only created on demand, e.g. if you decide to fold some region via selection + &amp;#8220;fold&amp;#8221; command. This already works quiet well in my Kate repository clone. The missing part is now the integration with the highlighting, that should use this well defined API to only create a folding region in the moment the user wants to fold it. In addition some API for the highlighters is needed to indicate that for some line there is the fold action. After that is done, I might consider to replace the current implementation with the novel one, which is btw. much easier to unit test (which is already done for most API primitives).&lt;/p&gt;
&lt;p&gt;Btw., the work is done in &lt;a title=&#34;Kate Code Folding Repository&#34; href=&#34;http://quickgit.kde.org/?p=clones%2Fkate%2Fcullmann%2Fkate-codefolding.git&#34; target=&#34;_blank&#34;&gt;this&lt;/a&gt; repository, if somebody wants to contribute, patches are welcome .P&lt;/p&gt;</description></item><item><title>Kate: New contributors, Valgrind, and a fixed bug</title><link>https://kate-editor.org/2013/03/17/kate-new-contributors-valgrind-and-a-fixed-bug/</link><pubDate>Sun, 17 Mar 2013 19:38:49 +0000</pubDate><guid>https://kate-editor.org/2013/03/17/kate-new-contributors-valgrind-and-a-fixed-bug/</guid><description>&lt;p&gt;In the recent months Kate saw quite some contributions from &lt;a href=&#34;https://kate-editor.org/the-team/&#34; title=&#34;Kate: The Team&#34;&gt;developers&lt;/a&gt; other than &amp;#8220;the usual kate developers&amp;#8221;. This is really cool, areas include more work on python plugins, a lot of &lt;a href=&#34;https://kate-editor.org/2013/03/16/kate-vim-mode-papercuts-bonus-emscripten-qt-stuff/&#34; title=&#34;Kate: Vi input mode&#34;&gt;bug fixing and fine tuning&lt;/a&gt; in the vi input mode, an improved python indenter, and more unit tests. Especially one unit test turned out to be immensely useful and resulted in a fix for the infamous &lt;a title=&#34;Kate rangesForLine crash&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=313759&#34; target=&#34;_blank&#34;&gt;&amp;#8220;rangesForLine&amp;#8221; crash&lt;/a&gt; (about 40 times reported). We even decided to backport this to KDE 4.10.2, so KDevelopers and Kile LaTeXers please keep an eye open on whether this has any side effects!&lt;/p&gt;
&lt;p&gt;Basically, the unit test provided us with a valgrind trace. Since valgrind is a very useful tool for all developers, we&amp;#8217;ll have a closer look at the valgrind trace:&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
==10276== I&lt;strong&gt;nvalid read of size 4&lt;/strong&gt;&lt;br /&gt; ==10276== at 0x62F2116: &lt;strong&gt;Kate::TextCursor::lineInternal()&lt;/strong&gt; const (katetextcursor.h:134)&lt;br /&gt; ==10276== by 0x62F9035: Kate::TextBlock::updateRange(Kate::TextRange*) (katetextblock.cpp:572)&lt;br /&gt; ==10276== by 0x62F8C57: Kate::TextBlock::mergeBlock(Kate::TextBlock*) (katetextblock.cpp:522)&lt;br /&gt; ==10276== by 0x62EFAA1: Kate::TextBuffer::balanceBlock(int) (katetextbuffer.cpp:494)&lt;br /&gt; ==10276== by 0x62EF1B2: Kate::TextBuffer::unwrapLine(int) (katetextbuffer.cpp:298)&lt;br /&gt; ==10276== by 0x637BB9C: KateBuffer::unwrapLines(int, int) (katebuffer.cpp:292)&lt;br /&gt; ==10276== by 0x6359DE9: KateDocument::editRemoveLines(int, int) (katedocument.cpp:1321)&lt;br /&gt; ==10276== by 0x6359AD6: KateDocument::editRemoveLine(int) (katedocument.cpp:1293)&lt;br /&gt; ==10276== by 0x6357841: KateDocument::removeLine(int) (katedocument.cpp:732)&lt;br /&gt; ==10276== by 0x6394C6A: KateScriptDocument::removeLine(int) (katescriptdocument.cpp:513)&lt;br /&gt; ==10276== Address 0x14353470 is 96 bytes inside a block of size 152 free&amp;#8217;d&lt;br /&gt; ==10276== at 0x4C2A44B: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)&lt;br /&gt; ==10276== by 0x62FDE4D: &lt;strong&gt;Kate::TextRange::~TextRange()&lt;/strong&gt; (katetextrange.cpp:66)&lt;br /&gt; ==10276== by 0x6470B1E: KateOnTheFlyChecker::deleteMovingRange(KTextEditor::MovingRange*) (ontheflycheck.cpp:535)&lt;br /&gt; ==10276== by 0x6470657: KateOnTheFlyChecker::rangeEmpty(KTextEditor::MovingRange*) (ontheflycheck.cpp:489)&lt;br /&gt; ==10276== by 0x62FE641: Kate::TextRange::checkValidity(int, int, bool) (katetextrange.cpp:196)&lt;br /&gt; ==10276== by 0x62F6C84: Kate::TextBlock::wrapLine(KTextEditor::Cursor const&amp;) (katetextblock.cpp:168)&lt;br /&gt; ==10276== by 0x62EEF1D: Kate::TextBuffer::wrapLine(KTextEditor::Cursor const&amp;) (katetextbuffer.cpp:231)&lt;br /&gt; ==10276== by 0x637BA6D: KateBuffer::wrapLine(KTextEditor::Cursor const&amp;) (katebuffer.cpp:275)&lt;br /&gt; ==10276== by 0x635972E: KateDocument::editInsertLine(int, QString const&amp;) (katedocument.cpp:1246)&lt;br /&gt; ==10276== by 0x6357690: KateDocument::insertLine(int, QString const&amp;) (katedocument.cpp:706)&lt;br /&gt; ==10276== by 0x6394C32: KateScriptDocument::insertLine(int, QString const&amp;) (katescriptdocument.cpp:508)
&lt;/p&gt;
&lt;p&gt;The trace tells us that somewhere in TextCursor::lineIntern() we read a variable/address that is invalid. In fact, we are reading a pointer called m_block that should be valid. In this case, as we know the pointer should be valid, we can conclude that the entire TextCursor object is then corrupted/invalid. Since the cursor is part of a TextRange, it means the TextRange is already invalid. Interestingly, this is exactly what valgrind is telling us in the lower part: The TextRange destructor that lead to the invalid read above is called in the 2nd half of the valgrind trace. From this, we can conclude that the function KateTextBuffer::mergeBlock() accesses a dangling pointer to a TextRange.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s a good start, but in fact, this is where the hard work begins. I&amp;#8217;ve invesed about 2 hours to find that probably the dangling pointer is in a cache that is supposed to make the access of the TextRanges (MovingRanges to be precise) faster. Christoph then looked into it and tried several attempts to fix the nasty bug, finally showing us that the cache was indeed wrong but due to a too-late fixup of the start/end text cursors with respect to the TextBlocks. In total, Christoph probably invested about 6 hours, and given that Gerald certainly took quite a lot of time too to write the unit test, we probably have more than 10 ours just to get this bug fixed. Still, the good news is that we got it! And if we are lucky, this was the last bug in  Kate&amp;#8217;s text buffer. So on to the &lt;a title=&#34;Kate crash list&#34; href=&#34;https://bugs.kde.org/buglist.cgi?list_id=555342&amp;bug_severity=critical&amp;bug_severity=grave&amp;bug_severity=major&amp;bug_severity=crash&amp;query_format=advanced&amp;bug_status=UNCONFIRMED&amp;bug_status=CONFIRMED&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;product=kate&#34; target=&#34;_blank&#34;&gt;next crashes&lt;/a&gt;&amp;#8230; Help welcome!&lt;/p&gt;</description></item><item><title>Kate Vim Mode: Papercuts (&#43; bonus emscripten-qt stuff!)</title><link>https://kate-editor.org/2013/03/16/kate-vim-mode-papercuts-bonus-emscripten-qt-stuff/</link><pubDate>Sat, 16 Mar 2013 14:58:23 +0000</pubDate><guid>https://kate-editor.org/2013/03/16/kate-vim-mode-papercuts-bonus-emscripten-qt-stuff/</guid><description>
&lt;p&gt;I was a long time Vim holdout and often wondered to myself, &amp;#8220;&lt;a href=&#34;http://www.viemu.com/a-why-vi-vim.html&#34;&gt;just why do those nutheads use vim?&lt;/a&gt;&amp;#8221; until I googled and read the blog I just linked. After trying Vim out for a few days, I was completely hooked, but didn&amp;#8217;t want to leave KDevelop with its awesome Intellisense/ code completion/ navigation features. Thankfully, Kate has a Vim mode, so I could get the best of both worlds :)&lt;/p&gt;
&lt;p&gt;However, I&amp;#8217;d often run into small but jarring inconsistencies with Vim, or sometimes find missing features, and so I set about trying to fix as many as I could. Since these were usually very small and unimportant things, I&amp;#8217;ll just go ahead and list them, Graesslin-style :)&lt;/p&gt;
&lt;p&gt;Vim mode is one of those rare and happy pieces of code which you can very easily write tests for: just add the starting text; the list of keypresses; and the expected, final text. Kuzmich Svyatoslav wrote a big battery of them a while back, and my &lt;a href=&#34;https://git.reviewboard.kde.org/r/106839/&#34;&gt;first ever patch&lt;/a&gt; was an incredibly trivial little one that fixed a hole in the test framework and a bug that the hole obscured.&lt;/p&gt;
&lt;p&gt;After that, I:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improved the test framework to enable us to test Insert Mode features;&lt;/li&gt;
&lt;li&gt;Fixed the inner curly bracket text object to be more like Vim (rather than deleting everything between the curly braces on a &lt;strong&gt;diB&lt;/strong&gt;, Vim usually attempts to leave the closing curly bracket on its own line);&lt;/li&gt;
&lt;li&gt;Added &lt;strong&gt;{&lt;/strong&gt; and &lt;strong&gt;}&lt;/strong&gt; motions to Visual Mode;&lt;/li&gt;
&lt;li&gt;Fix a few bugs with Erlend&amp;#8217;s very handy &amp;#8220;comma text object&amp;#8221; extension;&lt;/li&gt;
&lt;li&gt;Fixed numerous bugs with &lt;strong&gt;t&lt;/strong&gt;/&lt;strong&gt;T&lt;/strong&gt; and &lt;strong&gt;,&lt;/strong&gt; &amp;amp; &lt;strong&gt;;&lt;/strong&gt; involving them getting &amp;#8220;stuck&amp;#8221; behind occurrences of the character to search for, and also made them &amp;#8220;counted&amp;#8221; so that one can do e.g. &lt;strong&gt;3ta&lt;/strong&gt;, and also mirroring Vim&amp;#8217;s behaviour where if we can&amp;#8217;t find the required count of characters on the line, we don&amp;#8217;t move at all;&lt;/li&gt;
&lt;li&gt;Stopped the transition from Visual Mode to Normal mode from resetting the cursor position if we exited via &lt;em&gt;ESC&lt;/em&gt; or &lt;em&gt;Ctrl-c&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;Fixed a bug with the nifty &amp;#8220;block append&amp;#8221; feature;&lt;/li&gt;
&lt;li&gt;Fixed a nice bug with replaying the last command via &lt;strong&gt;.&lt;/strong&gt; when the last command was an insertion that had a &lt;em&gt;Ctrl-o&lt;/em&gt; in the middle of it (all the characters after we exited the &lt;em&gt;Ctrl-o&lt;/em&gt; were treated as commands, with predictably zany results!)&lt;/li&gt;
&lt;li&gt;Ensured that the bracket text object worked in Visual Mode;&lt;/li&gt;
&lt;li&gt;Made the very handy Key Mapping feature &amp;#8220;counted&amp;#8221;, so you could perform your chosen Mapping several times in a row, and also made them count as one edit that could be reverted with just one request to Undo;&lt;/li&gt;
&lt;li&gt;Made &lt;strong&gt;p&lt;/strong&gt; &amp;amp; &lt;strong&gt;P&lt;/strong&gt; move the cursor to the end of the pasted text instead of leaving it at the beginning (whoops!), and similarly for &lt;strong&gt;gp&lt;/strong&gt;/&lt;strong&gt;gP&lt;/strong&gt; which places the cursor one past the end, hopefully respecting Vim&amp;#8217;s slightly obscure exceptions and corner cases (e.g. &lt;strong&gt;p&lt;/strong&gt; and &lt;strong&gt;P&lt;/strong&gt; act as &lt;strong&gt;gp&lt;/strong&gt; and &lt;strong&gt;gp&lt;/strong&gt; when in Temporary Normal Mode);&lt;/li&gt;
&lt;li&gt;When doing &lt;em&gt;Ctrl-o&lt;/em&gt; in Insert Mode, move the cursor back one step if we are at the end of the line;&lt;/li&gt;
&lt;li&gt;Try to keep the length of the number under the cursor unchanged on &lt;em&gt;Ctrl-x&lt;/em&gt; and &lt;em&gt;Ctrl-a&lt;/em&gt; and also don&amp;#8217;t let the cursor stray off the number;&lt;/li&gt;
&lt;li&gt;Respect Vim&amp;#8217;s rules for counting with &lt;em&gt;Ctrl-x&lt;/em&gt; and &lt;em&gt;Ctrl-a&lt;/em&gt;, especially with repeats;&lt;/li&gt;
&lt;li&gt;Fix a lovely bug with some of the key parsing where the repeat last change command did not work after a &lt;em&gt;Ctrl-a&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;Made inserts (&lt;strong&gt;i&lt;/strong&gt;, &lt;strong&gt;I&lt;/strong&gt;, &lt;strong&gt;a&lt;/strong&gt;, &lt;strong&gt;A&lt;/strong&gt;, &lt;strong&gt;o&lt;/strong&gt;, &lt;strong&gt;O&lt;/strong&gt; and block append) counted, so you can do e.g. &lt;strong&gt;100oHello, World!&lt;em&gt;&lt;ESC&gt;&lt;/em&gt;&lt;/strong&gt;, although I now see that the old implementation of counted &lt;strong&gt;o&lt;/strong&gt; and &lt;strong&gt;O&lt;/strong&gt; was &amp;#8220;by design&amp;#8221;. Oops &amp;#8211; I&amp;#8217;ll have to sort that out at some point :/;&lt;/li&gt;
&lt;li&gt;Make &lt;em&gt;Ctrl-c&lt;/em&gt; reset the parser so that e.g. &lt;strong&gt;d&lt;em&gt;&lt;Ctrl-c&gt;&lt;/em&gt;&lt;/strong&gt; aborts the deletion. This one was cool as it remained undetected for ages by a sheer fluke: the only visible signs were that after doing e.g. &lt;strong&gt;d&lt;em&gt;&lt;Ctrl-c&gt;&lt;/em&gt;&lt;/strong&gt;, the cursor would stay at half size, and also another bug that I had been promising myself I&amp;#8217;d investigate for a while: typing &lt;strong&gt;r&lt;em&gt;&lt;Ctrl-c&gt;&lt;/em&gt;&lt;/strong&gt; would replace the current character with a nonsense character, which turned out to be the representation of the keypress &lt;em&gt;Ctrl-c&lt;/em&gt;!;&lt;/li&gt;
&lt;li&gt;Fixed a few minor flaws where after e.g. &lt;strong&gt;osometext&lt;em&gt;&lt;ESC&gt;&lt;/em&gt;&lt;/strong&gt;, we would have to request an Undo *twice* before getting back to where we issued the command;&lt;/li&gt;
&lt;li&gt;Arranged for a return to Normal Mode if we &lt;em&gt;Ctrl-c&lt;/em&gt; or &lt;em&gt;ESC&lt;/em&gt; when in Temporary Normal Mode. Vim is weird, here: its behaviour is just as you would expect if you were in Normal Mode, but the status bar still claims we are in Insert Mode!&lt;/li&gt;
&lt;li&gt;Fixed a bug where issuing &lt;strong&gt;y%&lt;/strong&gt; would actually move the cursor as well as yanking the text;&lt;/li&gt;
&lt;li&gt;Added the last edit markers, &lt;strong&gt;[&lt;/strong&gt;,&lt;strong&gt;]&lt;/strong&gt; and &lt;strong&gt;.&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;Fixed a few bugs with inner bracket text objects being treated as invalid if there were less than three characters long;&lt;/li&gt;
&lt;li&gt;Respected Vim&amp;#8217;s rules for the &lt;strong&gt;[[&lt;/strong&gt;, &lt;strong&gt;][&lt;/strong&gt; etc motions when used with commands: they behave slightly differently than when they are used as cursor motions;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;and that&amp;#8217;s about it! Kate Vim&amp;#8217;s testability make it very pleasant to develop features/ fixes Test First, so all of these are buttressed by a decent amount of automated tests.&lt;/p&gt;
&lt;h2 id=&#34;the-future&#34;&gt;The Future&lt;/h2&gt;
&lt;p&gt;I&amp;#8217;m nearing the end of the papercuts stuff, and will shortly move onto slightly larger scale things. This will consist of implementing a Vim-style search and replace bar, with all the usual Vim shortcuts: &lt;em&gt;Ctrl-c&lt;/em&gt; to dismiss; &lt;em&gt;Ctrl-r&lt;/em&gt; to insert contents of register; &lt;em&gt;Ctrl-rCtrl-w&lt;/em&gt; to insert the word under the cursor; etc, and with proper Vim style searching e.g. positioning the cursor on the first letter of the current match; return to where we were if cancelled; interactive search and replace with Y/N/Q/A; etc. I think I&amp;#8217;ll use &amp;#8220;smartcase&amp;#8221; for deciding case sensitivity, but might make this configurable through a hidden config option if there is any demand for it.&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s currently quite a lot of Vim-specific code that has leaked into Kate&amp;#8217;s own Find/ Replace dialog, and I&amp;#8217;d really like to be able to delete that and just have Vim use this Vim-specific version. What do people think? I&amp;#8217;d have to get it at least as functional as Kate&amp;#8217;s own one before I&amp;#8217;d consider this, so we&amp;#8217;d need e.g. some way of going through the Find and the Replace history separately (I don&amp;#8217;t think stock Vim can do this?) and easily toggling whether this is a regex or a literal search, etc. I&amp;#8217;d really like some feedback on this, and a suggestion for shortcuts etc!&lt;/p&gt;
&lt;p&gt;Done properly, this would give us a powerful, keyboard-friendly Find (and Command Line) dialog where we can easily track the keypresses, which would set us up nicely for the next major task &amp;#8211; &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=288351&#34;&gt;Vim Macro support!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Before all that, though, I just have a couple of smaller odds and ends to sort out: I need to get auto-completion properly working with &lt;strong&gt;.&lt;/strong&gt; (currently, if auto-completion is automatically invoked, pressing &lt;strong&gt;.&lt;/strong&gt; won&amp;#8217;t include the completed text), and it would be nice if &lt;em&gt;Ctrl-p&lt;/em&gt; and &lt;em&gt;Ctrl-n&lt;/em&gt; could wrap around in the list of completions as they do in Vim (need to sort out a Kate bug with completion first). I also have an another &lt;a href=&#34;https://git.reviewboard.kde.org/r/109372/&#34;&gt;idea&lt;/a&gt; which I&amp;#8217;d like some feedback on; it would be nice if people would try it out and let me know if they find it helpful, annoying, etc. If only there was a way of letting people test out a patch that hasn&amp;#8217;t been committed yet &amp;#8230; ! Which leads nicely on to:&lt;/p&gt;
&lt;h2 id=&#34;emscripten-kate&#34;&gt;emscripten-kate :)&lt;/h2&gt;
&lt;p&gt;You may have seen my &lt;a href=&#34;http://ssj-gz.blogspot.co.uk/2013/01/emscripten-qt-progress-faster-better.html&#34;&gt;blogs&lt;/a&gt; on &lt;a href=&#34;http://vps2.etotheipiplusone.com:30176/redmine/projects/emscripten-qt/wiki/Demos&#34;&gt;emscripten-qt&lt;/a&gt;, a port of Qt to &lt;a href=&#34;https://github.com/kripken/emscripten/wiki&#34;&gt;Emscripten&lt;/a&gt;, an awesome technology that allows one to compile C/C++ to Javascript. This caught the eye of Mozilla, who were looking for an example of a &amp;#8220;serious&amp;#8221; app to go along with the games and utilities in their current list of Emscripten demos, and they kindly offered to sponsor me to work on this. After looking through a list of candidate apps, they eventually suggested porting Kate: not exactly an easy task, as Kate obviously requires not only a big chunk of kdelibs (with its reliance on DBUS and external processes like kded, etc) but also QtScript for its extensibility (the automatic code indentation for various programming languages, for example, is implemented in JS) meaning I&amp;#8217;d need to get a C++-based Javascript interpreter ported to Javascript ;)&lt;/p&gt;
&lt;p&gt;This ended up being not as hard as I feared, and now we have a decent (though very cut-down; there are no plugins, so it&amp;#8217;s more like KWrite than Kate ;)) version of Kate ported to Javascript. I&amp;#8217;ve merged in the patch I&amp;#8217;d like feedback on as mentioned above so you can easily &lt;a href=&#34;http://vps2.etotheipiplusone.com:30176/redmine/emscripten-qt-examples/kate-testing/kate.html&#34;&gt;try it out&lt;/a&gt; as long as you have a modern browser, plenty of bandwidth (even after server-side compression, you&amp;#8217;re still looking at a tens of MB download :/) and also plenty of free RAM and CPU. There&amp;#8217;s an unfortunate &lt;a href=&#34;http://code.google.com/p/chromium/issues/detail?id=180301&amp;amp;thanks=180301&amp;amp;ts=1362512388&#34;&gt;bug&lt;/a&gt; in Chrome which means you&amp;#8217;ll need to use the &lt;a href=&#34;http://vps2.etotheipiplusone.com:30176/redmine/emscripten-qt-examples/kate-testing/kate-noicons.html&#34;&gt;no icons&lt;/a&gt; version, alas. Konqueror and reKonq also do not work, to my knowledge. Let me know what you think, and if anyone has any thoughts on shortcuts for the extended Find/ Command Line bar, do let me know!&lt;/p&gt;</description></item><item><title>Navigation in Okular: Back &amp; Forward</title><link>https://kate-editor.org/2013/03/10/navigation-in-okular-back-forward/</link><pubDate>Sun, 10 Mar 2013 15:18:19 +0000</pubDate><guid>https://kate-editor.org/2013/03/10/navigation-in-okular-back-forward/</guid><description>&lt;p&gt;&lt;a title=&#34;The official Okular homepage&#34; href=&#34;http://okular.kde.org/&#34; target=&#34;_blank&#34;&gt;Okular&lt;/a&gt;, KDE&amp;#8217;s &lt;a title=&#34;Okular on UserBase&#34; href=&#34;http://userbase.kde.org/Okular&#34; target=&#34;_blank&#34;&gt;universal document viewer&lt;/a&gt;, has a really cool feature I&amp;#8217;m using for years already: &amp;#8220;Go &amp;gt; Forward&amp;#8221; and &amp;#8220;Go &amp;gt; Backward&amp;#8221;. These two actions allow to quickly jump to positions in the document where you came from in a chronological order. Consider e.g. reading the phrase &amp;#8220;As shown in [15], &amp;#8230;&amp;#8221;, and you want to know quickly lookup reference [15]. So you click on it, and okular will jump to the list of references. And &amp;#8220;Go &amp;gt; Back&amp;#8221; will bring you back to exactly the position where you came from.&lt;/p&gt;
&lt;p&gt;Awesome :-D&lt;/p&gt;
&lt;p&gt;In fact, I removed the &amp;#8220;Previous&amp;#8221; and &amp;#8220;Next&amp;#8221;-page buttons from the toolbar in favor of the &amp;#8220;Back&amp;#8221; and &amp;#8220;Forward&amp;#8221; feature, which is much more useful to me :) Given that my colleagues were not aware of this feature (all experts in LaTeX  and all using Kile and Okular), I thought to praise it here in a dedicated blog. &lt;span style=&#34;text-decoration: line-through;&#34;&gt;Interestingly, the &lt;a title=&#34;Okular Handbook&#34; href=&#34;http://docs.kde.org/stable/en/kdegraphics/okular/navigating.html&#34; target=&#34;_blank&#34;&gt;Okular Handbook&lt;/a&gt; is missing this feature. Any takers to fix this? :-)&lt;/span&gt; &lt;strong&gt;Update:&lt;/strong&gt; This is also mentioned in the &lt;a title=&#34;Go-Menu in Okular&#34; href=&#34;http://docs.kde.org/stable/en/kdegraphics/okular/menugo.html&#34; target=&#34;_blank&#34;&gt;Okular handbook&lt;/a&gt; :-)&lt;/p&gt;</description></item><item><title>Idea: Code Completion for JavaScript</title><link>https://kate-editor.org/2013/02/27/idea-code-completion-for-javascript/</link><pubDate>Wed, 27 Feb 2013 20:17:54 +0000</pubDate><guid>https://kate-editor.org/2013/02/27/idea-code-completion-for-javascript/</guid><description>
&lt;p&gt;In 2012, Kate had a GSoC project with the aim of adding a &lt;a href=&#34;https://kate-editor.org/2012/08/29/1982/&#34; title=&#34;Scripting IDE&#34;&gt;Scripting IDE plugin&lt;/a&gt;. The idea was to make it easy to write &lt;a href=&#34;http://docs.kde.org/stable/en/kde-baseapps/kate/advanced-editing-tools-scripting.html&#34; title=&#34;Scripting Kate Part&#34;&gt;Kate Part scripts&lt;/a&gt; (command line scripts, indenters), that should include rudimentary code completion and a gui to manage available scripts. As detailed in the blog post, a rudimentary list that showed all available scripts is available. However, due to changes in Kate Part&amp;#8217;s scripting framework (e.g. changes in the folder structure, require() function to load libraries), the plugin in its current form is not applicable anymore. Still, the idea of having a better JavaScript support is valid.&lt;/p&gt;
&lt;p&gt;So this blog post is about some ideas how we can add possibly really cool JavaScript support to Kate as a plugin. This plugin should provide the following features:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;provide code completion&lt;/li&gt;
&lt;li&gt;support for loading additional modules (jQuery, Node.js, Prototype, Kate Scripting API, &amp;#8230;)&lt;/li&gt;
&lt;li&gt;specialized support for Kate Part scripting&lt;/li&gt;
&lt;li&gt;outline in terms of a function and prototype browser&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;javascript-code-completion&#34;&gt;JavaScript Code Completion&lt;/h3&gt;
&lt;p&gt;Providing code completion to JavaScript requires a parser so we have an abstract syntax tree (AST) of the current file. This parser needs to be error-tolerant, since during the process of programming, the source code often violates the syntax. Searching the Web, relatively few information about such a parser exists. But one tiny parser shines: &lt;a title=&#34;Esprima&#34; href=&#34;http://esprima.org/&#34; target=&#34;_blank&#34;&gt;Esprima&lt;/a&gt; (&lt;a title=&#34;Esprima source code&#34; href=&#34;https://github.com/ariya/esprima&#34; target=&#34;_blank&#34;&gt;source code&lt;/a&gt;, &lt;a title=&#34;Infos about Esprima&#34; href=&#34;http://ariya.ofilabs.com/2012/07/behind-esprima.html&#34; target=&#34;_blank&#34;&gt;more info&lt;/a&gt;), written by KDE&amp;#8217;s &amp;#8220;very own&amp;#8221; Ariya :-)&lt;/p&gt;
&lt;p&gt;Esprima is a JavaScript parser written in JavaScript. It is (to some degree) error-tolerant and returns an &lt;a title=&#34;Esprima Parse Demo&#34; href=&#34;http://esprima.org/demo/parse.html&#34; target=&#34;_blank&#34;&gt;AST as shown in the parse demo&lt;/a&gt;. The AST is returned in simple &lt;a title=&#34;JSON&#34; href=&#34;http://www.json.org/&#34; target=&#34;_blank&#34;&gt;JSON&lt;/a&gt; syntax, meaning it can be easily parsed with either the &lt;a title=&#34;JSON in JavaScript&#34; href=&#34;http://www.json.org/js.html&#34; target=&#34;_blank&#34;&gt;JavaScript JSON functions&lt;/a&gt; or &lt;a title=&#34;JSON in Qt5&#34; href=&#34;http://qt-project.org/wiki/Qt-5Features#080262b7904bf7cd6d839d85e0727cd1&#34; target=&#34;_blank&#34;&gt;JSON in Qt5&lt;/a&gt; (&lt;a title=&#34;QJSON (Qt4)&#34; href=&#34;http://qjson.sourceforge.net/&#34; target=&#34;_blank&#34;&gt;JSON for Qt4&lt;/a&gt;). Along the error-tolerant mode, the AST returned by Esprima also contains comments and line/column information, if desired.&lt;/p&gt;
&lt;p&gt;Interestingly, the idea of using Esprima for code completion &lt;a title=&#34;Code Completion with Esprima&#34; href=&#34;https://code.google.com/p/esprima/issues/detail?id=130&#34; target=&#34;_blank&#34;&gt;arose about a year ago&lt;/a&gt;, and meanwhile there are several projects that successfully use the Esprima AST: &lt;a title=&#34;Esprima in Eclipse Orion&#34; href=&#34;http://ariya.ofilabs.com/2012/07/code-editing-with-autocompletion-in-eclipse-orion.html&#34; target=&#34;_blank&#34;&gt;Eclipse Orion&lt;/a&gt;, a web-based IDE, uses Esprima for &lt;a title=&#34;Orion Code Completion&#34; href=&#34;http://contraptionsforprogramming.blogspot.de/2012/02/better-javascript-content-assist-in.html&#34; target=&#34;_blank&#34;&gt;code completion&lt;/a&gt; and for the &lt;a title=&#34;Outline View based on Esprima&#34; href=&#34;https://github.com/aclement/esprima-outline&#34; target=&#34;_blank&#34;&gt;outline view (sources)&lt;/a&gt;. The source code for the code completion is available in the &lt;a title=&#34;Orion IDE git&#34; href=&#34;http://wiki.eclipse.org/Orion/Getting_the_source&#34; target=&#34;_blank&#34;&gt;orion client git module&lt;/a&gt;: &lt;a title=&#34;Esprima code&#34; href=&#34;http://git.eclipse.org/c/orion/org.eclipse.orion.client.git/tree/bundles/org.eclipse.orion.client.ui/web/esprima&#34; target=&#34;_blank&#34;&gt;lib&lt;/a&gt;, &lt;a title=&#34;Esprima Code Completion (Content Assist)&#34; href=&#34;http://git.eclipse.org/c/orion/org.eclipse.orion.client.git/tree/bundles/org.eclipse.orion.client.ui/web/plugins/esprima&#34; target=&#34;_blank&#34;&gt;code completion (content assist)&lt;/a&gt;, &lt;a title=&#34;Esprima unit test for code completion&#34; href=&#34;http://git.eclipse.org/c/orion/org.eclipse.orion.client.git/tree/bundles/org.eclipse.orion.client.ui/web/js-tests/esprima&#34; target=&#34;_blank&#34;&gt;unit tests&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;so-what-next&#34;&gt;So What Next?&lt;/h3&gt;
&lt;p&gt;As it seems the code is all there, the next step would be to start a small standalone project and write a proof of concept to check whether this approach is feasible. I&amp;#8217;d suggest to use Qt&amp;#8217;s JavaScript interpreter (&lt;a title=&#34;QtScript in Qt4&#34; href=&#34;http://qt-project.org/doc/qt-4.8/qtscript.html&#34; target=&#34;_blank&#34;&gt;QtScript&lt;/a&gt; in Qt4, &lt;a title=&#34;QJS in Qt5&#34; href=&#34;http://qt-project.org/doc/qt-5.0/qtqml/qtqml-module.html&#34; target=&#34;_blank&#34;&gt;QJS in Qt5&lt;/a&gt;). In the long run, the goal would be to have code completion and possibly an outline view. If this works, more functionality like support for Kate Scripting could be added. So there is a lot to play around with.&lt;/p&gt;
&lt;p&gt;If you are interested, just start working on it. It might be a good GSoC project (although we&amp;#8217;d require a quite skilled developer here) :-P Thoughts? Comments?&lt;/p&gt;</description></item><item><title>Kate Git Statistics</title><link>https://kate-editor.org/2013/02/27/kate-git-statistics/</link><pubDate>Wed, 27 Feb 2013 19:26:43 +0000</pubDate><guid>https://kate-editor.org/2013/02/27/kate-git-statistics/</guid><description>&lt;p&gt;Now the statistics of the &lt;a href=&#34;https://projects.kde.org/projects/kde/kde-baseapps/kate/repository&#34; title=&#34;kate.git&#34; target=&#34;_blank&#34;&gt;kate.git&lt;/a&gt; are online for public viewing.&lt;br /&gt;
They will be updated daily, located on: &lt;a title=&#34;Kate Git Statistics&#34; href=&#34;https://kate-editor.org/stats/&#34; target=&#34;_blank&#34;&gt;/stats/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately, the statistics of the last years are not that &amp;#8220;representative&amp;#8221;, as the moves of Kate around in SVN and to Git biased the statistics, as I did a lot of the commits for syncing and moving and so on.&lt;/p&gt;
&lt;p&gt;Still it is amazing how MANY people did contribute during Kate&amp;#8217;s history! (see &lt;a href=&#34;https://kate-editor.org/stats/authors/best_authors.html&#34; title=&#34;Kate Authors&#34; target=&#34;_blank&#34;&gt;Kate Authors&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;A big THANK YOU to all contributors that appear there (and all the people that provided patches others merged in, did the testing, bug reporting, translations, &amp;#8230;).&lt;/p&gt;
&lt;p&gt;(And thanks to the authors of &lt;a href=&#34;https://github.com/tomgi/git_stats&#34; title=&#34;git_stats&#34; target=&#34;_blank&#34;&gt;git_stats&lt;/a&gt;.)&lt;/p&gt;</description></item><item><title>Git Tools</title><link>https://kate-editor.org/2013/02/25/git-tools/</link><pubDate>Mon, 25 Feb 2013 19:51:11 +0000</pubDate><guid>https://kate-editor.org/2013/02/25/git-tools/</guid><description>&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/2012/11/02/using-the-projects-plugin-in-kate/&#34; title=&#34;Using the Kate Projects Plugin&#34;&gt;The Projects plugin&lt;/a&gt; in Kate just gained a context menu for the tree view that shows several git tools, if available:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-2289&#34; title=&#34;Context Menu of Projects Tree View&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/02/git-tools.png&#34; alt=&#34;&#34; width=&#34;447&#34; height=&#34;434&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/02/git-tools.png 447w, https://kate-editor.org/wp-content/uploads/2013/02/git-tools-300x291.png 300w, https://kate-editor.org/wp-content/uploads/2013/02/git-tools-50x50.png 50w&#34; sizes=&#34;(max-width: 447px) 100vw, 447px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Clicking will open the corresponding application in the correct working directory. Currently, only &lt;a title=&#34;gitk&#34; href=&#34;http://www.kernel.org/pub//software/scm/git/docs/gitk.html&#34; target=&#34;_blank&#34;&gt;gitk&lt;/a&gt;, &lt;a title=&#34;qgit&#34; href=&#34;http://sourceforge.net/projects/qgit/&#34; target=&#34;_blank&#34;&gt;qgit&lt;/a&gt; and &lt;a title=&#34;git-cola&#34; href=&#34;http://git-cola.github.com/&#34; target=&#34;_blank&#34;&gt;git-cola&lt;/a&gt; are supported. If you want more git integration, you probably have to use &lt;a title=&#34;KDevelop&#34; href=&#34;http://www.kdevelop.org/&#34; target=&#34;_blank&#34;&gt;KDevelop&lt;/a&gt; or &lt;a title=&#34;QtCreator&#34; href=&#34;http://doc.qt.digia.com/qtcreator-2.4/&#34; target=&#34;_blank&#34;&gt;QtCreator&lt;/a&gt; :-)&lt;/p&gt;</description></item><item><title>New plugins to the Kate, utils to: Python, JavaScript, Django and XML</title><link>https://kate-editor.org/2013/02/18/new-plugins-to-the-kate-utils-to-python-javascript-django-and-xml/</link><pubDate>Mon, 18 Feb 2013 09:17:00 +0000</pubDate><guid>https://kate-editor.org/2013/02/18/new-plugins-to-the-kate-utils-to-python-javascript-django-and-xml/</guid><description>&lt;p&gt;The project plugin in kate.git master now has four new more plugins, with many features in each one: &lt;a title=&#34;Python&#34; href=&#34;http://www.python.org/&#34; target=&#34;_blank&#34;&gt;Python&lt;/a&gt; (autocomplete, smart snippets, parse checker, &lt;a href=&#34;http://pypi.python.org/pypi/pep8&#34; target=&#34;_blank&#34;&gt;pep8&lt;/a&gt; checker and &lt;a href=&#34;http://pypi.python.org/pypi/pyflakes&#34; target=&#34;_blank&#34;&gt;pyflakes&lt;/a&gt; checker), Javascript (autocompletes, jquery snippet, pretty JSON, and &lt;a href=&#34;http://www.jslint.com/&#34; target=&#34;_blank&#34;&gt;jslint&lt;/a&gt; checker), &lt;a title=&#34;Django project&#34; href=&#34;https://www.djangoproject.com/&#34; target=&#34;_blank&#34;&gt;Django&lt;/a&gt; (smart snippets and utils to Django template) and XML (pretty xml). There are also many generic functions and generic classes in these that will be useful to the new plugins developers.&lt;/p&gt;
&lt;p&gt;I began to develop these plugins in 2009, this was &lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/02/pyplugins.zip&#34; title=&#34;Kate plugins first version&#34;&gt;my first version&lt;/a&gt; :-). I wanted to set a shortcut to a snippet, as it was not possible (now it is posible) I started to develop these plugins to Kate.&lt;/p&gt;
&lt;p&gt;In November 2011, I created a repository on &lt;a href=&#34;https://github.com/goinnn/Kate-plugins#information&#34; title=&#34;Kate plugins repository&#34;&gt;github&lt;/a&gt; to develop new features and share them. I have to thank &lt;a href=&#34;https://github.com/ablanco&#34; target=&#34;_blank&#34;&gt;Alejandro Blanco&lt;/a&gt;, &lt;a href=&#34;https://github.com/phrearch&#34; target=&#34;_blank&#34;&gt;Jeroen van Veen&lt;/a&gt;, &lt;a href=&#34;https://github.com/javiromero&#34; target=&#34;_blank&#34;&gt;Javier Romero&lt;/a&gt;, &lt;a href=&#34;https://github.com/mborho&#34; target=&#34;_blank&#34;&gt;Martin Borho&lt;/a&gt;, &lt;a href=&#34;https://github.com/justinzane&#34; target=&#34;_blank&#34;&gt;Justin Chudgar&lt;/a&gt; and &lt;a href=&#34;http://www.yaco.es/&#34; target=&#34;_blank&#34;&gt;Yaco Sistemas&lt;/a&gt; for helping me in this &lt;a href=&#34;https://github.com/goinnn/Kate-plugins&#34; target=&#34;_blank&#34;&gt;project&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In October 2012 Christoph Cullmann (Kate maintainer) sent me an e-mail, in which he asked me if I was interested to contribute with KDE project. I answered: &amp;#8220;Of course!&amp;#8221;&amp;#8230;. finally I have a little time, and I have been able to integrate these plugins in the &lt;a href=&#34;https://projects.kde.org/projects/kde/kde-baseapps/kate/repository/&#34; target=&#34;_blank&#34;&gt;kate.git&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;features-to-python-plugin&#34;&gt;Features to Python Plugin:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Python dynamic autocomplete using &lt;a href=&#34;https://github.com/goinnn/pyplete&#34; target=&#34;_blank&#34;&gt;pyplete&lt;/a&gt;, this is in beta&amp;#8230; It requires development, but now it is very useful.&lt;/li&gt;
&lt;li&gt;Smart snippets:
&lt;ol&gt;
&lt;li&gt;Insert an __init__ method into a class.&lt;/li&gt;
&lt;li&gt;Insert a super call into a method.&lt;/li&gt;
&lt;li&gt;Insert a call recursive into a method or into a function&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;Simple snippet: Insert the debug instrunctions &amp;#8220;import ipdb; ipdb.set_trace()&amp;#8221;&lt;/li&gt;
&lt;li&gt;Checkers: When you save the file it is syntax checked, &lt;a href=&#34;http://pypi.python.org/pypi/pep8&#34; target=&#34;_blank&#34;&gt;pep8&lt;/a&gt; checked and &lt;a href=&#34;http://pypi.python.org/pypi/pyflakes&#34; target=&#34;_blank&#34;&gt;pyflakes&lt;/a&gt; checked. You can invocate them any other time.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;toc_1&#34;&gt;[&lt;/h2&gt;
&lt;p&gt;][3] &lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/02/autocompletion_python3.jpg&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-2250&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/02/autocompletion_python3.jpg&#34; alt=&#34;&#34; width=&#34;1043&#34; height=&#34;282&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/02/autocompletion_python3.jpg 1043w, https://kate-editor.org/wp-content/uploads/2013/02/autocompletion_python3-300x81.jpg 300w, https://kate-editor.org/wp-content/uploads/2013/02/autocompletion_python3-1024x276.jpg 1024w&#34; sizes=&#34;(max-width: 1043px) 100vw, 1043px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&#34;text-align: center&#34;&gt;
Python auto complete
&lt;/p&gt;
&lt;h2 id=&#34;features-to-javascript-plugin&#34;&gt;Features to Javascript Plugin:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;JavaScript static autocomplete, using a JSON file.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://jquery.com/&#34; target=&#34;_blank&#34;&gt;JQuery&lt;/a&gt; static autocomplete using a JSON file.&lt;/li&gt;
&lt;li&gt;Pretty JSON: Pretty format of a JSON code selected&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.jslint.com/&#34; target=&#34;_blank&#34;&gt;JSLint&lt;/a&gt; checker: When you save the file it is JSLint checked. You can invocate it any other time.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://jquery.com/&#34; target=&#34;_blank&#34;&gt;JQuery&lt;/a&gt; snippet, insert the ready code of the &lt;a href=&#34;http://jquery.com/&#34; target=&#34;_blank&#34;&gt;jQuery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;img-class-aligncenter-size-full-wp-image-2257-src-wp-content-uploads-2013-02-jslint1-jpg-alt-width-763-height-324-srcset-wp-content-uploads-2013-02-jslint1-jpg-763w-wp-content-uploads-2013-02-jslint1-300x127-jpg-300w-sizes-max-width-763px-100vw-763px-5&#34;&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/02/jslint1.jpg&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-2257&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/02/jslint1.jpg&#34; alt=&#34;&#34; width=&#34;763&#34; height=&#34;324&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/02/jslint1.jpg 763w, https://kate-editor.org/wp-content/uploads/2013/02/jslint1-300x127.jpg 300w&#34; sizes=&#34;(max-width: 763px) 100vw, 763px&#34; /&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p style=&#34;text-align: center&#34;&gt;
JSLint checker
&lt;/p&gt;
&lt;h2 id=&#34;features-to-django-plugin&#34;&gt;Features to Django Plugin:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Smart snippets:
&lt;ol&gt;
&lt;li&gt;Create a model class&lt;/li&gt;
&lt;li&gt;Create a form class&lt;/li&gt;
&lt;li&gt;Template to the urls.py file&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;Simple snippet: Insert the typical imports of a views.py file&lt;/li&gt;
&lt;li&gt;Template Django utils
&lt;ol&gt;
&lt;li&gt;Insert the tag block/endblock. The name of the block will be the text selected&lt;/li&gt;
&lt;li&gt;Close the last templatetag open&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;img-class-aligncenter-size-full-wp-image-2262-src-wp-content-uploads-2013-02-django-form1-jpg-alt-width-368-height-321-srcset-wp-content-uploads-2013-02-django-form1-jpg-368w-wp-content-uploads-2013-02-django-form1-300x261-jpg-300w-sizes-max-width-368px-100vw-368px-6&#34;&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/02/django_form1.jpg&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-2262&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/02/django_form1.jpg&#34; alt=&#34;&#34; width=&#34;368&#34; height=&#34;321&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/02/django_form1.jpg 368w, https://kate-editor.org/wp-content/uploads/2013/02/django_form1-300x261.jpg 300w&#34; sizes=&#34;(max-width: 368px) 100vw, 368px&#34; /&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p style=&#34;text-align: center&#34;&gt;
Create a form class
&lt;/p&gt;
&lt;h2 id=&#34;pretty-xml&#34;&gt;Pretty XML:&lt;/h2&gt;
&lt;p&gt;Pretty format of an XML code selected&lt;/p&gt;
&lt;h2 id=&#34;img-class-aligncenter-size-full-wp-image-2264-src-wp-content-uploads-2013-02-xml-pretty1-jpg-alt-width-650-height-278-srcset-wp-content-uploads-2013-02-xml-pretty1-jpg-650w-wp-content-uploads-2013-02-xml-pretty1-300x128-jpg-300w-sizes-max-width-650px-100vw-650px-7&#34;&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/02/xml_pretty1.jpg&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-2264&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/02/xml_pretty1.jpg&#34; alt=&#34;&#34; width=&#34;650&#34; height=&#34;278&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/02/xml_pretty1.jpg 650w, https://kate-editor.org/wp-content/uploads/2013/02/xml_pretty1-300x128.jpg 300w&#34; sizes=&#34;(max-width: 650px) 100vw, 650px&#34; /&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p style=&#34;text-align: center&#34;&gt;
Pretty XML
&lt;/p&gt;
&lt;h2 id=&#34;generic-features&#34;&gt;Generic features:&lt;/h2&gt;
&lt;p&gt;Also I have added many generic functions and generic classes, likely the more outstanding are the autocompletations. Now you can create a code completion model with very few lines:&lt;/p&gt;
&lt;pre&gt;import kate
from libkatepate.autocomplete import AbstractJSONFileCodeCompletionModel, reset
class MyCodeCompletionModel(AbstractJSONFileCodeCompletionModel):
MIMETYPES = [] # List of mimetypes E.G.: [&#39;application/javascript&#39;, &#39;text/html&#39;]
TITLE_AUTOCOMPLETION = &#34;My Auto Completion Model&#34;
FILE_PATH = &#39;my_autocompletion.json&#39;
# Operators to separate the instrunctions
OPERATORS = [&#34;=&#34;, &#34; &#34;, &#34;[&#34;, &#34;]&#34;, &#34;(&#34;, &#34;)&#34;, &#34;{&#34;, &#34;}&#34;, &#34;:&#34;, &#34;&amp;gt;&#34;, &#34;&amp;lt;&#34;,
&#34;+&#34;, &#34;-&#34;, &#34;*&#34;, &#34;/&#34;, &#34;%&#34;, &#34; &amp;&amp; &#34;, &#34; || &#34;, &#34;,&#34;]
@kate.init
@kate.viewCreated
def createSignalAutocompleteJS(view=None, *args, **kwargs):
view = view or kate.activeView()
cci = view.codeCompletionInterface()
cci.registerCompletionModel(my_code_completion_model)
my_code_completion_model = MyCodeCompletionModel(kate.application)
my_code_completion_model.modelReset.connect(reset)&lt;/pre&gt;
&lt;p&gt;The my_autocompletion.json file should have this format:&lt;/p&gt;
&lt;pre&gt;{
&#34;xxx&#34;: {
&#34;category&#34;: &#34;module&#34;,
&#34;children&#34;: {
&#34;www&#34;: {
&#34;category&#34;: &#34;class&#34;,
&#34;children&#34;: {}
},
&#34;yyy&#34;: {
&#34;category&#34;: &#34;constant&#34;,
&#34;children&#34;: {}
},
&#34;zzz&#34;: {
&#34;category&#34;: &#34;function&#34;,
&#34;args&#34;: &#34;(x1, x2, x3)&#34;,
&#34;children&#34;: {}
}
}
}
}&lt;/pre&gt;
&lt;p&gt;I encourage you to participate in the KDE project, for me this participation has been very simple because this community is very, very open.&lt;/p&gt;
&lt;p&gt;Thanks all,&lt;/p&gt;</description></item><item><title>Highlight Text Selection Plugin</title><link>https://kate-editor.org/2013/02/15/highlight-text-selection-plugin/</link><pubDate>Fri, 15 Feb 2013 08:42:18 +0000</pubDate><guid>https://kate-editor.org/2013/02/15/highlight-text-selection-plugin/</guid><description>&lt;p&gt;As a quick notice: The &lt;a href=&#34;https://kate-editor.org/2010/11/14/highlight-selected-text/&#34; title=&#34;Highlight Selected Text&#34;&gt;highlight selection plugin&lt;/a&gt; was not removed in KDE SC 4.10.0. Instead, a silly bug results in not loading the plugin. This is fixed for DKE 4.10.1. If you cannot wait, you can find a &lt;a title=&#34;Bug report: Highlight Selected Text is missing&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=314530&#34; target=&#34;_blank&#34;&gt;workaround here&lt;/a&gt; :-)&lt;/p&gt;</description></item><item><title>Kate Project Plugin News – Code Analysis</title><link>https://kate-editor.org/2013/02/02/kate-project-plugin-news-code-analysis/</link><pubDate>Sat, 02 Feb 2013 20:28:58 +0000</pubDate><guid>https://kate-editor.org/2013/02/02/kate-project-plugin-news-code-analysis/</guid><description>&lt;p&gt;The project plugin in kate.git master has now the ability to call &lt;a title=&#34;cppcheck&#34; href=&#34;http://cppcheck.sourceforge.net/&#34; target=&#34;_blank&#34;&gt;cppcheck&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is just hacked in at the moment and needs more love, but it works.&lt;br /&gt;
Feel free to contribute integration of other code checkers, cppcheck is only the first, I hope ;)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/02/kate_project_code_analysis.png&#34;&gt;&lt;img class=&#34;aligncenter size-large wp-image-2218&#34; title=&#34;kate_project_code_analysis&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/02/kate_project_code_analysis-1024x586.png&#34; alt=&#34;&#34; width=&#34;770&#34; height=&#34;440&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/02/kate_project_code_analysis-1024x586.png 1024w, https://kate-editor.org/wp-content/uploads/2013/02/kate_project_code_analysis-300x171.png 300w, https://kate-editor.org/wp-content/uploads/2013/02/kate_project_code_analysis.png 1047w&#34; sizes=&#34;(max-width: 770px) 100vw, 770px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kate in KDE 4.10</title><link>https://kate-editor.org/2013/01/06/kate-in-kde-4-10/</link><pubDate>Sun, 06 Jan 2013 15:10:42 +0000</pubDate><guid>https://kate-editor.org/2013/01/06/kate-in-kde-4-10/</guid><description>
&lt;p&gt;According to our &lt;a title=&#34;KDE Release Schedule&#34; href=&#34;http://techbase.kde.org/Schedules/KDE4/4.10_Release_Schedule&#34; target=&#34;_blank&#34;&gt;release schedule&lt;/a&gt;, KDE SC 4.10.0 will be available to the public in early February 2013. Following &lt;a href=&#34;https://kate-editor.org/2011/07/09/kate-in-kde-4-7/&#34; title=&#34;Kate in KDE 4.7&#34;&gt;Kate in KDE 4.7&lt;/a&gt;, &lt;a href=&#34;https://kate-editor.org/2011/12/21/kate-in-kde-4-8/&#34; title=&#34;Kate in KDE 4.8&#34;&gt;Kate in KDE 4.8&lt;/a&gt; and &lt;a href=&#34;https://kate-editor.org/2012/06/30/kate-in-kde-4-9/&#34; title=&#34;Kate in KDE 4.9&#34;&gt;Kate in KDE 4.9&lt;/a&gt;, this blog post highlights what&amp;#8217;s new in Kate in KDE 4.10.&lt;/p&gt;
&lt;h3 id=&#34;new-features&#34;&gt;New Features&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Kate Part got a &lt;a href=&#34;https://kate-editor.org/2012/11/06/passive-notifications-in-kate-part/&#34; title=&#34;Notifications in Kate&#34;&gt;unified notification system&lt;/a&gt;. It&amp;#8217;s used in several places already, for instance for &lt;a href=&#34;https://kate-editor.org/2012/11/05/loading-remote-files/&#34; title=&#34;Loading Remote Files&#34;&gt;remote file loading&lt;/a&gt;, &lt;a href=&#34;https://kate-editor.org/2012/10/25/data-recovery-in-4-10/&#34; title=&#34;Data Recovery in KDE 4.10&#34;&gt;data recovery&lt;/a&gt; and Search &amp;amp; Replace information.&lt;/li&gt;
&lt;li&gt;Kate Part can now be configured to show a &lt;a href=&#34;https://kate-editor.org/2012/11/03/busy-katekdevelop-sprint-results-in-mini-map/&#34; title=&#34;Minimap&#34;&gt;minimap of the document&lt;/a&gt; instead of a scrollbar. The minimap shows text in a miniature view and is useful for fast text navigation in the document. While the feature itself is stable, it may be changed and should be considered experimental. Feedback is welcome &lt;a href=&#34;https://kate-editor.org/join-us/&#34; title=&#34;Kate Mailing List&#34;&gt;on our mailing list&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Kate Part got several &lt;a href=&#34;https://kate-editor.org/2012/11/07/default-color-schemas/&#34; title=&#34;Predefined Color Schemes&#34;&gt;predefined color schemes&lt;/a&gt;. Feel free to contact us with improvements.&lt;/li&gt;
&lt;li&gt;Kate Part shows the &lt;a href=&#34;https://kate-editor.org/2012/10/28/show-line-while-scrolling/&#34; title=&#34;Show Current Line while Scrolling&#34;&gt;current line while scrolling&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Kate got an integrated Quick Open feature (ctrl+alt+o) for fast file navigation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;news-in-the-plugins-world&#34;&gt;News in the Plugins World&lt;/h3&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;
Kate&amp;#8217;s Pate plugin now provides several &lt;a title=&#34;Python Plugins&#34; href=&#34;https://kate-editor.org/2012/11/22/id-etags-id-etags/&#34;&gt;new plugins&lt;/a&gt; by default, with &lt;a title=&#34;Python 3 Support for Kate&#34; href=&#34;https://kate-editor.org/2012/12/02/python-plugin-gets-support-for-python3/&#34;&gt;Python 3 support&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;
Kate gained a new and very powerful &lt;a title=&#34;Kate Project Plugin&#34; href=&#34;https://kate-editor.org/2012/11/02/using-the-projects-plugin-in-kate/&#34;&gt;Project plugin&lt;/a&gt; with ctags code completion. It is tightly integrated with the Search &amp; Replace plugin as well as the GDB Plugin and the Quick Open feature.
&lt;/li&gt;
&lt;li&gt;
Kate Search &amp; Replace plugin gained find-as-you-type support.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h3 id=&#34;improvements&#34;&gt;Improvements&lt;/h3&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;
Kate Part&amp;#8217;s &lt;a title=&#34;Remove Trailing Spaces&#34; href=&#34;https://kate-editor.org/2012/10/27/remove-trailing-spaces/&#34;&gt;remove trailing spaces&lt;/a&gt; feature is improved.
&lt;/li&gt;
&lt;li&gt;
Kate Part&amp;#8217;s &lt;a title=&#34;Scripting improvements&#34; href=&#34;https://kate-editor.org/2012/11/06/kate-scripting-updates-zen-like-quick-coding/&#34;&gt;scripting API gained several new features&lt;/a&gt; (e.g. &lt;a title=&#34;Zen Coding in Kate Part&#34; href=&#34;https://projects.kde.org/projects/kde/kde-baseapps/kate/repository/revisions/a1f58a262f9809ee3300009df1f60ff6af49f058&#34; target=&#34;_blank&#34;&gt;zen coding script&lt;/a&gt;). The API now is more fine grained, e.g. you now need to &amp;#8220;require(&amp;#8220;cursor.js&amp;#8221;);&amp;#8221; in order to have the Cursor API.
&lt;/li&gt;
&lt;li&gt;
a lot of other little improvements, see &lt;a title=&#34;Kate Bug Tracker&#34; href=&#34;https://bugs.kde.org/buglist.cgi?query_format=advanced&amp;product=kate&amp;bug_status=RESOLVED&amp;resolution=FIXED&amp;resolution=WORKSFORME&amp;bugidtype=include&amp;chfieldfrom=2012-08-01&amp;chfieldto=2012-12-31&amp;list_id=377243&#34; target=&#34;_blank&#34;&gt;our bug tracker&lt;/a&gt; for a full list.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h3 id=&#34;bug-fixes&#34;&gt;Bug Fixes&lt;/h3&gt;
&lt;p&gt;Most of the following work was done during the &lt;a title=&#34;Akademy 2012&#34; href=&#34;http://akademy2012.kde.org/&#34; target=&#34;_blank&#34;&gt;yearly KDE conference&lt;/a&gt; and especially the &lt;a title=&#34;Join Kate/KDevelop Meeting in Vienna&#34; href=&#34;http://dot.kde.org/2012/11/24/katekdevelop-october-sprint-whats-new-kate&#34; target=&#34;_blank&#34;&gt;joint Kate/KDevelop meeting&lt;/a&gt; this October in Vienna. A massive bug database cleanup was performed mainly by Christoph, so we closed several hundreds of bug reports, where &lt;a title=&#34;Kate Bugs Fixed for KDE 4.10&#34; href=&#34;https://bugs.kde.org/buglist.cgi?query_format=advanced&amp;product=kate&amp;bug_status=RESOLVED&amp;resolution=FIXED&amp;resolution=WORKSFORME&amp;bugidtype=include&amp;chfieldfrom=2012-08-01&amp;chfieldto=2012-12-31&amp;list_id=377243&#34; target=&#34;_blank&#34;&gt;~280 are really fixed&lt;/a&gt;. So we are down to a total of 400 reports (only 70 of these 400 reports are bugs), where we initially had &amp;gt; 800 open issues. This also is reflected in the Kate bug charts:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2013/01/bugs.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-2199&#34; title=&#34;Kate Bug Tracker&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2013/01/bugs.png&#34; alt=&#34;&#34; width=&#34;652&#34; height=&#34;537&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2013/01/bugs.png 652w, https://kate-editor.org/wp-content/uploads/2013/01/bugs-300x247.png 300w&#34; sizes=&#34;(max-width: 652px) 100vw, 652px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks to all contributors to make yet another release rock! :-) And as always: We are happy for every contribution, so &lt;a href=&#34;https://kate-editor.org/get-it/&#34; title=&#34;Build Kate&#34;&gt;check out the Kate sources&lt;/a&gt; and send us patches! We hope you enjoy using Kate as much as we enjoy its development :-)&lt;/p&gt;</description></item><item><title>Python plugin gets support for Python3</title><link>https://kate-editor.org/2012/12/02/python-plugin-gets-support-for-python3/</link><pubDate>Sun, 02 Dec 2012 18:29:39 +0000</pubDate><guid>https://kate-editor.org/2012/12/02/python-plugin-gets-support-for-python3/</guid><description>&lt;p&gt;Being vaguely aware that Python3 had some &amp;#8220;interesting&amp;#8221; differences compared to Python2, I had decided to not think about Python3 for now, but then one of our dear users &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=310220&#34; title=&#34;piped up&#34;&gt;piped up&lt;/a&gt; to say that even building it was broken! That seemed weird, so I started poking around only to find myself falling Alice-like into a Wonderland where strings were not always strings&amp;#8230;&lt;/p&gt;
&lt;p&gt;Well, I&amp;#8217;ve long been interested in i18n and l10n in all their forms, especially as they apply to Indic languages, so I was somewhat aware of the sorts of issues that Unicode can throw up. Luckily, as a KDE developer I&amp;#8217;m used to depending on QString handle all the routine grunt work so it was a bit of a rude awakening to discover that, the C API for Python strings takes many forms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python 2.x has 2 run-time variants with 3 compile-time variants.
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://docs.python.org/2/c-api/unicode.html&#34; target=&#34;_blank&#34;&gt;&lt;a href=&#34;http://docs.python.org/2/c-api/unicode.html&#34;&gt;http://docs.python.org/2/c-api/unicode.html&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Python 3.2 or less has 3 compile-time variants
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://docs.python.org/3.2/c-api/unicode.html#unicode-objects&#34; target=&#34;_blank&#34;&gt;&lt;a href=&#34;http://docs.python.org/3.2/c-api/unicode.html#unicode-objects&#34;&gt;http://docs.python.org/3.2/c-api/unicode.html#unicode-objects&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Python 3.3 or greater has 3 run-time variants
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://docs.python.org/3.3/c-api/unicode.html#unicode-objects&#34; target=&#34;_blank&#34;&gt;&lt;a href=&#34;http://docs.python.org/3.3/c-api/unicode.html#unicode-objects&#34;&gt;http://docs.python.org/3.3/c-api/unicode.html#unicode-objects&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Note only that, but:
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;
Ubuntu does not yet have 3.3.
&lt;/li&gt;
&lt;li&gt;
The cmake support in KDE before 4.9.4 cannot find the right libraries.
&lt;/li&gt;
&lt;li&gt;
The PyKDE4 support for strings was broken-then-fixed.
&lt;/li&gt;
&lt;li&gt;
Python3 pickles structures differently than Python2.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
Anyway, with some excellent support from Luca Beltrame and Alex Turbov, I&amp;#8217;m glad to say that Pate and its plugins should now work with any of Python 2.x, &lt;= 3.2, or 3.3 in the upcoming 4.9.4 and 4.10 releases. Thanks Luca and Alex!
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;</description></item><item><title>ID &#43; etags &gt; ID || etags</title><link>https://kate-editor.org/2012/11/22/id-etags-id-etags/</link><pubDate>Wed, 21 Nov 2012 23:41:07 +0000</pubDate><guid>https://kate-editor.org/2012/11/22/id-etags-id-etags/</guid><description>&lt;p&gt;ID files and TAGS files are generated by &lt;a href=&#34;http://www.gnu.org/software/idutils/&#34; title=&#34;GNU idutils&#34;&gt;GNU idutils&lt;/a&gt; and &lt;a href=&#34;http://www.gnu.org/software/emacs/manual/html_node/emacs/Tags.html&#34; title=&#34;etags&#34;&gt;etags&lt;/a&gt; respectively. They are often used in coding projects to facilitate looking up, for example, the name of a function, and then visiting where it is defined, etc. In large projects, ID files can be hundres of MB in size, and TAGS files several times that. That looking up is obviously nice to have integrated into your favourite editor&amp;#8230;&lt;/p&gt;
&lt;p&gt;When I started on getting ID file support into Kate, my need was to efficiently &lt;a href=&#34;https://kate-editor.org/2012/06/26/extending-kate-with-pytho/&#34; title=&#34;Extending Kate with Python&#34;&gt;navigate source code&lt;/a&gt; indexed using an ID file a bit over 100 MB in size. The bad news is that I now have ID files over 300 MB in size, but the good news is even that is not a problem! Not only that, but by combining the ID file with dynamic invocation of etags, I can have all the TAGS functionality I care about without needing to pre-generate a 600 MB TAGS file as well.&lt;/p&gt;
&lt;p&gt;It even works reasonably well even when the ID files and the source files are mounted via SSHFS over a WAN link!&lt;/p&gt;
&lt;p&gt;But best of all, you can have it too, from today&amp;#8217;s Kate 4.10 beta, using a shiny new &lt;a href=&#34;https://kate-editor.org/2012/07/01/python-plugin-developer-guide-part-1/&#34; title=&#34;Python plugin developer guide, part 1&#34;&gt;Python plugin&lt;/a&gt;. Here is how&amp;#8230;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First &lt;a href=&#34;https://kate-editor.org/2012/06/26/python-plugin-user-guide/&#34; title=&#34;Python plugin user guide&#34;&gt;enable Python plugin support&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt; Then use its configuration dialog to enable the &lt;a href=&#34;http://quickgit.kde.org/index.php?p=kate.git&amp;amp;a=tree&amp;amp;hb=c1487e988cacbefb35b26c503d846c5620003881&amp;amp;h=2d79de4195989b6c20898426124eb0e21c87324d&amp;amp;f=kate%2Fplugins%2Fpate%2Fsrc%2Fplugins%2Fgid&#34; title=&#34;gid plugin sources&#34;&gt;gid plugin&lt;/a&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;img class=&#34;alignnone size-full wp-image-2072&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/10/snapshot2.png&#34; alt=&#34;&#34; width=&#34;941&#34; height=&#34;369&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/10/snapshot2.png 941w, https://kate-editor.org/wp-content/uploads/2012/10/snapshot2-300x117.png 300w&#34; sizes=&#34;(max-width: 941px) 100vw, 941px&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;You may need to restart Kate, but then you should see a new menu bar entry:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/10/snapshot11.png&#34;&gt;&lt;img class=&#34;alignnone size-full wp-image-2073&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/10/snapshot11.png&#34; alt=&#34;&#34; width=&#34;265&#34; height=&#34;132&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Selecting any of them will display a configuration dialog which allows the ID file to be selected:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/11/snapshot4.png&#34;&gt;&lt;img class=&#34;alignnone size-full wp-image-2178&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/11/snapshot4.png&#34; alt=&#34;&#34; width=&#34;643&#34; height=&#34;338&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/11/snapshot4.png 643w, https://kate-editor.org/wp-content/uploads/2012/11/snapshot4-300x157.png 300w&#34; sizes=&#34;(max-width: 643px) 100vw, 643px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You are probably thinking &amp;#8220;Wow, that&amp;#8217;s quite complicated for a file open dialog!&amp;#8221;, so let&amp;#8217;s go through the &lt;strong&gt;features&lt;/strong&gt; step-by-step&amp;#8230;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Remember that KDE&amp;#8217;s file open dialog (&lt;strong&gt;icon on top right)&lt;/strong&gt; understands environment variables. So if your workspace has a handy environment variable point to its root, getting to an ID file near the root is very fast (I use &amp;#8220;$ws&amp;#8221; because it is quick to type).&lt;/li&gt;
&lt;li&gt;The Browse Tokens functionality performs completion on the token, and setting the &amp;#8220;&lt;strong&gt;Complete Tokens after&lt;/strong&gt;&amp;#8221; prevent the completion kicking in annoyingly before you have finished typing even a first few characters. Values like 3 or 4 work well in many cases.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Transform Filenames&lt;/strong&gt;section allows the filenames inside the ID file to be mapped to slightly different filenames in your $ws. That is useful when:
&lt;ul&gt;
&lt;li&gt;The ID file was built somewhere other than your current $ws. That might be another of your workspaces, or possibly an archived workspace for a released build.&lt;/li&gt;
&lt;li&gt;The ID file was built on your compile server, but you&amp;#8217;ve mounted your workspace at a different mountpoint on your laptop (so you have access to the latest version of Kate :-)). Or perhaps you are using Clearcase, and don&amp;#8217;t have it on your laptop.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Try &amp;#8220;&lt;strong&gt;What&amp;#8217;s This&lt;/strong&gt;&amp;#8221; on the &amp;#8220;&lt;strong&gt;With this file prefix&lt;/strong&gt;&amp;#8221; to see how you can simply the setting of this value. In the example shown, notice how the first part of the ID filename &amp;#8220;/view/myview/vob&amp;#8221; is the same as this value? It seems common practice to put the ID file at or near the top of $ws, so including %{idPrefix} helps support this.
&lt;ul&gt;
&lt;li&gt;More important than saving a bit of typing is that if all your workspaces are built using a common recipe, you will never need to touch this value again!&lt;/li&gt;
&lt;li&gt;The ID file was built somewhere other than your current $ws. That might be another of your workspaces, or possibly an archived workspace for a released build.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Highlight Matches &lt;/strong&gt;section allows:
&lt;ul&gt;
&lt;li&gt;etags to be run on the matches in the ID file to distinguish the definition(s) of the token from mere declarations and usage with a distinctive icon.&lt;/li&gt;
&lt;li&gt;Matches in files with the given suffixes will be flagged with another distinctive icon.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once you&amp;#8217;ve chosen a usable ID file, a toolbar will spring into existence at the bottom of your window:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/11/snapshot51.png&#34;&gt;&lt;img class=&#34;alignnone size-full wp-image-2180&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/11/snapshot51.png&#34; alt=&#34;&#34; width=&#34;1058&#34; height=&#34;292&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/11/snapshot51.png 1058w, https://kate-editor.org/wp-content/uploads/2012/11/snapshot51-300x82.png 300w, https://kate-editor.org/wp-content/uploads/2012/11/snapshot51-1024x282.png 1024w&#34; sizes=&#34;(max-width: 1058px) 100vw, 1058px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;As you can see, the &lt;strong&gt;Token&lt;/strong&gt; field allows browsing by token. Selecting a value will cause the table below it to be filled with the matches from the ID file, highlighted using the &lt;strong&gt;Settings&lt;/strong&gt; chosen previously. (They can also be tweaked using the &lt;strong&gt;button top right&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;Click on an entry in the table to open the file and jump to the match. When you do, two entries will also be added to the table on the right which record where you were before the jump, and where you jumped to. That allows you to easily move backwards and forwards though the browsing history.&lt;/li&gt;
&lt;li&gt;So what is that &lt;strong&gt;Filter&lt;/strong&gt; thingy? Any matches returned from the ID file, can be further filtered using a regular expression. For example, a filter expression of &amp;#8220;%{token} =&amp;#8221; will find assignments to &amp;#8220;malloc_failure&amp;#8221; here:&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/11/snapshot6.png&#34;&gt;&lt;img class=&#34;size-full wp-image-2183 alignleft&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/11/snapshot6.png&#34; alt=&#34;&#34; width=&#34;799&#34; height=&#34;210&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/11/snapshot6.png 799w, https://kate-editor.org/wp-content/uploads/2012/11/snapshot6-300x78.png 300w&#34; sizes=&#34;(max-width: 799px) 100vw, 799px&#34; /&gt;&lt;/a&gt;(Note that you have to use Shift-F1 to get to the What&amp;#8217;s This since the toolbar is missing the nice little &amp;#8220;?&amp;#8221; button).
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;
Another nice use of the filter is as a poor man&amp;#8217;s full text search: ID files will contain tokens including words in strings. So putting a second word of interest in the &lt;strong&gt;Filter&lt;/strong&gt; will return only the matches which contain both words&amp;#8230;
&lt;/li&gt;
&lt;li&gt;
Finally, in 4.11, auto-completion is enabled (don&amp;#8217;t forget to configure it in Kate-&gt;Settings-&gt;Configure Kate-&gt;Editing-&gt;Auto-completion)
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;img src=&#34;https://mail.google.com/mail/?ui=2&amp;ik=263578535b&amp;view=att&amp;th=13d9d81aadb7184d&amp;attid=0.1&amp;disp=emb&amp;realattid=ii_13d9d7cbe038bfa7&amp;zw&amp;atsh=1&#34; alt=&#34;Inline images 1&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;div&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;div&gt;
I hope you&amp;#8217;ll find these useful add ons to the normal experience of using ID files, but feedback is always welcome!
&lt;/div&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Bug Hunting – Please help poor Kate ;)</title><link>https://kate-editor.org/2012/11/09/bug-hunting-please-help-poor-kate/</link><pubDate>Fri, 09 Nov 2012 21:03:16 +0000</pubDate><guid>https://kate-editor.org/2012/11/09/bug-hunting-please-help-poor-kate/</guid><description>&lt;p&gt;The Kate/KDevelop sprint in Vienna was a really productive time.&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a title=&#34;Joseph Wenninger&#34; href=&#34;http://www.jowenn.net&#34; target=&#34;_blank&#34;&gt;Joseph Wenninger&lt;/a&gt; for organizing it and the &lt;a title=&#34;KDE e.V.&#34; href=&#34;http://ev.kde.org&#34; target=&#34;_blank&#34;&gt;KDE e.V.&lt;/a&gt; for the additional funding!&lt;/p&gt;
&lt;p&gt;The Kate team was able to really wade through a lot of bugs &amp;amp; wishes and fix/invalidate a lot of them.&lt;/p&gt;
&lt;p&gt;After some more days of work, this really is visible in our nice bug chart ;)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/11/kate_bug_chart.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-2165&#34; title=&#34;Kate Bug Chart, 2012-11-09&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/11/kate_bug_chart.png&#34; alt=&#34;&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/11/kate_bug_chart.png 793w, https://kate-editor.org/wp-content/uploads/2012/11/kate_bug_chart-300x221.png 300w&#34; sizes=&#34;(max-width: 793px) 100vw, 793px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Kate, KatePart &amp;amp; KWrite are now down to a bug level as low as years ago ;)&lt;/p&gt;
&lt;p&gt;Still, there is a lot to do.&lt;/p&gt;
&lt;p&gt;If you have some spare time and Qt/KDE knowledge, please help us to have an even better KDE 4.10 release and look at the remaining bugs.&lt;/p&gt;
&lt;p&gt;We have the following &lt;a title=&#34;Bugs&#34; href=&#34;https://bugs.kde.org/buglist.cgi?product=kate&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_severity=critical&amp;bug_severity=grave&amp;bug_severity=major&amp;bug_severity=crash&amp;bug_severity=normal&amp;bug_severity=minor&amp;list_id=281469&#34; target=&#34;_blank&#34;&gt;~60 bugs&lt;/a&gt; and &lt;a title=&#34;Wishes&#34; href=&#34;https://bugs.kde.org/buglist.cgi?product=kate&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_severity=wishlist&amp;list_id=281470&#34; target=&#34;_blank&#34;&gt;~330 wishes&lt;/a&gt; still around. They vary from small stuff to &amp;#8220;a lot&amp;#8221; of work. If you want to help out, just pick the bug you want to work on and assign it ;)&lt;/p&gt;</description></item><item><title>Default Color Schemas</title><link>https://kate-editor.org/2012/11/07/default-color-schemas/</link><pubDate>Wed, 07 Nov 2012 11:25:48 +0000</pubDate><guid>https://kate-editor.org/2012/11/07/default-color-schemas/</guid><description>&lt;p&gt;With KDE 4.10, the naming of the color schemas in Kate Part changed. Instead of having &amp;#8220;&lt;app name&gt; &amp;#8211; Normal&amp;#8221; and &amp;#8220;&lt;app name&gt; &amp;#8211; Printing&amp;#8221; we now just have &amp;#8220;Normal&amp;#8221; and &amp;#8220;Printing,&amp;#8221; meaning that all applications using Kate Part now share these color schemas. In other words: If you change the Normal schema in KDevelop, you also will see these changes in Kile, Kate, or any other application that embeds Kate Part. If you just want to change the color schema for a single application, create a new color schema and then use this new schema as default!&lt;/p&gt;
&lt;p&gt;Besides that, &lt;a href=&#34;https://kate-editor.org/2012/03/07/some-kate-color-schemas/&#34; title=&#34;Kate Color Schemas&#34;&gt;it&amp;#8217;s been a looong way&lt;/a&gt;, but finally Kate will ship several default color schemas in KDE 4.10:&lt;/p&gt;
&lt;figure id=&#34;attachment_2149&#34; aria-describedby=&#34;caption-attachment-2149&#34; style=&#34;width: 450px&#34; class=&#34;wp-caption aligncenter&#34;&gt;&lt;img class=&#34;size-full wp-image-2149&#34; title=&#34;Default Schema Normal&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/11/normal.png&#34; alt=&#34;&#34; width=&#34;424&#34; height=&#34;300&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/11/normal.png 424w, https://kate-editor.org/wp-content/uploads/2012/11/normal-300x212.png 300w&#34; sizes=&#34;(max-width: 424px) 100vw, 424px&#34; /&gt;&lt;figcaption id=&#34;caption-attachment-2149&#34; class=&#34;wp-caption-text&#34;&gt;Normal Color Schema&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure id=&#34;attachment_2150&#34; aria-describedby=&#34;caption-attachment-2150&#34; style=&#34;width: 450px&#34; class=&#34;wp-caption aligncenter&#34;&gt;&lt;img class=&#34;size-full wp-image-2150&#34; title=&#34;Solarized (light)&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/11/solarized.png&#34; alt=&#34;&#34; width=&#34;424&#34; height=&#34;300&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/11/solarized.png 424w, https://kate-editor.org/wp-content/uploads/2012/11/solarized-300x212.png 300w&#34; sizes=&#34;(max-width: 424px) 100vw, 424px&#34; /&gt;&lt;figcaption id=&#34;caption-attachment-2150&#34; class=&#34;wp-caption-text&#34;&gt;&lt;a title=&#34;Solarized Color Schema&#34; href=&#34;http://ethanschoonover.com/solarized&#34; target=&#34;_blank&#34;&gt;Solarized (light)&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure id=&#34;attachment_2151&#34; aria-describedby=&#34;caption-attachment-2151&#34; style=&#34;width: 450px&#34; class=&#34;wp-caption aligncenter&#34;&gt;&lt;img class=&#34;size-full wp-image-2151&#34; title=&#34;Vim (dark)&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/11/vim.png&#34; alt=&#34;&#34; width=&#34;424&#34; height=&#34;300&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/11/vim.png 424w, https://kate-editor.org/wp-content/uploads/2012/11/vim-300x212.png 300w&#34; sizes=&#34;(max-width: 424px) 100vw, 424px&#34; /&gt;&lt;figcaption id=&#34;caption-attachment-2151&#34; class=&#34;wp-caption-text&#34;&gt;Vim (dark)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;The colors are not all perfect, so we hope to improve them over time, so if you always wanted to &lt;a href=&#34;https://kate-editor.org/join-us/&#34; title=&#34;Contribute to Kate&#34;&gt;contribute to Kate&lt;/a&gt;, we could need help here :-)&lt;/p&gt;</description></item><item><title>Kate Scripting Updates &amp; Zen-like Quick Coding</title><link>https://kate-editor.org/2012/11/06/kate-scripting-updates-zen-like-quick-coding/</link><pubDate>Tue, 06 Nov 2012 17:41:15 +0000</pubDate><guid>https://kate-editor.org/2012/11/06/kate-scripting-updates-zen-like-quick-coding/</guid><description>
&lt;p&gt;In KDE &amp;gt;= 4.10, Kate Part&amp;#8217;s scripting changed a bit. The changes are already documented in the &lt;a title=&#34;Scripting in Kate&#34; href=&#34;http://docs.kde.org/development/en/kde-baseapps/kate/advanced-editing-tools-scripting.html&#34; target=&#34;_blank&#34;&gt;Kate handbook&lt;/a&gt;, but we&amp;#8217;ll quickly have a look into it now anyway.&lt;/p&gt;
&lt;p&gt;Prior to KDE SC 4.10, scripts in Kate Part always had to contain the &amp;#8220;type&amp;#8221; in the scripting header, like indentation or command. This was changed to simply using different folders (system wide or in your $HOME kde folder) as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;indenters are located in share/apps/katepart/script/indentation&lt;/li&gt;
&lt;li&gt;commands are located in share/apps/katepart/script/commands&lt;/li&gt;
&lt;li&gt;api is located in share/apps/katepart/script/libraries&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Further, the API is not loaded automatically anymore. Instead, we introduced the function &lt;strong&gt;require(&amp;#8220;file.js&amp;#8221;)&lt;/strong&gt;, which takes one argument. For instance, if you want to use the Cursor and Range API, you just write&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;require(&#34;cursor.js&#34;);
require(&#34;range.js&#34;);&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;In this example, it would even suffice to just write require(&amp;#8220;range.js&amp;#8221;); since range.js itself contains the line require(&amp;#8220;cursor.js&amp;#8221;); Kate Part tracks, which files are already included through require, so you don&amp;#8217;t have to worry about include guards like in C/C++.&lt;/p&gt;
&lt;p&gt;Now as we are able to just load the libraries that we really need, we can add as many libraries as wanted. For instance, the author of zen-coding wrote a thin wrapper to make all the zen-coding goodies available to Kate Part. It&amp;#8217;s included in the emmet subfolder in the script/libraries folder. So if you need this stuff, you just write require(&amp;#8220;emmet/desired-file.js&amp;#8221;);&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s a bit unfortunate that we still break how the scripting works from time to time, but it&amp;#8217;s better to fix and improve the scripting instead of living with limited capabilities. So if you have own scripts, it&amp;#8217;s the best time to &lt;a title=&#34;Kate developer mailing list&#34; href=&#34;mailto:kwrite-devel@kde.org&#34; target=&#34;_blank&#34;&gt;contribute them to Kate&lt;/a&gt;!&lt;/p&gt;
&lt;h5 id=&#34;generic-quick-coding-features&#34;&gt;Generic Quick Coding Features&lt;/h5&gt;
&lt;p&gt;Further, we have some new &lt;a title=&#34;Quick Coding Features&#34; href=&#34;https://projects.kde.org/projects/kde/kde-baseapps/kate/repository/revisions/master/entry/part/script/data/commands/quickcoding.js&#34; target=&#34;_blank&#34;&gt;command line script called quickcoding.js&lt;/a&gt; that already uses the zen-coding idea: If you for instance write&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt; c#n:Test#p:Parent&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;and press Ctrl+Alt+# in C++ files (the Mode must be C++!), it will automatically expand to&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;pre&gt;/**
 * Class Test
 */
class Test : public Parent
{
public:
/**
* Constructor of Test
*/
Test ();&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;/**
* Destructor of Test
*/
~Test ();&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;};&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;So how does it work? Since the file mode is C++, the quick coding command will read files from &lt;a title=&#34;Quick Coding File Location&#34; href=&#34;https://projects.kde.org/projects/kde/kde-baseapps/kate/repository/revisions/master/show/part/script/data/files/quickcoding/cpp&#34; target=&#34;_blank&#34;&gt;katepart/script/files/quickcoding/cpp/&lt;/a&gt;. The first character of this cryptic string is &amp;#8216;c&amp;#8217;, which tells the quick coding command to look into &lt;a title=&#34;c.template quick coding file&#34; href=&#34;https://projects.kde.org/projects/kde/kde-baseapps/kate/repository/revisions/master/entry/part/script/data/files/quickcoding/cpp/c.template&#34; target=&#34;_blank&#34;&gt;c.template&lt;/a&gt;. This template now expands according to the specified arguments: n:Test sets the class name to Test, and the optional p:Parent derives Test from Parent.&lt;/p&gt;
&lt;p&gt;This is just a proof of concept, and you can do the same with Text Snippts in Kate. But still, this is another way adding support for quick coding for arbitrary languges, and the implementation is completely in JavaScript, so it is rather easy to extend and customize it to your needs. We&amp;#8217;ll probably extend/change this feature a bit more over time, let&amp;#8217;s see :-) It&amp;#8217;s also not yet documented in the Kate Handbook. We&amp;#8217;ll probably add &amp;#8216;official&amp;#8217; documentation for this in later Kate releases. Happy coding!&lt;/p&gt;</description></item><item><title>Passive Notifications in Kate Part</title><link>https://kate-editor.org/2012/11/06/passive-notifications-in-kate-part/</link><pubDate>Tue, 06 Nov 2012 13:06:11 +0000</pubDate><guid>https://kate-editor.org/2012/11/06/passive-notifications-in-kate-part/</guid><description>&lt;p&gt;In KDE 4.10, Kate Part got a new &lt;a title=&#34;KTextEditor::MessageInterface in KDE 4.10&#34; href=&#34;https://projects.kde.org/projects/kde/kde-baseapps/kate/repository/revisions/master/entry/part/kte5/messageinterface.h&#34; target=&#34;_blank&#34;&gt;MessageInterface&lt;/a&gt;. The idea of this interface is to have a standardized way of showing notifications in a non-intrusive way, similar to how &lt;a title=&#34;API of KMessageWidget&#34; href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/kdeui/html/classKMessageWidget.html&#34; target=&#34;_blank&#34;&gt;KMessageWidget in kdelibs&lt;/a&gt; works. Using the MessageInterface is extremly easy, for instance to show a quick notification, you write&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;KTextEditor::Message *message = new KTextEditor::Message(KTextEditor::Message::Positive,
&#34;Code successfully reformated.&#34;);
document-&amp;gt;postMessage(message);&lt;/pre&gt;
&lt;p&gt;That&amp;#8217;s basically it! The result looks like this (with a nice fade-in and fade-out animation):&lt;img class=&#34;aligncenter size-full wp-image-2132&#34; title=&#34;Positive Notification Message&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/11/positive.png&#34; alt=&#34;&#34; width=&#34;537&#34; height=&#34;291&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/11/positive.png 537w, https://kate-editor.org/wp-content/uploads/2012/11/positive-300x162.png 300w&#34; sizes=&#34;(max-width: 537px) 100vw, 537px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;As developer, once you called postMessage(), you can safely forget the message pointer. It&amp;#8217;s automatically deleted either if the user closes the notification, or if the document is closed or reloaded. The API for more tricks. You can add multiple actions through KTextEditor::Message::addAction(), which then appear as buttons. For each added action, you can control whether triggering the action should close the widget or not.&lt;/p&gt;
&lt;p&gt;Further, you can set an auto hide timer through Message::setAutoHide(int timeInMilliSeconds).&lt;/p&gt;
&lt;p&gt;If you want a message to only appear in one specific KTextEditor::View of the Document, you just call Message::setView() before calling postMessage(). If several messages are in the queue, the one with the highest Message::priority() is shown first.&lt;/p&gt;
&lt;p&gt;This notification system is already used in Kate Part by the &lt;a href=&#34;https://kate-editor.org/2012/10/25/data-recovery-in-4-10/&#34; title=&#34;Data Recovery in KDE 4.10&#34;&gt;data recovery (swap files)&lt;/a&gt;, or to show a &lt;a href=&#34;https://kate-editor.org/2012/11/05/loading-remote-files/&#34; title=&#34;Loading Remote Files&#34;&gt;notification when loading remote files&lt;/a&gt;, and in some other places.&lt;/p&gt;
&lt;p&gt;The cool thin is that this solution requires no special code in KateView or other classes, hence, it&amp;#8217;s a perfectly clean solution with an easy-to-use API. You as KTextEditor user (developer) should definitely consider using it when it&amp;#8217;s public.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: The MessageInterface is a KTextEditor interface; however, since the 4.10 branch is frozen for BIC changes, we cannot just add this interface for KDE 4.10. Instead, for Kate Part users (Kile, KDevelop, &amp;#8230;) this interface will only be available in KDE5.&lt;/p&gt;
&lt;p&gt;Finally, an example of all four message types: Positive, Information, Warning and Error:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-2135&#34; title=&#34;Message Types&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/11/messages1.png&#34; alt=&#34;&#34; width=&#34;565&#34; height=&#34;500&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/11/messages1.png 565w, https://kate-editor.org/wp-content/uploads/2012/11/messages1-300x265.png 300w&#34; sizes=&#34;(max-width: 565px) 100vw, 565px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;p style=&#34;text-align: center;&#34;&gt;&lt;/p&gt;</description></item><item><title>Loading Remote Files</title><link>https://kate-editor.org/2012/11/05/loading-remote-files/</link><pubDate>Mon, 05 Nov 2012 21:01:09 +0000</pubDate><guid>https://kate-editor.org/2012/11/05/loading-remote-files/</guid><description>&lt;p&gt;Loading huge files over the internet may take quite a long time. In KDE 4.10, Kate Part will show a passive message after 1 second that tells you the file is still being loaded, and, if wanted, the user can abort the loading process. It looks like this:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-2126&#34; title=&#34;Loading huge files over the internet&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/11/long-loading.png&#34; alt=&#34;&#34; width=&#34;564&#34; height=&#34;298&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/11/long-loading.png 564w, https://kate-editor.org/wp-content/uploads/2012/11/long-loading-300x158.png 300w&#34; sizes=&#34;(max-width: 564px) 100vw, 564px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;This also fixes &lt;a title=&#34;typing characters while loading (e. g. via fish)&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=128273&#34; target=&#34;_blank&#34;&gt;bug #128273&lt;/a&gt;. Again, cookies go to Christoph ;)&lt;/p&gt;</description></item><item><title>Kate needs BiDi/Unicode aware developers ;)</title><link>https://kate-editor.org/2012/11/03/kate-needs-bidiunicode-aware-developers/</link><pubDate>Sat, 03 Nov 2012 12:32:38 +0000</pubDate><guid>https://kate-editor.org/2012/11/03/kate-needs-bidiunicode-aware-developers/</guid><description>&lt;p&gt;During our long bug hunting and fixing sprint I came along some nasty BiDi or Unicode related bugs.&lt;/p&gt;
&lt;p&gt;I and most others in the Kate team are not really able to fix such issues :( We lack both the knowledge of the underlying techniques and are not able to write/read any language that really uses complex unicode chars or BiDi text.&lt;/p&gt;
&lt;p&gt;Therefore: If you know Qt and you want to help out with fixing BiDi/Unicode related bugs, please provide patches for them in the KDE Bugzilla!&lt;/p&gt;
&lt;p&gt;Here are the relevant bugs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=70986&#34;&gt;https://bugs.kde.org/show_bug.cgi?id=70986&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=165397&#34;&gt;https://bugs.kde.org/show_bug.cgi?id=165397&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=172630&#34;&gt;https://bugs.kde.org/show_bug.cgi?id=172630&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=187408&#34;&gt;https://bugs.kde.org/show_bug.cgi?id=187408&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=192458&#34;&gt;https://bugs.kde.org/show_bug.cgi?id=192458&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=205447&#34;&gt;https://bugs.kde.org/show_bug.cgi?id=205447&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=237515&#34;&gt;https://bugs.kde.org/show_bug.cgi?id=237515&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=280645&#34;&gt;https://bugs.kde.org/show_bug.cgi?id=280645&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Any help here is highly appreciated! If you have questions about the internals of KatePart needed to fix such an issue, just ask in the bug or kwrite-devel@kde.org.&lt;/p&gt;</description></item><item><title>Busy Kate/KDevelop Sprint results in Mini-Map</title><link>https://kate-editor.org/2012/11/03/busy-katekdevelop-sprint-results-in-mini-map/</link><pubDate>Sat, 03 Nov 2012 11:08:57 +0000</pubDate><guid>https://kate-editor.org/2012/11/03/busy-katekdevelop-sprint-results-in-mini-map/</guid><description>&lt;p&gt;One of the results of the Kate/KDevelop sprint in Vienna is the new &amp;#8220;MiniMap&amp;#8221; that can be used instead of the vertical scrollbar. I came to the sprint with a black and white version of it for the symbols viewer, but got encouraged to integrate it to the core. The result, in cooperation with Sven Brauch from KDevelop, is a nice Mini-Map that can be enabled both in Kate and KDevelop.&lt;/p&gt;
&lt;p&gt;And to make this into a real blog and to provide proof, here are a couple of screenshots:&lt;/p&gt;
&lt;figure id=&#34;attachment_2109&#34; aria-describedby=&#34;caption-attachment-2109&#34; style=&#34;width: 971px&#34; class=&#34;wp-caption alignnone&#34;&gt;[&lt;img class=&#34;size-full wp-image-2109&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/11/MiniMap.png&#34; alt=&#34;&#34; width=&#34;971&#34; height=&#34;734&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/11/MiniMap.png 971w, https://kate-editor.org/wp-content/uploads/2012/11/MiniMap-300x226.png 300w&#34; sizes=&#34;(max-width: 971px) 100vw, 971px&#34; /&gt;][1]&lt;figcaption id=&#34;caption-attachment-2109&#34; class=&#34;wp-caption-text&#34;&gt;The MiniMap enabled&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure id=&#34;attachment_2110&#34; aria-describedby=&#34;caption-attachment-2110&#34; style=&#34;width: 768px&#34; class=&#34;wp-caption alignnone&#34;&gt;[&lt;img class=&#34;size-full wp-image-2110&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/11/MiniMapOption.png&#34; alt=&#34;&#34; width=&#34;768&#34; height=&#34;546&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/11/MiniMapOption.png 768w, https://kate-editor.org/wp-content/uploads/2012/11/MiniMapOption-300x213.png 300w&#34; sizes=&#34;(max-width: 768px) 100vw, 768px&#34; /&gt;][2]&lt;figcaption id=&#34;caption-attachment-2110&#34; class=&#34;wp-caption-text&#34;&gt;Here is where/how you turn it on in Kate&lt;/figcaption&gt;&lt;/figure&gt;</description></item><item><title>Using the Projects Plugin in Kate</title><link>https://kate-editor.org/2012/11/02/using-the-projects-plugin-in-kate/</link><pubDate>Fri, 02 Nov 2012 15:42:26 +0000</pubDate><guid>https://kate-editor.org/2012/11/02/using-the-projects-plugin-in-kate/</guid><description>
&lt;p&gt;&lt;span style=&#34;color: #ff0000;&#34;&gt;&lt;strong&gt;Update (2014-10-18):&lt;/strong&gt;&lt;/span&gt; &lt;a href=&#34;https://kate-editor.org/2014/10/12/autoloading-projects-plugin-kate-5/&#34; title=&#34;Auto-loading Projects in Kate 5&#34;&gt;Auto-Loading Projects in Kate 5&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;introducing-the-projects-plugin-for-kde-sc-4-10&#34;&gt;Introducing the Projects Plugin for KDE SC 4.10&lt;/h3&gt;
&lt;p&gt;The basic idea of the Projects plugin is to have a structured list of files belonging to the  project with the following properties:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;provide a structured view of the files&lt;/li&gt;
&lt;li&gt;make it easy and very fast to open and switch projects&lt;/li&gt;
&lt;li&gt;support search &amp;amp; replace for a project&lt;/li&gt;
&lt;li&gt;provide simple auto completion&lt;/li&gt;
&lt;li&gt;make it simple to quickly open files in the project&lt;/li&gt;
&lt;li&gt;support for building the project&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;We&amp;#8217;re going to address all these points now.&lt;/p&gt;
&lt;h5 id=&#34;1-provide-a-structured-view-of-the-files&#34;&gt;1. Provide a Structured View of the Files&lt;/h5&gt;
&lt;p&gt;Once the &amp;#8220;Projects Plugin&amp;#8221; is loaded in the Kate config page, a sidebar appears that lists all projects as well as the projects files as follows:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/11/projects1.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-2094&#34; title=&#34;Project Plugin View&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/11/projects1.png&#34; alt=&#34;&#34; width=&#34;832&#34; height=&#34;533&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/11/projects1.png 832w, https://kate-editor.org/wp-content/uploads/2012/11/projects1-300x192.png 300w&#34; sizes=&#34;(max-width: 832px) 100vw, 832px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As you can see, the currently active project is &amp;#8220;Kate&amp;#8221;, and it&amp;#8217;s contents is listed in the tree view. Clicking on files in the tree view opens the file in the editor. Further, a context menu is provided with which you can open files with other applications, such as a .ui file with Qt Designer.&lt;/p&gt;
&lt;h5 id=&#34;2-switching-projects&#34;&gt;2. Switching Projects&lt;/h5&gt;
&lt;p&gt;The idea is that you never have to open a project manually, this is even not supported at all. Hence, what happens if you open a file, the Project Plugin quickly scans the folder and its parent folders for a .kateproject file. If found, the project is automatically loaded. Very simple and efficient.&lt;/p&gt;
&lt;p&gt;Further, if you open another document in Kate, that belongs to another project, the Project plugin automatically switches the current project. So intuitively, always the correct project is active. Of course, you can also switch the currently active project through the combo box.&lt;/p&gt;
&lt;h5 id=&#34;3-search-replace-in-projects&#34;&gt;3. Search &amp;amp; Replace in Projects&lt;/h5&gt;
&lt;p&gt;Kate has a &amp;#8220;Search &amp;amp; Replace&amp;#8221; plugin that shows up in the bottom sidebar. If a project is loaded and you open the &amp;#8220;Search &amp;amp; Replace&amp;#8221; sidebar, it automatically switches to the mode to search &amp;amp; replace in the current project, which usually is exactly what you want:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/11/projects2.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-2095&#34; title=&#34;Search &amp; Replace in Project&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/11/projects2.png&#34; alt=&#34;&#34; width=&#34;832&#34; height=&#34;533&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/11/projects2.png 832w, https://kate-editor.org/wp-content/uploads/2012/11/projects2-300x192.png 300w&#34; sizes=&#34;(max-width: 832px) 100vw, 832px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5 id=&#34;4-simple-auto-completion&#34;&gt;4. Simple Auto Completion&lt;/h5&gt;
&lt;p&gt;With the knowledge of all files belonging to a project, the Project plugin provides simple auto completion facilities based on ctags. If a project is initially opened, ctags parses all project files in a background thread and saves the ctags information to /tmp. This file then is used to populate the auto completion popup in Kate. In contrast, without this auto completion, Kate was only capable of showing auto completion items based on the words in the current file. So the auto completion provided by the Project plugin is much more powerful.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/11/projects3.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-2096&#34; title=&#34;Project Auto Completion&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/11/projects3.png&#34; alt=&#34;&#34; width=&#34;832&#34; height=&#34;533&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/11/projects3.png 832w, https://kate-editor.org/wp-content/uploads/2012/11/projects3-300x192.png 300w&#34; sizes=&#34;(max-width: 832px) 100vw, 832px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If ctags is missing, a passive popup warns you about this. It is also noteworthy, that the ctags file in /tmp is cleaned up when Kate exists, so you the plugin does not pollute any folder with unwanted files.&lt;/p&gt;
&lt;h5 id=&#34;5-quick-opening-files&#34;&gt;5. Quick Opening Files&lt;/h5&gt;
&lt;p&gt;As clicking on files in the tree view is not the fastest way to open a file, Kate provides a built-in quick open mechanism you can activate with CTRL+ALT+o. What you the get is a list like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/11/projects4.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-2097&#34; title=&#34;Quick Open in Project&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/11/projects4.png&#34; alt=&#34;&#34; width=&#34;832&#34; height=&#34;533&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/11/projects4.png 832w, https://kate-editor.org/wp-content/uploads/2012/11/projects4-300x192.png 300w&#34; sizes=&#34;(max-width: 832px) 100vw, 832px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can filter by typing parts of the file name you are looking for, and you can also navigate with the arrow keys and page up/down through the list. Hitting enter activates the selected file, while escape hides the quick open view again.&lt;/p&gt;
&lt;p&gt;Further, the quick open remembers the previous file. So when you change to the quick open view the previously activated  file is automatically selected and you just need to hit enter, which comes very handy at times.&lt;/p&gt;
&lt;h5 id=&#34;6-support-for-building-the-project&#34;&gt;6. Support for Building the Project&lt;/h5&gt;
&lt;p&gt;Another feature is to have support in the Build plugin, so that it automatically is configured correctly.&lt;/p&gt;
&lt;h3 id=&#34;creating-projects&#34;&gt;Creating Projects&lt;/h3&gt;
&lt;p&gt;Currently, creating a project requires some manual work, although it is really not much. You just have to create a .kateproject file in the root folder of the project. For instance, the Kate .kateproject file looks like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;{
&#34;name&#34;: &#34;Kate&#34;
, &#34;files&#34;: [ { &#34;git&#34;: 1 } ]
}&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;As you may have noted, this is JSON syntax (because there is a nice jason library for Qt to parse this). The project name is &amp;#8220;Kate&amp;#8221;, and the files contained in should be read from git.&lt;/p&gt;
&lt;p&gt;What&amp;#8217;s also supported instead of &amp;#8220;git&amp;#8221; is subversion through &amp;#8220;svn&amp;#8221; and mercurial through &amp;#8220;hg&amp;#8221; (btw, it would be nice to have support for other version control systems as well *hint*). If you do not want to read from a version control system, you can tell it to recursively load files from directories as follows:&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;{
&#34;name&#34;: &#34;Kate&#34;
, &#34;files&#34;: [ { &#34;directory&#34;: &#34;kate&#34;, &#34;filters&#34;: [&#34;*.cpp&#34;, &#34;*.h&#34;, &#34;*.ui&#34;, &#34;CMakeLists.txt&#34;, &#34;Find*.cmake&#34;], &#34;recursive&#34;: 1 } ]
}&lt;/pre&gt;
&lt;p&gt;Here, subfolders and filters define what&amp;#8217;s part of the project. You can also &lt;a href=&#34;https://kate-editor.org/2012/08/05/project-management/&#34; title=&#34;More complex .kateproject files&#34;&gt;mix version control and files based on filters&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you want to add support for the Build plugin, you could write a .kateconfig like this:&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;{
&#34;name&#34;: &#34;Kate&#34;
, &#34;files&#34;: [ { &#34;git&#34;: 1 } ]
, &#34;build&#34;: {
&#34;directory&#34;: &#34;build&#34;
, &#34;build&#34;: &#34;make all&#34;
, &#34;clean&#34;: &#34;make clean&#34;
, &#34;install&#34;: &#34;make install&#34;
}
}&lt;/pre&gt;
&lt;p&gt;Hopefully, these examples help you to setup your own project.&lt;/p&gt;
&lt;h5 id=&#34;kudos&#34;&gt;Kudos&lt;/h5&gt;
&lt;p&gt;Kudos go to Christoph, he implemented all the features in here. The Project plugin will be shipped with  KDE SC 4.10, and you should really &lt;a href=&#34;https://kate-editor.org/get-it/&#34; title=&#34;Building Kate&#34;&gt;try it out&lt;/a&gt; :-)&lt;/p&gt;</description></item><item><title>Contribute to Kate</title><link>https://kate-editor.org/2012/10/28/contribute-to-kate/</link><pubDate>Sun, 28 Oct 2012 18:45:02 +0000</pubDate><guid>https://kate-editor.org/2012/10/28/contribute-to-kate/</guid><description>&lt;p&gt;Currently we are at the Kate/KDevelop sprint in Vienna. Christoph and me took the time to look a bit around in the net for Kate, and more or less accidently stumbled over quite a lot of extensions by our users. Here are some examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&#34;Jump to next/previous paragraph&#34; href=&#34;http://kucrut.org/move-cursor-to-next-prev-paragraph-in-kate/&#34; target=&#34;_blank&#34;&gt;script to jump to next/previous paragraph&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;several really &lt;a title=&#34;Kate Highlighting Files on kde-files.org&#34; href=&#34;http://kde-files.org/index.php?xcontentmode=680&amp;PHPSESSID=855b2f88554fd7e88f0eba142655e628&#34; target=&#34;_blank&#34;&gt;good highlighting files&lt;/a&gt;, e.g. for &lt;a title=&#34;C++11 Highlighting for Kate&#34; href=&#34;http://kde-files.org/content/show.php/?content=90660&#34; target=&#34;_blank&#34;&gt;C++11&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;several &lt;a title=&#34;Kate Python plugins&#34; href=&#34;https://github.com/zaufi/kate-pate-plugins&#34; target=&#34;_blank&#34;&gt;Kate plugins written in Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;many more python plugins for Kate, even officially &lt;a title=&#34;More Kate Python Plugins&#34; href=&#34;http://pypi.python.org/pypi/Kate-plugins&#34; target=&#34;_blank&#34;&gt;listed in the Python index&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;there is more, I won&amp;#8217;t list it all :)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kate has just about 20 plugins written in C++. And, ironically, there are more plugins for Kate written in python. This is totally awesome, but still, the Kate developers didn&amp;#8217;t even know about it ?¿? :-o&lt;/p&gt;
&lt;p&gt;So we started contacting these potential contributors, and also asked why they e.g. upload it in some other git repository. One time, we got the answer, that they uploaded it somewhere to share it with other users. But really, the perfect way to share additions for Kate is to put it into the Kate git repository directly. This is how open source works&amp;#8230;&lt;/p&gt;
&lt;p&gt;So if you make additions or changes to Kate, &lt;a href=&#34;https://kate-editor.org/join-us/&#34; title=&#34;Join Us&#34;&gt;please let us know&lt;/a&gt;, &lt;a title=&#34;KDE Reviewboard&#34; href=&#34;http://techbase.kde.org/Development/Review_Board&#34; target=&#34;_blank&#34;&gt;create a patch and send it to review board&lt;/a&gt;, come to our &lt;a title=&#34;KDE Developer Sprints&#34; href=&#34;https://sprints.kde.org/&#34; target=&#34;_blank&#34;&gt;developer sprints&lt;/a&gt;, come to the &lt;a title=&#34;Akademy&#34; href=&#34;http://akademy.kde.org/&#34; target=&#34;_blank&#34;&gt;annual KDE conferences&lt;/a&gt;&amp;#8230; Talk to us, usually we are all pretty friendly and really happy about every single contribution!&lt;/p&gt;</description></item><item><title>Show Line while Scrolling</title><link>https://kate-editor.org/2012/10/28/show-line-while-scrolling/</link><pubDate>Sun, 28 Oct 2012 01:56:35 +0000</pubDate><guid>https://kate-editor.org/2012/10/28/show-line-while-scrolling/</guid><description>&lt;p&gt;Another quick update: Jowenn just implemented a decent tool tip that displays the current view line while scrolling, a &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=61335&#34; title=&#34;Show Scroll Line&#34;&gt;wish from 9 years ago&lt;/a&gt;. Mandatory screenshot (pimped with my &amp;#8220;awesome&amp;#8221; Gimp skills):&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-2067&#34; title=&#34;Show Current Scroll Line&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/10/scroll.png&#34; alt=&#34;&#34; width=&#34;530&#34; height=&#34;319&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/10/scroll.png 530w, https://kate-editor.org/wp-content/uploads/2012/10/scroll-300x180.png 300w&#34; sizes=&#34;(max-width: 530px) 100vw, 530px&#34; /&gt;&lt;/p&gt;</description></item><item><title>Remove Trailing Spaces</title><link>https://kate-editor.org/2012/10/27/remove-trailing-spaces/</link><pubDate>Sat, 27 Oct 2012 14:01:05 +0000</pubDate><guid>https://kate-editor.org/2012/10/27/remove-trailing-spaces/</guid><description>&lt;p&gt;Up to KDE 4.9, Kate Part had support to remove trailing spaces in two ways:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Remove trailing spaces while editing&lt;/li&gt;
&lt;li&gt;Remove trailing spaces on save&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The reasoning behind removing trailing spaces while editing is that when working on a document, we want to keep our own changes clean of trailing spaces. This way, we can for instance provide patches that are not cluttered with whitespace changes, and we just change lines that we &lt;em&gt;really&lt;/em&gt; want to change.&lt;/p&gt;
&lt;p&gt;The implementation of this feature unfortunately had quite some regressions that we were able to &amp;#8220;fix&amp;#8221; over time. For instance, you do not want to remove trailing spaces if the cursor is currently in the trailing spaces area. This alone means we have to kind of remember that we touched this line, and then remove it later. This was always hacky, and in fact, there are still corner cases that did not work.&lt;/p&gt;
&lt;p&gt;For KDE 4.10, the both options were merged into just one option &lt;strong&gt;Remove trailing spaces&lt;/strong&gt; with three possible values:&lt;img class=&#34;aligncenter size-full wp-image-2060&#34; title=&#34;Remove Trailing Spaces in KDE 4.10&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/10/remove-trailing-spaces.png&#34; alt=&#34;&#34; width=&#34;542&#34; height=&#34;435&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/10/remove-trailing-spaces.png 542w, https://kate-editor.org/wp-content/uploads/2012/10/remove-trailing-spaces-300x240.png 300w&#34; sizes=&#34;(max-width: 542px) 100vw, 542px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;So we only support removing trailing spaces on save from KDE 4.10 on. The implementation is now very clean and based on the &lt;a href=&#34;https://kate-editor.org/2011/09/06/line-modification-system/&#34; title=&#34;Line Modification System&#34;&gt;line modification system&lt;/a&gt; available since KDE 4.8: Thanks to this system we know exactly which lines in the document were changed. So if you choose &amp;#8220;Modified Lines&amp;#8221; in the configuration, trailing spaces of these modified lines are removed, and other lines remain untouched. If you choose &amp;#8220;Entire Document&amp;#8221;, then all trailing spaces in the document will be removed. And, needless to say, &amp;#8220;Never&amp;#8221; implies that trailing spaces are never removed.&lt;/p&gt;
&lt;p&gt;For compatibility, the old mode-lines &amp;#8220;remove-trailing-space&amp;#8221; and &amp;#8220;replace-trailing-spaces-save&amp;#8221; are still supported, but you&amp;#8217;ll get a kWarning() on the console. All these changes are also &lt;a href=&#34;http://docs.kde.org/stable/en/kde-baseapps/kate/config-variables.html#config-variables-list&#34; title=&#34;Kate Document Variables&#34;&gt;documented in the Kate handbook&lt;/a&gt; (once KDE 4.10 is released). From KDE 4.10 on, you should switch to the modelines&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#8211; remove-trailing-spaces none;&lt;br /&gt;
&amp;#8211; remove-trailing-spaces modified;&lt;br /&gt;
&amp;#8211; remove-trailing-spaces all;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hope you like it&amp;#8230;&lt;/p&gt;</description></item><item><title>How to remove a file with Kate</title><link>https://kate-editor.org/2012/10/25/how-to-remove-a-file/</link><pubDate>Thu, 25 Oct 2012 21:51:05 +0000</pubDate><guid>https://kate-editor.org/2012/10/25/how-to-remove-a-file/</guid><description>&lt;p&gt;KDE has all these little nifty features, and &amp;#8211; guess what &amp;#8211; Kate has them, too. Here, we&amp;#8217;ll have a look at how to delete a file with Kate. We&amp;#8217;ll start with opening the file we want to delete. Example:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-2050&#34; title=&#34;Step 1: Open a file&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/10/step1.png&#34; alt=&#34;&#34; width=&#34;582&#34; height=&#34;402&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/10/step1.png 582w, https://kate-editor.org/wp-content/uploads/2012/10/step1-300x207.png 300w&#34; sizes=&#34;(max-width: 582px) 100vw, 582px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Next, we open the menu File &amp;gt; Open With and choose Other&amp;#8230; as follows:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-2051&#34; title=&#34;Step 2: Open With...&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/10/step2.png&#34; alt=&#34;&#34; width=&#34;560&#34; height=&#34;506&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/10/step2.png 560w, https://kate-editor.org/wp-content/uploads/2012/10/step2-300x271.png 300w&#34; sizes=&#34;(max-width: 560px) 100vw, 560px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;We&amp;#8217;re almost done: Type &amp;#8216;rm&amp;#8217; in the Open With dialog:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-2052&#34; title=&#34;Step 3: Type rm&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/10/step3.png&#34; alt=&#34;&#34; width=&#34;557&#34; height=&#34;480&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/10/step3.png 557w, https://kate-editor.org/wp-content/uploads/2012/10/step3-300x258.png 300w&#34; sizes=&#34;(max-width: 557px) 100vw, 557px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Now click OK to perform the action, et voila:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-2053&#34; title=&#34;Step 4: File deletion complete&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/10/step4.png&#34; alt=&#34;&#34; width=&#34;557&#34; height=&#34;411&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/10/step4.png 557w, https://kate-editor.org/wp-content/uploads/2012/10/step4-300x221.png 300w&#34; sizes=&#34;(max-width: 557px) 100vw, 557px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Now as you can see, Kate notifies you about the successful deletion. In case you change your mind, you can write it to disk again by clicking Overwrite. Reloading will tell you, that the file can indeed not be found, proving that Kate did exactly what you want. You can also ignore what you just did, which is probably the best choice. Don&amp;#8217;t tell anyone :-)&lt;/p&gt;
&lt;p&gt;PS: This tip comes from the KDevelop developers. So all Kudos and Cake go to them!&lt;br /&gt;
PPS: We are working hard at the Kate/KDevelop sprint in Vienna to provide the best tools for our users!&lt;/p&gt;</description></item><item><title>Data Recovery in 4.10</title><link>https://kate-editor.org/2012/10/25/data-recovery-in-4-10/</link><pubDate>Thu, 25 Oct 2012 12:05:27 +0000</pubDate><guid>https://kate-editor.org/2012/10/25/data-recovery-in-4-10/</guid><description>&lt;p&gt;Recently I&amp;#8217;ve blogged about the usage of &lt;a href=&#34;https://kate-editor.org/2012/07/08/rfc-data-recovery/&#34; title=&#34;RFC: Data Recovery&#34;&gt;KMessageWidget in the data recovery process&lt;/a&gt; in Kate Part. Finally, we decided to stick with KMessageWidget, since it is a standard kdelibs widget, used by a lot of KDE applications. Besides, it is visually appealing and attracts the user&amp;#8217;s attention. In KDE SC 4.10, it will look like this:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-2044&#34; title=&#34;Data Recovery&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/10/recovery.png&#34; alt=&#34;&#34; width=&#34;495&#34; height=&#34;333&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/10/recovery.png 495w, https://kate-editor.org/wp-content/uploads/2012/10/recovery-300x201.png 300w&#34; sizes=&#34;(max-width: 495px) 100vw, 495px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Now if you recover the data, it may happen that the swap file is broken, e.g. because it was accidently manipulated for whatever reason. Then you get notified like this:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-2045&#34; title=&#34;Broken Data Recovery&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/10/broken-recovery.png&#34; alt=&#34;&#34; width=&#34;500&#34; height=&#34;333&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/10/broken-recovery.png 500w, https://kate-editor.org/wp-content/uploads/2012/10/broken-recovery-300x199.png 300w&#34; sizes=&#34;(max-width: 500px) 100vw, 500px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Besides that, we are currently at our Kate/KDevelop meeting in Vienna. Lots of exciting stuff is happening, so expect more in the next days :-)&lt;/p&gt;</description></item><item><title>Kate/KDevelop Sprint – Update</title><link>https://kate-editor.org/2012/10/25/katekdevelop-sprint-update/</link><pubDate>Thu, 25 Oct 2012 10:57:46 +0000</pubDate><guid>https://kate-editor.org/2012/10/25/katekdevelop-sprint-update/</guid><description>&lt;p&gt;Its nice to be here in Vienna with all the other hackers ;)&lt;br /&gt;
Most have already arrived and are busy fixing issues in Kate &amp;amp; KDevelop, some more will arrive tomorrow.&lt;/p&gt;
&lt;p&gt;Already got bit work done on existing bugs, one bug was really nasty: a nearly 8 year old typo by myself messing around with highlighting in combination with line continuation.&lt;/p&gt;
&lt;p&gt;But a guy did a really perfect bug report: &lt;a title=&#34;Bug 300009&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=300009&#34; target=&#34;_blank&#34;&gt;Bug 300009&lt;/a&gt;&lt;br /&gt;
He wrote even a example highlighting file + test to trigger the issue, with that help, the fix was trivial to do, after I got time to read the bug ;)&lt;/p&gt;
&lt;p&gt;Thanks to all people reporting bugs in such a useful way!&lt;/p&gt;</description></item><item><title>Kate/KDevelop Sprint in Vienna</title><link>https://kate-editor.org/2012/10/21/katekdevelop-sprint-in-vienna/</link><pubDate>Sun, 21 Oct 2012 14:54:18 +0000</pubDate><guid>https://kate-editor.org/2012/10/21/katekdevelop-sprint-in-vienna/</guid><description>&lt;p&gt;In some days our nice sprint will start, more information can be found on &lt;a title=&#34;Kate/KDevelop Sprint&#34; href=&#34;https://sprints.kde.org/sprint/92&#34; target=&#34;_blank&#34;&gt;KDE Sprints&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I am very happy that &lt;a title=&#34;Joseph Wenninger&#34; href=&#34;http://www.jowenn.net&#34; target=&#34;_blank&#34;&gt;Joseph Wenninger&lt;/a&gt; organizes this event and the &lt;a title=&#34;KDE e.V.&#34; href=&#34;http://ev.kde.org&#34; target=&#34;_blank&#34;&gt;KDE e.V.&lt;/a&gt; aided with additional sponsorship! Sprints are a real important thing for all KDE projects and it is nice to see that thanks to the help of the community our e.V. is able to sponsor a lot of such events.&lt;/p&gt;
&lt;p&gt;I will head over to Vienna on Tuesday, lets see what happens during the week ;)&lt;/p&gt;</description></item><item><title>Kate Script IDE Plugin</title><link>https://kate-editor.org/2012/08/29/1982/</link><pubDate>Wed, 29 Aug 2012 21:05:49 +0000</pubDate><guid>https://kate-editor.org/2012/08/29/1982/</guid><description>&lt;p&gt;Hello everyone! In this post i am going to introduce the new Scripting IDE Plugin for Kate. Although scripting KatePart via ECMAScript is a powerful feature that has been available for quite some time now, it is still rarely used. In order to make it appealing for a wider public, the Script IDE aims at supporting the user with the process of creating and managing scripts.&lt;/p&gt;
&lt;p&gt;The Plugin mainly consists of a tree view which shows currently available scripts, as well as functions contained in these scripts.&lt;br /&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/08/scriptide1.png&#34;&gt;&lt;img class=&#34;size-medium wp-image-2006 aligncenter&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/08/scriptide1-300x186.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;186&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/08/scriptide1-300x186.png 300w, https://kate-editor.org/wp-content/uploads/2012/08/scriptide1-1024x635.png 1024w, https://kate-editor.org/wp-content/uploads/2012/08/scriptide1.png 1249w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Additional scripts can be imported and new scripts can be created via a dialog, which requests necessary information about the script. Supported is the creation of all three types of scripts used in KPart: indentation scripts, command line scripts and API scripts. Further, help for command line scripts will be editable via the GUI.&lt;br /&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/08/scriptide2.png&#34;&gt;&lt;img class=&#34;size-medium wp-image-2007 aligncenter&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/08/scriptide2-300x283.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;283&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/08/scriptide2-300x283.png 300w, https://kate-editor.org/wp-content/uploads/2012/08/scriptide2.png 648w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
After i have finished some crucial refactoring, the future plan for Scripting IDE features involves auto-completion for available APIs in the document view, as long as the Script IDE Plugin is loaded. Also, some restructuring of the way KPart handles scripts will most likely be necessary.&lt;/p&gt;
&lt;p&gt;As soon as there are new major features implemented, i will post them here. Everyone&amp;#8217;s welcome to comment with his own ideas!&lt;/p&gt;</description></item><item><title>Project Plugin, Current State</title><link>https://kate-editor.org/2012/08/21/project-plugin-current-state/</link><pubDate>Mon, 20 Aug 2012 22:30:18 +0000</pubDate><guid>https://kate-editor.org/2012/08/21/project-plugin-current-state/</guid><description>&lt;p&gt;After some days of more hacking on the plugin, there current state is already nice for my daily use.&lt;/p&gt;
&lt;p&gt;A simple file like&lt;/p&gt;
&lt;pre&gt;{
&#34;name&#34;: &#34;Kate&#34;
, &#34;files&#34;: [ { &#34;git&#34;: 1 } ]
}&lt;/pre&gt;
&lt;p&gt;defines already the complete project for the kate.git.&lt;/p&gt;
&lt;p&gt;If you open any file with Kate inside your local kate.git clone (and the project plugin from master branch is loaded), Kate will auto-open the project and highlight the file you just opened there in the tree. No need to think about opening some project in the menu, just open the file you want to start working at and start. The project plugin won&amp;#8217;t get into your way or require additional steps.&lt;/p&gt;
&lt;p&gt;It will allow you nice and fast file switching between your project files in the filesystem tree like structure without any noise of non-git tracked files ;) Still the normal &amp;#8220;Documents&amp;#8221; view is around like it used to be, if you want to just navigate between currently opened files.&lt;/p&gt;
&lt;p&gt;If you modify the project file, the project will auto-refresh itself, still a reload button is needed to trigger e.g. reparsing of git files, if your add/remove files and want a fresh project tree. The auto-reload won&amp;#8217;t help there, as is is more or less a nop if the project file content was unchanged.&lt;/p&gt;
&lt;p&gt;The &amp;#8220;Search and Replace&amp;#8221; plugin will integrate nicely and per default will do project wide searches, if any project is currently active (you can switch to other search modes like before in the combobox, just the default is changed, if the project plugin is active). Thanks to Kåre&amp;#8217;s nice design of the plugin, this addition was really easy to implement.&lt;/p&gt;
&lt;p&gt;Exuberant Ctags integration is work-in-progress. At the moment on project load, a background thread will generate a ctags index (after it has constructed the file tree from git/svn/&amp;#8230;) and the auto-completion will use this index for all files associated with your project. An additional toolview, that allows you to search inside the index will be implemented, too. It is a bit like the current ctags plugin, but without any setup or manual indexing ;) For the kate.git, the indexing (in the background) needs less than half second, even for kdelibs frameworks branch it is only 2-3 seconds. On Kate exit the index files (created as temp files in your local temp directory) will vanish again. No index database polluting your checkouts/clones or homes.&lt;/p&gt;
&lt;p&gt;Will try to add more features I like for my daily work, if you have any ideas to improve the plugin, just let me know here or on bugs.kde.org ;)&lt;/p&gt;</description></item><item><title>Mercurial Support in Project Plugin</title><link>https://kate-editor.org/2012/08/15/mercurial-support-in-project-plugin/</link><pubDate>Wed, 15 Aug 2012 13:28:13 +0000</pubDate><guid>https://kate-editor.org/2012/08/15/mercurial-support-in-project-plugin/</guid><description>&lt;p&gt;Christoph already wrote &lt;a href=&#34;https://kate-editor.org/2012/08/05/project-management/&#34; title=&#34;Project Management&#34;&gt;several blog posts&lt;/a&gt; about the &lt;a href=&#34;https://kate-editor.org/2012/08/06/project-management-take-two/&#34; title=&#34;Kate Projects Plugin&#34;&gt;upcoming projects plugin&lt;/a&gt;. In his last blog, &lt;a href=&#34;https://kate-editor.org/2012/08/12/project-management-take-three/&#34; title=&#34;Version Control in Projects Plugin&#34;&gt;he mentioned&lt;/a&gt; that a project can now be created on-the-fly by reading the git or subversion output: All the files under version control are automatically listed as files in the project.&lt;/p&gt;
&lt;p&gt;However, this is restricted to &lt;a title=&#34;Project from git&#34; href=&#34;https://projects.kde.org/projects/kde/kde-baseapps/kate/repository/revisions/master/entry/kate/plugins/project/kateproject.cpp#L216&#34; target=&#34;_blank&#34;&gt;git&lt;/a&gt; and &lt;a title=&#34;Project from svn&#34; href=&#34;https://projects.kde.org/projects/kde/kde-baseapps/kate/repository/revisions/master/entry/kate/plugins/project/kateproject.cpp#L250&#34; target=&#34;_blank&#34;&gt;subversion&lt;/a&gt;. If you always wanted to contribute to Kate, you can give other version control systems a try, such as Mercurial (command: hg manifest). Just &lt;a href=&#34;https://kate-editor.org/get-it/&#34; title=&#34;Build Kate&#34;&gt;quickly build Kate&lt;/a&gt;, and &lt;a href=&#34;mailto:kwrite-devel@kde.org&#34; title=&#34;Mailinst List&#34;&gt;send us a patch&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update (2013-10-31):&lt;/strong&gt; Support was added in commit on &lt;a title=&#34;Mercurial Support in Kate Projects&#34; href=&#34;http://quickgit.kde.org/?p=kate.git&amp;a=commit&amp;h=8531af4d7a3c5a1a64a09dfa3796c4ffbd4f54fa&#34; target=&#34;_blank&#34;&gt;2013-03-02&lt;/a&gt; and is available in KDE 4.10.5 and later versions.&lt;/p&gt;</description></item><item><title>Project Management, Take Three</title><link>https://kate-editor.org/2012/08/12/project-management-take-three/</link><pubDate>Sun, 12 Aug 2012 19:32:18 +0000</pubDate><guid>https://kate-editor.org/2012/08/12/project-management-take-three/</guid><description>&lt;p&gt;After bit more playing around with the project plugin, I did get aware that I am even to lazy to open project files. Normally if I need to fix something or add new features, I just go to the directory and open the source or build system files I need to work on.  Therefore the project plugin now just watches which files you open and will load the corresponding project on the fly for you ;) (instead of naming your project, you create a .kateproject hidden file in the toplevel project dir, just like Git would do it with its .git directory)&lt;/p&gt;
&lt;p&gt;Next issue that arised: even with the simple pattern syntax like:&lt;/p&gt;
&lt;pre&gt;&#34;files&#34;: [ { &#34;directory&#34;: &#34;kate&#34;, &#34;filters&#34;: [&#34;*.cpp&#34;, &#34;*.h&#34;, &#34;*.ui&#34;, &#34;CMakeLists.txt&#34;, &#34;Find*.cmake&#34;], &#34;recursive&#34;: 1 } ]&lt;/pre&gt;
&lt;p&gt;it is hard to enumerate all files in the kate.git, as we have .py files, .xml files, .desktop files, .sh files and so on.&lt;/p&gt;
&lt;p&gt;As I started here locally to add more and more extensions, I got the impression that just asking Git would be an better idea, and voila:&lt;/p&gt;
&lt;pre&gt;&#34;files&#34;: [ { &#34;directory&#34;: &#34;kate&#34;, &#34;git&#34;: 1, &#34;recursive&#34;: 1 } ]&lt;/pre&gt;
&lt;p&gt;and you get recursively all files that are registered in your Git clone in the kate directory ;)&lt;/p&gt;
&lt;p&gt;If you still have SVN, no problem, for your project this will work:&lt;/p&gt;
&lt;pre&gt;&#34;files&#34;: [ { &#34;directory&#34;: &#34;kate&#34;, &#34;svn&#34;: 1, &#34;recursive&#34;: 1 } ]&lt;/pre&gt;
&lt;p&gt;These extensions make creating your Kate project much easier I guess and avoid any battling with regular expressions to keep track of the important files.&lt;/p&gt;
&lt;p&gt;Other improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Current file will be selected correctly in the projects view&lt;/li&gt;
&lt;li&gt;Search and Replace is enhanced with an &amp;#8220;in Project&amp;#8221; option, if the project plugin is loaded and any project active, for this a bit work was needed to allow inter-plugin communication ;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And again, the mandatory screenshot:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/08/kateproject_search.png&#34;&gt;&lt;img class=&#34;aligncenter size-large wp-image-1953&#34; title=&#34;Kate Project, now with searching&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/08/kateproject_search-1024x691.png&#34; alt=&#34;&#34; width=&#34;770&#34; height=&#34;519&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/08/kateproject_search-1024x691.png 1024w, https://kate-editor.org/wp-content/uploads/2012/08/kateproject_search-300x202.png 300w, https://kate-editor.org/wp-content/uploads/2012/08/kateproject_search.png 1078w&#34; sizes=&#34;(max-width: 770px) 100vw, 770px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Project Management, Take Two</title><link>https://kate-editor.org/2012/08/06/project-management-take-two/</link><pubDate>Mon, 06 Aug 2012 19:38:30 +0000</pubDate><guid>https://kate-editor.org/2012/08/06/project-management-take-two/</guid><description>&lt;p&gt;After a bit toying around, the first version of project management plugin has landed in the master branch of the kate.git.&lt;/p&gt;
&lt;p&gt;First time I developed a new feature in a feature-clone in my scratch space on git.kde.org. Very cool, KDE sysadmins did a GREAT job with that stuff: easy to setup and use ;)&lt;/p&gt;
&lt;p&gt;Now, people wanting to try out that, just clone our kate.git and &lt;a href=&#34;https://kate-editor.org/get-it/&#34;&gt;compile&lt;/a&gt; the master branch.&lt;/p&gt;
&lt;p&gt;Example project is toplevel in kate.git: kate.kateproject&lt;/p&gt;
&lt;p&gt;To load it, open Kate, activate the &amp;#8220;Project Plugin&amp;#8221; and hit the &amp;#8220;Open Project&amp;#8221; button in your main menu bar and go to the &amp;#8220;Projects&amp;#8221; tool view on the left.&lt;/p&gt;
&lt;p&gt;No, it won&amp;#8217;t auto-raise atm and yeah, the button looks awful :P&lt;/p&gt;
&lt;p&gt;And here the mandatory screenshot:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/08/kateproject.png&#34;&gt;&lt;img class=&#34;aligncenter size-medium wp-image-1936&#34; title=&#34;Kate Project Plugin&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/08/kateproject-300x264.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;264&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/08/kateproject-300x264.png 300w, https://kate-editor.org/wp-content/uploads/2012/08/kateproject.png 844w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It still is not much, but I am happy with the result as this is first time since long for me to code something with model-view and Qt.&lt;/p&gt;</description></item><item><title>Project Management</title><link>https://kate-editor.org/2012/08/05/project-management/</link><pubDate>Sun, 05 Aug 2012 13:31:06 +0000</pubDate><guid>https://kate-editor.org/2012/08/05/project-management/</guid><description>&lt;p&gt;Some years ago the Kate team introduced the &amp;#8220;Session&amp;#8221; feature.&lt;/p&gt;
&lt;p&gt;This allows you easily to keep around different Kate sessions for different work tasks, like coding, web design, writing, &amp;#8230;&lt;/p&gt;
&lt;p&gt;Whereas I used that feature a lot at start during my normal daily work, I kind of no longer used it already since some years.&lt;/p&gt;
&lt;p&gt;For my normal work pattern: Checkout a project, fix something in it or code an extension, then hop over to the next one, the session feature doesn&amp;#8217;t really provide the right workflow.&lt;/p&gt;
&lt;p&gt;My checkouts not always stay at the same location on disk, I keep multiple different checkouts of the same project around (or different clones) and I have too many different projects in company to create for all of them a session and keep any overview.&lt;/p&gt;
&lt;p&gt;Even more years ago I wrote some project plugin for Kate allowing you to manage a more IDE style kind of project in Kate.&lt;/p&gt;
&lt;p&gt;Instead of global sessions in your user account Kate allowed you to create project files which you can check in with your individual projects into your version control.&lt;/p&gt;
&lt;p&gt;I purged that plugin later on again, as I lost interest in it because of one major design flaw: You really needed to use the UI to configure your project and add your stuff. That is REALLY annoying if your code base in in a state of flux or evolution and things really keep changing. (The removal wasn&amp;#8217;t that well &lt;a href=&#34;https://kate-editor.org/2006/07/20/kate-project-plugin/&#34;&gt;perceived&lt;/a&gt;, btw., sorry, but without maintainer, such plugins really cause a lot of pain.)&lt;/p&gt;
&lt;p&gt;Now, here we are, six years later :) Given I still have my itch to scratch, I decided to give the project plugin a new try. But this time with a completely different approach: don&amp;#8217;t create any UI to create/modify projects but come up with a simple file format for them that a Kate plugin can load.&lt;/p&gt;
&lt;p&gt;And yeah, given my history as researcher in compiler construction area, what would be better than write just and other parser for some not understandable language? But no, I want to focus on the real stuff, make the description of the projects lightweight and easy to understand and not try to invent some new syntax yet again.&lt;/p&gt;
&lt;p&gt;Therefore I settled with just using &lt;a href=&#34;http://www.json.org/&#34;&gt;JSON&lt;/a&gt; to describe the project and started to implement some simple format, like:&lt;/p&gt;
&lt;pre&gt;{
&#34;name&#34;: &#34;Kate&#34;,
&#34;projects&#34;: [
{
&#34;name&#34;: &#34;KTextEditor&#34;,
&#34;files&#34;: [ { &#34;directory&#34;: &#34;ktexteditor&#34;, &#34;filters&#34;: [&#34;*.cpp&#34;, &#34;*.h&#34;] } ]
},
{
&#34;name&#34;: &#34;KatePart&#34;,
&#34;files&#34;: [ { &#34;directory&#34;: &#34;part&#34;, &#34;filters&#34;: [&#34;*.cpp&#34;, &#34;*.h&#34;], &#34;recursive&#34;: 1 } ]
},
{
&#34;name&#34;: &#34;Kate&#34;,
&#34;files&#34;: [ { &#34;directory&#34;: &#34;kate&#34;, &#34;filters&#34;: [&#34;*.cpp&#34;, &#34;*.h&#34;], &#34;recursive&#34;: 1 } ]
},
{
&#34;name&#34;: &#34;KWrite&#34;,
&#34;files&#34;: [ { &#34;directory&#34;: &#34;kwrite&#34;, &#34;filters&#34;: [&#34;*.cpp&#34;, &#34;*.h&#34;] } ]
}
]
}&lt;/pre&gt;
&lt;p&gt;This small description should be enough to create the project &amp;#8220;Kate&amp;#8221; in my kate.git, containing 4 different toplevel parts: KTextEditor, KatePart, Kate and KWrite.&lt;/p&gt;
&lt;p&gt;Without many hassle it just collects everything I need for daily work and constructs some tree structure (hehe, that part is not really done at the moment, but the output in my konsole looks OK).&lt;/p&gt;
&lt;p&gt;Actually for my normal company work that format suites even better, as the projects there are normally even more fine grained than kate.git is (and for kate.git subprojects in kate/part/kwrite would even make more sense, above that is just an example).&lt;/p&gt;
&lt;p&gt;Unfortunately there is not much done atm, beside some basic format handling in JSON and konsole output of the results, but I hope more will be done in the next weeks in my scratch repo.&lt;/p&gt;</description></item><item><title>Help Frameworks ;)</title><link>https://kate-editor.org/2012/08/02/help-frameworks/</link><pubDate>Thu, 02 Aug 2012 20:01:40 +0000</pubDate><guid>https://kate-editor.org/2012/08/02/help-frameworks/</guid><description>&lt;p&gt;It is easy and fun, please help to fix the remaining small things in the cleanups section of the frameworks branch.&lt;/p&gt;
&lt;p&gt;See here:&lt;br /&gt;
&lt;a href=&#34;http://community.kde.org/Frameworks/Epics/kdelibs_cleanups&#34;&gt;http://community.kde.org/Frameworks/Epics/kdelibs_cleanups&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And use the nice and complete build howto here:&lt;br /&gt;
&lt;a href=&#34;http://community.kde.org/Frameworks/Building&#34;&gt;http://community.kde.org/Frameworks/Building&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And yeah, I have already stolen some really easy tasks :)&lt;br /&gt;
Don&amp;#8217;t allow David to have all the fun.&lt;/p&gt;</description></item><item><title>Bug Charts on bko</title><link>https://kate-editor.org/2012/07/23/bug-charts-on-bko/</link><pubDate>Mon, 23 Jul 2012 13:52:01 +0000</pubDate><guid>https://kate-editor.org/2012/07/23/bug-charts-on-bko/</guid><description>&lt;p&gt;Since the upgrade on bko, the bug charts were a bit broken. Thanks to our awesome sysadmins, this is fixed now: &lt;a title=&#34;Kate Bugs&#34; href=&#34;https://bugs.kde.org/reports.cgi?product=kate&amp;output=show_chart&amp;datasets=ASSIGNED&amp;datasets=REOPENED&amp;datasets=UNCONFIRMED&amp;datasets=NEW&#34; target=&#34;_blank&#34;&gt;Example for Kate&lt;/a&gt;. In case you notice any wrong behavior, please let the sysadmins know immediately! Thanks :)&lt;/p&gt;</description></item><item><title>kate-editor.org moving</title><link>https://kate-editor.org/2012/07/09/kate-editor-org-moving-2/</link><pubDate>Mon, 09 Jul 2012 21:18:56 +0000</pubDate><guid>https://kate-editor.org/2012/07/09/kate-editor-org-moving-2/</guid><description>&lt;p&gt;The Kate homepage will move to a new faster server.&lt;/p&gt;
&lt;p&gt;There will be some downtime in the next days, as DNS update will take some time and stuff needs to be setup on the new machine.&lt;/p&gt;
&lt;p&gt;Hope we are back with an even faster homepage afterwards ;)&lt;/p&gt;</description></item><item><title>RFC: Data Recovery</title><link>https://kate-editor.org/2012/07/08/rfc-data-recovery/</link><pubDate>Sun, 08 Jul 2012 19:15:25 +0000</pubDate><guid>https://kate-editor.org/2012/07/08/rfc-data-recovery/</guid><description>&lt;p&gt;Currently, we use our own passive notification bar to show a recovery bar when a swap file was found:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-1897&#34; title=&#34;Data Recovery Widget&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/07/recovery11.png&#34; alt=&#34;&#34; width=&#34;609&#34; height=&#34;332&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/07/recovery11.png 609w, https://kate-editor.org/wp-content/uploads/2012/07/recovery11-300x163.png 300w&#34; sizes=&#34;(max-width: 609px) 100vw, 609px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Since version 4.7 we have a class called &lt;a title=&#34;KMessageWidget Demo&#34; href=&#34;http://agateau.com/2011/04/21/kde-ux-2011/&#34; target=&#34;_blank&#34;&gt;KMessageWidget&lt;/a&gt; (&lt;a title=&#34;KMessageWidget - Api Documentation&#34; href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/kdeui/html/classKMessageWidget.html&#34; target=&#34;_blank&#34;&gt;api documentation&lt;/a&gt;). Using KMessageWidget, the notification could also look like this:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;aligncenter size-full wp-image-1898&#34; title=&#34;Data Recovery Widget&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/07/recovery2.png&#34; alt=&#34;&#34; width=&#34;816&#34; height=&#34;332&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/07/recovery2.png 816w, https://kate-editor.org/wp-content/uploads/2012/07/recovery2-300x122.png 300w&#34; sizes=&#34;(max-width: 816px) 100vw, 816px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Imo, the new one looks nicer, as it much better distinguishes the notification popup from the rest of the ui. However, it several drawbacks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the minimum width is now 800 pixel due to the label (too large, might break layout in apps)&lt;/li&gt;
&lt;li&gt;the title &amp;#8220;Data Recovery&amp;#8221; was omitted&lt;/li&gt;
&lt;li&gt;the &amp;#8220;Help&amp;#8221; link, showing a tool tip with further information, can not be added anymore (the api does not allow it)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Possible solutions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;put the buttons under the label, as it was in the old version (currently, the api does not allow it, so we&amp;#8217;d need something like setButtonsUnderText(bool))&lt;/li&gt;
&lt;li&gt;wrap the text in the label (looks aweful, since the buttons appear then between two lines of text)&lt;/li&gt;
&lt;li&gt;to get the &amp;#8220;Help&amp;#8221; label back, the api would need to forward the QLabel&amp;#8217;s signal &lt;a title=&#34;QLabel::linkActivated()&#34; href=&#34;http://qt-project.org/doc/qt-4.8/qlabel.html#linkActivated&#34; target=&#34;_blank&#34;&gt;linkActivated(const QString&amp;amp;)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;#8217;m not sure whether the API can be extended in the 4.x line, though&amp;#8230;&lt;/p&gt;
&lt;p&gt;Comments?&lt;/p&gt;</description></item><item><title>And it is on…</title><link>https://kate-editor.org/2012/07/08/and-it-is-on/</link><pubDate>Sun, 08 Jul 2012 17:35:26 +0000</pubDate><guid>https://kate-editor.org/2012/07/08/and-it-is-on/</guid><description>&lt;p&gt;Let&amp;#8217;s see &lt;a title=&#34;Ex-Nokia Staff To Build MeeGo-based Smartphones&#34; href=&#34;http://linux.slashdot.org/story/12/07/07/2036239/ex-nokia-staff-to-build-meego-based-smartphones&#34; target=&#34;_blank&#34;&gt;what comes out of it&lt;/a&gt; and let&amp;#8217;s hope for the best (&lt;a title=&#34;MeeGo ist tot, es lebe Jolla&#34; href=&#34;http://www.heise.de/newsticker/meldung/MeeGo-ist-tot-es-lebe-Jolla-1634265.html&#34; target=&#34;_blank&#34;&gt;link on heise&lt;/a&gt;) :-)&lt;/p&gt;</description></item><item><title>Contributors, join and help the KDE e.V.</title><link>https://kate-editor.org/2012/07/04/contributors-join-and-help-the-kde-e-v/</link><pubDate>Wed, 04 Jul 2012 14:59:09 +0000</pubDate><guid>https://kate-editor.org/2012/07/04/contributors-join-and-help-the-kde-e-v/</guid><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;just yesterday I got asked by one long time contributor, if he can at all join the KDE e.V. or if he needs to do something special for that. He thought it would be more an invitation only club.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s not ;) Anybody who does contribute to KDE can join us.&lt;/p&gt;
&lt;p&gt;KDE e.V. definition from its &lt;a href=&#34;http://ev.kde.org/&#34; title=&#34;KDE e.V.&#34; target=&#34;_blank&#34;&gt;homepage&lt;/a&gt;:&lt;br /&gt;
&amp;#8220;KDE e.V. is a registered non-profit organization that represents the KDE Community in legal and financial matters.&amp;#8221;&lt;/p&gt;
&lt;p&gt;If you want to have a vote on such stuff and are ok with the rules and goals of the e.V. like you can read on &lt;a href=&#34;http://ev.kde.org/&#34; title=&#34;KDE e.V.&#34; target=&#34;_blank&#34;&gt;the e.V. homepage&lt;/a&gt;, please join.&lt;/p&gt;
&lt;p&gt;You just need to fill out the questionaire on &lt;a href=&#34;http://ev.kde.org/resources/&#34; title=&#34;Forms for joining&#34; target=&#34;_blank&#34;&gt;the e.V. page&lt;/a&gt; and send it to some e.V. member you know and that will support your application.&lt;/p&gt;
&lt;p&gt;Even if you are no contributor, but want to support us with money to make our conferences &amp;amp; sprints possible (and our infrastructure), please take a look at our &lt;a href=&#34;http://jointhegame.kde.org/&#34; title=&#34;Join The Game&#34; target=&#34;_blank&#34;&gt;&amp;#8220;Join The Game&amp;#8221;&lt;/a&gt; campaign.&lt;/p&gt;</description></item><item><title>Python plugin developer guide, part 1</title><link>https://kate-editor.org/2012/07/01/python-plugin-developer-guide-part-1/</link><pubDate>Sun, 01 Jul 2012 11:46:19 +0000</pubDate><guid>https://kate-editor.org/2012/07/01/python-plugin-developer-guide-part-1/</guid><description>
&lt;p&gt;I&amp;#8217;m a Python newbie, so if you are at least that good :-D, you should be able to dive in and write useful Python plugins for your favourite editor too! This is the first in what I hope will be a series of notes and tutorials to help you along the way.&lt;/p&gt;
&lt;h3 id=&#34;where-can-i-find-examples-del-to-steal-from-del-inspire-me&#34;&gt;&lt;strong&gt;Where can I find examples &lt;del&gt;to steal from&lt;/del&gt; inspire me?&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Any good developer knows that a good way to launch into a new area is to look at examples, so here is a list of places I&amp;#8217;ve encountered.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Plugins that came with Kate. These will be in the directory shown when you &lt;a href=&#34;https://kate-editor.org/2012/06/26/python-plugin-user-guide/&#34; title=&#34;Python plugin configuration page&#34;&gt;open the Python plugin configuration page&lt;/a&gt;, probably someplace like /usr/share/apps/kate/pate.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://pypi.python.org/pypi/Kate-plugins&#34;&gt;http://pypi.python.org/pypi/Kate-plugins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/goinnn/Kate-plugins&#34;&gt;https://github.com/goinnn/Kate-plugins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/mtorromeo&#34;&gt;https://github.com/mtorromeo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/zaufi/kate-pate-plugins&#34;&gt;https://github.com/zaufi/kate-pate-plugins&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Remember to respect others&amp;#8217; copyrights, and give credit where it is due.&lt;/p&gt;
&lt;h3 id=&#34;where-do-i-put-my-code&#34;&gt;&lt;strong&gt;Where do I put my code?&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The Pâté Python plugin looks in several places to find usable plugins, you should be able to use the Python console to find a directory you can use for your developments. Select it, and press &amp;#8220;Reload&amp;#8221;:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot17.png&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-1864&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot17-300x178.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;178&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot17-300x178.png 300w, https://kate-editor.org/wp-content/uploads/2012/06/snapshot17.png 694w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Launch it from the View menu, and then ask KDE where your files should go:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot18.png&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-1865&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot18-300x198.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;198&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot18-300x198.png 300w, https://kate-editor.org/wp-content/uploads/2012/06/snapshot18.png 677w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Or, if that&amp;#8217;s a bit hard to read, like this:&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px&#34;&gt;
&gt;&gt;&gt; from PyKDE4.kdecore import *
&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px&#34;&gt;
&gt;&gt;&gt; print KStandardDirs.locateLocal(&amp;#8220;appdata&amp;#8221;,&amp;#8221;pate&amp;#8221;)
&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px&#34;&gt;
/home/srhaque/.kde/share/apps/kate/pate
&lt;/p&gt;
&lt;h4 id=&#34;try-the-directory&#34;&gt;Try the directory&lt;/h4&gt;
&lt;p&gt;If the given directory does not exist, create it. Press Reload, and the new directory should be visible:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot19.png&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-1866&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot19-300x180.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;180&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot19-300x180.png 300w, https://kate-editor.org/wp-content/uploads/2012/06/snapshot19.png 680w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You are ready to create your plugin in the new directory! This plugin directory will be added to the initial value of sys.path used for _all_ plugins.&lt;/p&gt;
&lt;h3 id=&#34;plugin-structure-and-naming&#34;&gt;Plugin structure and naming&lt;/h3&gt;
&lt;p&gt;Your plugin can be just a single .py file, such as &amp;#8220;console.py&amp;#8221;, or multiple files contained in a directory. A single .py file is useful for simple things, but if you want to use .ui files or multiple Python files, a directory is recommended. If you use this option, the main plugin file must be named after the directory, so:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If the directory is called &amp;#8220;console&amp;#8221;&lt;/li&gt;
&lt;li&gt;The main plugin file must be named &amp;#8220;console/console.py&amp;#8221;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the directory case, the directory is added to sys.path to load the main plugin file and other Python modules you may have. Since sys.path is _searched_ by Python in order to load modules, having the same plugin in multiple locations would be very confusing. Pâté supports this by refusing to load identically named plugins; instead they are highlighted as being hidden:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/07/snapshot20.png&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-1872&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/07/snapshot20-300x193.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;193&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/07/snapshot20-300x193.png 300w, https://kate-editor.org/wp-content/uploads/2012/07/snapshot20.png 680w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This also means you can just copy one of the plugins supplied with Kate to get started!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Kate in KDE 4.9</title><link>https://kate-editor.org/2012/06/30/kate-in-kde-4-9/</link><pubDate>Sat, 30 Jun 2012 15:16:19 +0000</pubDate><guid>https://kate-editor.org/2012/06/30/kate-in-kde-4-9/</guid><description>&lt;p&gt;With KDE SC 4.9 around the corner and &lt;a title=&#34;Kate in KDE 4.7&#34; href=&#34;https://kate-editor.org/2011/07/09/kate-in-kde-4-7/&#34; target=&#34;_blank&#34;&gt;according&lt;/a&gt; to &lt;a title=&#34;Kate in KDE 4.8&#34; href=&#34;https://kate-editor.org/2011/12/21/kate-in-kde-4-8/&#34; target=&#34;_blank&#34;&gt;tradition&lt;/a&gt;, it&amp;#8217;s time to have a look at what&amp;#8217;s new in Kate.&lt;/p&gt;
&lt;p&gt;**Improved Support for Custom Color Schemas&lt;br /&gt;
**&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;improved &amp;#8220;Colors&amp;#8221; tab in the &amp;#8220;Fonts &amp;amp; Colors&amp;#8221; config page&lt;/li&gt;
&lt;li&gt;configurable colors: search &amp;amp; replace, code folding, indentation line,&lt;/li&gt;
&lt;li&gt;schema export and import honor background colors (&lt;a title=&#34;Background colors are not exported/imported correctly&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=291868&#34; target=&#34;_blank&#34;&gt;bug #291868&lt;/a&gt;) and font&lt;/li&gt;
&lt;li&gt;&amp;#8220;highlight selection&amp;#8221; plugin and &amp;#8220;search and replace&amp;#8221; plugin now use search &amp;amp; replace colors from Kate&amp;#8217;s color schema&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Line Modification System&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;new option to disable in the editor settings: Appearance &amp;gt; Borders &amp;gt; [ ] Show line modification markers&lt;/li&gt;
&lt;li&gt;colors of the line modification system are configurable&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Build Plugin&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;reworked config page (including advanced settings for remote debugging)&lt;/li&gt;
&lt;li&gt;support for remote debugging&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Further Changes&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;new option in Open/Save config page: [ ] Add newline at end of file on save&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Solved issues in Kate for KDE 4.9&#34; href=&#34;https://bugs.kde.org/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;product=kate&amp;long_desc_type=substring&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;keywords_type=allwords&amp;keywords=&amp;bug_status=RESOLVED&amp;resolution=FIXED&amp;resolution=WORKSFORME&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;chfieldfrom=2012-01-01&amp;chfieldto=2012-06-30&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&#34; target=&#34;_blank&#34;&gt;all fixes&lt;/a&gt; in the bug tracker&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Python plugin user guide</title><link>https://kate-editor.org/2012/06/26/python-plugin-user-guide/</link><pubDate>Tue, 26 Jun 2012 21:12:44 +0000</pubDate><guid>https://kate-editor.org/2012/06/26/python-plugin-user-guide/</guid><description>&lt;p&gt;KDE 4.9 has branched, and so the &lt;a href=&#34;https://kate-editor.org/2012/06/26/extending-kate-with-pytho/&#34; title=&#34;Pâté plugin&#34;&gt;Pâté plugin&lt;/a&gt; &amp;#8220;host&amp;#8221; for Python plugins has moved from Kate&amp;#8217;s playground to be a mainstream plugin. Since a plugin-for-plugins might be a bit confusing, here is a quick tour of how it is managed and works, and especially a few rough edges it still has.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt; If you&amp;#8217;ve installed this from a package, hopefully your distro will have added kate.so under PyKDE4 as needed, but if you are building from source, see the notes at the end of this post.&lt;/p&gt;
&lt;p&gt;Start by enabling the enabling the Pâté plugin:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot21.png&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-1878&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot21-300x166.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;166&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot21-300x166.png 300w, https://kate-editor.org/wp-content/uploads/2012/06/snapshot21.png 694w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That should cause the Pâté plugin&amp;#8217;s configuration page to pop into existence, but you may need to press the Reload button to see the right hand pane filled in like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot12.png&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-1848&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot12-300x166.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;166&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot12-300x166.png 300w, https://kate-editor.org/wp-content/uploads/2012/06/snapshot12.png 694w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Enable specific Python plugins of interest, and press the Reload button. The comment will be set to &amp;#8220;Loaded&amp;#8221;, then close and reopen the dialog (rough edge #1) to see any new configuration pages that the plugin provides:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot13.png&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-1849&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot13-300x232.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;232&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot13-300x232.png 300w, https://kate-editor.org/wp-content/uploads/2012/06/snapshot13.png 713w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Go back to the Pâté plugin&amp;#8217;s configuration page, and now look at the second tab:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot14.png&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-1850&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot14-300x232.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;232&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot14-300x232.png 300w, https://kate-editor.org/wp-content/uploads/2012/06/snapshot14.png 713w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Use the combo box to select one of the built-in support modules (kate and kate.gui) or any of the loaded plugins. The first tab shows HTML documentation for the Python code and you can see any actions it has added into the Kate UI on the second tab (this will be empty for the built-in modules, but not for console):&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot15.png&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-1851&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot15-300x232.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;232&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot15-300x232.png 300w, https://kate-editor.org/wp-content/uploads/2012/06/snapshot15.png 713w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It looks as though the Python console has added one entry to the View menu, alog with a shortcut. And so it has:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot16.png&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-1852&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot16-172x300.png&#34; alt=&#34;&#34; width=&#34;172&#34; height=&#34;300&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/06/snapshot16-172x300.png 172w, https://kate-editor.org/wp-content/uploads/2012/06/snapshot16.png 298w&#34; sizes=&#34;(max-width: 172px) 100vw, 172px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Yaay! See if you can guess what to do next :-)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IF YOU HAVE BUILT FROM SOURCE&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;And then installed the results in say /usr/local, attempting to enable the plugin may result in a crash with something this on the terminal:&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px&#34;&gt;&amp;gt;  File &#34;/home/.../kate/plugins/pate/kate/__init__.py&#34;, line 38, in &amp;lt;module&amp;gt; from PyKDE4.kate import Kate
&amp;gt; No module named kate
&amp;gt; Could not import kate&#34;&lt;/pre&gt;
&lt;p&gt;This is because the Pate build should install kate.so as part of the PyKDE4 bindings, but typically, a developer build will install this locally, and not to where the remaining system-supplied PyKDE4 files are installed:&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px&#34;&gt;Install the project...
-- Install configuration: &#34;RelWithDebInfo&#34;
-- Up-to-date: /usr/local/lib/python2.7/dist-packages/PyKDE4/kate.so
...&lt;/pre&gt;
&lt;p&gt;The system-supplied PyKDE4 binding modules should be in Python&amp;#8217;s sys.path:&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px&#34;&gt;srhaque&amp;gt; python
Python 2.7.3 (default, Apr 20 2012, 22:39:59)
[GCC 4.6.3] on linux2
Type &#34;help&#34;, &#34;copyright&#34;, &#34;credits&#34; or &#34;license&#34; for more information.
&amp;gt;&amp;gt;&amp;gt; import sys
&amp;gt;&amp;gt;&amp;gt; print sys.path
[&#39;&#39;, &#39;/usr/lib/python2.7&#39;, &#39;/usr/lib/python2.7/plat-linux2&#39;, &#39;/usr/lib/python2.7/lib-tk&#39;, &#39;/usr/lib/python2.7/lib-old&#39;, &#39;/usr/lib/python2.7/lib-dynload&#39;, &#39;/usr/local/lib/python2.7/dist-packages&#39;, &#39;/usr/lib/python2.7/dist-packages&#39;, &#39;/usr/lib/python2.7/dist-packages/PIL&#39;, &#39;/usr/lib/python2.7/dist-packages/gst-0.10&#39;, &#39;/usr/lib/python2.7/dist-packages/gtk-2.0&#39;, &#39;/usr/lib/pymodules/python2.7&#39;]&lt;/pre&gt;
&lt;p&gt;For me, Ubuntu puts PyKDE4 at /usr/lib/python2.7/dist-packages/PyKDE4, so we need a link from there to the actual location:&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px&#34;&gt;srhaque&amp;gt; ls -l /usr/lib/python2.7/dist-packages/PyKDE4/kate.so&lt;/pre&gt;
&lt;pre style=&#34;padding-left: 30px&#34;&gt;lrwxrwxrwx 1 root root 53 May 20 09:51 /usr/lib/python2.7/dist-packages/PyKDE4/kate.so -&amp;gt; /usr/local/lib/python2.7/dist-packages/PyKDE4/kate.so&lt;/pre&gt;
&lt;p&gt;Note that just having this location in PYTHONPATH and/or in sys.path does not work because the PyKDE4 needs an __init__.py to be seen (see the one in the system directory to understand why).&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve not thought of a good way to simplify this for developers, and I assume end-users won&amp;#8217;t see it because we&amp;#8217;ll install in the default path. Suggestions/fixes welcome.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Extending Kate with Python</title><link>https://kate-editor.org/2012/06/26/extending-kate-with-pytho/</link><pubDate>Mon, 25 Jun 2012 23:18:44 +0000</pubDate><guid>https://kate-editor.org/2012/06/26/extending-kate-with-pytho/</guid><description>&lt;p&gt;So there I am, a &lt;a href=&#34;https://kate-editor.org/2012/06/21/why-kde-and-kate/&#34; title=&#34;confirmed Kate user&#34;&gt;confirmed Kate user&lt;/a&gt;, and now I need to find my way around a codebase of over 100,000 files using &lt;a href=&#34;http://www.gnu.org/software/idutils/&#34; title=&#34;GNU ID utils&#34;&gt;GNU ID utils&lt;/a&gt;. The rather crude answer for Kate 3 was to write a wrapper around the lid(1) utility and the DCOP scripting interface of Kate, all driven from the built-in Konsole. The result was clunky but somewhat usable. But Kate 3? In 2010? Because the version of KDE on our primary development environment is the venerable KDE 3.3!&lt;/p&gt;
&lt;p&gt;Eventually though, I decide the time had come for something a little nicer, and the answer seemed to lie in Kate 4 and scripting, except that the Javascript API didn&amp;#8217;t seem to offer a way to get to the ID database. That had me stumped for a while until I came across &lt;a href=&#34;http://paul.giannaros.org/pate/&#34; title=&#34;Pâté&#34;&gt;Pâté&lt;/a&gt;, which allowed Kate 4 to be extended in Python. Sadly, it was unmaintained and there things stalled until, inexorably, I got to the point where the itch needed scratching.&lt;/p&gt;
&lt;p&gt;That most basic driver of Open Source usually comes with strings attached, like the need to find a way to work in a new codebase, and with a new team of hackers. Plus, in the this case, the minor issue of being pretty much a Python newbie. Luckily it turns out that Kate has one of the most responsive teams I&amp;#8217;ve encountered, the Pâté code seemed reasonably tractable, and the Python C API solidly documented. What could possibly go wrong? :-) Not that much, because we now have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A Kate plugin based on Pâté&lt;/li&gt;
&lt;li&gt;A Python debugger console Pâté plugin&lt;/li&gt;
&lt;li&gt;And oh yes, an ID file integration Pâté plugin&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Kate plugin has a configuration page that allows individual Python plugins to be enabled or disabled, and if need be, system installed plugins to be overridden. Like the original Pâté, Python plugins can hook into Kate&amp;#8217;s menus and shortcuts. Unlike the original, this version:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Allows Python plugins to supply Kate configuration pages just like native Kate plugins&lt;/li&gt;
&lt;li&gt;Uses Python pickling to save configuration data, so arbitrary Python objects can be part of a plugin&amp;#8217;s configuration&lt;/li&gt;
&lt;li&gt;Provides for reloading Python plugins, which is really handy when writing new plugins&lt;/li&gt;
&lt;li&gt;Supported threaded Python&lt;/li&gt;
&lt;li&gt;Provides direct access to the documentation for Python plugins (though if anybody can figure out how to be information for variables, as well as classes and function, that would be wonderful!)&lt;/li&gt;
&lt;li&gt;The sample Console and ID plugins try to show a selection of techniques&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But help is always welcome to do better (How *should* i18n be done? What might Python 3 involve? What about some decent developer docs?). Any takers or clues much appreciated!&lt;/p&gt;</description></item><item><title>GSoC 2012: Vi Input Mode</title><link>https://kate-editor.org/2012/06/25/gsoc-2012-vi-input-mode/</link><pubDate>Mon, 25 Jun 2012 20:45:28 +0000</pubDate><guid>https://kate-editor.org/2012/06/25/gsoc-2012-vi-input-mode/</guid><description>&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/06/300x400.jpg&#34;&gt;&lt;img class=&#34;alignright wp-image-1815&#34; title=&#34;300x400&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/06/300x400-225x300.jpg&#34; alt=&#34;&#34; width=&#34;158&#34; height=&#34;210&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/06/300x400-225x300.jpg 225w, https://kate-editor.org/wp-content/uploads/2012/06/300x400.jpg 300w&#34; sizes=&#34;(max-width: 158px) 100vw, 158px&#34; /&gt;&lt;/a&gt;Like last summer I am mentoring a student working on Kate&amp;#8217;s Vi mode this summer. This year&amp;#8217;s student is Vegard Øye from Oslo, Norway. I&amp;#8217;ll let him introduce himself:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;My name is Vegard Øye. I am a computer science student at the University of Oslo, Norway. I also have a bachelor&amp;#8217;s degree in electrical engineering from Sør-Trøndelag University College in Trondheim, where I programmed for integrated circuits. It was a lot of fun, so I decided to embark on a grade with an even larger emphasis on programming.&lt;/p&gt;
&lt;p&gt;My goal is to make modal editing more widespread outside of Vim. There is a Zen-like benefit to using a tool that does just what you tell it to – slicing and dicing text with surgical precision. My focus is not on adding new features to Kate (although I have implemented a few), but on sharpening existing functionality. In particular, I want to improve the integration between Kate&amp;#8217;s vi mode and its extension system, as well as sort out various bugs pertaining to the vi mode.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Vegard has already done some really great work, and his changes should be trickling in to Kate&amp;#8217;s git repository the next weeks. You can follow his work at &lt;a href=&#34;http://quickgit.kde.org/index.php?p=clones%2Fkate%2Fvegardoye%2Fvegard_gsoc_2012.git&#34;&gt;http://quickgit.kde.org/index.php?p=clones%2Fkate%2Fvegardoye%2Fvegard_gsoc_2012.git&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Akademy 2012 – See you in Tallinn ;)</title><link>https://kate-editor.org/2012/06/25/akademy-2012-see-you-in-tallinn/</link><pubDate>Mon, 25 Jun 2012 18:35:51 +0000</pubDate><guid>https://kate-editor.org/2012/06/25/akademy-2012-see-you-in-tallinn/</guid><description>&lt;p&gt;One year more passed and the next &lt;a href=&#34;http://akademy2012.kde.org/&#34; title=&#34;Akademy 2012&#34; target=&#34;_blank&#34;&gt;Akademy&lt;/a&gt; will soon open its doors.&lt;/p&gt;
&lt;p&gt;Was never before in &lt;a title=&#34;Tallinn&#34; href=&#34;http://en.wikipedia.org/wiki/Tallinn&#34; target=&#34;_blank&#34;&gt;Tallinn&lt;/a&gt; or &lt;a title=&#34;Estonia&#34; href=&#34;http://en.wikipedia.org/wiki/Estonia&#34; target=&#34;_blank&#34;&gt;Estonia&lt;/a&gt;, will be an interesting visit.&lt;/p&gt;
&lt;p&gt;Hope to meet again a lot of old and new KDE people.&lt;/p&gt;
&lt;p&gt;Didn&amp;#8217;t code a lot at all since last years meeting, too busy to finalize my phd thesis.&lt;br /&gt;
Hope to get more time for Kate in the next months again ;) And at the meeting.&lt;/p&gt;
&lt;p style=&#34;text-align: left;&#34;&gt;
&lt;a href=&#34;http://akademy2012.kde.org/&#34;&gt;&lt;img class=&#34;size-medium wp-image-1823&#34; title=&#34;Ak2012_imgoing2&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/06/Ak2012_imgoing2-300x133.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;133&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/06/Ak2012_imgoing2-300x133.png 300w, https://kate-editor.org/wp-content/uploads/2012/06/Ak2012_imgoing2.png 400w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Why KDE, and Kate</title><link>https://kate-editor.org/2012/06/21/why-kde-and-kate/</link><pubDate>Wed, 20 Jun 2012 23:49:10 +0000</pubDate><guid>https://kate-editor.org/2012/06/21/why-kde-and-kate/</guid><description>&lt;p&gt;I&amp;#8217;ve been using and contributing to KDE on-and-off for a while, but our friends over in Gnome land were already busy by the time I got into the game. So why did I conceptually commit to KDE, and thence Kate? Consistency.&lt;/p&gt;
&lt;p&gt;I grew up on VAX/VMS where it was possible &amp;#8211; and even easy &amp;#8211; to mix Ada code with C and Pascal, mix in a CLI that used the standard parser, generate error messages that looked and *were* like every other message in the system. Everything felt integrated.&lt;/p&gt;
&lt;p&gt;And the editors? Ah yes, the editors. VAX EDT was where I started, and I *loved* the fact that I used the same editor whether I was writing a VAXmail, posting a VAXnote, or editing a file. So it was a bit of a dilemma when I encountered VAX Emacs, with all its seductive extensibility. I ended up using Emacs for serious editing, and EDT for everything else&amp;#8230;that was hateful. Eventually, TPU and its precocious offspring LSE restored the status ante, and my sanity.&lt;/p&gt;
&lt;p&gt;Scroll forward a few years, past Windows NT 3.5 and Visual Studio where I got hooked on GUIs, and we get to Qt and KDE libs. Even though there were several KDE text editors in those early days, it was a reasonable bet we&amp;#8217;d rationalise, and I&amp;#8217;m delighted to say we did (even when Kmail&amp;#8217;s default isn&amp;#8217;t KWrite &amp;#8211; at least the look&amp;#8217;n&amp;#8217;feel was the same). I even went round making every Find and Replace dialog throughout KDE the same.&lt;/p&gt;
&lt;p&gt;So we get to Kate. Right out of the box, even in its Kate 3 incarnation, I loved Kate. Standalone was good, in KDevelop it was even better. I didn&amp;#8217;t miss the relative lack of extensibility because well, it did pretty much everything I wanted. And then I changed job&amp;#8230;&lt;/p&gt;</description></item><item><title>RFC: Exporting JavaScript API</title><link>https://kate-editor.org/2012/05/12/rfc-exporting-javascript-api/</link><pubDate>Sat, 12 May 2012 13:36:10 +0000</pubDate><guid>https://kate-editor.org/2012/05/12/rfc-exporting-javascript-api/</guid><description>&lt;p&gt;Since quite some time, Kate Part has &lt;a title=&#34;Kate Part JavaScript Support&#34; href=&#34;http://docs.kde.org/stable/en/kde-baseapps/kate/advanced-editing-tools-scripting.html&#34; target=&#34;_blank&#34;&gt;build-in scripting support&lt;/a&gt; through JavaScript. Our plan is to make this API public, so other applications like Kile, Kate App and KDevelop can use it. However, we are currently unsure how to best implement it, so this is a rfc to get feedback.&lt;/p&gt;
&lt;p&gt;The bindings for a Kate Document are for instance located in part/script/katescriptdocument.h (&lt;a title=&#34;KateScriptDocument header file&#34; href=&#34;https://projects.kde.org/projects/kde/kde-baseapps/kate/repository/revisions/96db438c4ffe7b4b0c6439013defaf4a20892799/entry/part/script/katescriptdocument.h&#34; target=&#34;_blank&#34;&gt;header&lt;/a&gt;, &lt;a title=&#34;KateScriptDocument source file&#34; href=&#34;https://projects.kde.org/projects/kde/kde-baseapps/kate/repository/revisions/96db438c4ffe7b4b0c6439013defaf4a20892799/entry/part/script/katescriptdocument.cpp&#34; target=&#34;_blank&#34;&gt;implementation&lt;/a&gt;). As you can see, there are functions like&lt;/p&gt;
&lt;pre&gt;Q_INVOKABLE bool insertLine(int line, const QString &amp;s),&lt;/pre&gt;
&lt;p&gt;which can be invoked in our scripting by a call of &amp;#8216;document.insertLine(5, &amp;#8220;hello world&amp;#8221;)&amp;#8217;. The API only contains basic functions. But for instance Kile maybe also wants to provide a function called &amp;#8216;document.insertSection()&amp;#8217; or similar LaTeX related functions. The question now is as follows: &lt;strong&gt;How can Kile extend our QObject based prototype with their own QObject based classes?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We do not want to make the class KateScriptDocument public. Instead, we just want to return a QScriptValue containing a QObject based KateScriptDocument. You can think of the problem also as follows:&lt;/p&gt;
&lt;pre&gt;// in Kile:
QScriptEngine *engine = ...;
KTextEditor::Document *kteDocument = ...;
QObject* kateScriptDocument = kteDocument-&amp;gt;scriptDocument();
engine-&amp;gt;globalObject().setProperty(&#34;document&#34;, engine-&amp;gt;newQObject(kateScriptDocument));
// at this point, the JavaScript object &#39;document&#39; contains all &lt;a title=&#34;KateScriptDocument functions&#34; href=&#34;https://projects.kde.org/projects/kde/kde-baseapps/kate/repository/revisions/96db438c4ffe7b4b0c6439013defaf4a20892799/entry/part/script/katescriptdocument.h&#34; target=&#34;_blank&#34;&gt;KateScriptDocument functions&lt;/a&gt;
// next, we want to add the Kile related document functions
KileTextDocument* kileDocument = ...;
QObject* kileScriptDocument = kileDocument-&amp;gt;...(); // some function that returns the binginds object
// now: how can we populate the &#39;document&#39; property with the functions in kileScriptDocument?
engine-&amp;gt;globalObject().setProperty(&#34;document&#34;, ? );&lt;/pre&gt;
&lt;p&gt;If you have any idea or other solutions how to do it right, please let us know!&lt;/p&gt;</description></item><item><title>Crash through D-Bus calls</title><link>https://kate-editor.org/2012/04/06/crash-through-d-bus-calls/</link><pubDate>Fri, 06 Apr 2012 10:36:51 +0000</pubDate><guid>https://kate-editor.org/2012/04/06/crash-through-d-bus-calls/</guid><description>&lt;p&gt;Years ago, there was a blog on the planet with the title &amp;#8220;&lt;a title=&#34;How to crash (almost) every Qt/KDE Application and how to fix it&#34; href=&#34;http://blogs.kde.org/node/3919&#34; target=&#34;_blank&#34;&gt;How to crash (almost) every Qt/KDE Application and how to fix it&lt;/a&gt;&amp;#8220;. In short, if you are showing a dialog, KWin prevents you from closing the application by clicking on the close button in the window decoration. However, through D-Bus, you can still quit the application. A solution was also provided: Use a guarded pointer to create the dialog.While this fixes the issue, it looks like fixing the blame, and not the real issue. Stricktly speaking, even the &lt;a title=&#34;Code Examples&#34; href=&#34;http://qt-project.org/doc/qt-4.8/QDialog.html#code-examples&#34; target=&#34;_blank&#34;&gt;Qt documentation&lt;/a&gt; would be wrong then.&lt;/p&gt;
&lt;p&gt;&lt;a title=&#34;lxr.kde.org&#34; href=&#34;http://lxr.kde.org/ident?i=Accepted&#34; target=&#34;_blank&#34;&gt;Searching for &amp;#8216;Accepted&amp;#8217; on lxr.kde.org&lt;/a&gt; shows lots of dialogs that lead to possible crashes. I wonder whether developers are really aware of this crash? Even if we took care of this issue as proposed, it&amp;#8217;s just a matter of time until dialogs are created the `wrong&amp;#8217; way again (do we have krazy checks for that?). In Kate, no one took care of this situation, meaning that you can indeed crash the application through D-Bus.&lt;/p&gt;
&lt;p&gt;Is there a better way to fix this?&lt;/p&gt;</description></item><item><title>On Removing an Element from a List</title><link>https://kate-editor.org/2012/03/17/on-removing-an-element-from-a-list/</link><pubDate>Sat, 17 Mar 2012 12:10:11 +0000</pubDate><guid>https://kate-editor.org/2012/03/17/on-removing-an-element-from-a-list/</guid><description>&lt;p&gt;Recently, there was a very good blog about &lt;a title=&#34;The Importance of Mentoring&#34; href=&#34;http://blog.martin-graesslin.com/blog/2012/01/the-importance-of-mentoring/&#34; target=&#34;_blank&#34;&gt;The Importance of Mentoring&lt;/a&gt;. It was mentioned that the 3200 slocs of the gsoc projects could be cut down to 500 slocs, doing exactly the same thing.&lt;/p&gt;
&lt;p&gt;While hunting some crashes in the new code folding code from the last gsoc project, I obviously had a closer look on how things are implemented. The code folding uses a simple tree structure. Nodes can be added, removed or moved around. So I stumbled over the following code:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;01 // removes it from children list (QVector)
02 bool SomeClass::removeItem(Item* it)
03 {
04 bool found = false;
05 int i;
06
07 for (i = 0 ; i &amp;lt; children.size(); ++i) {
08 if (children[i] == it) {
09 found = true;
10 break;
11 }
12 }
13
14 if (found) {
15 children.remove(i);
16 return true;
17 }
18
19 return false;
20 }&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;This code appears several times in different locations. It can easily be rewritten as&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;01 // removes it from children list (QVector)
02 bool SomeClass::removeItem(Item* it)
03 {
04 int i = children.indexOf(it);
05 if (i != -1) {
06 children.remove(i);
07 }
08
09 return i != -1;
10 }&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;So without much work, the code is reduced to the half. Diving further into the code, I stumbled over a class KateDocumentPosition. This class is a line/column tuple representing a position in the document. It features operators like &amp;lt;, &amp;gt;, for convenience. Now you may guess it: Kate Part is a _text editor_ using &amp;#8220;document positions&amp;#8221;all over the place, e.g. for the cursor, the text selection, bracket matching, search &amp;amp; replace and what not. In fact, there is no way around using line/column tuples as position markers. Thus, it should not be surprising that we have a public class called &lt;a title=&#34;KTextEditor::Cursor&#34; href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1Cursor.html&#34; target=&#34;_blank&#34;&gt;KTextEditor::Cursor&lt;/a&gt;, featuring everything what KateDocumentPosition implements (and more). The Cursor class is basically used everywhere, and it works as expected (our unit test rely on it, too). There is no need to duplicate the code. This probably happened because the student was not aware of it.&lt;/p&gt;
&lt;p&gt;Martin writes &amp;#8220;&lt;em&gt;Be prepared for the worst&lt;/em&gt;&amp;#8220;. Well, true. In this case, the project was successful and the new code folding works better than the old one (after fixing the crashes). Now if you are a gsoc student reading this blog, don&amp;#8217;t feel discouraged. Rather feel encouraged to communicate with the developers &lt;em&gt;a lot&lt;/em&gt;, e.g. by discussions on the mailing list :-)&lt;/p&gt;</description></item><item><title>Append Newline at End of File</title><link>https://kate-editor.org/2012/03/12/append-newline-at-end-of-file/</link><pubDate>Mon, 12 Mar 2012 21:20:58 +0000</pubDate><guid>https://kate-editor.org/2012/03/12/append-newline-at-end-of-file/</guid><description>&lt;p&gt;In KDE SC 4.9, Kate Part will have an option in the Open/Save config tab called&lt;/p&gt;
&lt;pre style=&#34;padding-left: 30px;&#34;&gt;[ ] Append newline at end of file on save&lt;/pre&gt;
&lt;p&gt;By default (and Kate tradition), this option is off. You can also use the &lt;a href=&#34;http://docs.kde.org/stable/en/kde-baseapps/kate/config-variables.html&#34; target=&#34;_blank&#34;&gt;document variable (modeline)&lt;/a&gt; newline-at-eof [bool], either in the file itself, in a .kateconfig file, or in the &amp;#8220;Modes &amp;amp; Filetypes&amp;#8221; config page. If a newline was added, it is visible only after reloading the document. This finally fixes &lt;a title=&#34;Kate Wish #256134&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=256134&#34; target=&#34;_blank&#34;&gt;wish #256134&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Some Kate Color Schemas</title><link>https://kate-editor.org/2012/03/07/some-kate-color-schemas/</link><pubDate>Wed, 07 Mar 2012 21:31:18 +0000</pubDate><guid>https://kate-editor.org/2012/03/07/some-kate-color-schemas/</guid><description>&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/2012/03/01/color-settings/&#34; title=&#34;Color Settings&#34;&gt;As already mentioned&lt;/a&gt;, Kate Part much better chooses colors from the default KDE color palette configured in System Settings in upcoming KDE SC 4.9. As teaser, here are some examples &amp;#8211; hope you like it.&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
&lt;strong&gt;Default &amp;#8220;Oxygen&amp;#8221; Color Schema&lt;/strong&gt;&lt;br /&gt; &lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/03/oxygen.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-1729&#34; title=&#34;Oxygen Color Schema&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/03/oxygen.png&#34; alt=&#34;&#34; width=&#34;739&#34; height=&#34;410&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/03/oxygen.png 739w, https://kate-editor.org/wp-content/uploads/2012/03/oxygen-300x166.png 300w&#34; sizes=&#34;(max-width: 739px) 100vw, 739px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
&lt;strong&gt;Default &amp;#8220;Obsidian Coast&amp;#8221; Color Schema&lt;/strong&gt; &lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/03/obsidian-coast.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-1730&#34; title=&#34;Obsidian Coast Color Schema&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/03/obsidian-coast.png&#34; alt=&#34;&#34; width=&#34;739&#34; height=&#34;410&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/03/obsidian-coast.png 739w, https://kate-editor.org/wp-content/uploads/2012/03/obsidian-coast-300x166.png 300w&#34; sizes=&#34;(max-width: 739px) 100vw, 739px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
&lt;strong&gt;Dark &amp;#8220;Vim&amp;#8221; Color Schema&lt;/strong&gt;&lt;br /&gt; &lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/03/vim.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-1731&#34; title=&#34;Vim Color Schema&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/03/vim.png&#34; alt=&#34;&#34; width=&#34;739&#34; height=&#34;410&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/03/vim.png 739w, https://kate-editor.org/wp-content/uploads/2012/03/vim-300x166.png 300w&#34; sizes=&#34;(max-width: 739px) 100vw, 739px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&#34;text-align: left;&#34;&gt;
Note: The yellow search background comes from the &amp;#8220;Highlight Selection&amp;#8221; plugin, which is still a hard-coded yellow. Kate Part&amp;#8217;s &amp;#8220;Search &amp; Replace&amp;#8221;chooses more fitting highlight colors for matching and replaced text.
&lt;/p&gt;</description></item><item><title>Yet another update for the Colors tab</title><link>https://kate-editor.org/2012/03/01/yet-another-update-for-the-colors-tab/</link><pubDate>Thu, 01 Mar 2012 19:07:13 +0000</pubDate><guid>https://kate-editor.org/2012/03/01/yet-another-update-for-the-colors-tab/</guid><description>&lt;p&gt;Now, the categories in the &amp;#8220;Colors&amp;#8221; tab are painted like in System Settings (top: new, bottom: old):&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/03/color-final.png&#34;&gt;&lt;img class=&#34;size-full wp-image-1721 aligncenter&#34; title=&#34;Final Colors Tab&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/03/color-final.png&#34; alt=&#34;&#34; width=&#34;782&#34; height=&#34;560&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/03/color-final.png 782w, https://kate-editor.org/wp-content/uploads/2012/03/color-final-300x214.png 300w&#34; sizes=&#34;(max-width: 782px) 100vw, 782px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/03/colors-new.png&#34;&gt;&lt;img class=&#34;alignnone size-full wp-image-1712&#34; title=&#34;New Color Tab&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/03/colors-new.png&#34; alt=&#34;&#34; width=&#34;904&#34; height=&#34;560&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/03/colors-new.png 904w, https://kate-editor.org/wp-content/uploads/2012/03/colors-new-300x185.png 300w&#34; sizes=&#34;(max-width: 904px) 100vw, 904px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&#34;text-align: left;&#34;&gt;
Thanks to Rafael Fernández López for relicensing the code of SystemSettings&amp;#8217; CategoryDrawer under LGPLv{2,3}.
&lt;/p&gt;</description></item><item><title>Color Settings</title><link>https://kate-editor.org/2012/03/01/color-settings/</link><pubDate>Thu, 01 Mar 2012 10:28:44 +0000</pubDate><guid>https://kate-editor.org/2012/03/01/color-settings/</guid><description>&lt;p&gt;This week, Kate Part received an update of the &amp;#8220;Colors&amp;#8221; tab in the settings dialog, available in KDE 4.9. The major features include&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;configurable colors: search highlight, replace highlight and &lt;a href=&#34;https://kate-editor.org/2011/09/06/line-modification-system/&#34; title=&#34;Kate Modification Markers&#34;&gt;modified line colors&lt;/a&gt; &amp;#8211; finally :-)&lt;/li&gt;
&lt;li&gt;possibility to always use colors from the KDE color scheme.&lt;/li&gt;
&lt;li&gt;the implementation works in a way that at some point, the host application (KDevelop, Kile, &amp;#8230;) can put items into this list.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here are screenshots of the new (top) and the old (bottom) color tab:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/03/colors-new.png&#34;&gt;&lt;img class=&#34;alignnone size-full wp-image-1712&#34; title=&#34;New Color Tab&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/03/colors-new.png&#34; alt=&#34;&#34; width=&#34;904&#34; height=&#34;560&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/03/colors-new.png 904w, https://kate-editor.org/wp-content/uploads/2012/03/colors-new-300x185.png 300w&#34; sizes=&#34;(max-width: 904px) 100vw, 904px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2012/03/colors-old.png&#34;&gt;&lt;img class=&#34;alignnone size-full wp-image-1713&#34; title=&#34;Old Color Tab&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2012/03/colors-old.png&#34; alt=&#34;&#34; width=&#34;904&#34; height=&#34;579&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2012/03/colors-old.png 904w, https://kate-editor.org/wp-content/uploads/2012/03/colors-old-300x192.png 300w&#34; sizes=&#34;(max-width: 904px) 100vw, 904px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The new implementation uses a QTreeWidget along with a custom delegate to draw the colors button and reset icon. It would be nice to have an appearance of the categories like in systemsettings, or like in dolphin. Dolphin probably uses a KCategorizedView, which in turn uses KCategoryDrawer. KCategoryDrawer could be used, but needs fine tuning in order to make it look nice. Does someone know how systemsettings draws the nice shaded backgrounds of the categories?&lt;/p&gt;</description></item><item><title>Akademy 2012 – We are on the way! (soon)</title><link>https://kate-editor.org/2012/02/26/akademy-2012-we-are-on-the-way-soon/</link><pubDate>Sun, 26 Feb 2012 16:54:12 +0000</pubDate><guid>https://kate-editor.org/2012/02/26/akademy-2012-we-are-on-the-way-soon/</guid><description>&lt;p&gt;Perhaps a bit early, but typical german, me and Dominik booked our flights to Tallinn.&lt;/p&gt;
&lt;p&gt;Lets hope we will have a lot fun there and meet old and new friends ;)&lt;/p&gt;
&lt;p&gt;See you all, at Tallinn.&lt;/p&gt;</description></item><item><title>Disable Line Modification Indicators</title><link>https://kate-editor.org/2012/02/26/disable-line-modification-indicators/</link><pubDate>Sun, 26 Feb 2012 12:15:17 +0000</pubDate><guid>https://kate-editor.org/2012/02/26/disable-line-modification-indicators/</guid><description>&lt;p&gt;On KDE 4.8.0, there is no way to disable the &lt;a href=&#34;https://kate-editor.org/2011/09/06/line-modification-system/&#34; title=&#34;Line Modification Markers&#34;&gt;line modification markers&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In KDE &amp;gt;= 4.8.1, you can disable them as follows by first closing Kate and then typing&lt;/p&gt;
&lt;pre&gt;kwriteconfig --file katerc --group &#34;Kate View Defaults&#34; --key &#34;Line Modification&#34; --type bool false&lt;/pre&gt;
&lt;p&gt;To enable it again, close Kate and run&lt;/p&gt;
&lt;pre&gt;kwriteconfig --file katerc --group &#34;Kate View Defaults&#34; --key &#34;Line Modification&#34; --type bool true&lt;/pre&gt;
&lt;p&gt;However, this only affects Kate; not KWrite, Kile, KDevelop or any other application using Kate Part. If you want to disable the markers for KWrite, Kile or KDevelop, use kwriterc, kilerc or kdeveloprc instead of katerc.&lt;/p&gt;
&lt;p&gt;In KDE &amp;gt;= 4.9, there is a graphical option in the editor configuration dialog in &amp;#8220;Appearance &amp;gt; Borders &amp;gt; [x] Show line modification markers&amp;#8221;.&lt;/p&gt;
&lt;pre&gt;&lt;/pre&gt;</description></item><item><title>Scripting in Kate</title><link>https://kate-editor.org/2012/01/21/scripting-in-kate/</link><pubDate>Sat, 21 Jan 2012 11:13:41 +0000</pubDate><guid>https://kate-editor.org/2012/01/21/scripting-in-kate/</guid><description>&lt;p&gt;Since several releases, &lt;a title=&#34;Scripting in Kate&#34; href=&#34;https://docs.kde.org/trunk5/en/applications/katepart/dev-scripting.html&#34; target=&#34;_blank&#34;&gt;Kate Part has scripting support&lt;/a&gt; through javascript. So far, it seems it is not much used by users. Still, I stumbled over two extensions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&#34;Jump to previous / next paragraph&#34; href=&#34;http://kucrut.org/move-cursor-to-next-prev-paragraph-in-kate/&#34; target=&#34;_blank&#34;&gt;jump to previous / next paragraph&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;base 64 encoding&#34; href=&#34;http://kde-apps.org/content/show.php/Kate+Base64+support?content=138046&#34; target=&#34;_blank&#34;&gt;base64 encoding&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have more user defined scripts, it would be nice if you let us know! For KDE5, we plan to extend this, so applications like Kile or KDevelop can reuse Kate&amp;#8217;s internal code.&lt;/p&gt;
&lt;p&gt;On another note, here is &lt;a title=&#34;KDE 4.8 release&#34; href=&#34;http://cristalinux.blogspot.com/2012/01/kde-48-upcoming-features.html&#34; target=&#34;_blank&#34;&gt;a nice blog&lt;/a&gt; about the upcoming KDE 4.8 release :-)&lt;/p&gt;</description></item><item><title>Highlighting Search &amp; Replace Matches</title><link>https://kate-editor.org/2011/12/22/highlighting-search-replace-matches/</link><pubDate>Thu, 22 Dec 2011 10:30:52 +0000</pubDate><guid>https://kate-editor.org/2011/12/22/highlighting-search-replace-matches/</guid><description/></item><item><title>On Being Wrong</title><link>https://kate-editor.org/2011/12/21/on-being-wrong/</link><pubDate>Wed, 21 Dec 2011 22:27:48 +0000</pubDate><guid>https://kate-editor.org/2011/12/21/on-being-wrong/</guid><description>&lt;p&gt;Maybe a good read: &lt;a title=&#34;On being wrong&#34; href=&#34;http://www.computer.org/portal/web/buildyourcareer/Nosce-te-Ipsum/-/blogs/on-being-wrong&#34; target=&#34;_blank&#34;&gt;On being wrong&lt;/a&gt;. It&amp;#8217;s about why it&amp;#8217;s so hard to admit that you are wrong, and more.&lt;/p&gt;</description></item><item><title>Kate in KDE 4.8</title><link>https://kate-editor.org/2011/12/21/kate-in-kde-4-8/</link><pubDate>Tue, 20 Dec 2011 23:17:07 +0000</pubDate><guid>https://kate-editor.org/2011/12/21/kate-in-kde-4-8/</guid><description>
&lt;p&gt;About half a year ago, &lt;a href=&#34;https://kate-editor.org/2011/07/09/kate-in-kde-4-7/&#34; title=&#34;Kate in KDE 4.7&#34;&gt;Kate 3.7 was released&lt;/a&gt; as part of KDE 4.7. Now that &lt;a title=&#34;KDEE 4.8 Release Schedule&#34; href=&#34;http://techbase.kde.org/Schedules/KDE4/4.8_Release_Schedule&#34; target=&#34;_blank&#34;&gt;KDE 4.8 is about to be released&lt;/a&gt;, let&amp;#8217;s have a look at what Kate brings in KDE 4.8.&lt;/p&gt;
&lt;h4 id=&#34;bug-fixes&#34;&gt;Bug Fixes&lt;/h4&gt;
&lt;p&gt;According to KDE&amp;#8217;s bug tracker, &lt;a title=&#34;List of fixed issues in KDE 4.8&#34; href=&#34;https://bugs.kde.org/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;product=kate&amp;long_desc_type=substring&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;keywords_type=allwords&amp;keywords=&amp;bug_status=RESOLVED&amp;resolution=FIXED&amp;resolution=WORKSFORME&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;chfieldfrom=2011-08-01&amp;chfieldto=2011-12-31&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&#34; target=&#34;_blank&#34;&gt;about 190 issues were solved&lt;/a&gt;. Taking a closer look, lots of small issues were fixed, amongst them:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;improved printing support (&lt;a title=&#34;Print Regions&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=111086&#34; target=&#34;_blank&#34;&gt;report 1&lt;/a&gt;, &lt;a title=&#34;Box Color wrong&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=200248&#34; target=&#34;_blank&#34;&gt;report 2&lt;/a&gt;, &lt;a title=&#34;Printing: Kate no longer knows %P&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=246699&#34; target=&#34;_blank&#34;&gt;report 3&lt;/a&gt;, &lt;a title=&#34;Dynamically wrapped lines not printed correctly&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=202229&#34; target=&#34;_blank&#34;&gt;report 4&lt;/a&gt;, &lt;a title=&#34;Print Margins&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=56077&#34; target=&#34;_blank&#34;&gt;report 5&lt;/a&gt;, and more)&lt;/li&gt;
&lt;li&gt;syntax highlighting files added and updated&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Zoom with ctrl + mouse wheel&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=194922&#34; target=&#34;_blank&#34;&gt;zoom in/out with ctrl+mouse wheel&lt;/a&gt;, &lt;a title=&#34;Scroll over folding area&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=199464&#34; target=&#34;_blank&#34;&gt;scroll over folding area&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Wrong active view when resuming session with split view&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=195435&#34; target=&#34;_blank&#34;&gt;wrong active view when resuming session with split view&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Ambiguous shortcuts in File System Browser&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=236368&#34; target=&#34;_blank&#34;&gt;ambiguous shortcuts in file system browser resolved&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;improved GDB plugin&lt;/li&gt;
&lt;li&gt;we heavily &lt;a title=&#34;Cleanup of the Kate Bug Database&#34; href=&#34;https://bugs.kde.org/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;product=kate&amp;long_desc_type=substring&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;keywords_type=allwords&amp;keywords=&amp;bug_status=RESOLVED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;chfieldfrom=2011-08-01&amp;chfieldto=2011-12-31&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&#34; target=&#34;_blank&#34;&gt;cleaned up our bug database&lt;/a&gt; (bugs + wishes):&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img class=&#34;alignnone size-full wp-image-1654&#34; title=&#34;Kate Bug Charts&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/12/kate-bugs.png&#34; alt=&#34;&#34; width=&#34;800&#34; height=&#34;600&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/12/kate-bugs.png 800w, https://kate-editor.org/wp-content/uploads/2011/12/kate-bugs-300x225.png 300w&#34; sizes=&#34;(max-width: 800px) 100vw, 800px&#34; /&gt;&lt;/p&gt;
&lt;h4 id=&#34;heavily-reworked-code-folding&#34;&gt;Heavily Reworked Code Folding&lt;/h4&gt;
&lt;p&gt;As part of the Google Summer of Code (GSoC) 2011, the code folding code was improved. The main goal was to eliminate wrong folding behavior and fix all crashes while making the code more maintainable. We are quite happy with the results: Given the robust behavior, it now was possible to remember code folding state past sessions and during document reload. So folded regions are not lost anymore.&lt;/p&gt;
&lt;p&gt;Additionally, the visual appearance was changed to be rather decent.&lt;/p&gt;
&lt;h4 id=&#34;improved-vi-mode&#34;&gt;Improved Vi Mode&lt;/h4&gt;
&lt;p&gt;Also as part of the GSoC 2011, Kate&amp;#8217;s vi input mode was heavily improved.&lt;/p&gt;
&lt;h4 id=&#34;search-replace-in-files&#34;&gt;Search &amp;amp; Replace in Files&lt;/h4&gt;
&lt;p&gt;The &amp;#8220;Find in Files&amp;#8221; plugin is now replaced with the new &amp;#8220;Search and Replace&amp;#8221; plugin: It basically contains all the features of &amp;#8220;Find in Files,&amp;#8221; but additionally has the following features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;either search in files-on-disk, or in all the opened documents&lt;/li&gt;
&lt;li&gt;all search matches are highlighted&lt;/li&gt;
&lt;li&gt;replace support: matches can be (selectively) replaced with other text&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img class=&#34;size-full wp-image-1650 alignnone&#34; title=&#34;Search &amp; Replace in Files&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/12/search-replace.png&#34; alt=&#34;&#34; width=&#34;599&#34; height=&#34;294&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/12/search-replace.png 599w, https://kate-editor.org/wp-content/uploads/2011/12/search-replace-300x147.png 300w&#34; sizes=&#34;(max-width: 599px) 100vw, 599px&#34; /&gt;&lt;/p&gt;
&lt;h4 id=&#34;line-modification-indicators&#34;&gt;Line Modification Indicators&lt;/h4&gt;
&lt;p&gt;Kate has a shiny new line modification system. Read all about it in &lt;a href=&#34;https://kate-editor.org/2011/09/06/line-modification-system/&#34; title=&#34;Kate Line Modification System&#34;&gt;this dedicated article&lt;/a&gt;. Mandatory screenshot:&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;alignnone size-full wp-image-1652&#34; title=&#34;Kate Line Modification Indicatiors&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/12/line-modification-system.png&#34; alt=&#34;&#34; width=&#34;467&#34; height=&#34;168&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/12/line-modification-system.png 467w, https://kate-editor.org/wp-content/uploads/2011/12/line-modification-system-300x107.png 300w&#34; sizes=&#34;(max-width: 467px) 100vw, 467px&#34; /&gt;&lt;/p&gt;
&lt;h4 id=&#34;document-variable-modeline-editor&#34;&gt;Document Variable (Modeline) Editor&lt;/h4&gt;
&lt;p&gt;Kate (and thus all applications use Kate Part) can be configured by using document variables, also known as modelines. Since it&amp;#8217;s hard to remember all the available keys and values, a dialog helps out in the config dialog. You can read about all the details in &lt;a href=&#34;https://kate-editor.org/2011/07/23/kate-modeline-editor/&#34; title=&#34;Kate Modeline Editor&#34;&gt;this dedicated post&lt;/a&gt; (screenshots).&lt;/p&gt;
&lt;h4 id=&#34;documentation-updates&#34;&gt;Documentation Updates&lt;/h4&gt;
&lt;p&gt;T.C. Hollingworth put a huge amount of work into the Kate and KWrite handbook. Thus, the documentation is much more up-to-date and we hope it helps to learn using Kate effectively more quickly. The official version is available on &lt;a href=&#34;http://docs.kde.org/development/en/kde-baseapps/kate/index.html&#34; title=&#34;The Kate Handbook&#34;&gt;docs.kde.org&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;current-state-the-road-ahead&#34;&gt;Current State &amp;amp; The Road Ahead&lt;/h2&gt;
&lt;p&gt;Apart from the upcoming KDE 4.8 release, &lt;a href=&#34;https://kate-editor.org/2011/08/11/kate-turning-10-years-old/&#34; title=&#34;Kate turned 10&#34;&gt;Kate turned 10 years old&lt;/a&gt; this summer. All in all, we can proudly say that Kate has a solid code base in its current state. The smart ranges were replaced by the moving ranges. Code folding is more clean with less bugs. Our plugins got a lot of updates. The documentation has improved. Of course, more help is always welcome. So if you are interested in Kate development, you are welcome to &lt;a href=&#34;https://kate-editor.org/get-it/&#34; title=&#34;Building Kate&#34;&gt;build Kate from sources&lt;/a&gt; and &lt;a href=&#34;https://kate-editor.org/join-us/&#34; title=&#34;Join Kate Development&#34;&gt;join our team&lt;/a&gt; by sending patches.&lt;/p&gt;
&lt;p&gt;Thanks to everyone contributing to this great release :)&lt;/p&gt;</description></item><item><title>Evolution of Kate Development (Take 2)</title><link>https://kate-editor.org/2011/11/06/evolution-of-kate-development-take-2/</link><pubDate>Sun, 06 Nov 2011 14:31:15 +0000</pubDate><guid>https://kate-editor.org/2011/11/06/evolution-of-kate-development-take-2/</guid><description>&lt;p&gt;Dominik&amp;#8217;s video is cool, but we agreed that perhaps the names should be around and we can have a bit higher resolution to make them readable ;)&lt;br /&gt;
Therefore here is a second take of the video, this time with names and 720p. (I have no luck with music, therefore, silence)&lt;/p&gt;
&lt;p&gt;&lt;center&gt;
&lt;br /&gt; &lt;br /&gt;
&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;You only get to see the video if you visit our blog page &lt;a href=&#34;https://kate-editor.org/2011/11/06/evolution-of-kate-development-take-2/&#34;&gt;here&lt;/a&gt;.&lt;br /&gt;
Direct HD link to YouTube &lt;a href=&#34;http://youtu.be/qK4DVZIptt0?hd=1&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Command to create it (if YouTube eats it):&lt;/p&gt;
&lt;pre&gt;gource --multi-sampling --seconds-per-day 0.02 --auto-skip-seconds 0.1 --camera-mode track --stop-at-end -b 000000 --hide filenames,dirnames --disable-progress --date-format “%Y-%m” --viewport 1280x720 --output-ppm-stream - -r 60 | ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i - -vcodec libvpx -b 10000K -threads 4 kate-gource.webm
&lt;/pre&gt;</description></item><item><title>Evolution of Kate Development</title><link>https://kate-editor.org/2011/11/03/evolution-of-kate-development/</link><pubDate>Thu, 03 Nov 2011 21:49:44 +0000</pubDate><guid>https://kate-editor.org/2011/11/03/evolution-of-kate-development/</guid><description>&lt;p&gt;Recently, the &lt;a href=&#34;https://kate-editor.org/2011/08/11/kate-turning-10-years-old/&#34; title=&#34;Kate turned 10&#34;&gt;Kate project celebrated its 10th anniversary&lt;/a&gt;. The gource visualization of 10 years Kate development (2001 to 2011) looks as follows. Have fun :-)&lt;/p&gt;
&lt;p&gt;PS: In case you do not see any video, &lt;a href=&#34;https://kate-editor.org/2011/11/03/evolution-of-kate-development/&#34; title=&#34;Evolution of Kate Development&#34;&gt;click here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;PPS:Launch gource on kdelibs, that&amp;#8217;s much more interesting!&lt;/p&gt;</description></item><item><title>qt-project.org online ;)</title><link>https://kate-editor.org/2011/10/21/qt-project-org-online/</link><pubDate>Fri, 21 Oct 2011 11:10:07 +0000</pubDate><guid>https://kate-editor.org/2011/10/21/qt-project-org-online/</guid><description>&lt;p&gt;Seems the Trolls made it, &lt;a href=&#34;http://qt-project.org/&#34;&gt;qt-project.org&lt;/a&gt; is online ;) Grats.&lt;/p&gt;</description></item><item><title>Plasma Active</title><link>https://kate-editor.org/2011/10/15/plasma-active/</link><pubDate>Sat, 15 Oct 2011 18:09:20 +0000</pubDate><guid>https://kate-editor.org/2011/10/15/plasma-active/</guid><description>
&lt;p&gt;At the desktop summit, many contributors got a ExoPC from Intel, but the software on it &lt;a href=&#34;https://kate-editor.org/2011/08/11/plasma-active-the-stage-is-yours/&#34; title=&#34;Pasma Active - The Stage is Yours&#34;&gt;was quite a disappointment&lt;/a&gt;. Meanwhile, there is &lt;a title=&#34;Plasma Active One Unleashed&#34; href=&#34;http://kde.org/announcements/plasma-active-one/&#34; target=&#34;_blank&#34;&gt;an official release&lt;/a&gt; of &lt;a title=&#34;Plasma Active&#34; href=&#34;http://plasma-active.org/&#34; target=&#34;_blank&#34;&gt;Plasma Active&lt;/a&gt; that fills the gap. So I sat down and installed it on the ExoPC. It really works quite nice and smooth. Applications like Amarok and a browser make it usable to hear music and do some quick internet surfing. I documented the steps in order to get everything up and running.&lt;/p&gt;
&lt;h4 id=&#34;running-plasma-active-one-from-the-usb-stick-live-version&#34;&gt;Running Plasma Active One from the USB Stick (LIVE version)&lt;/h4&gt;
&lt;p&gt;To get a quick impression, you can download the file &lt;a title=&#34;open-slx&#34; href=&#34;http://download.open-slx.com/iso/11.4/&#34; target=&#34;_blank&#34;&gt;plasma-active-one.iso from open-slx.com&lt;/a&gt;. Then, plug in a USB stick to your computer and run the comand&lt;/p&gt;
&lt;pre&gt;sudo dd if=plasma-active-one.iso of=/dev/&amp;lt;DEVICE&amp;gt; bs=1M&lt;/pre&gt;
&lt;p&gt;where &lt;DEVICE&gt; corresponds to the USB stick (in my case, this is sdc). When finished, plug the USB stick into the upper USB port of your ExoPC and press the power on button. Make sure to tap &amp;#8220;BBS&amp;#8221; immediately and choose the USB stick as boot device. After this, choose the first entry to start the live version of Plasma Active.&lt;/p&gt;
&lt;p&gt;Note: As of 2011-10-15, a installation with this live version is not possible (even though some documentation at some point or the splash screen suggest otherwise).&lt;/p&gt;
&lt;h4 id=&#34;installing-plasma-active-on-the-hard-disk&#34;&gt;Installing Plasma Active on the Hard Disk&lt;/h4&gt;
&lt;p&gt;In order to get Plasma Active on your hard disk, you first have to install openSUSE 11.4. To this end,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a title=&#34;Download openSUSE 11.4&#34; href=&#34;http://software.opensuse.org/114/en&#34; target=&#34;_blank&#34;&gt;download the 4.7 GB DVD image of openSUSE 11.4 (32 bit)&lt;/a&gt;, and copy it on the USB stick (in my case &lt;DEVICE&gt; = sdc):&lt;br /&gt;
sudo dd if=openSUSE-11.4-DVD-i586.iso of=/dev/&lt;DEVICE&gt; bs=1M&lt;/li&gt;
&lt;li&gt;plug the USB stick into the upper USB port of your ExoPC and press the power on button&lt;/li&gt;
&lt;li&gt;make sure to tap &amp;#8220;BBS&amp;#8221; immediately and choose the USB stick as boot device&lt;/li&gt;
&lt;li&gt;after this, choose &amp;#8220;Installation&amp;#8221; to start the install process (you need an external keyboard on the lower USB port)&lt;/li&gt;
&lt;li&gt;follow the installation routine, choose the KDE desktop, do the partition setup, create a new user account and finally start the installation&lt;/li&gt;
&lt;li&gt;copying files takes some time. After this, the system finally boots to proceed with the automatic configuration.&lt;/li&gt;
&lt;li&gt;Finally, the system arrives in KDE. (From now on, the USB stick is not needed anymore.)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The touch screen does not work out of the box. Hence, I restarted X from the console with /etc/init.d/xdm restart. After that, the external mouse and keyboard worked (ignore the fact that you might be greeted by 6 crashed akonadi windows).&lt;/p&gt;
&lt;p&gt;Once you have the internet up and running, proceed with &lt;a title=&#34;Installing Plasma Active&#34; href=&#34;http://community.kde.org/Plasma/Active/Installation#Installation_on_Balsam_Professional_or_openSUSE&#34; target=&#34;_blank&#34;&gt;1.5 Installation on Balsam Professional or openSUSE&lt;/a&gt;. This updates your kernel to properly support the touchpad and replaces the default Plasma Desktop with Plasma Active.&lt;/p&gt;
&lt;p&gt;Kudos to the Plasma Active team and all involved contributors and supporters!&lt;/p&gt;
&lt;p&gt;PS: Although a text editor is probably not of much use on a tablet PC, KWrite is available :-)&lt;/p&gt;</description></item><item><title>One great man less :(</title><link>https://kate-editor.org/2011/10/13/one-great-man-less/</link><pubDate>Thu, 13 Oct 2011 15:03:16 +0000</pubDate><guid>https://kate-editor.org/2011/10/13/one-great-man-less/</guid><description>&lt;p&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/Dennis_Ritchie&#34;&gt;Dennis MacAlistair Ritchie&lt;/a&gt; died at home this weekend.&lt;/p&gt;
&lt;figure id=&#34;attachment_1600&#34; aria-describedby=&#34;caption-attachment-1600&#34; style=&#34;width: 259px&#34; class=&#34;wp-caption aligncenter&#34;&gt;[&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2011/10/Dennis_MacAlistair_Ritchie_-259x300.jpg&#34; alt=&#34;&#34; title=&#34;Dennis MacAlistair Ritchie&#34; width=&#34;259&#34; height=&#34;300&#34; class=&#34;size-medium wp-image-1600&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/10/Dennis_MacAlistair_Ritchie_-259x300.jpg 259w, https://kate-editor.org/wp-content/uploads/2011/10/Dennis_MacAlistair_Ritchie_.jpg 426w&#34; sizes=&#34;(max-width: 259px) 100vw, 259px&#34; /&gt;][2]&lt;figcaption id=&#34;caption-attachment-1600&#34; class=&#34;wp-caption-text&#34;&gt;Dennis MacAlistair Ritchie&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;As the creator of the &lt;a href=&#34;http://en.wikipedia.org/wiki/C_(programming_language)&#34;&gt;C programming language&lt;/a&gt; and one of the main developers of &lt;a href=&#34;http://en.wikipedia.org/wiki/Unix&#34;&gt;Unix&lt;/a&gt;, he impacted the life of me and other developers a lot.&lt;/p&gt;
&lt;p&gt;Even today, 30 years after their initial creation, many people work on Unix like systems (like Linux or Mac OS) and develop in (Objective) C(++).&lt;/p&gt;
&lt;p&gt;For me C was one of my starting languages for my real programming work and even today I analyze the whole day software written in C for embedded systems that control our modern world, be it the flight control of airplanes or engine control of cars.&lt;/p&gt;
&lt;p&gt;Without his initial ideas and work, today there would be no Linux kernel, no Mac OS, &amp;#8230;&lt;/p&gt;
&lt;p&gt;We all owe him a lot. He changed the world.&lt;/p&gt;
&lt;p&gt;Thanks for your great inventions! You won&amp;#8217;t be forgotten.&lt;/p&gt;
&lt;p&gt;Just two impressive Ritchie cites:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;#8220;Unix is simple and coherent, but it takes a genius – or at any rate a programmer – to understand and appreciate the simplicity.&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;#8220;The greatest danger to good computer science research today may be excessive relevance. If we can keep alive enough openess to new ideas, enough freedom of communication, enough patience to allow the novel to prosper, it will remain possible for a future Ken Thompson to find a little-used Cray/1 computer and fashion a system as creative, and as influential, as Unix.&amp;#8221;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>About Kate Redesigned</title><link>https://kate-editor.org/2011/09/24/about-kate-redesigned/</link><pubDate>Sat, 24 Sep 2011 09:32:19 +0000</pubDate><guid>https://kate-editor.org/2011/09/24/about-kate-redesigned/</guid><description>&lt;p&gt;With some of my gimp skills, I updated Kate&amp;#8217;s feature list. &lt;a href=&#34;https://kate-editor.org/about-kate/&#34; title=&#34;About Kate / Kwrite&#34;&gt;Hope you like the face-lift :-)&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Qt open governance will go live!</title><link>https://kate-editor.org/2011/09/12/qt-open-governance-will-go-live/</link><pubDate>Mon, 12 Sep 2011 18:15:59 +0000</pubDate><guid>https://kate-editor.org/2011/09/12/qt-open-governance-will-go-live/</guid><description>&lt;p&gt;Finally some sustainable announcements about the future of Qt and its open governance project:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://labs.qt.nokia.com/2011/09/12/qt-project/&#34;&gt;http://labs.qt.nokia.com/2011/09/12/qt-project/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://blog.qt.nokia.com/2011/09/12/qt-project/&#34;&gt;http://blog.qt.nokia.com/2011/09/12/qt-project/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I hope this will be well received and we will see yet another increase in contributions to our Qt/KDE ecosystem ;)&lt;/p&gt;
&lt;p&gt;Thanks for all the effort to all people who made this possible!&lt;/p&gt;</description></item><item><title>Code Folding Updates</title><link>https://kate-editor.org/2011/09/11/code-folding-updates-continued/</link><pubDate>Sun, 11 Sep 2011 17:23:17 +0000</pubDate><guid>https://kate-editor.org/2011/09/11/code-folding-updates-continued/</guid><description>&lt;p style=&#34;text-align: left;&#34;&gt;
Christoph and me cleaned up the visualization of the code folding for KDE 4.8 a bit. In the snapshot, the left image shows the old behavior, and the right one shows the new behavior. The background highlighting appears as soon as you hover over the code folding bar. We hope you like it :) Mockups of how to make it even better are welcome, of course! You can &lt;a title=&#34;Building Kate&#34; href=&#34;https://kate-editor.org/get-it/&#34;&gt;try it by building Kate yourself&lt;/a&gt;, if you want.&lt;br /&gt; &lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/09/folding-updates.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-1458&#34; title=&#34;Code Folding Updates&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/09/folding-updates.png&#34; alt=&#34;Kate Code folding&#34; width=&#34;952&#34; height=&#34;595&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/09/folding-updates.png 952w, https://kate-editor.org/wp-content/uploads/2011/09/folding-updates-300x187.png 300w&#34; sizes=&#34;(max-width: 952px) 100vw, 952px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Line Modification System</title><link>https://kate-editor.org/2011/09/06/line-modification-system/</link><pubDate>Tue, 06 Sep 2011 18:31:54 +0000</pubDate><guid>https://kate-editor.org/2011/09/06/line-modification-system/</guid><description>&lt;p&gt;Some days ago, Dominik implemented a line modification system in the KatePart.&lt;br /&gt;
For all who don&amp;#8217;t know what that means at all (like me before the DS 2011), here some screenshots.&lt;/p&gt;
&lt;p&gt;First, starting with a fresh loaded file:&lt;br /&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/09/no_edit-e1315333531831.png&#34;&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2011/09/no_edit-e1315333531831.png&#34; alt=&#34;&#34; title=&#34;Fresh unedited file&#34; width=&#34;560&#34; height=&#34;128&#34; class=&#34;aligncenter size-full wp-image-1433&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/09/no_edit-e1315333531831.png 560w, https://kate-editor.org/wp-content/uploads/2011/09/no_edit-e1315333531831-300x68.png 300w&#34; sizes=&#34;(max-width: 560px) 100vw, 560px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now, lets write some lines:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/09/text_edited-e1315333516826.png&#34;&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2011/09/text_edited-e1315333516826.png&#34; alt=&#34;&#34; title=&#34;Some text written&#34; width=&#34;560&#34; height=&#34;146&#34; class=&#34;aligncenter size-full wp-image-1434&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/09/text_edited-e1315333516826.png 560w, https://kate-editor.org/wp-content/uploads/2011/09/text_edited-e1315333516826-300x78.png 300w&#34; sizes=&#34;(max-width: 560px) 100vw, 560px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Next, after saving:&lt;br /&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/09/text_edited_and_saved-e1315333486897.png&#34;&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2011/09/text_edited_and_saved-e1315333486897.png&#34; alt=&#34;&#34; title=&#34;Text edited and then saved&#34; width=&#34;559&#34; height=&#34;141&#34; class=&#34;aligncenter size-full wp-image-1435&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/09/text_edited_and_saved-e1315333486897.png 559w, https://kate-editor.org/wp-content/uploads/2011/09/text_edited_and_saved-e1315333486897-300x75.png 300w&#34; sizes=&#34;(max-width: 559px) 100vw, 559px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now, lets change some stuff again:&lt;br /&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/09/text_edited_again-e1315333464920.png&#34;&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2011/09/text_edited_again-e1315333464920.png&#34; alt=&#34;&#34; title=&#34;Again text edited after save&#34; width=&#34;560&#34; height=&#34;152&#34; class=&#34;aligncenter size-full wp-image-1436&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/09/text_edited_again-e1315333464920.png 560w, https://kate-editor.org/wp-content/uploads/2011/09/text_edited_again-e1315333464920-300x81.png 300w&#34; sizes=&#34;(max-width: 560px) 100vw, 560px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Awesome :)&lt;/p&gt;
&lt;p&gt;First I thought: Why to hell do I need such a feature? But after using it some days now, I think it is really VERY useful.&lt;/p&gt;
&lt;p&gt;Yesterday I worked in parallel on code that generates integer linear programs as CPLEX files and read the output files (which are &amp;gt; 100000 lines) to find regressions.&lt;br /&gt;
I had to manually tweak the ILP files a bit to reveal the reason of my issues and it was just cool to exactly know even after save, which lines in the ILP I touched.&lt;br /&gt;
Normally I would have written some comments like \changed&amp;#8230; above my modified lines in the output files, but yeah, KatePart does track such stuff now automatically ;)&lt;/p&gt;
&lt;p&gt;Even for the much less big source files, it was nice to see:&lt;br /&gt;
Oh, I just tweaked that few C++ lines and it did remove the issue, maybe I should look at the lines below/above of that lines, too, for more possible problems?&lt;/p&gt;
&lt;p&gt;Therefor: Thanks to Dominik for this nifty feature, I hope others appreciate it, too!&lt;/p&gt;
&lt;p&gt;If you want this feature now: Use the guide at kate-editor.org&amp;#8217;s &lt;a href=&#34;https://kate-editor.org/get-it/&#34;&gt;Get It!&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Coding Style and API Design</title><link>https://kate-editor.org/2011/08/28/coding-style-and-api-design/</link><pubDate>Sun, 28 Aug 2011 19:06:45 +0000</pubDate><guid>https://kate-editor.org/2011/08/28/coding-style-and-api-design/</guid><description>&lt;p&gt;Once in a while, there are really interesting blogs, presentations and reports about how to do things right as software developer. This is a quick list of links about API design and coding style:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a title=&#34;Designing Qt-Style C++ APIs&#34; href=&#34;http://doc.qt.nokia.com/qq/qq13-apis.html&#34; target=&#34;_blank&#34;&gt;Designing Qt-Style C++ APIs (Qt4)&lt;/a&gt;, by Matthias Ettrich, 2005&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;API Design Principles&#34; href=&#34;http://developer.qt.nokia.com/wiki/API_Design_Principles&#34; target=&#34;_blank&#34;&gt;API Design Principles&lt;/a&gt;, extended version of (1), Qt Developer Network (Nokia)&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;The Little Manual of API Design&#34; href=&#34;http://chaos.troll.no/~shausman/api-design/api-design.pdf&#34; target=&#34;_blank&#34;&gt;The Little Manual of API Design&lt;/a&gt;, an in-depth summary of (1) and (2), Jasmin Blanchette, 2008 (Nokia)&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Developing Quality Libraries&#34; href=&#34;http://people.canonical.com/~jriddell/gcds-presentations-2009/Developing%20Quality%20Libraries%20Olivier%20Goffart.pdf&#34; target=&#34;_blank&#34;&gt;Developing Quality Libraries&lt;/a&gt;, presentation of (1)-(3) on the Desktop Summit in Gran Canaria, Oliver Goffart, 2009&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;How to Design a Good API and Why it Matters&#34; href=&#34;http://www.youtube.com/watch?v=aAb7hSCtvGw&#34; target=&#34;_blank&#34;&gt;How to Design a Good API and Why It Matters&lt;/a&gt;, Joshua Bloch, 2007 (Google)&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Qt Coding Style&#34; href=&#34;http://developer.qt.nokia.com/wiki/Qt_Coding_Style&#34; target=&#34;_blank&#34;&gt;Qt Coding Style&lt;/a&gt;, good coding style not limited to Qt, Qt Developer Network (Nokia)&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Guidelines for KDE Development&#34; href=&#34;http://techbase.kde.org/Policies&#34; target=&#34;_blank&#34;&gt;Guidelines for KDE Development&lt;/a&gt;, similar to e.g. (6), KDE Techbase&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Hall of API Shame: Boolean Trap&#34; href=&#34;http://ariya.ofilabs.com/2011/08/hall-of-api-shame-boolean-trap.html&#34; target=&#34;_blank&#34;&gt;Hall of API Shame: Boolean Trap&lt;/a&gt;, Ariya Hidayat, 2011&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Thanks to all the authors for sharing &amp;amp; happy reading!&lt;/p&gt;</description></item><item><title>GSoC’s ending</title><link>https://kate-editor.org/2011/08/18/gsocs-ending/</link><pubDate>Thu, 18 Aug 2011 11:42:35 +0000</pubDate><guid>https://kate-editor.org/2011/08/18/gsocs-ending/</guid><description>&lt;p&gt;Soon the GSoC projects of this year are over again.&lt;/p&gt;
&lt;p&gt;I would like to thank our two students Adrian Lungu and Svyatoslav Kuzmich for their work!&lt;/p&gt;
&lt;p&gt;They both did a nice job and improved both the &lt;a href=&#34;https://kate-editor.org/2011/08/15/the-gsoc-season-is-ending%E2%80%A6/&#34;&gt;code folding&lt;/a&gt; and the &lt;a href=&#34;https://kate-editor.org/2011/08/07/vitest/&#34;&gt;vi mode&lt;/a&gt; a lot.&lt;/p&gt;
&lt;p&gt;Thanks to them and I hope they stick around in our project, more help is always welcome ;)&lt;/p&gt;
&lt;p&gt;And thanks to Google for sponsoring their efforts.&lt;/p&gt;</description></item><item><title>Kate Banner Wanted</title><link>https://kate-editor.org/2011/08/17/kate-banner-wanted/</link><pubDate>Wed, 17 Aug 2011 16:39:59 +0000</pubDate><guid>https://kate-editor.org/2011/08/17/kate-banner-wanted/</guid><description>&lt;p&gt;As part of Christophs idea to &lt;a href=&#34;https://kate-editor.org/2011/08/15/kate-needs-a-face-artists-wanted/&#34; title=&#34;Kate&#39;s new Face?&#34;&gt;give Kate a new face&lt;/a&gt;, it would be nice also to have a Kate banner, that every Kate fan can use to show in the Web. Something like the following, but any ideas are welcome!&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/&#34; title=&#34;Kate - KDE&#39;s Advanced Text Editor&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-1371&#34; title=&#34;Kate Banner&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/08/kate-banner.png&#34; alt=&#34;&#34; width=&#34;304&#34; height=&#34;92&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/08/kate-banner.png 304w, https://kate-editor.org/wp-content/uploads/2011/08/kate-banner-300x90.png 300w&#34; sizes=&#34;(max-width: 304px) 100vw, 304px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>kate-editor.org Updates</title><link>https://kate-editor.org/2011/08/16/kate-editor-org-updates/</link><pubDate>Tue, 16 Aug 2011 18:44:22 +0000</pubDate><guid>https://kate-editor.org/2011/08/16/kate-editor-org-updates/</guid><description>&lt;p&gt;After adding the &lt;a href=&#34;https://kate-editor.org/2011/08/15/good-morning-kate-new-day-new-design/&#34;&gt;new design&lt;/a&gt; to the Kate homepage, I got some feedback about broken fonts and other stuff. Most should be fixed now, e.g. the &lt;a href=&#34;https://kate-editor.org/the-team/&#34;&gt;&amp;#8220;The Team&amp;#8221;&lt;/a&gt; page now looks kind of okay again.&lt;/p&gt;
&lt;p&gt;In addition, we now have some nice feed display with the latest commits and overall a bit cleanup page. For mobile devices, like my Android phone, we now have &lt;a href=&#34;http://wordpress.org/extend/plugins/wptouch/&#34;&gt;WPtouch&lt;/a&gt; installed, which provides some rather nice layout for small screens (but allows easy switch back to normal layout, too).&lt;/p&gt;
&lt;p&gt;If you have any additional comments, what could be changed, just write me a comment or a &lt;a href=&#34;mailto:cullmann@kde.org&#34;&gt;mail&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>The (GSoC) season is ending…</title><link>https://kate-editor.org/2011/08/15/the-gsoc-season-is-ending/</link><pubDate>Mon, 15 Aug 2011 15:54:56 +0000</pubDate><guid>https://kate-editor.org/2011/08/15/the-gsoc-season-is-ending/</guid><description>&lt;p&gt;Hi everyone!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;br /&gt;
So… this GSoC season came to its end. This week is the official deadline for the projects and, happily, my project is done, but my collaboration with Kate is just starting, so I’ll see you around :)&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
As I mentioned in the previous post, I used this last week for some fine tuning and to close the bugs that slipped the previous scan. The folding-related bugs remained on &lt;a href=&#34;https://bugs.kde.org/&#34;&gt;bug.kde.org&lt;/a&gt; are highlight related too, so I can’t do much about them. The folding submenu was changed, so we can add more features into the feature. You can find the old and the new folding’s submenus in this article. You can see that the new folding has new features and it’s more flexible. Now you can fold/unfold a specific level entirely, or you can fold/unfold the node that contains the cursor. I have one regret regarding these new features: we couldn’t find some key-shortcuts for them :(&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/08/snapshot1.png&#34;&gt;&lt;img class=&#34;aligncenter size-large wp-image-1295&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/08/snapshot1-1024x638.png&#34; alt=&#34;&#34; width=&#34;770&#34; height=&#34;479&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/08/snapshot1-1024x638.png 1024w, https://kate-editor.org/wp-content/uploads/2011/08/snapshot1-300x187.png 300w, https://kate-editor.org/wp-content/uploads/2011/08/snapshot1.png 1049w&#34; sizes=&#34;(max-width: 770px) 100vw, 770px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;br /&gt;
The last feature added is: collapse all multi-line comments. This was a wish from bugs.kde.org. I couldn’t solve it entirely (to collapse all comments at once) because, as you might know from my previous articles, Kate’s folding is based on Kate’s highlight; it doesn’t have its own parser. There is no highlight for single-line comments, so we can’t fold them. But I hope this will help too (it might prove very useful in large XML files for example).&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
Another cool (new feature) is remembering the folded lines. I don’t remember having talked about it so far. :)&lt;br /&gt;
What does that mean? Well, if you work hard to fold a lot of lines and you accidentally close your file, you don’t have to take it over again. All the folded nodes remain folded when you close/open a file or when you reload it. Pretty nice, don’t you think ? ;)&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
The new folding will probably be included in version 4.8. For now, you can use it if you &lt;a href=&#34;https://kate-editor.org/get-it/&#34;&gt;download Kate’s sources and compile them&lt;/a&gt;.&lt;br /&gt;
Finally, I would like to thank you guys for supporting me and my project and if you didn’t use Kate’s new code folding, then get the last sources, compile them and let the magic begin! :P&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
Greetings,&lt;br /&gt;
Adrian&lt;/p&gt;</description></item><item><title>Kate needs a Face, Artists wanted</title><link>https://kate-editor.org/2011/08/15/kate-needs-a-face-artists-wanted/</link><pubDate>Mon, 15 Aug 2011 15:29:16 +0000</pubDate><guid>https://kate-editor.org/2011/08/15/kate-needs-a-face-artists-wanted/</guid><description>&lt;p&gt;Kate&amp;#8217;s icon is quiet nice, but for our website and other stuff, it would be really cool to have some eye catcher and something to know: yeah, that is Kate :)&lt;/p&gt;
&lt;p&gt;As Kate is obviously a woman, at least in most languages, it would be quiet nice if some artist could come up with a painted or rendered one to put on our page.&lt;/p&gt;
&lt;p&gt;Perhaps something &lt;a href=&#34;http://www.sintel.org/&#34;&gt;Sintel&lt;/a&gt; like, at least she played with dragons (hope poor Konqui got not killed, too) and I guess a mascot like here won&amp;#8217;t scare of either men or women.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/08/sintel-paintover-wip05.jpeg&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-1283&#34; title=&#34;Sintel, Copyright Blender Foundation, CC Attribution 3.0&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/08/sintel-paintover-wip05.jpeg&#34; alt=&#34;&#34; width=&#34;600&#34; height=&#34;841&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/08/sintel-paintover-wip05.jpeg 600w, https://kate-editor.org/wp-content/uploads/2011/08/sintel-paintover-wip05-214x300.jpg 214w&#34; sizes=&#34;(max-width: 600px) 100vw, 600px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And no, we don&amp;#8217;t want here any men&amp;#8217;s dream images or sexist stuff like that, just something that looks cute. If you want to help with this, just drop a mail to either &lt;a href=&#34;mailto:cullmann@kde.org&#34;&gt;me&lt;/a&gt; or the &lt;a href=&#34;mailto:kwrite-devel@kde.org&#34;&gt;kwrite-devel list&lt;/a&gt;. Be aware, it must be original work and it should be licensed under something like the CC license.&lt;/p&gt;
&lt;p&gt;If nothing arrives for us, perhaps I really need to bug the Blender foundation to use their stuff for the website. Better eye catcher than my normally used insect of the day ;)&lt;/p&gt;</description></item><item><title>Kate in Berlin</title><link>https://kate-editor.org/2011/08/15/kate-in-berlin/</link><pubDate>Mon, 15 Aug 2011 08:46:56 +0000</pubDate><guid>https://kate-editor.org/2011/08/15/kate-in-berlin/</guid><description>&lt;p&gt;Just as proof that we really were at the desktop summit in Berlin: We Kate developers sat one evening together for dinner. From left to right: Kate&amp;#8217;s plugin master, the &lt;a href=&#34;https://kate-editor.org/2010/07/16/the-holy-church-of-kate/&#34;&gt;Holy&lt;/a&gt; &lt;a href=&#34;https://kate-editor.org/2009/09/18/news-from-the-holy-kate-land/&#34;&gt;Belliness&lt;/a&gt;, KDevelop, Gnome, Kate Finder, Kate Vi Mode, Kate Snippets (and myself not visible, taking the photo) :-)&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
&lt;img class=&#34;aligncenter size-full wp-image-1257&#34; title=&#34;Kate Developers Dinner&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/08/P1050036.jpg&#34; alt=&#34;&#34; width=&#34;800&#34; height=&#34;600&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/08/P1050036.jpg 800w, https://kate-editor.org/wp-content/uploads/2011/08/P1050036-300x225.jpg 300w&#34; sizes=&#34;(max-width: 800px) 100vw, 800px&#34; /&gt;
&lt;/p&gt;</description></item><item><title>Good Morning Kate – New Day, New Design</title><link>https://kate-editor.org/2011/08/15/good-morning-kate-new-day-new-design/</link><pubDate>Mon, 15 Aug 2011 01:47:12 +0000</pubDate><guid>https://kate-editor.org/2011/08/15/good-morning-kate-new-day-new-design/</guid><description>&lt;p&gt;Kate has since more than one year a new WordPress powered site. During last years Akademy, Dominik and I installed it and filled it with first life.&lt;/p&gt;
&lt;p&gt;It replaced the old Drupal powered site, that Anders did set up years ago. Thanks again to Anders here, for the work he did on the old page. But since the day Anders didn&amp;#8217;t have that much time any more for Kate development, it somehow lost its drive (as Dominik an I are not at all capable to work with Drupal, whereas Anders really was an well practiced Drupal admininstrator). The current WordPress site is much more usable for us, as we know WordPress much better than Drupal. The initial import of the content of the old Drupal page was kind of painful, but most stuff was moved over even during Akademy, just some outdated howtos and faqs got purged.&lt;/p&gt;
&lt;p&gt;Since over an year, the current page is a vibrant source of news around Kate and KDE in general. It helped to promote Kate and for example provided our GSoC students with a central place to post about their projects.&lt;/p&gt;
&lt;p&gt;Today I was kind of bored, after being back from the Desktop Summit in Berlin, therefore I have taken a look at the design of our page (and I searched for nice eyecatcher, here a &lt;a href=&#34;http://de.wikipedia.org/wiki/Monarchfalter&#34;&gt;Monarch&lt;/a&gt;, link to german Wikipedia, as there the image was found).&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/08/BBGMonarchButterflyWings.jpg&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-1243&#34; title=&#34;Monarch Butterfly (from Wikipedia)&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/08/BBGMonarchButterflyWings.jpg&#34; alt=&#34;&#34; width=&#34;500&#34; height=&#34;375&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/08/BBGMonarchButterflyWings.jpg 500w, https://kate-editor.org/wp-content/uploads/2011/08/BBGMonarchButterflyWings-300x225.jpg 300w&#34; sizes=&#34;(max-width: 500px) 100vw, 500px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;As we started the page, I experimented some days with WordPress themes and finally ended using Carrington Blog. Whereas it did not really have a suitable layout for our page, its look and feel was nice and 5 lines code later, it had a for us usable one column layout.&lt;/p&gt;
&lt;p&gt;Today I revisited the design and somehow thought why not refresh the page. After wading for several hours through &amp;#8220;free&amp;#8221; themes of any kind, I arrived at &lt;a href=&#34;http://presswork.me/&#34;&gt;PressWork&lt;/a&gt;. Its very plain design just caught my eye. And even better, it has some nice HTML5 based interactive editor to fiddle around with stuff like sidebar placement, sizes, fonts, colors, &amp;#8230; Nice! After a bit over a hour playing around with it, I got a kind of nifty new and fresh design going. Event without any pictures, it really is kind of elegant ;) (At least for my taste).&lt;/p&gt;
&lt;p&gt;Therefore, all that wake up soon, here it is, &lt;a href=&#34;https://kate-editor.org/&#34;&gt;kate-editor.org&lt;/a&gt; in a new fresh design. It is not really finished, will play a bit with colors/widgets/sizes/&amp;#8230; around in the next days. But overall, I think it will stay that way. Lets hope for a next successful year for both my poor small editor (component) and its website!&lt;/p&gt;
&lt;p&gt;Together with the new design, I added buttons to allow easy sharing of posts with social media of any kind (thanks to Dominik for the idea). Lets see if that keeps even more readers rolling in here. Spread the work. We both want a lot more users and a lot more contributors (and yes, I count documentation writers, usability guys and others in, not only developers).&lt;/p&gt;
&lt;p&gt;Thanks to all contributors, keep rocking!&lt;/p&gt;
&lt;p&gt;Now: good night, or better, good morning!&lt;/p&gt;</description></item><item><title>200 Bugs only ;)</title><link>https://kate-editor.org/2011/08/14/200-bugs-only/</link><pubDate>Sun, 14 Aug 2011 12:34:35 +0000</pubDate><guid>https://kate-editor.org/2011/08/14/200-bugs-only/</guid><description>&lt;p&gt;Kate (App + Part + KWrite) is down to 200 bugs, thanks a lot to all people helping with this effort, e.g. Dominik, Erlend, Adrian, &amp;#8230;&lt;/p&gt;
&lt;p&gt;Perhaps others want to join, we have still a lot bugs and many are quiet some work (and stuff like BiDi errors are not that nice to fix, if you have actually no clue about the used languages :/)&lt;/p&gt;</description></item><item><title>Added “gq” (format text) command for the Vi Input Mode</title><link>https://kate-editor.org/2011/08/12/added-gq-format-text-command-for-the-vi-input-mode/</link><pubDate>Fri, 12 Aug 2011 13:14:31 +0000</pubDate><guid>https://kate-editor.org/2011/08/12/added-gq-format-text-command-for-the-vi-input-mode/</guid><description>&lt;p&gt;It&amp;#8217;s been a nice week here in Berlin at the Desktop summit. I have even got some coding done. A command I often missed from Vim was the &lt;strong&gt;gq&lt;/strong&gt; command that re-formats text based on your text width setting. For example, if you want to stick to a sixty-columns layout, you often have to re-format the text when adding or removing something, like in this screenshot where some text has been surrounded by HTML tags:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/08/before_wrap.png&#34;&gt;&lt;img class=&#34;aligncenter size-medium wp-image-1201&#34; title=&#34;before_wrap&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/08/before_wrap-300x142.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;142&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/08/before_wrap-300x142.png 300w, https://kate-editor.org/wp-content/uploads/2011/08/before_wrap-1024x485.png 1024w, https://kate-editor.org/wp-content/uploads/2011/08/before_wrap.png 1151w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;By using the &lt;strong&gt;gq&lt;/strong&gt; command, the text will be re-formatted and looks nice again:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/08/after_wrap.png&#34;&gt;&lt;img class=&#34;aligncenter size-medium wp-image-1202&#34; title=&#34;after_wrap&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/08/after_wrap-300x180.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;180&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/08/after_wrap-300x180.png 300w, https://kate-editor.org/wp-content/uploads/2011/08/after_wrap.png 1019w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have &lt;a href=&#34;http://commits.kde.org/kate/7cd0b5d3747c7bdaf2e5f2a08ec562dc9d97c6ad&#34;&gt;implemented this command&lt;/a&gt; now, so this will be in Kate for KDE 4.8. I hope other users of the Vi Input Mode find it useful too. :-)&lt;/p&gt;</description></item><item><title>Bug Fight!</title><link>https://kate-editor.org/2011/08/12/bug-fight/</link><pubDate>Fri, 12 Aug 2011 11:47:42 +0000</pubDate><guid>https://kate-editor.org/2011/08/12/bug-fight/</guid><description>&lt;p&gt;Lets fight the bugs (or here bugs fighting each other, from &lt;a href=&#34;http://de.wikipedia.org/wiki/Hirschk%C3%A4fer&#34;&gt;de.wikipedia&lt;/a&gt;).&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/08/bugsfight.jpg&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-1188&#34; title=&#34;Fighting Male Bugs&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/08/bugsfight.jpg&#34; alt=&#34;&#34; width=&#34;546&#34; height=&#34;376&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/08/bugsfight.jpg 546w, https://kate-editor.org/wp-content/uploads/2011/08/bugsfight-300x206.jpg 300w&#34; sizes=&#34;(max-width: 546px) 100vw, 546px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Dominik and I did a nice bug squashing here at &lt;a href=&#34;https://desktopsummit.org/&#34;&gt;Berlin Desktop Summit 2011&lt;/a&gt;. We already met some weeks ago to hunt down bugs in Kate at Saarbrücken, but this additional time really helped a lot. The progress of the last 365 days look quiet promising.&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/08/katebugs.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-1179&#34; title=&#34;Changes in Kate Bugs - 365 Days&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/08/katebugs.png&#34; alt=&#34;&#34; width=&#34;663&#34; height=&#34;115&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/08/katebugs.png 663w, https://kate-editor.org/wp-content/uploads/2011/08/katebugs-300x52.png 300w&#34; sizes=&#34;(max-width: 663px) 100vw, 663px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We actually really fixed quiet a lot of them and sorted out no longer valid ones. In addition a lot of wish list items got either done or invalidated. We just can&amp;#8217;t keep wishlist items for any missing feature we have, e.g. for any missing highlighting. It is not manageable. We won&amp;#8217;t close any wishs for valid extensions, but stuff like: i would like a hl xml file for XYZ or I would like a js indenter for XYZ must go away. Either submit a own .xml or .js file for the job or we won&amp;#8217;t get it anyway.&lt;/p&gt;
&lt;p&gt;Here a BIG THANKS to all people that actually submitted for example new highlighting files in their wish list items or who pointed to places to get open source highlighting files to add!&lt;/p&gt;
&lt;p&gt;It would be really nice to get some help with the bugs/wishs.&lt;br /&gt;
A lot are just very small things to do, but nobody in the Kate team has really a lot time for it.&lt;br /&gt;
Others just take a lot of time to debug and fix, which is not available, either :(&lt;/p&gt;
&lt;p&gt;To write a highlighting, we have a real well tutorial &lt;a href=&#34;https://kate-editor.org/2005/03/24/writing-a-syntax-highlighting-file/&#34;&gt;here&lt;/a&gt;.&lt;br /&gt;
The same holds for indentation javascripts, look &lt;a href=&#34;https://kate-editor.org/2009/10/29/extending-kate-with-scripts/&#34;&gt;here&lt;/a&gt;.&lt;br /&gt;
If the tutorial lack anything, we are really happy about any update for them!&lt;/p&gt;
&lt;p&gt;If you like Kate and use it and have any clue about developing with C++ (and a bit knowledge about Qt/KDE), please step up and help us to fix the remaining issues. Any help is welcome and on any recent distribution you can build Kate in no time with &lt;a href=&#34;https://kate-editor.org/get-it/&#34;&gt;this&lt;/a&gt; tutorial. You need no bleeding edge KDE, 4.&lt;sup&gt;5&lt;/sup&gt;&amp;frasl;&lt;sub&gt;6&lt;/sub&gt; should be ok, for sure 4.7 will work, too!&lt;/p&gt;
&lt;p&gt;Please all interested people, head over to &lt;a href=&#34;http://bugs.kde.org/buglist.cgi?product=kate&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&#34;&gt;Kate&amp;#8217;s bugs&lt;/a&gt; and &lt;a href=&#34;http://bugs.kde.org/buglist.cgi?product=kate&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=wishlist&#34;&gt;Kate&amp;#8217;s wishs&lt;/a&gt; and help to get rid of them!&lt;/p&gt;
&lt;p&gt;But please have a hearth for the real bugs, like the above shown &lt;a href=&#34;http://en.wikipedia.org/wiki/Lucanus_cervus&#34;&gt;Lucanus cervus&lt;/a&gt;, they are quiet rare, at least here in Germany!&lt;/p&gt;</description></item><item><title>Kate Turning 10 Years Old</title><link>https://kate-editor.org/2011/08/11/kate-turning-10-years-old/</link><pubDate>Thu, 11 Aug 2011 14:59:39 +0000</pubDate><guid>https://kate-editor.org/2011/08/11/kate-turning-10-years-old/</guid><description>&lt;p style=&#34;text-align: left;&#34;&gt;
We almost missed it, but 10 years ago Kate was included in KDE&amp;#8217;s CVS repository and shipped &lt;a title=&#34;KDE 2.2 Announcement&#34; href=&#34;http://www.kde.org/announcements/changelogs/changelog2_1to2_2.php&#34; target=&#34;_blank&#34;&gt;the first time with KDE 2.2&lt;/a&gt;. Details about the history &lt;a title=&#34;Kate History&#34; href=&#34;https://kate-editor.org/2010/08/15/kate-history/&#34;&gt;can be found here&lt;/a&gt;. So Happy Birthday Kate! And Kate in KDE 2.2 looked like this:
&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/08/kate-in-kde2.2.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-1165&#34; title=&#34;Kate in KDE 2.2&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/08/kate-in-kde2.2.png&#34; alt=&#34;&#34; width=&#34;644&#34; height=&#34;482&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/08/kate-in-kde2.2.png 1074w, https://kate-editor.org/wp-content/uploads/2011/08/kate-in-kde2.2-300x224.png 300w, https://kate-editor.org/wp-content/uploads/2011/08/kate-in-kde2.2-1024x766.png 1024w&#34; sizes=&#34;(max-width: 644px) 100vw, 644px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&#34;text-align: left;&#34;&gt;
In comparison, Kate nowadays looks like this (KDE 4.7):
&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/08/kate-in-kde4.7.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-1168&#34; title=&#34;Kate in KDE 4.7&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/08/kate-in-kde4.7.png&#34; alt=&#34;&#34; width=&#34;608&#34; height=&#34;410&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/08/kate-in-kde4.7.png 950w, https://kate-editor.org/wp-content/uploads/2011/08/kate-in-kde4.7-300x202.png 300w&#34; sizes=&#34;(max-width: 608px) 100vw, 608px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;p style=&#34;text-align: center;&#34;&gt;&lt;/p&gt;</description></item><item><title>Plasma Active, the stage is yours</title><link>https://kate-editor.org/2011/08/11/plasma-active-the-stage-is-yours/</link><pubDate>Thu, 11 Aug 2011 09:29:27 +0000</pubDate><guid>https://kate-editor.org/2011/08/11/plasma-active-the-stage-is-yours/</guid><description>&lt;p&gt;Thanks a lot to Intel for passing around the &lt;a href=&#34;http://en.wikipedia.org/wiki/ExoPC&#34;&gt;ExoPC&lt;/a&gt; at the AppUp workshop yesterday. Its kind of nice hardware to start developing for Intel based tablets, whereas for normal use, the battery life and weight is kind of problematic. I really like the idea to be able to write nice and shiny Qt applications which run both on MeeGo and Windows and the AppUp store is really open in respect to allowing distribute open source software.&lt;/p&gt;
&lt;p&gt;But&amp;#8230;&lt;/p&gt;
&lt;p&gt;After playing a bit with it last night (it runs some preloaded &lt;a href=&#34;http://www.meego.com&#34;&gt;MeeGo&lt;/a&gt; image with the table UX from Intel), for me it is clear, &lt;a href=&#34;http://community.kde.org/Plasma/Active&#34;&gt;Plasma Active&lt;/a&gt; is here the way to go.&lt;/p&gt;
&lt;p&gt;The pre-installed tablet UX is really, lets say, interesting. Already the startup is kind of weired: your X comes up, you see the ugly X11 default cursor and then, after some flashing around small windows, the UX is there. Some triangle at the right let you go to the main screen. But no, you not drag at it, you need to click. If you then start using the UX, you get kind of scared away by either rendering artefacts, lags or really interesting design concepts (to go back to main screen from an application, you need to touch the left/right upper corner, without any visual hints, kind of confusing, I am dumb, I just rebooted several times to come back to the main screen). In addition, at least this MeeGo version doesn&amp;#8217;t seem to be able to handle multi-touch, which really kills off any fun on using, you can&amp;#8217;t even zoom your pictures (or just the applications don&amp;#8217;t support it, in any case compared to this, Nokia&amp;#8217;s &lt;a href=&#34;http://en.wikipedia.org/wiki/Nokia_N9&#34;&gt;N9&lt;/a&gt; has really a powerful UI).&lt;/p&gt;
&lt;p&gt;The good thing is: You need not to use the default MeeGo installation. The hardware is really open in the sense that driver support is no issue (the nice thing with mostly standard Intel hardware). So, go fetch your most recent and flashy Plasma Active image and have fun.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/08/Contour_AddActivity_Option21.jpg&#34;&gt;&lt;img class=&#34;size-full wp-image-1146 aligncenter&#34; title=&#34;Plasma Active - Contour&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/08/Contour_AddActivity_Option21.jpg&#34; alt=&#34;&#34; width=&#34;600&#34; height=&#34;337&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/08/Contour_AddActivity_Option21.jpg 600w, https://kate-editor.org/wp-content/uploads/2011/08/Contour_AddActivity_Option21-300x168.jpg 300w&#34; sizes=&#34;(max-width: 600px) 100vw, 600px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://community.kde.org/Plasma/Active&#34;&gt;Plasma Active&lt;/a&gt; has really a big chance here! Given the current state of the &amp;#8220;default&amp;#8221; MeeGo table UX, Plasma Active is BIG step into the right direction. I hope the Plasma and KWin developers keep on improving this.&lt;/p&gt;
&lt;p&gt;A shiny &lt;a href=&#34;http://wayland.freedesktop.org/&#34;&gt;Wayland&lt;/a&gt; based KWin + Plasma combo might really be a game changer here (&lt;a href=&#34;http://community.kde.org/images.community/0/01/KWin_Wayland.pdf&#34;&gt;presentation about KWin + Wayland&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;I hope more people and perhaps companies (like &lt;a href=&#34;http://www.basyskom.com/&#34;&gt;basysKom&lt;/a&gt;, which did a real nice job with the above shown &lt;a href=&#34;http://community.kde.org/Plasma/Active/Contour&#34;&gt;Contour shell&lt;/a&gt; for Plasma Active, short article &lt;a href=&#34;http://www.meegoexperts.com/2011/08/video-demo-contour-running-plasma-active-meego-desktop-summit/&#34;&gt;here&lt;/a&gt;) step up and start pushing this effort even more.&lt;/p&gt;
&lt;p&gt;Therefore: Thanks again to Intel, I guess they will see more MeeGo apps around soon and lets hope that Plasma Active will get a nice boost, too. Intel will benefit from a better UX in any case!&lt;/p&gt;</description></item><item><title>Maintainer Needed: Kate – External Tools Plugin</title><link>https://kate-editor.org/2011/08/09/maintainer-needed-kate-external-tools-plugin/</link><pubDate>Tue, 09 Aug 2011 16:11:49 +0000</pubDate><guid>https://kate-editor.org/2011/08/09/maintainer-needed-kate-external-tools-plugin/</guid><description>&lt;p&gt;The &amp;#8220;External Tools&amp;#8221; plugin is one of the oldest plugins of Kate. A big hug to Anders Lund for writing it years ago, a lot of people enjoyed using it.&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/08/externaltools.png&#34;&gt;&lt;img class=&#34;alignnone size-full wp-image-1108&#34; title=&#34;External Tools Configuration Dialog&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/08/externaltools.png&#34; alt=&#34;&#34; width=&#34;774&#34; height=&#34;444&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/08/externaltools.png 774w, https://kate-editor.org/wp-content/uploads/2011/08/externaltools-300x172.png 300w&#34; sizes=&#34;(max-width: 774px) 100vw, 774px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;It allows the user to specify own commands (aka snippets of shell programs) to be executed with the text of the current document or the current file.&lt;/p&gt;
&lt;p&gt;Basic stuff you can do with it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create you a little command that shows an Git/SVN/&amp;#8230; diff of current file&lt;/li&gt;
&lt;li&gt;Sort the file with command line sort program (or more advanced scripts)&lt;/li&gt;
&lt;li&gt;Pipe the text of the document into your most loved perl script&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unfortunately there is no maintainer for it at the moment. Therefore it will be disabled for KDE 4.8, as a lot of bugs sneaked into it during the late 3.x and whole 4.x life-cycle. (Mostly because of bad porting done by me and others and no time to fixup any real bugs)&lt;/p&gt;
&lt;p&gt;If you want to step up for maintainer ship, please contact me (cullmann@kde.org) or kwrite-devel@kde.org.&lt;/p&gt;
&lt;p&gt;Thanks a lot in advance ;P&lt;/p&gt;
&lt;p&gt;Btw., some of the bugs (now no longer valid but interesting for future maintainers):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=117946&#34;&gt;https://bugs.kde.org/show_bug.cgi?id=117946&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=181528&#34;&gt;https://bugs.kde.org/show_bug.cgi?id=181528&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=261210&#34;&gt;https://bugs.kde.org/show_bug.cgi?id=261210&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=97569&#34;&gt;https://bugs.kde.org/show_bug.cgi?id=97569&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=110485&#34;&gt;https://bugs.kde.org/show_bug.cgi?id=110485&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=153963&#34;&gt;https://bugs.kde.org/show_bug.cgi?id=153963&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>GSoC – Kate Code Folding (Bug-less)</title><link>https://kate-editor.org/2011/08/07/gsoc-kate-code-folding-bug-less/</link><pubDate>Sun, 07 Aug 2011 20:21:28 +0000</pubDate><guid>https://kate-editor.org/2011/08/07/gsoc-kate-code-folding-bug-less/</guid><description>&lt;p&gt;Hi everyone!&lt;/p&gt;
&lt;p&gt;Another season of Google Summer of Code is approaching its end. :(&lt;/p&gt;
&lt;p&gt;I feel pretty bad about that, because I enjoy it and I love working on Kate.&lt;/p&gt;
&lt;p&gt;I used the last two weeks to solve all the bugs and requests (folding related) from &lt;a href=&#34;https://bugs.kde.org/&#34;&gt;bugs.kde.org&lt;/a&gt;. If you &lt;a href=&#34;https://kate-editor.org/get-it/&#34;&gt;find&lt;/a&gt; any folded related bugs, please send the report using &lt;a href=&#34;https://bugs.kde.org/&#34;&gt;bugs.kde.org&lt;/a&gt; and I will solve them (the warranty period is unlimited, so you don’t have to worry about that ;) )&lt;/p&gt;
&lt;p&gt;The next two weeks (the time remained until the dead line) will be used to write the documentation and to do some look changes, according to the code reviews received from the Kate community. Also, I will write some tests. Writing automatic tests for the folding is not such an easy task because you have to check a lot of stuff: the highlight, the folding sign, the folded lines, the line that remains visible and other things. And there are so many languages that act differently. That’s why I preferred to do the tests manually, so far. Anyway, I will write some units that will test the bases of the code folding, like number of lines left after a folding or some delete/insert operations occurred.&lt;/p&gt;
&lt;p&gt;I consider this project a success and I hope that the Kate team has no regrets for choosing me for this GSoC season. :)&lt;/p&gt;
&lt;p&gt;Enjoy Kate’s new code folding! ;)&lt;/p&gt;
&lt;p&gt;Adrian&lt;/p&gt;</description></item><item><title>Kate Vi Mode Test Suite – GSoC 2011</title><link>https://kate-editor.org/2011/08/07/vitest/</link><pubDate>Sun, 07 Aug 2011 09:06:02 +0000</pubDate><guid>https://kate-editor.org/2011/08/07/vitest/</guid><description>&lt;p&gt;This summer vi mode has a new test suite. Now there are over 250 tests and the number of them still growing.&lt;br /&gt;
It&amp;#8217;s very easy to add a new test. All you need is just to add the&lt;br /&gt;
DoTest(&amp;#8220;Original text&amp;#8221;,&amp;#8221;Vi command&amp;#8221;,&amp;#8221;Expected text after doing vi command&amp;#8221;);&lt;br /&gt;
line to &lt;a href=&#34;https://projects.kde.org/projects/kde/kdebase/kate/repository/revisions/master/show/part&#34;&gt;part&lt;/a&gt;/&lt;a href=&#34;https://projects.kde.org/projects/kde/kdebase/kate/repository/revisions/master/show/part/tests&#34;&gt;tests&lt;/a&gt;/&lt;a href=&#34;https://projects.kde.org/projects/kde/kdebase/kate/repository/revisions/master/changes/part/tests/vimode_test.cpp&#34;&gt;vimode_test.cpp&lt;/a&gt;.&lt;br /&gt;
Format for command with CTRL &amp;#8211; modifier: &lt;strong&gt;\ctrl-x&lt;/strong&gt;, for command -mode command: *&lt;em&gt;\:command\*&lt;/em&gt;.&lt;br /&gt;
There are little restriction: you can&amp;#8217;t input text while being in input mode.&lt;/p&gt;
&lt;p&gt;Exampls:&lt;br /&gt;
DoTest(&amp;#8220;foobar&amp;#8221;,&amp;#8221;Vypp&amp;#8221;,&amp;#8221;foobar\nfoobar\nfoobar&amp;#8221;);&lt;br /&gt;
DoTest(&amp;#8220;foo\nbar&amp;#8221;,&amp;#8221;\ctrl-vjl~&amp;#8221;,&amp;#8221;FOo\nBAr&amp;#8221;);&lt;br /&gt;
DoTest(&amp;#8220;foo\nbar\nbaz&amp;#8221;,&amp;#8221;\:2,3delete\&amp;#8221;,&amp;#8221;foo&amp;#8221;);&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s also a good format for bug report or for feature wish for vi-mode.&lt;/p&gt;</description></item><item><title>Code Folding Updates</title><link>https://kate-editor.org/2011/07/31/code-folding-updates/</link><pubDate>Sun, 31 Jul 2011 08:22:15 +0000</pubDate><guid>https://kate-editor.org/2011/07/31/code-folding-updates/</guid><description>&lt;p&gt;As you may know the Kate &lt;a href=&#34;https://kate-editor.org/2011/07/24/gsoc-2011-%e2%80%93-kate-code-folding-%e2%80%93-try-kates-new-code-folding/&#34; title=&#34;GSoC: Code Folding&#34;&gt;code folding implementation&lt;/a&gt; &lt;a href=&#34;https://kate-editor.org/2011/07/26/gsoc-kate-code-folding-more-technical-details/&#34; title=&#34;GSoC: Code Folding&#34;&gt;gets some love&lt;/a&gt; these days. The last days, &lt;a title=&#34;Fixing Confused Code Folding&#34; href=&#34;https://projects.kde.org/projects/kde/kdebase/kate/repository/revisions/4151628e86aa0bfaa8a3cc49eb97d06503e69638&#34; target=&#34;_blank&#34;&gt;several bug fixes&lt;/a&gt; dropped in by our GSoC student. And the good news is that if all works well, we&amp;#8217;ll be able to backport these fixes so that the code folding is much more robust in our beloved &lt;a href=&#34;https://kate-editor.org/2011/07/09/kate-in-kde-4-7/&#34; title=&#34;Kate in KDE 4.7.1&#34;&gt;Kate even in KDE 4.7.x&lt;/a&gt;. These changes probably fix several crashes that were around since 2005 as well. I believe the word we&amp;#8217;re looking for is: &lt;em&gt;owned&lt;/em&gt;! :-)&lt;/p&gt;</description></item><item><title>GSoC – Kate Code Folding (some more details about folding)</title><link>https://kate-editor.org/2011/07/26/gsoc-kate-code-folding-more-technical-details/</link><pubDate>Tue, 26 Jul 2011 19:29:11 +0000</pubDate><guid>https://kate-editor.org/2011/07/26/gsoc-kate-code-folding-more-technical-details/</guid><description>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;Yesterday I received a comment on my previous blog post that it would be nice to give some more technical details about the folding.&lt;/p&gt;
&lt;p&gt;Initially, this was a comment response, but because it proved to be pretty interesting and more of you read the articles than the comments, I decided to post it as an article :)&lt;/p&gt;
&lt;p&gt;Here are some details that you could find interesting:&lt;/p&gt;
&lt;p&gt;Kate’s folding is based on a real / virtual line system. All the folded block’s lines have the same virtual line (they are literally folded under the first block’s line).&lt;br /&gt;
But how are these blocks defined?&lt;br /&gt;
Kate uses the file extension to determine what defines a block (special characters like “{“ or “}”, text alignment and so on). Kate’s highlight sends some info about these to Kate’s code folding. Let’s call them “document’s anchors”. This info is rudimentary. It is mentioned only the type of anchor (encoded as a number greater than 0 if it is a start anchor and lower than 0 if it is an end anchor) and its position in the document (real position). I use this info to build the “folding nodes” (I will detail them later) and to keep their position updated as well. So, here we have the first data structure: the “line mapping”. Line mapping is a QMap &lt;line_number, QVector &gt; and contains an entry for each document line that has at least one anchor I was talking about earlier. If this structure is updated correctly, then I am sure that all the folding nodes have their position set correctly and I don’t need to worry about that.&lt;/p&gt;
&lt;p&gt;Now, I know where the document anchors are. But that isn’t enough – I need to form folding blocks with them.&lt;br /&gt;
I found two solutions for this “matching” problem:&lt;br /&gt;
1. Use a stack and rebuild (using the line mapping) the folding tree from scratch every time something is changing. The algorithm was very simple (parenthesis matching problem), but I found it pretty ugly (and slow) to rebuild the entire tree so often. I didn’t discard the idea either. The algorithm was perfect to be used as a term of comparison for the other algorithm.&lt;br /&gt;
2. Use a tree algorithm that changes itself dynamically. This was the solution I chose. I developed an entire project (see my previous posts) that helped me improve this algorithm and I believe it works pretty well.&lt;img src=&#34;../wp-includes/images/smilies/icon_smile.gif&#34; alt=&#34;:)&#34; /&gt;&lt;br /&gt;
The folding tree is made of folding nodes. These nodes contain info about their position (actually the document’s anchor that they represent), parent, type, matching node – all the info needed to define the folding blocks. If this tree is correct, then the blocks are defined correctly.&lt;/p&gt;
&lt;p&gt;If you have the folding blocks defined, then you can fold them. To do this I use the third (and the last) data structures: a QList with the folded nodes. You might ask why we needed another(!) data structure. There are 3 methods that are called very, very often: getRealLine (virtualLine), getVirtualLine(realLine) and getHiddenLines(). Search through all the folding nodes (using the folding tree or the line mapping) is slow. Imagine if we do this search for every line of the document (actually there are about 2 or 3 calls per line every time something changes in the document!). I have also made one more improvement here: if a folded block contains another folded block, then the inner folded block is removed from this structure (it won’t help us discover the virtual or real lines).&lt;/p&gt;
&lt;p&gt;Basically, these 3 methods are the code folding – the real / virtual line system I was talking about in the beginning. But.. there is a long way and lot of work to be able to answer these 3 questions fast and correctly.&lt;img src=&#34;../wp-includes/images/smilies/icon_smile.gif&#34; alt=&#34;:)&#34; /&gt;&lt;/p&gt;</description></item><item><title>Kate Vi Input Mode – GSoC 2011</title><link>https://kate-editor.org/2011/07/26/vimode-gsoc2011/</link><pubDate>Tue, 26 Jul 2011 12:44:04 +0000</pubDate><guid>https://kate-editor.org/2011/07/26/vimode-gsoc2011/</guid><description>&lt;p style=&#34;text-align: justify;&#34;&gt;
I want to introduce you my GSoC-2011 project. I was working on improvement the vi input mode for the Kate part.
&lt;/p&gt;
&lt;p style=&#34;text-align: justify;&#34;&gt;
There are a lot of improvements for normal mode. Now it&amp;#8217;s able to use jump list by pressing &lt;strong&gt;ctrl-i/ctrl-o&lt;/strong&gt; in normal mode like in vim. And now not only registers but also marks, and jumps stored in the config of the session. &lt;strong&gt;H&lt;/strong&gt;, &lt;strong&gt;M &lt;/strong&gt;and &lt;strong&gt;L&lt;/strong&gt; commands moves cursor to the first(&lt;strong&gt;H&lt;/strong&gt;ome), &lt;strong&gt;M&lt;/strong&gt;iddle and &lt;strong&gt;L&lt;/strong&gt;ast line of the screen. To go to the any percent of the document you can use the &lt;strong&gt;%&lt;/strong&gt; command by typing the number of percent(1-100) before it. &lt;strong&gt;gk &lt;/strong&gt;and &lt;strong&gt;gj&lt;/strong&gt; motions will make you able to go visual(display) lines up and down. It&amp;#8217;s useful when you using line wrap.
&lt;/p&gt;
&lt;p style=&#34;text-align: justify;&#34;&gt;
You can split the screen vertically and horizontally by ctrl-s and ctrl-v shortcuts and move around them in different directions using &lt;strong&gt;ctrl-w{h,j,k,l,w}&lt;/strong&gt; or also c&lt;strong&gt;trl-w{&lt;/strong&gt;&lt;span style=&#34;font-family: Liberation Serif,serif;&#34;&gt;&lt;strong&gt;←,↑,↓,→&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;}&lt;/strong&gt;.
&lt;/p&gt;
&lt;p style=&#34;text-align: justify;&#34;&gt;
In insert mode added commands &lt;strong&gt;ctrl-r+[register]&lt;/strong&gt; to insert the contents of a register and &lt;strong&gt;ctrl-o&lt;/strong&gt; to switch to the normal mode only for a one command and automatically get back to insert. The&lt;strong&gt; ctrl-a&lt;/strong&gt;, &lt;strong&gt;ctrl-x&lt;/strong&gt; command now increase and decrease the negative numbers too.
&lt;/p&gt;
&lt;p style=&#34;text-align: justify;&#34;&gt;
There are also some new command-line features. Now you can use the marks for a command ranges. It&amp;#8217;s possible to add and subtract line numbers in the ranges many times. For example command &lt;strong&gt;:.+3d&lt;/strong&gt; will delete the third line after current position and the command &lt;strong&gt;:&amp;#8217;a,&amp;#8217;b-1y&lt;/strong&gt; will yank the line-wise range between the line of mark &amp;#8216;&lt;strong&gt;a&amp;#8217;&lt;/strong&gt; and the one line before the line of &amp;#8216;&lt;strong&gt;b&lt;/strong&gt;&amp;#8216; mark.
&lt;/p&gt;
&lt;p style=&#34;text-align: justify;&#34;&gt;
Also there a some new basic vim commands:
&lt;/p&gt;
&lt;ul style=&#34;text-align: justify;&#34;&gt;
&lt;li&gt;
&lt;strong&gt;:d&lt;/strong&gt; or &lt;strong&gt;:delete&lt;/strong&gt; – delete range;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;:c&lt;/strong&gt; or &lt;strong&gt;:change&lt;/strong&gt; – change range;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;:j&lt;/strong&gt; – join all the lines in range;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;:&gt;&lt;/strong&gt; &amp;#8211; indent range;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;:&lt;&lt;/strong&gt; &amp;#8211; unindent range;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;:y&lt;/strong&gt; or &lt;strong&gt;:yank&lt;/strong&gt; – yank range;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;:ma&lt;/strong&gt; or &lt;strong&gt;:mark&lt;/strong&gt; or &lt;strong&gt;:k&lt;/strong&gt; – set mark;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;:bn&lt;/strong&gt; – switch to next buffer(document);
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;:bp&lt;/strong&gt; – switch to previous buffer(document);
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;:bf&lt;/strong&gt; – to first buffer;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;:bl&lt;/strong&gt; – to last buffer;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;:b [N]&lt;/strong&gt; or &lt;strong&gt;:buffer [N]&lt;/strong&gt; &amp;#8211; to &lt;strong&gt;N&lt;/strong&gt;th buffer
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&#34;text-align: justify;&#34;&gt;
Text objects are also improved and fixed. There are new objects: ( &lt;strong&gt;a{&lt;/strong&gt; , &lt;strong&gt;i{&lt;/strong&gt; , &lt;strong&gt;a&lt;&lt;/strong&gt; , &lt;strong&gt;i&lt;&lt;/strong&gt; , &lt;strong&gt;a`&lt;/strong&gt; , &lt;strong&gt;i` &lt;/strong&gt;). And now they normally works with nested objects. So for now the &lt;strong&gt;i(&lt;/strong&gt; object (for position of multiply symbol &lt;strong&gt;*&lt;/strong&gt;) will be &amp;#8220;(&lt;span style=&#34;color: #ff0000;&#34;&gt;1&lt;strong&gt;*&lt;/strong&gt;2/(2+3)–4&lt;/span&gt;)&amp;#8221; instead of &amp;#8220;(&lt;span style=&#34;color: #ff0000;&#34;&gt;1&lt;strong&gt;*&lt;/strong&gt;2/(2+3&lt;/span&gt;)–4)&amp;#8221;. Some of the objects like &lt;strong&gt;(),{},[],&lt;&gt;&lt;/strong&gt; works with several lines.
&lt;/p&gt;
&lt;p style=&#34;text-align: justify;&#34;&gt;
Visual mode now is integrated with mouse, so the mouse dragging starts the visual mode. All kind of Kate-way selection is also starts the visual mode. For example if you use “&lt;strong&gt;Select all&lt;/strong&gt;” menu line or shortcut &lt;strong&gt;ctrl-a&lt;/strong&gt;(by default) this will starts visual mode with the selected text and waits you for a command to execute :) . One point mouse click will exit the visual mode. Kate selection and vi mode selection is actually the same thing now. So you can, say, to select a bloc by using the Visual Block mode (&lt;strong&gt;ctrl-v&lt;/strong&gt;), to do a context menu on them and to copy them to a clipboard :). When you exit visual mode the &lt;strong&gt;&amp;#8216;&lt;&lt;/strong&gt; and &lt;strong&gt;&amp;#8216;&gt;&lt;/strong&gt; marks have a start and end position of selection. It useful when you want to execute some command line command on the selected text. Just press the “&lt;strong&gt;:&lt;/strong&gt;” when you select something and it automatically fill the command line with “&lt;strong&gt;&amp;#8216;&lt;,&amp;#8217;&gt;&lt;/strong&gt;” to have a quick access to selected area.
&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/07/foobar.png&#34;&gt;&lt;img class=&#34;size-full wp-image-1062 aligncenter&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/07/foobar.png&#34; alt=&#34;&#34; width=&#34;346&#34; height=&#34;32&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/07/foobar.png 346w, https://kate-editor.org/wp-content/uploads/2011/07/foobar-300x27.png 300w&#34; sizes=&#34;(max-width: 346px) 100vw, 346px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&#34;text-align: justify;&#34;&gt;
Vi marks and Kate bookmarks are integrated too. If you set the mark then this line becomes bookmarked by Kate. And vice versa: if you set a Kate&amp;#8217;s bookmark and there no vi marks on this like vi mode sets the vim mark on this line and zero column, and shows you what letter for this mark is used.You can see the position of all vi marks in the bookmark menu in the menu bar or also in the context menu.
&lt;/p&gt;
&lt;p style=&#34;text-align: left;&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/07/setting-bookmark1.png&#34;&gt;&lt;img class=&#34;size-full wp-image-1056 aligncenter&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/07/setting-bookmark1.png&#34; alt=&#34;&#34; width=&#34;613&#34; height=&#34;215&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/07/setting-bookmark1.png 663w, https://kate-editor.org/wp-content/uploads/2011/07/setting-bookmark1-300x105.png 300w&#34; sizes=&#34;(max-width: 613px) 100vw, 613px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&#34;text-align: left;&#34;&gt;
I hope this features will make you feel even more comfortable while using Kate. You can try it now in the git version of Kate.&lt;br /&gt; &lt;strong&gt;Any notice or bug report are welcome !&lt;/strong&gt;
&lt;/p&gt;</description></item><item><title>You, KDE!</title><link>https://kate-editor.org/2011/07/25/you-kde/</link><pubDate>Mon, 25 Jul 2011 15:28:16 +0000</pubDate><guid>https://kate-editor.org/2011/07/25/you-kde/</guid><description>&lt;p&gt;For me, it (still) feels very unnatural to &lt;a title=&#34;KDE&#34; href=&#34;http://michael-jansen.biz/blog/mike/2011-07-25/kde-subversion-stampede&#34; target=&#34;_blank&#34;&gt;talk about us as KDE&lt;/a&gt;. I&amp;#8217;m still thinking in terms of &lt;em&gt;the KDE community&lt;/em&gt;; and _the KDE Project_ releases the _KDE Desktop_ (or just KDE). I&amp;#8217;m also fine with _the KDE Workspace_ and other specialized variants. However, the login manager now also shows the term &lt;em&gt;KDE Plasma Workspace&lt;/em&gt;. In my very own humble opinion, this is already too much of buzz words.&lt;/p&gt;
&lt;p&gt;At university, I&amp;#8217;m helping out with system administration. And since I&amp;#8217;m very familiar with KDE, I fix all KDE related issues (and usually enjoy doing so). We have lots of colleagues that never used KDE. Now, try to explain the term Plasma&amp;#8230; Well, it&amp;#8217;s a desktop shell &amp;#8211; also too complex. It&amp;#8217;s the desktop, with all the icons and panels. That&amp;#8217;s more understandable :) But next, a dialog pops up with some status messages: Akonadi. Well, try to explain the term Akonadi. It&amp;#8217;s similar with other technologies. Explain what Nepomuk is doing with the difference to Strigi&amp;#8230; When I try to explain what&amp;#8217;s happening, and what all these components do, I sometimes feel &lt;del&gt;pretty much stupid&lt;/del&gt; uncomfortable using these words.&lt;/p&gt;
&lt;p&gt;It is similar with the term KDE SC. As part of the rebranding, the KDE Software Compilation or short KDE SC was introduced. I can understand that we build a platform and our target is more than just the Desktop. But talking to other people, I feel stupid saying &lt;em&gt;KDE SC&lt;/em&gt;. For me, it simply is (and probably will always be) a no-go. But it changed already, to &lt;em&gt;the KDE platform&lt;/em&gt;, or maybe I misunderstood that ? :-)&lt;/p&gt;
&lt;p&gt;Funnily, I think it&amp;#8217;s fine to use application names such as dolphin, kate, amarok and what not. So to some degree, I&amp;#8217;m certainly simply used to these terms. But still, &lt;em&gt;it feels right&lt;/em&gt;, also when talking to other users. We have to be very careful to use fancy names in very prominent places. Ah, and with respect to naming applications, there is a similar &lt;a title=&#34;System Settings&#34; href=&#34;http://lists.kde.org/?l=kde-core-devel&amp;m=131132292207915&amp;w=2&#34; target=&#34;_blank&#34;&gt;discussion on kde-core-devel&lt;/a&gt; right now ;)&lt;/p&gt;</description></item><item><title>GSoC 2011 – Kate Code Folding – (Try Kate’s new code folding)</title><link>https://kate-editor.org/2011/07/24/gsoc-2011-kate-code-folding-try-kates-new-code-folding/</link><pubDate>Sun, 24 Jul 2011 17:20:32 +0000</pubDate><guid>https://kate-editor.org/2011/07/24/gsoc-2011-kate-code-folding-try-kates-new-code-folding/</guid><description>&lt;p&gt;Hi everyone!&lt;/p&gt;
&lt;p&gt;Kate&amp;#8217;s new code folding was merged with the &lt;a href=&#34;https://kate-editor.org/get-it/&#34;&gt;master branch&lt;/a&gt;. :)&lt;br /&gt;
You can try it by yourself. If you do find any bugs, please send a bug report on &lt;a href=&#34;https://bugs.kde.org/&#34;&gt;KDE&amp;#8217;s bug tracker&lt;/a&gt; or leave a comment here.&lt;br /&gt;
I will use a test unit to solve those bugs, so I will need a full backtrace and some info to help me replicate it.&lt;br /&gt;
Please notice that there are no new features added yet &amp;#8211; just the basic code folding.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m waiting for your feedback!&lt;/p&gt;</description></item><item><title>Kate Modeline Editor</title><link>https://kate-editor.org/2011/07/23/kate-modeline-editor/</link><pubDate>Sat, 23 Jul 2011 15:34:40 +0000</pubDate><guid>https://kate-editor.org/2011/07/23/kate-modeline-editor/</guid><description>&lt;p&gt;&lt;a title=&#34;KDE Commit Digest&#34; href=&#34;http://commit-digest.org/issues/2011-07-17/&#34; target=&#34;_blank&#34;&gt;As you may know&lt;/a&gt;, Kate supports the concept of document variables, also known as &lt;a href=&#34;https://kate-editor.org/2006/02/09/kate-modelines/&#34; title=&#34;Kate Document Variables&#34;&gt;modelines&lt;/a&gt;. In short, document variables can be used to set Kate settings local to a file. For instance, this is useful for settings specific indenter options than the ones defined in Kate&amp;#8217;s settings dialog. Assume you work on two projects, the first indents with spaces and the second with tabs, then you can simply add a modeline that contains the specific document variables that set the specific indentation properties.&lt;/p&gt;
&lt;p&gt;While the concept is very mighty, it is not intuitive to use: You have to know the exact syntax and correct varialbes and their valid values.&lt;/p&gt;
&lt;p&gt;To improve this for the next KDE release (v4.8?), Kate &lt;a title=&#34;Git Commit&#34; href=&#34;https://projects.kde.org/projects/kde/kdebase/kate/repository/revisions/b3eb57233bd3504415167669e02c75c92841a98b&#34; target=&#34;_blank&#34;&gt;gained&lt;/a&gt; a variable / modeline editor this week:&lt;br /&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/07/kate-modeline-editor.png&#34;&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2011/07/kate-modeline-editor.png&#34; alt=&#34;&#34; title=&#34;kate modeline editor&#34; width=&#34;818&#34; height=&#34;617&#34; class=&#34;alignnone size-full wp-image-1578&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/07/kate-modeline-editor.png 818w, https://kate-editor.org/wp-content/uploads/2011/07/kate-modeline-editor-300x226.png 300w&#34; sizes=&#34;(max-width: 818px) 100vw, 818px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you click the Edit button, a list view pops up showing all valid document variables with the valid values. Right now, this editor is included only in the &amp;#8220;Modes &amp;amp; Filetypes&amp;#8221; config page. However, the idea is to support it in the context menu over a Kate modeline in the text editor area as well.&lt;/p&gt;</description></item><item><title>GSoC 2011 – Kate Code Folding – week 5 (New Code Folding is taking shape)</title><link>https://kate-editor.org/2011/07/13/gsoc-2011-kate-code-folding-week-5-new-code-folding-is-taking-shape/</link><pubDate>Wed, 13 Jul 2011 09:48:23 +0000</pubDate><guid>https://kate-editor.org/2011/07/13/gsoc-2011-kate-code-folding-week-5-new-code-folding-is-taking-shape/</guid><description>&lt;p&gt;Hey!&lt;/p&gt;
&lt;p&gt;The new code folding is taking shape. Actually it is implemented. :)&lt;br /&gt;
The next step will be testing it (and debugging, if necessary) and implementing some new features.&lt;br /&gt;
Also there are some keyboard shortcuts that didn’t worked so well on the previous version and they need to be fixed too.&lt;/p&gt;
&lt;p&gt;If you want to help us with the testing, you can download &lt;a href=&#34;http://quickgit.kde.org/?p=clones%2Fkate%2Flungu%2Fcode_folding.git&amp;amp;a=summary&#34;&gt;my clone&lt;/a&gt; and play a little with code folding. Also, if you have some ideas about the new features that Kate’s folding should have, let me know. If it is possible and there is time, they will be implemented.&lt;br /&gt;
Greetings,&lt;br /&gt;
Adrian&lt;/p&gt;</description></item><item><title>KDE 4.6.5 &gt; StarCraft 2</title><link>https://kate-editor.org/2011/07/10/kde-4-6-5-starcraft-2/</link><pubDate>Sun, 10 Jul 2011 16:47:23 +0000</pubDate><guid>https://kate-editor.org/2011/07/10/kde-4-6-5-starcraft-2/</guid><description>&lt;p&gt;I normally enjoy StarCraft 2 in the evening a bit or like now, if it is raining and I have no fun in any more real work.&lt;/p&gt;
&lt;p&gt;But just now and some days ago, it has again proven, KDE &amp;gt; StarCraft 2.&lt;/p&gt;
&lt;p&gt;Just again, StarCraft 2 (played with wine, thanks a lot wine team, you do a great job!) got sluggish and then terminated.&lt;br /&gt;
A quick dmesg call shows the cause.&lt;br /&gt;
Like last time, the OOM killer got me.&lt;/p&gt;
&lt;p&gt;Now, first I thought: What, this stupid game uses more than my 4 GB of RAM? (I have no swap, have only one ssd)&lt;br /&gt;
But now, the reason is much easier: KDE has beaten StarCraft 2&amp;#8230;. (even if we call it KDE SC, it still not loves SC 2 :)&lt;/p&gt;
&lt;p&gt;Looking at my process table, is is just clear: StarCraft 2 is the biggest memory user, that is just normal, around 2.5 GB, at peak.&lt;br /&gt;
But no reason to crash, or? With 4 GB.&lt;br /&gt;
But wait, I let my kontact run the background, big failure.&lt;/p&gt;
&lt;p&gt;My stats here:&lt;/p&gt;
&lt;p&gt;Kontact and co, just only taken the &amp;gt; 50 MB RSS offenders, there are lot of other smaller processes running around:&lt;/p&gt;
&lt;p&gt;cullmann 1452 2.1 10.7 1243552 436228 ? Sl 11:05 9:33 /usr/bin/kontact&lt;br /&gt;
cullmann 1132 0.5 9.6 813136 391996 ? S 10:38 2:33 /usr/bin/akonadi_nepomuk_email_feeder &amp;#8211;identifier akonadi_nepomuk_email_feeder&lt;br /&gt;
cullmann 1127 2.6 1.3 550532 54860 ? Sl 10:38 12:13 /usr/bin/akonadi_imap_resource &amp;#8211;identifier akonadi_imap_resource_0&lt;br /&gt;
cullmann 1060 2.0 2.8 481124 114288 ? Sl 10:38 9:34 /usr/bin/mysqld &amp;#8211;defaults-file=/home/cullmann/.local/share/akonadi//mysql.conf &amp;#8211;datadir=/h&lt;/p&gt;
&lt;p&gt;Summa around 1 GB, with the smaller ones.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;my friend the semantic desktop :/&lt;br /&gt;
cullmann 1104 41.6 2.1 168752 88320 ? SNl 10:38 193:59 /usr/bin/virtuoso-t +foreground +configfile /tmp/virtuoso_hX1095.ini +wait&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The planet is no place for bugs, I know, but anyway, this is no bug report. What should I report at all? That just using KDE + Kontact eats &amp;gt;&amp;gt; 1 GB of my RAM and virtuoso around 40% of my CPU? And yes, it even uses that with Kontact shutdown and all other apps closed&amp;#8230; And no, I have no indexing active, that OOM&amp;#8217;d me last time, even before Kontact + Akonadi on :/&lt;/p&gt;
&lt;p&gt;I kind of think, we need to improve in that area, really.&lt;br /&gt;
Beside, in the old days, if Kontact did take too much RAM, I just closed it, now, still the akonadi parts + mysql stay alive, with around &lt;sup&gt;1&lt;/sup&gt;&amp;frasl;&lt;sub&gt;2&lt;/sub&gt; GB memory usage :/&lt;br /&gt;
Guess need to kill them hard before starting to play :)&lt;/p&gt;
&lt;p&gt;A lot of persons at work switched back to GNOME or whatever, because we can&amp;#8217;t get rid of these problems. Either kdeinit eats our CPU (with Ubuntu Natty) or nepomuk/strigi/akonadi and Co. eat the memory + fill our NFS homes :/ And no, we don&amp;#8217;t do bug reports for this, as these are not reproducable problems. (Beside the memory usage I guess and that virtuoso runs amok, but that are known issues if you look at our bug tracker)&lt;/p&gt;
&lt;p&gt;Good side of things: In that light, Kate&amp;#8217;s memory usage is kind of non-existing in comparison :P&lt;/p&gt;
&lt;p&gt;I will continue to use KDE for sure and try to be more clever and shut down Kontact and co before playing (and turn of nepomuk completly, even if I get here and then a error message because of this) or I will just buy more RAM, 4GB to ease the pain should be not the biggest issue. Happy enough, at work I have anyway 8GB or more in every workstation because of our static analysis software needing it ;)&lt;/p&gt;</description></item><item><title>Kate in KDE 4.7</title><link>https://kate-editor.org/2011/07/09/kate-in-kde-4-7/</link><pubDate>Sat, 09 Jul 2011 20:20:50 +0000</pubDate><guid>https://kate-editor.org/2011/07/09/kate-in-kde-4-7/</guid><description>&lt;p&gt;Now that the next version of the KDE platform is branched, it&amp;#8217;s time to have a look at all the changes in Kate in KDE 4.7.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;More than 150 wishes and issues have been resolved&lt;/strong&gt;. A &lt;a title=&#34;Resolved Issues in KDE 4.7&#34; href=&#34;https://bugs.kde.org/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;product=kate&amp;long_desc_type=substring&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;keywords_type=allwords&amp;keywords=&amp;bug_status=RESOLVED&amp;resolution=FIXED&amp;resolution=WORKSFORME&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;chfieldfrom=2010-12-29&amp;chfieldto=2011-07-31&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&#34; target=&#34;_blank&#34;&gt;detailed list of the resolved  issues&lt;/a&gt; can be found in the KDE bug tracker.&lt;/li&gt;
&lt;li&gt;All Kate development is done in the &lt;a title=&#34;Kate Git Module&#34; href=&#34;https://projects.kde.org/projects/kde/kdebase/kate/repository&#34; target=&#34;_blank&#34;&gt;KDE git infrastructure&lt;/a&gt; as submodule of kdebase. It is very straight forward to &lt;a href=&#34;https://kate-editor.org/get-it/&#34; title=&#34;Build Kate&#34;&gt;build Kate within a few minutes&lt;/a&gt; according to our excellent documentation.&lt;/li&gt;
&lt;li&gt;New &lt;a href=&#34;https://kate-editor.org/2011/06/28/kate-plugin-updates-part-3/&#34; title=&#34;Search Plugin in KDE 4.7&#34;&gt;Search Plugin&lt;/a&gt; with the ability to search in files on disk or opened files (will replace the Find in Files plugin in KDE 4.8).&lt;/li&gt;
&lt;li&gt;Plugin improvements: &lt;a href=&#34;https://kate-editor.org/2011/06/21/kate-plugin-updates-part-1/&#34; title=&#34;Build Plugin in KDE 4.7&#34;&gt;Build Plugin&lt;/a&gt;., &lt;a href=&#34;https://kate-editor.org/2011/06/23/kate-plugin-updates-part-2/&#34; title=&#34;GDB Plugin in KDE 4.7&#34;&gt;GDB Plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kate&amp;#8217;s &lt;a href=&#34;https://kate-editor.org/2011/04/25/kates-tab-bar-plugins/&#34; title=&#34;Kate&#39;s Tab Bar Plugins&#34;&gt;tab bar plugins&lt;/a&gt; gained several new features.&lt;/li&gt;
&lt;li&gt;Swap files: If lost data is found, documents are marked as read-only.&lt;/li&gt;
&lt;li&gt;Further noteworthy changes: &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=200248&#34; title=&#34;Kate Printing&#34;&gt;Improved printing&lt;/a&gt;, &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=143120&#34; title=&#34;Line Ending&#34;&gt;change of line ending triggers modified flag&lt;/a&gt;, &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=144945&#34; title=&#34;Shortcut Issues&#34;&gt;fixed shortcut issues&lt;/a&gt;, &lt;a title=&#34;Auto Completion Popup&#34; href=&#34;https://bugs.kde.org/show_bug.cgi?id=264757&#34; target=&#34;_blank&#34;&gt;fixed auto completion popup&lt;/a&gt;, and more.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Current State of Kate&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In KDE 4.6, we replaced the document list by the new &lt;a href=&#34;https://kate-editor.org/2010/09/10/tree-view-plugin-introduction/&#34; title=&#34;File Tree&#34;&gt;File Tree&lt;/a&gt;. We got relatively few critical reports, meaning that the file tree seems to work pretty well for the majority.&lt;/li&gt;
&lt;li&gt;Kate has two GSoC projects at the moment: Rewrite of the code folding, and Improving Kate&amp;#8217;s vi mode. The work done in both projects will be available in KDE 4.8, so we are already working on the next major KDE release.&lt;/li&gt;
&lt;li&gt;About 6 Kate developers are present at the &lt;a title=&#34;KDE Conference Website&#34; href=&#34;http://akademy.kde.org&#34; target=&#34;_blank&#34;&gt;annual KDE conference&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kate-editor.org/2010/08/14/kate-editor-org-moved/&#34; title=&#34;Kate Homepage Moving&#34;&gt;A year ago&lt;/a&gt;, the Kate homepage was redesigned. Looking back the last year, we can say that this has been a success.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Just in case you missed it: you can read about &lt;a href=&#34;https://kate-editor.org/2010/12/29/kate-in-kde-4-6/&#34; title=&#34;Kate in KDE 4.6&#34;&gt;Kate&amp;#8217;s state 6 months ago here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>GSoC 2011 – Kate Code Folding – week 4 (Integrating the folding algorithm)</title><link>https://kate-editor.org/2011/07/04/gsoc-2011-kate-code-folding-week-4-integrating-the-folding-algorithm/</link><pubDate>Mon, 04 Jul 2011 11:46:56 +0000</pubDate><guid>https://kate-editor.org/2011/07/04/gsoc-2011-kate-code-folding-week-4-integrating-the-folding-algorithm/</guid><description>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;I bring good news about Kate’s folding today. The algorithm was implemented and tested successfully. ;)&lt;br /&gt;
As I mentioned in the previous article, I implemented it in a new (simpler) project. It is a Qt project (developed using Qt Creator) and you can find it in &lt;a href=&#34;http://quickgit.kde.org/?p=clones%2Fkate%2Flungu%2Fcode_folding.git&amp;amp;a=summary&#34;&gt;my Kate clone&lt;/a&gt;, “tree_alg” folder.&lt;/p&gt;
&lt;p&gt;Actually, I have implemented two folding algorithms: one that uses a tree that changes itself dynamically whenever you insert or delete a node, and one based on stack that rebuilds the entire folding tree whenever you insert or delete a node. I needed two algorithms because I wanted to implement an automatic testing mechanism and for that I needed a way to test the output. The second algorithm was easier to be implemented and it was very stable (bug-less) from the beginning, so it was great to use it for my testing.&lt;/p&gt;
&lt;p&gt;The automatic testing proved to be a success. I hope I found all the bugs, but I would like to invite you to download the project and to play a little with this application. If you do find any bugs, please send the history files on the mailing list and I will fix them. About these history files, when you save the history two files will be created. E.g.: if you save your history in a file called “history_1”, then you will have (in the same directory) a file called “history_1” and a file called “history_1_moves”. Please send them both if you notice any bug. It will make my debugging much easier.&lt;/p&gt;
&lt;p&gt;My next move is to integrate this tree folding algorithm into Kate’s folding. For this part, I will have to finish an undone job from a previous week (rewrite the interface and the update methods) and add the algorithm I have just implemented.&lt;br /&gt;
I think that in ten days at most we will have a new code folding for c style languages. :)&lt;/p&gt;
&lt;p&gt;All the best,&lt;br /&gt;
Adrian&lt;/p&gt;</description></item><item><title>Kate plugin updates part 3</title><link>https://kate-editor.org/2011/06/28/kate-plugin-updates-part-3/</link><pubDate>Tue, 28 Jun 2011 05:03:34 +0000</pubDate><guid>https://kate-editor.org/2011/06/28/kate-plugin-updates-part-3/</guid><description>&lt;p&gt;Well I&amp;#8217;m not sure this really qualifies as an update, because it is actually a new plugin. And the plugin I&amp;#8217;m talking about is the Search plugin. This is going to be mostly a series of screen-shots.&lt;br /&gt;
The first shot contains the &amp;#8220;new&amp;#8221; feature differentiating itself from the other one. You can now select to search in the currently open files. This is especially good if you are working on files on a remote server.&lt;/p&gt;
&lt;p style=&#34;text-align: center&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/06/search_in_open.png&#34;&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2011/06/search_in_open.png&#34; alt=&#34;&#34; width=&#34;572&#34; height=&#34;278&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The &amp;#8220;Find in files&amp;#8221; plugin opens new searches in new toolviews while this one has a button for adding new tabs if you want to save the old search.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&#34;text-align: center&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/06/search_with_tabs.png&#34;&gt;&lt;img class=&#34;alignnone size-full wp-image-990&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/06/search_with_tabs.png&#34; alt=&#34;&#34; width=&#34;585&#34; height=&#34;273&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/06/search_with_tabs.png 585w, https://kate-editor.org/wp-content/uploads/2011/06/search_with_tabs-300x140.png 300w&#34; sizes=&#34;(max-width: 585px) 100vw, 585px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Of course you can also search in a folder as before :) When you select to search in a folder the folder searching specific options are displayed. Those options can also be toggled with the rightmost tool-button.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&#34;text-align: center&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/06/search_in_files.png&#34;&gt;&lt;img class=&#34;alignnone size-full wp-image-991 aligncenter&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/06/search_in_files.png&#34; alt=&#34;&#34; width=&#34;584&#34; height=&#34;230&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/06/search_in_files.png 584w, https://kate-editor.org/wp-content/uploads/2011/06/search_in_files-300x118.png 300w&#34; sizes=&#34;(max-width: 584px) 100vw, 584px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And the final screen-shot is to show that it is possible to use regular expressions.&lt;/p&gt;
&lt;p style=&#34;text-align: center&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/06/search_options.png&#34;&gt;&lt;img class=&#34;alignnone size-full wp-image-992&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/06/search_options.png&#34; alt=&#34;&#34; width=&#34;626&#34; height=&#34;220&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/06/search_options.png 626w, https://kate-editor.org/wp-content/uploads/2011/06/search_options-300x105.png 300w&#34; sizes=&#34;(max-width: 626px) 100vw, 626px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The &amp;#8220;Replace&amp;#8221; feature is not yet implemented, but who knows ;) Ideas for a UI are welcome.&lt;br /&gt;
And that was it for this time. I hope you like the updates :)&lt;/p&gt;</description></item><item><title>Bug Squashing</title><link>https://kate-editor.org/2011/06/26/bug-squashing/</link><pubDate>Sat, 25 Jun 2011 22:41:22 +0000</pubDate><guid>https://kate-editor.org/2011/06/26/bug-squashing/</guid><description>&lt;p&gt;We&amp;#8217;ve managed to push our bugs down from ~430 to ~310 during the last two days. Some bugs are not valid anymore, but lots of bugs also &lt;a title=&#34;Kate Git Activity&#34; href=&#34;https://projects.kde.org/projects/kde/kdebase/kate/activity&#34; target=&#34;_blank&#34;&gt;really have been fixed&lt;/a&gt;. So in KDE 4.7 we will have the &lt;a href=&#34;https://kate-editor.org/&#34; title=&#34;Kate Homepage&#34;&gt;best Kate release&lt;/a&gt; ever :-)&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2011/06/DS2011banner.png&#34; alt=&#34;Going to Desktop Summit 2011&#34; /&gt;&lt;/p&gt;</description></item><item><title>Going to the Desktop Summit 2011 in Berlin :)</title><link>https://kate-editor.org/2011/06/25/going-to-the-desktop-summit-2011-in-berlin/</link><pubDate>Sat, 25 Jun 2011 10:28:14 +0000</pubDate><guid>https://kate-editor.org/2011/06/25/going-to-the-desktop-summit-2011-in-berlin/</guid><description>&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;
Just a quick &amp;#8220;me too&amp;#8221; post, will be around in Berlin ;)&lt;/p&gt;
&lt;p&gt;
Hope to meet up with a lot of KDE people once more.&lt;br /&gt; For the Kate team, at least me, Dominik and Erlend are around there.&lt;/td&gt;
&lt;td&gt;
&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2011/06/DS2011banner.png&#34; alt=&#34;Going to Desktop Summit 2011&#34; /&gt;
&lt;/td&gt;&lt;/tr&gt; &lt;/table&gt;</description></item><item><title>GSoC 2011 – Kate Code Folding – week 3 (Folding algorithm started)</title><link>https://kate-editor.org/2011/06/24/gsoc-2011-kate-code-folding-week-3-folding-algorithm-started/</link><pubDate>Fri, 24 Jun 2011 20:08:34 +0000</pubDate><guid>https://kate-editor.org/2011/06/24/gsoc-2011-kate-code-folding-week-3-folding-algorithm-started/</guid><description>&lt;p&gt;Hello guys!&lt;/p&gt;
&lt;p&gt;I’m writing my weekly article today because I have already started working on something else. I didn’t have time to finish the previous stage because I started the next phase of the project.&lt;/p&gt;
&lt;p&gt;I had a talk with my GSoC mentor and a couple of Kate developers and we all concluded that I should start working on the folding algorithm as soon as possible because this is the main (and most important) part. For this part, I built a small new project that will help me implement the algorithm and test it independently from Kate project. You can find this project (and my Kate clone) at this &lt;a href=&#34;http://quickgit.kde.org/?p=clones%2Fkate%2Flungu%2Fcode_folding.git&amp;amp;a=summary&#34;&gt;address&lt;/a&gt;. There are not so many methods implemented, but you can figure out how things will be developed.&lt;/p&gt;
&lt;p&gt;Fortunately, I don’t have to build this algorithm from scratch. I made some research and had some results by the time I was working on my proposal. &lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/06/folding-tree-algorithm-paper.pdf&#34;&gt;Here&lt;/a&gt; is the paper I wrote based on that research and &lt;a href=&#34;http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/adrian_lungu89/1&#34;&gt;here&lt;/a&gt; is my GSoC proposal, too (it is public now, so anyone can see it).&lt;/p&gt;
&lt;p&gt;If you have any questions or ideas, feel free to leave a comment here or to send an e-mail on Kate’s mailing list.&lt;/p&gt;
&lt;p&gt;I’ll keep you in touch with my progress,&lt;/p&gt;
&lt;p&gt;Adrian&lt;/p&gt;</description></item><item><title>Kate plugin updates part 2</title><link>https://kate-editor.org/2011/06/23/kate-plugin-updates-part-2/</link><pubDate>Thu, 23 Jun 2011 18:32:15 +0000</pubDate><guid>https://kate-editor.org/2011/06/23/kate-plugin-updates-part-2/</guid><description>&lt;p&gt;Second out in the this series of plugins update is the GDB plugin which has gained a view for local variables. If you have GDB &lt;a href=&#34;http://nikosams.blogspot.com/2010/01/gdb-qt-pretty-printers-updated.html&#34;&gt;pretty printes&lt;/a&gt; in use, you can even get various Qt types displayed nicely. Here are direct links to the relevant printers and an example &lt;a href=&#34;https://projects.kde.org/projects/extragear/kdevelop/kdevelop/repository/revisions/master/raw/debuggers/gdb/printers/gdbinit&#34;&gt;.gdbinit&lt;/a&gt;: &lt;a href=&#34;https://projects.kde.org/projects/extragear/kdevelop/kdevelop/repository/revisions/master/raw/debuggers/gdb/printers/qt4.py&#34;&gt;qt4.py&lt;/a&gt;, &lt;a href=&#34;https://projects.kde.org/projects/extragear/kdevelop/kdevelop/repository/revisions/master/raw/debuggers/gdb/printers/libstdcxx.py&#34;&gt;libstdcxx.py&lt;/a&gt; and &lt;a href=&#34;https://projects.kde.org/projects/extragear/kdevelop/kdevelop/repository/revisions/master/raw/debuggers/gdb/printers/kde4.py&#34;&gt;kde4.py&lt;/a&gt;.&lt;/p&gt;
&lt;figure id=&#34;attachment_945&#34; aria-describedby=&#34;caption-attachment-945&#34; style=&#34;width: 736px&#34; class=&#34;wp-caption alignnone&#34;&gt;[&lt;img class=&#34;size-full wp-image-945&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/06/locals.png&#34; alt=&#34;&#34; width=&#34;736&#34; height=&#34;360&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/06/locals.png 736w, https://kate-editor.org/wp-content/uploads/2011/06/locals-300x146.png 300w&#34; sizes=&#34;(max-width: 736px) 100vw, 736px&#34; /&gt;][6]&lt;figcaption id=&#34;caption-attachment-945&#34; class=&#34;wp-caption-text&#34;&gt;Locals view&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;The locals view does not (yet?) have any fancy features as editing the values and does not show which variables have changed.&lt;/p&gt;
&lt;p&gt;The handling of breakpoint and execution markers has also improved a bit.&lt;/p&gt;
&lt;p&gt;Last but not least in this series will be the new &amp;#8220;Search in files&amp;#8221; plugin.&lt;/p&gt;</description></item><item><title>Kate plugin updates part 1</title><link>https://kate-editor.org/2011/06/21/kate-plugin-updates-part-1/</link><pubDate>Tue, 21 Jun 2011 03:32:24 +0000</pubDate><guid>https://kate-editor.org/2011/06/21/kate-plugin-updates-part-1/</guid><description>&lt;div&gt;
KDE SC (or was it Platform?) 4.7 will bring some enhancements to Kate plugins. First up is the build plugin. The new thing for the build plugin is the ability to specify multiple targets per session. This means that you can build debug/releas/&amp;#8230; targets without having to jump between sessions. The default setup/targets contain a configure target with a CMake command and a build target that runs make.
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;
&lt;figure id=&#34;attachment_937&#34; aria-describedby=&#34;caption-attachment-937&#34; style=&#34;width: 719px&#34; class=&#34;wp-caption alignnone&#34;&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/06/Config.png&#34;&gt;&lt;img class=&#34;size-full wp-image-937&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/06/Config.png&#34; alt=&#34;&#34; width=&#34;719&#34; height=&#34;197&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/06/Config.png 719w, https://kate-editor.org/wp-content/uploads/2011/06/Config-300x82.png 300w&#34; sizes=&#34;(max-width: 719px) 100vw, 719px&#34; /&gt;&lt;/a&gt;&lt;figcaption id=&#34;caption-attachment-937&#34; class=&#34;wp-caption-text&#34;&gt;Screenshot of the default &#34;Config&#34; target&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure id=&#34;attachment_939&#34; aria-describedby=&#34;caption-attachment-939&#34; style=&#34;width: 716px&#34; class=&#34;wp-caption alignnone&#34;&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/06/Build1.png&#34;&gt;&lt;img class=&#34;size-full wp-image-939&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/06/Build1.png&#34; alt=&#34;&#34; width=&#34;716&#34; height=&#34;193&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/06/Build1.png 716w, https://kate-editor.org/wp-content/uploads/2011/06/Build1-300x80.png 300w&#34; sizes=&#34;(max-width: 716px) 100vw, 716px&#34; /&gt;&lt;/a&gt;&lt;figcaption id=&#34;caption-attachment-939&#34; class=&#34;wp-caption-text&#34;&gt;Screenshot of the default &#34;Build&#34; target&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
Targets can be added, copied and deleted. If the last target is deleted the default targets will be re-added.
&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
When the targets are set up, you can of course select a specific target by selecting the settings tab and there select the desired target from the small combo box. To make target switching faster, there is a &amp;#8220;Next Target&amp;#8221; action. This action will switch to the next target in the target combo-box. If the settings tab is not visible it will open the tab to display the current target. There is no default shortcut-key for the actions, but fortunately it is not hard to change a shortcut in KDE applications :) My personal shortcut-setup can be seen in the build-menu screen-shot.
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;
&lt;figure id=&#34;attachment_940&#34; aria-describedby=&#34;caption-attachment-940&#34; style=&#34;width: 250px&#34; class=&#34;wp-caption alignnone&#34;&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/06/Menu.png&#34;&gt;&lt;img class=&#34;size-full wp-image-940&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/06/Menu.png&#34; alt=&#34;&#34; width=&#34;250&#34; height=&#34;227&#34; /&gt;&lt;/a&gt;&lt;figcaption id=&#34;caption-attachment-940&#34; class=&#34;wp-caption-text&#34;&gt;Screenshot of the &#34;Build&#34; menu&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
Next up will be the GDB plugin
&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>GSoC 2011 – Kate Code Folding – week 2 (Architectural design)</title><link>https://kate-editor.org/2011/06/20/gsoc-2011-kate-code-folding-week-2-arhitectural-design/</link><pubDate>Mon, 20 Jun 2011 12:50:39 +0000</pubDate><guid>https://kate-editor.org/2011/06/20/gsoc-2011-kate-code-folding-week-2-arhitectural-design/</guid><description>&lt;p&gt;Hello!&lt;/p&gt;
&lt;p&gt;Last week I focused on analyzing the interface of the actual implementation. Now, it’s time to develop the new interface.&lt;/p&gt;
&lt;p&gt;As I mentioned in my proposal, one of my project’s goals is compatibility: I want to make as few changes as possible in the other sources. This is the reason why I studied the previous implementation for a whole week.&lt;/p&gt;
&lt;p&gt;Another goal of my project is &lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2011/06/diagram.png&#34;&gt;&lt;img class=&#34;alignleft size-medium wp-image-928&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/06/diagram-300x85.png&#34; alt=&#34;classes diagram&#34; width=&#34;300&#34; height=&#34;85&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/06/diagram-300x85.png 300w, https://kate-editor.org/wp-content/uploads/2011/06/diagram.png 401w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;simplicity. The interface will be implemented in an abstract class. This class will be inherited by two other classes: one for C style languages (those who use elements like “{}”) and one for Python style languages (those who use indentation level to define the code blocks), as you can see from the diagram. I believe the code will be simpler and clearer if it is more specialized.&lt;/p&gt;
&lt;p&gt;Because this part of the projects it’s about design, I would also like to define my data structures. Of course, there will be a Tree, the code folding tree, and some Nodes. It is very important to know where those Nodes are placed in document (row and column). This info needs to be updated when something changes in your document (e.g.: you add a new line, so all the Nodes change their rows). Because it is very time consuming to search through the folding tree, I suggest adding a second data structure.&lt;/p&gt;
&lt;p&gt;For this part, I have a dilemma: whether to use a Vector of Vector&lt;Nodes&gt;, or a Set&lt;row,Vector&lt;Nodes&gt;&amp;gt;.&lt;/p&gt;
&lt;p&gt;Let’s make it clear: I want to use a Vector of Nodes (actually pointers of Nodes) for each line (because we might have more than one Node per line). But how will be those Vectors stored?&lt;/p&gt;
&lt;p&gt;The first option is to use another Vector. The size of this Vector will be the same with the number of rows of the document and Vector[i] = all the nodes placed on the line “i”. This method is easy to be implemented and &lt;strong&gt;very fast&lt;/strong&gt;. The complexity of the updates will be &lt;strong&gt;constant&lt;/strong&gt; and that’s great. So, where is the problem? Memory usage: If we have a 10.000 document lines, then we have about 40 KB of data reserved for this data structure (even though there are no folding nodes at all).&lt;/p&gt;
&lt;p&gt;The second option is to use a Set&lt;row,Vector&gt;. For each row, that has at least one folding node, there will be a single entry into this set. This method uses the memory very optimally, but update functions will have a &lt;strong&gt;logarithmic&lt;/strong&gt; (if the set is kept sorted) or &lt;strong&gt;linear&lt;/strong&gt; complexity (much slower than the previous method).&lt;/p&gt;
&lt;p&gt;If you have any ideas, feel free to leave some feedback to this article. ;)&lt;/p&gt;
&lt;p&gt;Adrian&lt;/p&gt;</description></item><item><title>GSoC 2011 – Kate Code Folding</title><link>https://kate-editor.org/2011/06/11/gsoc-2011-kate-code-folding/</link><pubDate>Sat, 11 Jun 2011 17:10:30 +0000</pubDate><guid>https://kate-editor.org/2011/06/11/gsoc-2011-kate-code-folding/</guid><description>&lt;p&gt;Hi everybody!&lt;/p&gt;
&lt;p&gt;I am Adrian and, as Erlend already mentioned in a previous post, I will rewrite Kate’s code folding algorithm on this GSoC edition.&lt;/p&gt;
&lt;p&gt;Starting from this week, I will post a weekly report of my work. At the end of each week I will post some info about the project’s progress and some details about what I have scheduled for the next week (according to my presented timeline).&lt;/p&gt;
&lt;p&gt;I know that GSoC coding started for about 3 weeks, but, as you will see in my timeline, I had school exams until yesterday so I couldn’t work during this time. This won’t be a problem. I knew about that from the beginning and I scheduled my timeline starting with June 13&lt;sup&gt;th&lt;/sup&gt;. Also, this was mentioned in my proposal, so all the mentors are aware of it.&lt;/p&gt;
&lt;p&gt;My objective for the next week (&lt;strong&gt;13 June – 19 June&lt;/strong&gt;) is to get familiar with Kate project and QT. I already downloaded the source files, compiled them and took a look through them, so I will do that again (more carefully) and build a list of questions which will be sent to my mentor or posted on the mailing list. This way I will be able to focus later on &lt;strong&gt;what&lt;/strong&gt; I will write and not on &lt;strong&gt;how&lt;/strong&gt; I will do it.&lt;/p&gt;
&lt;p&gt;One more thing: Because this is my first post, I will also post my full timeline so that everyone knows what my next move will be. Here it is (pasted from my proposal):&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tentative Timeline&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;May 23 – June 12 – I won’t be able to work during this period because I will have some school exams during this time.&lt;/p&gt;
&lt;p&gt;Weeks 1-2 (13 June – 26 June) – Plan on how to fit all the “puzzle pieces” (algorithms, data structure and other objects used); implementing the abstract class that will ensure backwards compatibility; take an overall picture of Kate code folding.&lt;/p&gt;
&lt;p&gt;Weeks 3-4 (27 June – 10 July) – I will implement and test my tree-algorithms, which is the base of the code folding. The algorithms will be implemented in C++ using QT objects but as a separate project in order to test them as much (and easily) as possible.&lt;/p&gt;
&lt;p&gt;Weeks 5-6 (11 July – 24 July) – Implementing the two classes that extend the abstract class using all the information gained in previous weeks.&lt;/p&gt;
&lt;p&gt;Weeks 7-8 (25 June – 7 August) – Implementing a new feature for Kate code folding – “Code folding preview” (presented above)&lt;/p&gt;
&lt;p&gt;Weeks 9-10 (8 August – 22 August) – Lots of testing and some documentation (I saw that Kate source files have a little lack of code documentation, but I think some explanations about the implementation would be great).&lt;/p&gt;
&lt;p&gt;I am open to proposals about this project, so if you have any ideas that can make it better let me know and we will talk about them.&lt;/p&gt;
&lt;p&gt;Wish me good luck! :)&lt;/p&gt;</description></item><item><title>Getting Involved</title><link>https://kate-editor.org/2011/06/04/getting-involved/</link><pubDate>Sat, 04 Jun 2011 12:47:29 +0000</pubDate><guid>https://kate-editor.org/2011/06/04/getting-involved/</guid><description>&lt;p&gt;Recently we&amp;#8217;ve had several &lt;a href=&#34;https://kate-editor.org/2011/05/23/kates-folding-code-and-vi-mode-to-be-improved-by-gsoc-students/&#34; title=&#34;GSoC 2011 Students&#34;&gt;feature requests in comments of a blog post&lt;/a&gt;. If you are interested, you can easily implement this and contribute to Kate. And I&amp;#8217;ll even show you how to get started for the following feature. First, build Kate according to &lt;a rel=&#34;nofollow&#34; href=&#34;../get-it/&#34;&gt;/get-it/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Adding support for ctrl+w {left, right, up, down} to switch the active view.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Kate has a &lt;a href=&#34;https://kate-editor.org/kate-vi-mode/&#34; title=&#34;Kate&#39;s Vi Input Mode&#34;&gt;vi input mode&lt;/a&gt;. This way, vim users can still use their default work flow but still use Kate at the same time. What&amp;#8217;s missing in the current vi input mode implementation is support for view navigation. In vim, to move between different windows, press ctrl-w &lt;arrow keys&gt; to switch to the neighboring view. Implementing this is rather easy &amp;#8211; the following steps need to be taken care of:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Add vim bindings (=vim shortcuts) to the Kate&amp;#8217;s implementation of the &amp;#8216;normal mode&amp;#8217;.&lt;/li&gt;
&lt;li&gt;In the implementation, find all visible KateViews.&lt;/li&gt;
&lt;li&gt;Compare the global coordinates of the window geometry by using &lt;a title=&#34;QWidget::mapToGlobal&#34; href=&#34;http://doc.qt.nokia.com/4.7/qwidget.html#mapToGlobal&#34; target=&#34;_blank&#34;&gt;QWidget::mapToGlobal(const QPoint&amp;amp; pos)&lt;/a&gt; (for QPoint(0, 0) and QPoint(width(), height()) of all KateViews)&lt;/li&gt;
&lt;li&gt;Call setFocus to the nearest matching of the visible views.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&#34;mailto:kwrite-devel@kde.org&#34; title=&#34;Kate/KWrite mailing list&#34;&gt;Patches&lt;/a&gt; are welcome :)&lt;/p&gt;</description></item><item><title>Kate’s Folding Code and Vi Mode to be improved by GSoC students</title><link>https://kate-editor.org/2011/05/23/kates-folding-code-and-vi-mode-to-be-improved-by-gsoc-students/</link><pubDate>Mon, 23 May 2011 20:30:34 +0000</pubDate><guid>https://kate-editor.org/2011/05/23/kates-folding-code-and-vi-mode-to-be-improved-by-gsoc-students/</guid><description>&lt;p&gt;This year&amp;#8217;s Google Summer of Code (GSoC) has started and the Kate project has been lucky to get two students who will work on improving Kate&amp;#8217;s folding code and Vi input mode.&lt;/p&gt;
&lt;figure id=&#34;attachment_895&#34; aria-describedby=&#34;caption-attachment-895&#34; style=&#34;width: 192px&#34; class=&#34;wp-caption alignright&#34;&gt;[&lt;img class=&#34;size-medium wp-image-895 &#34; title=&#34;adrian&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/05/adrian-300x225.jpg&#34; alt=&#34;&#34; width=&#34;192&#34; height=&#34;144&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/05/adrian-300x225.jpg 300w, https://kate-editor.org/wp-content/uploads/2011/05/adrian-1024x768.jpg 1024w, https://kate-editor.org/wp-content/uploads/2011/05/adrian.jpg 1600w&#34; sizes=&#34;(max-width: 192px) 100vw, 192px&#34; /&gt;][1]&lt;figcaption id=&#34;caption-attachment-895&#34; class=&#34;wp-caption-text&#34;&gt;Adrian&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Adrian will work on improving the folding code which is in need of an overhaul:&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
My name is Adrian. I’m studying in Bucharest, Romania, but my hometown is Constanta, a seaside town from Romania as well. I am a 3rd year student at “Politehnica” University of Bucharest, majoring in Computer Science and Engineering. I have developed a passion for algorithms since High school when I participate in many programming competitions and took things to a new level during college.
&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
My GSoC project is called “Kate Code Folding” and I believe its name is quite explicit.  I chose this project because I am very familiar with the editor, as well as its code folding bugs. :)  Besides that, I am pretty excited that I have to develop a new algorithm for this project and I must say I find this task very challenging. For a better understanding of my project, here there are 2 paragraphs from my proposal, with no details, just the main ideas:
&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
My project idea is based on two elements. The first one is a new approach of the problem: transform one more complex problem into two simpler problems. To be more specific, as far as I know there are two types of programming languages: there are languages that use syntactical elements like {} or any other begin/end constructions (e.g.: C/C++) and there are languages that use indentation level to define their code blocks (e.g.: Python).
&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
The second idea is to have the new implementations compatible with the current one. What I mean is that most of the actual public functions will still be used in the new implementation (some of them will suffer a few modifications), to solve the dependencies problem in a smart and simple way. So there won’t be too many changes in the other source files.
&lt;/p&gt;
&lt;figure id=&#34;attachment_896&#34; aria-describedby=&#34;caption-attachment-896&#34; style=&#34;width: 155px&#34; class=&#34;wp-caption alignright&#34;&gt;[&lt;img class=&#34;size-medium wp-image-896 &#34; title=&#34;svyatoslav&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/05/svyatoslav-243x300.jpg&#34; alt=&#34;&#34; width=&#34;155&#34; height=&#34;192&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/05/svyatoslav-243x300.jpg 243w, https://kate-editor.org/wp-content/uploads/2011/05/svyatoslav-831x1024.jpg 831w, https://kate-editor.org/wp-content/uploads/2011/05/svyatoslav.jpg 952w&#34; sizes=&#34;(max-width: 155px) 100vw, 155px&#34; /&gt;][2]&lt;figcaption id=&#34;caption-attachment-896&#34; class=&#34;wp-caption-text&#34;&gt;Svyatoslav&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Svyatoslav will work on improving the Vi input mode in Kate:&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
I am Svyatoslav Kuzmich. I&amp;#8217;m a 2nd year student of Moscow Institute of Physics and Technology, department of Radioengineering and Computer Science.I usually write something like emulators and compilers but this Summer I am doing GSoC for KDE. I want to improve Vi input mode for Kate kpart. There are a lot of features already implemented. In some ways they works rather good. But there are some commands do not work like commands in Vim. So I want to fix them and to expand the list of commands by adding some insert and command mode&amp;#8217;s commands for working with Kate&amp;#8217;s tabs, window splits and bookmarks.
&lt;/p&gt;
&lt;p&gt;In more behind-the-scenes work, Svyatoslav will also write an extensive test suite for the Kate Vi Mode to make it easier to introduce new features without at the same time introducing regressions. This work has already begun.&lt;/p&gt;
&lt;p&gt;We will try to keep you updated throughout the summer. Please wish our GSoC students good luck! :-)&lt;/p&gt;</description></item><item><title>Kate Behavior at Exit</title><link>https://kate-editor.org/2011/04/28/kate-behavior-at-exit/</link><pubDate>Thu, 28 Apr 2011 20:37:16 +0000</pubDate><guid>https://kate-editor.org/2011/04/28/kate-behavior-at-exit/</guid><description>&lt;p&gt;From time to time it happens that bug reports get pretty much nasty. A single user or some users request a feature. If you argue, bashing starts.&lt;/p&gt;
&lt;p&gt;In this case, it&amp;#8217;s about Kate and the following scenario: You are editing several files (e.g. because you clicked on text files in dolphin). So Kate starts and you are not using an explicit session. If all files are saved, you can simply quit Kate. &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=267356&#34; target=&#34;_blank&#34;&gt;Bug #267356 requests&lt;/a&gt;, that the user is asked whether to save the session or not. Right now, if you are not using a session, Kate simply closes and the file list is lost. Comments are welcome, &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=267356&#34; target=&#34;_blank&#34;&gt;especially in the report&lt;/a&gt;. But &lt;em&gt;please&lt;/em&gt; be objective and polite. Thanks&amp;#8230;&lt;/p&gt;
&lt;p&gt;PS: Sometimes open source development is real fun. Sometimes it&amp;#8217;s not :p&lt;/p&gt;</description></item><item><title>Kate’s Tab Bar Plugins</title><link>https://kate-editor.org/2011/04/25/kates-tab-bar-plugins/</link><pubDate>Mon, 25 Apr 2011 14:30:59 +0000</pubDate><guid>https://kate-editor.org/2011/04/25/kates-tab-bar-plugins/</guid><description>&lt;p&gt;If you check Kate&amp;#8217;s plugin list, you will recognize that there are two different tab bar plugins available. The first one is &lt;strong&gt;Tabify&lt;/strong&gt;. This plugin adds a standard KDE tab bar to the top of Kate&amp;#8217;s main window:&lt;img class=&#34;aligncenter size-full wp-image-875&#34; title=&#34;Tab Bar&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/04/tabbar.png&#34; alt=&#34;&#34; width=&#34;667&#34; height=&#34;359&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/04/tabbar.png 667w, https://kate-editor.org/wp-content/uploads/2011/04/tabbar-300x161.png 300w&#34; sizes=&#34;(max-width: 667px) 100vw, 667px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;The plugin shows the same entries as the &amp;#8220;Documents&amp;#8221; tool view on the left. With drag&amp;amp;drop, the tabs can be moved around. In KDE SC &amp;lt;= 4.6.2 this plugin is called Tabify. In KDE SC &amp;gt;= 4.6.3 the name is simply &amp;#8220;Tab Bar&amp;#8221;.&lt;/p&gt;
&lt;p&gt;There is another plugin, called Tab Bar Extension in KDE SC &amp;lt;=4.6.2 (and Multiline Tab Bar in KDE SC &amp;gt;=4.6.3) that also adds a tab bar to Kate&amp;#8217;s mainwindow:&lt;img class=&#34;aligncenter size-full wp-image-876&#34; title=&#34;Multiline Tab Bar&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2011/04/multiline-tabbar.png&#34; alt=&#34;&#34; width=&#34;637&#34; height=&#34;329&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2011/04/multiline-tabbar.png 637w, https://kate-editor.org/wp-content/uploads/2011/04/multiline-tabbar-300x154.png 300w&#34; sizes=&#34;(max-width: 637px) 100vw, 637px&#34; /&gt;&lt;/p&gt;
&lt;p&gt;As can be seen, this tab bar can be configured to span multiple lines in order to show more documents at the same time. Further, there are features like tab highlighting so that a document can quickly be found when working on a huge list of documents. There are more options in the configure dialog of this plugin (click small configure button on the right). In KDE 4.7, it is possible to change to highlight a tab by clicking on it with the middle mouse button and clear the highlight with CTRL+middle-click.&lt;/p&gt;
&lt;p&gt;There have been requests to remove the non-standard plugin from Kate and just provide the standard conform Tabify plugin. I was about to do that, but then, we do have users that use the multiline tab bar. And as it works well and provides some features the default tab bar does not have, I&amp;#8217;ve finally decided to keep it.&lt;/p&gt;
&lt;p&gt;It is worth to mention that there were quite a lot of voices in the past requesting a tab bar. It was even requested to remove the &amp;#8220;Documents&amp;#8221; tool view, listing all the documents. However both tab bar plugins are not able to provide easy access to the opened documents, if you have e.g. 50 documents opened. Hence, the Documents tool view will remain the default, just as it always was in Kate&amp;#8217;s life :)&lt;/p&gt;</description></item><item><title>KDE Everywhere?</title><link>https://kate-editor.org/2011/03/08/kde-everywhere/</link><pubDate>Tue, 08 Mar 2011 07:36:29 +0000</pubDate><guid>https://kate-editor.org/2011/03/08/kde-everywhere/</guid><description>&lt;p&gt;My last post mentioned &lt;a href=&#34;http://sourceforge.net/p/necessitas/home/&#34;&gt;Necessitas&lt;/a&gt; which provides the means to have Qt on Android.&lt;br /&gt;
Whereas still a early preview release, it already allows you to compile and run Qt applications on Android &amp;gt;= 1.6 without any big hassle and integrates that into QtCreator!&lt;/p&gt;
&lt;p&gt;I tried out the SDK in the last days, it is really easy to use and setup, like seen &lt;a href=&#34;http://sourceforge.net/p/necessitas/wiki/How%20to%20install%20Necessitas%20SDK/&#34;&gt;here&lt;/a&gt; and &lt;a href=&#34;http://labs.qt.nokia.com/2011/02/28/necessitas/&#34;&gt;here (with good video that shows the steps)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What is missing here? KDE :)&lt;/p&gt;
&lt;p&gt;I think a nice thing to have would be a port of parts of kdelibs, like the embedded profile or how you name it and providing an app like Ministro in Necessitas that allows a system wide install of this libs.&lt;br /&gt;
Having tried Ministro and the example app from the market, that works like a charm for Qt already. I would love to see that for kdelibs as well. Then really a lot of users are just two clicks away from great KDE apps like the good edu stuff and games which really can fly on phones and even more tablets ;)&lt;br /&gt;
Embedded developers with spare time: Get the fame and port it .P&lt;/p&gt;
&lt;p&gt;I doubt Kate itself would make a good appearance on a phone, and I doubt even I would use it there. But for tablets? Who knows, that might be nice for the &amp;#8220;I hack one liners during Fringe&amp;#8221; session in the evening.&lt;/p&gt;</description></item><item><title>Qt Everywhere?</title><link>https://kate-editor.org/2011/03/06/qt-everywhere/</link><pubDate>Sun, 06 Mar 2011 15:40:25 +0000</pubDate><guid>https://kate-editor.org/2011/03/06/qt-everywhere/</guid><description>&lt;p&gt;After the latest changes in Nokia, I was kind of scared that &amp;#8220;Qt Everywhere!&amp;#8221; like printed on my nice bathing towel won&amp;#8217;t really happen any more, at least not as fast as thought.&lt;/p&gt;
&lt;p&gt;Now I got my new phone, Android based, and tried out &lt;a href=&#34;http://sourceforge.net/p/necessitas/home/&#34;&gt;Necessitas&lt;/a&gt;. And I must say, I am impressed. Just downloaded Ministro from the Android Market (yes, just like that, no rooting, no hacking, nothing) and the hello world demo and it runs :P&lt;/p&gt;
&lt;p&gt;I hope this project will really take off even more as soon as a stable Qt 4.8 is around! And that we see some KDE fame there, too. Really, this is not to be underestimated. The Android market share grows and the current market policies allow open source there, unlike what we see for the WP7 or iOS systems.&lt;/p&gt;
&lt;p&gt;Already now: Thanks to the Necessitas team, great work! Really necessary ;)&lt;/p&gt;</description></item><item><title>KDE and Git, Current Changes</title><link>https://kate-editor.org/2011/01/30/kde-and-git-current-changes/</link><pubDate>Sun, 30 Jan 2011 10:14:46 +0000</pubDate><guid>https://kate-editor.org/2011/01/30/kde-and-git-current-changes/</guid><description>&lt;p&gt;Thanks to the massive work of sysadmin and others (like Ian Monroe), kdelibs and kdebase are now converted to Git.&lt;/p&gt;
&lt;p&gt;In parallel, the move of all kate related code to the kate.git was done and announced. Kate Part / App + KWrite reside now in kate.git on git.kde.org and this is the central place for kate development, like it was already before, but now without the shadow-copies in three other repositories.&lt;/p&gt;
&lt;p&gt;As it has shown in the past, this centralisation of parts which belong together helps to get stuff done for our project. The &lt;a href=&#34;https://kate-editor.org/get-it/&#34;&gt;Get It!&lt;/a&gt; page on kate-editor.org is already updated (as now documentation is in the module, too, and some CMake parameters have changed).&lt;/p&gt;
&lt;p&gt;I can only say: If you want to add some feature or hassle with some bug, give it a try. It&amp;#8217;s dead easy to get and compile a fresh Kate (even with a bit older kdelibs around). You are welcome ;)&lt;/p&gt;
&lt;p&gt;P.S. Thanks again all the people working on the transition to Git and sysadmin for operating the nice projects.kde.org and git.kde.org services!&lt;/p&gt;</description></item><item><title>Kate progress, Git and happy new year ;)</title><link>https://kate-editor.org/2010/12/29/kate-progress-git-and-happy-new-year/</link><pubDate>Wed, 29 Dec 2010 18:04:01 +0000</pubDate><guid>https://kate-editor.org/2010/12/29/kate-progress-git-and-happy-new-year/</guid><description>&lt;p&gt;As Dominik already points out in his &lt;a href=&#34;https://kate-editor.org/2010/12/29/kate-in-kde-4-6/&#34;&gt;blog&lt;/a&gt;, Kate has made nice progress for KDE 4.6.&lt;/p&gt;
&lt;p&gt;Some of the latest fixes, like for some nasty &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=248305&#34;&gt;search bug&lt;/a&gt; didn&amp;#8217;t make it in RC1, btw., I was too lame with Git -&amp;gt; SVN syncs.&lt;br /&gt;
Anyway, I have now synced and backported to KDE 4.6 branch all pending fixes.&lt;/p&gt;
&lt;p&gt;For the next KDE SC release 4.7 (here you go, I wrote SC :)), I hope this syncing will no longer be necessary.&lt;br /&gt;
At least Kate app + part + KWrite should then be only in the kate.git.&lt;br /&gt;
I can live with ktexteditor remaining in kdelibs, if removing that and still keeping BC and SC would be too much work. But part and app are at most runtime dependencies anyway.&lt;/p&gt;
&lt;p&gt;Last but not least, I wish you all a good start into a happy new year ;)&lt;/p&gt;</description></item><item><title>Kate in KDE 4.6</title><link>https://kate-editor.org/2010/12/29/kate-in-kde-4-6/</link><pubDate>Wed, 29 Dec 2010 10:47:20 +0000</pubDate><guid>https://kate-editor.org/2010/12/29/kate-in-kde-4-6/</guid><description>&lt;p&gt;Some days ago KDE 4.6 was branched. So what will Kate in KDE 4.6 bring?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a title=&#34;Kate Tree View Plugin&#34; href=&#34;https://kate-editor.org/2010/09/10/tree-view-plugin-introduction/&#34; target=&#34;_blank&#34;&gt;new tree view&lt;/a&gt; as &amp;#8220;Documents&amp;#8221; sidebar completely replaces the old file list. It supports the simple list mode as well as a pseudo-intelligent tree view to group files. The &amp;#8220;Documents&amp;#8221; tab is now implemented as plugin (always loaded), meaning that it brought a code cleanup as well. We hope you like it! :)&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Kate Swap Files&#34; href=&#34;https://kate-editor.org/2010/07/12/gsoc-swap-files-for-kate/&#34; target=&#34;_self&#34;&gt;Swap&lt;/a&gt; &lt;a title=&#34;Kate Swap Files&#34; href=&#34;https://kate-editor.org/2010/07/27/gsoc-view-differences-for-kates-swap-files/&#34; target=&#34;_self&#34;&gt;file&lt;/a&gt; support, meaning that you can recover all your unsaved data for local files on the next Kate startup.&lt;/li&gt;
&lt;li&gt;Ability to always load plugins.&lt;/li&gt;
&lt;li&gt;New &lt;a title=&#34;Kate SQL Plugin&#34; href=&#34;../2010/07/29/katesql-a-new-plugin-for-kate/&#34; target=&#34;_self&#34;&gt;SQL Query plugin&lt;/a&gt;. The day we blogged about it had the most visits in the entire kate-editor.org history. So it seems the the SQL plugin is a really nice addon for web developers! :)&lt;/li&gt;
&lt;li&gt;New &lt;a title=&#34;Kate GDB Plugin&#34; href=&#34;https://kate-editor.org/2010/10/06/introducing-kate-gdb-plugin/&#34; target=&#34;_self&#34;&gt;GNU Debugger (GDB) Plugin&lt;/a&gt;!&lt;/li&gt;
&lt;li&gt;New &lt;a title=&#34;Highlight Selection&#34; href=&#34;https://kate-editor.org/2010/11/14/highlight-selected-text/&#34; target=&#34;_self&#34;&gt;Highlight Selected Text Plugin&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Ability to &lt;a title=&#34;Scripted Actions&#34; href=&#34;https://kate-editor.org/2010/07/09/kate-scripted-actions/&#34; target=&#34;_self&#34;&gt;add scripts to the menu and bind shortcuts&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Kate got a new homepage on &lt;a title=&#34;Kate Homepage&#34; href=&#34;http://www.kate-editor.org&#34; target=&#34;_self&#34;&gt;&lt;a href=&#34;http://www.kate-editor.org&#34;&gt;http://www.kate-editor.org&lt;/a&gt;&lt;/a&gt; featuring WordPress.&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Resolved Issues in Kate&#34; href=&#34;https://bugs.kde.org/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;product=kate&amp;long_desc_type=substring&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;keywords_type=allwords&amp;keywords=&amp;bug_status=RESOLVED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;chfieldfrom=2010-08-10&amp;chfieldto=2010-12-31&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&#34; target=&#34;_blank&#34;&gt;Lots of bugs fixed&lt;/a&gt; since the KDE 4.5.0 release.&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Kate Smart Classes Removed&#34; href=&#34;https://kate-editor.org/2010/08/13/smartranges-goodbye/&#34; target=&#34;_self&#34;&gt;SmartCursors and SmartRanges&lt;/a&gt; are gone, resulting in more stable and clean code. MovingCursors and MovingRanges replace the old classes and work reliable. For instance, KDevelop is already ported leading to less crashes.&lt;/li&gt;
&lt;li&gt;Christoph found the &lt;a title=&#34;Kate History&#34; href=&#34;https://kate-editor.org/2010/08/15/kate-history/&#34; target=&#34;_self&#34;&gt;emails of the early days of Kate&lt;/a&gt; again. A funny read! :)&lt;/li&gt;
&lt;li&gt;&lt;a title=&#34;Kate Unit Tests&#34; href=&#34;https://kate-editor.org/2010/08/23/kate-night-make/&#34; target=&#34;_self&#34;&gt;Daily unit test runs&lt;/a&gt;. We have more and more unit tests, securing the correct behavior of e.g. search&amp;amp;replace, the text buffer, &lt;a title=&#34;Encoding Detection&#34; href=&#34;https://kate-editor.org/2010/08/26/encoding-detection-revised/&#34; target=&#34;_blank&#34;&gt;encoding detection&lt;/a&gt; or indenters.&lt;/li&gt;
&lt;li&gt;Kate development mostly moved to &lt;a title=&#34;Kate on Git&#34; href=&#34;https://kate-editor.org/2010/11/16/kate-on-git-kde-org/&#34; target=&#34;_self&#34;&gt;KDE&amp;#8217;s git infrastructure&lt;/a&gt;, resulting in very easy &lt;a title=&#34;Building Kate&#34; href=&#34;https://kate-editor.org/get-it/&#34; target=&#34;_self&#34;&gt;build instructions&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The default settings of a session are now stored in the katerc file again, rendering the default.katesession obsolete. This means you will have to configure your default session again (sorry!). On the other hand, this &lt;a title=&#34;Resolved Issues in Kate&#34; href=&#34;https://bugs.kde.org/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;product=kate&amp;long_desc_type=substring&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;keywords_type=allwords&amp;keywords=&amp;bug_status=RESOLVED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;chfieldfrom=2010-08-10&amp;chfieldto=2010-12-31&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&#34; target=&#34;_blank&#34;&gt;fixed quite some bugs&lt;/a&gt; with regard to the session handling.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Credit where credit is due!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There were lots of developers involved who helped to improve Kate. Thanks a lot to every one of you! Without your contribution, Kate would not be what it is :-) Keep it up!&lt;/p&gt;</description></item><item><title>KDevelop 4.2 Beta 1 released</title><link>https://kate-editor.org/2010/12/17/kdevelop-4-2-beta-1-released-2/</link><pubDate>Fri, 17 Dec 2010 20:49:29 +0000</pubDate><guid>https://kate-editor.org/2010/12/17/kdevelop-4-2-beta-1-released-2/</guid><description>&lt;p&gt;Hey all,&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m happy to announce the immediate availability of KDevelop 4.2 Beta 1. This is a testing version and any kind of feedback would be welcome and appreciated. Please use our &lt;a href=&#34;http://bugs.kde.org&#34;&gt;bugtracker&lt;/a&gt;. You can &lt;a href=&#34;http://download.kde.org/download.php?url=unstable/kdevelop/4.1.80/src/&#34;&gt;download the sources&lt;/a&gt; or wait for your distribution to create packages.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Anyone who runs KDE 4.6 or later needs this version (or any later). This is because the &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;SmartRange&lt;/code&gt;&lt;/span&gt; interface in Kate got nuked and replaced with &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;MovingRange&lt;/code&gt;&lt;/span&gt; interface. Many thanks to David Nolden for more or less single handedly porting KDevelop to this new architecture.&lt;/p&gt;
&lt;p&gt;The good news doesn&amp;#8217;t end here though, KDevelop 4.2 ships with lots of notable changes and new features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MovingRange` support (Thanks to David Nolden)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.ben2367.fr/2010/12/02/find-and-replace/&#34;&gt;Grep Plugin rewrite with replace functionality&lt;/a&gt; (Thanks to Silvere Lestang, Julien Desgats, Benjamin Port)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.ben2367.fr/2010/11/11/kdevelop-when-development-documentation-come-to-you/&#34;&gt;QtHelp plugin now supports arbitrary &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;.qch&lt;/code&gt;&lt;/span&gt; files&lt;/a&gt; (Thanks to Benjamin Port)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.ben2367.fr/2010/12/01/man-page-documentation-in-kdevelop/&#34;&gt;ManPage plugin&lt;/a&gt; (Thanks to Benjamin Port, Yannick Motta)&lt;/li&gt;
&lt;li&gt;new look for code assistants (Thanks to Olivier JG)&lt;/li&gt;
&lt;li&gt;filter for the project model view (Thanks to Eugene Agafonov)&lt;/li&gt;
&lt;li&gt;improved &amp;#8220;Problems&amp;#8221; toolview, along with &amp;#8220;TODO/FIXME&amp;#8221; browsing (Thanks to Dmitry Risenberg)&lt;/li&gt;
&lt;li&gt;better standards compliance in the C++ macro implementation (Thanks to Dmitry Risenberg)&lt;/li&gt;
&lt;li&gt;argument dependent lookup for the C++ plugin (Thanks to Ciprian Ciubotariu)&lt;/li&gt;
&lt;li&gt;open with external application by default (esp. useful for Qt Designer &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;.ui&lt;/code&gt;&lt;/span&gt; files)&lt;/li&gt;
&lt;li&gt;PHP: rainbow colors for all vars (and no nested functions or similar), esp. useful for scripts without Classes/Functions&lt;/li&gt;
&lt;li&gt;code cleanup for working sets&lt;/li&gt;
&lt;li&gt;better handling of locked sessions (locked session gets activated or the user gets asked whether he wants to remove the lock file)&lt;/li&gt;
&lt;li&gt;improved Snippets editing usability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Along with these big changes, lots of small improvements have been made and we will continue to polish and harden out this branch in order to give you a stable, fast KDevelop 4.2 soon. Considering the impact and amount of changes, testing would be &lt;em&gt;very&lt;/em&gt; welcome in order to prevent regressions and similar in the final 4.2 version.&lt;/p&gt;
&lt;p&gt;Bye and thanks again to all contributors who made this possible. I&amp;#8217;m especially thrilled to welcome so many new people, well done!&lt;/p&gt;</description></item><item><title>KDevelop 4.2 Beta 1 released</title><link>https://kate-editor.org/2010/12/17/kdevelop-4-2-beta-1-released/</link><pubDate>Fri, 17 Dec 2010 20:49:29 +0000</pubDate><guid>https://kate-editor.org/2010/12/17/kdevelop-4-2-beta-1-released/</guid><description>&lt;p&gt;Hey all,&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m happy to announce the immediate availability of KDevelop 4.2 Beta 1. This is a testing version and any kind of feedback would be welcome and appreciated. Please use our &lt;a href=&#34;http://bugs.kde.org&#34;&gt;bugtracker&lt;/a&gt;. You can &lt;a href=&#34;http://download.kde.org/download.php?url=unstable/kdevelop/4.1.80/src/&#34;&gt;download the sources&lt;/a&gt; or wait for your distribution to create packages.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Anyone who runs KDE 4.6 or later needs this version (or any later). This is because the &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;SmartRange&lt;/code&gt;&lt;/span&gt; interface in Kate got nuked and replaced with &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;MovingRange&lt;/code&gt;&lt;/span&gt; interface. Many thanks to David Nolden for more or less single handedly porting KDevelop to this new architecture.&lt;/p&gt;
&lt;p&gt;The good news doesn&amp;#8217;t end here though, KDevelop 4.2 ships with lots of notable changes and new features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MovingRange` support (Thanks to David Nolden)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.ben2367.fr/2010/12/02/find-and-replace/&#34;&gt;Grep Plugin rewrite with replace functionality&lt;/a&gt; (Thanks to Silvere Lestang, Julien Desgats, Benjamin Port)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.ben2367.fr/2010/11/11/kdevelop-when-development-documentation-come-to-you/&#34;&gt;QtHelp plugin now supports arbitrary &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;.qch&lt;/code&gt;&lt;/span&gt; files&lt;/a&gt; (Thanks to Benjamin Port)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.ben2367.fr/2010/12/01/man-page-documentation-in-kdevelop/&#34;&gt;ManPage plugin&lt;/a&gt; (Thanks to Benjamin Port, Yannick Motta)&lt;/li&gt;
&lt;li&gt;new look for code assistants (Thanks to Olivier JG)&lt;/li&gt;
&lt;li&gt;filter for the project model view (Thanks to Eugene Agafonov)&lt;/li&gt;
&lt;li&gt;improved &amp;#8220;Problems&amp;#8221; toolview, along with &amp;#8220;TODO/FIXME&amp;#8221; browsing (Thanks to Dmitry Risenberg)&lt;/li&gt;
&lt;li&gt;better standards compliance in the C++ macro implementation (Thanks to Dmitry Risenberg)&lt;/li&gt;
&lt;li&gt;argument dependent lookup for the C++ plugin (Thanks to Ciprian Ciubotariu)&lt;/li&gt;
&lt;li&gt;open with external application by default (esp. useful for Qt Designer &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;.ui&lt;/code&gt;&lt;/span&gt; files)&lt;/li&gt;
&lt;li&gt;PHP: rainbow colors for all vars (and no nested functions or similar), esp. useful for scripts without Classes/Functions&lt;/li&gt;
&lt;li&gt;code cleanup for working sets&lt;/li&gt;
&lt;li&gt;better handling of locked sessions (locked session gets activated or the user gets asked whether he wants to remove the lock file)&lt;/li&gt;
&lt;li&gt;improved Snippets editing usability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Along with these big changes, lots of small improvements have been made and we will continue to polish and harden out this branch in order to give you a stable, fast KDevelop 4.2 soon. Considering the impact and amount of changes, testing would be &lt;em&gt;very&lt;/em&gt; welcome in order to prevent regressions and similar in the final 4.2 version.&lt;/p&gt;
&lt;p&gt;Bye and thanks again to all contributors who made this possible. I&amp;#8217;m especially thrilled to welcome so many new people, well done!&lt;/p&gt;</description></item><item><title>KDevelop and Kate advancements over the last weeks</title><link>https://kate-editor.org/2010/11/21/kdevelop-and-kate-advancements-over-the-last-weeks-2/</link><pubDate>Sun, 21 Nov 2010 15:38:15 +0000</pubDate><guid>https://kate-editor.org/2010/11/21/kdevelop-and-kate-advancements-over-the-last-weeks-2/</guid><description>
&lt;p&gt;Hey all,&lt;/p&gt;
&lt;p&gt;I didn&amp;#8217;t blog in a long while so I thought I&amp;#8217;d dump some notable things I did over the last weeks. It&amp;#8217;s probably neither complete nor thorough - you should try it all out to see it for yourself :)&lt;/p&gt;
&lt;h5 id=&#34;kate&#34;&gt;Kate&lt;/h5&gt;
&lt;p&gt;Lets start small with my Kate contributions. I really concentrate on KDevelop nowadays since Kate works quite well for me and I don&amp;#8217;t have many itches to scratch anymore :) So, what did I do these last weeks? Mostly cleanup and performance work, especially regarding MovingRanges which of course is mostly needed for a good experience in the upcoming KDevelop 4.2. With the help of Dominik Haumann I also went through our indentation unit tests and made sure we expect all currently failing test cases, as well as fixing those I could. Now we (finally!) have a passing test suite and get noticed about introduced regressions. Awesome!&lt;/p&gt;
&lt;h5 id=&#34;kdevelop&#34;&gt;KDevelop&lt;/h5&gt;
&lt;p&gt;Of course I still concentrate my contributions on KDevelop and related plugins. What I find quite interesting is that I&amp;#8217;m now for over two months in a &lt;em&gt;&amp;#8220;polish-and-bugfixing&amp;#8221;&lt;/em&gt;-mode, without adding much new features. I think that shows that I&amp;#8217;m quite satisfied with the existing features, just not with the way they are integrated. E.g. the Kate performance improvements above were done in order to make &amp;#8220;reformat source&amp;#8221; not hang the IDE for a couple of seconds anymore, in KDevelop 4.2 it will only be like one second for &lt;em&gt;really&lt;/em&gt; big source files. I&amp;#8217;ve also tackled our black sheep, the &amp;#8220;launch configuration&amp;#8221; dialog. I didn&amp;#8217;t rewrite it, but I did some polishing and have some more ideas to hopefully get it into a useable state. Oh, I just remember: I also spent some time on the &amp;#8220;Snippets&amp;#8221; plugin, restructured the editor dialogs a bit and made them use Katepart as well, for syntax highlighting and proper editor features :)&lt;/p&gt;
&lt;p&gt;I generally care about small things nowadays, like e.g. that all widgets have a proper tooltip. This is also something where you all could help: If you find a widget in KDevelop master (4.2) that has no tooltip, please notify me! I&amp;#8217;ve added those e.g. to the outline and quickopen toolbar widgets among others.&lt;/p&gt;
&lt;p&gt;And since KDevelop 4.1 was in beta stage I&amp;#8217;ve fixed lots of bugs and continue to do that. I triage each new bug for KDevelop/KDevplatform, request feedback and valgrind logs and try to fix whatever I can. Even now I can safely assume that KDevelop 4.2 will be more stable than 4.1, even though we did lots of architectural changes in the platform, esp. regarding MovingRanges.&lt;/p&gt;
&lt;p&gt;And now to the last and to me most pleasing part: New features! Remember how I said I didn&amp;#8217;t do lots of feature development at all these past days? This is basically true, instead I let others do the work :) We really get more and more patches and merge requests by other people, and I did merge quite some changes already. We have an &lt;a href=&#34;http://gitorious.org/kdevelop/kdevplatform/merge_requests/33&#34;&gt;improved &amp;#8220;find in files&amp;#8221; plugin&lt;/a&gt; now, and &lt;a href=&#34;http://blog.ben2367.fr/tag/kdevelop/&#34;&gt;the French students&lt;/a&gt; are working hard on giving it replace functionality as well! We already merged their &lt;a href=&#34;http://blog.ben2367.fr/2010/11/11/kdevelop-when-development-documentation-come-to-you/&#34;&gt;improved QtHelp plugin&lt;/a&gt; that gives you the ability to integrate arbitrary &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;.qch&lt;/code&gt;&lt;/span&gt; files into KDevelop, e.g. &lt;a href=&#34;http://api.kde.org/&#34;&gt;the KDE Api documentation&lt;/a&gt;. They also work on [&lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;man&lt;/code&gt;&lt;/span&gt; integration](, which will be a joy for all STD C / C++ developers.&lt;/p&gt;
&lt;p&gt;Furthermore we now have a &lt;a href=&#34;http://gitorious.org/kdevelop/kdevplatform/merge_requests/40&#34;&gt;&amp;#8220;Filter&amp;#8230;&amp;#8221; line edit&lt;/a&gt; above the project manager view, &lt;a href=&#34;http://gitorious.org/kdevelop/kdevelop/merge_requests/27&#34;&gt;&amp;#8220;Argument Dependent Lookup&amp;#8221;&lt;/a&gt; for the C++ plugin, a &lt;a href=&#34;http://gitorious.org/kdevelop/kdevplatform/merge_requests/39&#34;&gt;much improved &amp;#8220;Problems&amp;#8221; toolview&lt;/a&gt;, with the ability to show TODOs etc. pp.&lt;/p&gt;
&lt;p&gt;This is just from the last few weeks, and it&amp;#8217;s work done by many new contributors. It&amp;#8217;s really very cool to see this happening.&lt;/p&gt;
&lt;p&gt;Oh, and I personally worked a bit on the &lt;a href=&#34;http://websvn.kde.org/trunk/playground/devtools/kdevelop4-extra-plugins/qmake/&#34;&gt;QMake support&lt;/a&gt; for KDevelop, I&amp;#8217;m not sure whether I will manage to get this into a usable state for KDevelop 4.2, but I already use it at work.&lt;/p&gt;
&lt;p&gt;Which brings me to the last part of this blog post, release schedules! I&amp;#8217;ll finally release a KDevelop 4.1.1 bug fix version next week, and will make sure that there is a 4.2 release just before / shortly after the KDE 4.6 release in January. The big &amp;#8220;issue&amp;#8221; there is that &lt;strong&gt;KDevelop 4.1 will not work with KDE 4.6+&lt;/strong&gt;, since there are no SmartRanges in Kate from 4.6 anymore. So a big fat warning to any adventurous tester out there: If you want to try KDE 4.6 betas, remember that you&amp;#8217;ll have to get KDevelop master (== 4.2) as well somehow!&lt;/p&gt;
&lt;p&gt;So, that&amp;#8217;s it for now, have a nice sunday everyone :)&lt;/p&gt;</description></item><item><title>KDevelop and Kate advancements over the last weeks</title><link>https://kate-editor.org/2010/11/21/kdevelop-and-kate-advancements-over-the-last-weeks/</link><pubDate>Sun, 21 Nov 2010 15:38:15 +0000</pubDate><guid>https://kate-editor.org/2010/11/21/kdevelop-and-kate-advancements-over-the-last-weeks/</guid><description>
&lt;p&gt;Hey all,&lt;/p&gt;
&lt;p&gt;I didn&amp;#8217;t blog in a long while so I thought I&amp;#8217;d dump some notable things I did over the last weeks. It&amp;#8217;s probably neither complete nor thorough - you should try it all out to see it for yourself :)&lt;/p&gt;
&lt;h5 id=&#34;kate&#34;&gt;Kate&lt;/h5&gt;
&lt;p&gt;Lets start small with my Kate contributions. I really concentrate on KDevelop nowadays since Kate works quite well for me and I don&amp;#8217;t have many itches to scratch anymore :) So, what did I do these last weeks? Mostly cleanup and performance work, especially regarding MovingRanges which of course is mostly needed for a good experience in the upcoming KDevelop 4.2. With the help of Dominik Haumann I also went through our indentation unit tests and made sure we expect all currently failing test cases, as well as fixing those I could. Now we (finally!) have a passing test suite and get noticed about introduced regressions. Awesome!&lt;/p&gt;
&lt;h5 id=&#34;kdevelop&#34;&gt;KDevelop&lt;/h5&gt;
&lt;p&gt;Of course I still concentrate my contributions on KDevelop and related plugins. What I find quite interesting is that I&amp;#8217;m now for over two months in a &lt;em&gt;&amp;#8220;polish-and-bugfixing&amp;#8221;&lt;/em&gt;-mode, without adding much new features. I think that shows that I&amp;#8217;m quite satisfied with the existing features, just not with the way they are integrated. E.g. the Kate performance improvements above were done in order to make &amp;#8220;reformat source&amp;#8221; not hang the IDE for a couple of seconds anymore, in KDevelop 4.2 it will only be like one second for &lt;em&gt;really&lt;/em&gt; big source files. I&amp;#8217;ve also tackled our black sheep, the &amp;#8220;launch configuration&amp;#8221; dialog. I didn&amp;#8217;t rewrite it, but I did some polishing and have some more ideas to hopefully get it into a useable state. Oh, I just remember: I also spent some time on the &amp;#8220;Snippets&amp;#8221; plugin, restructured the editor dialogs a bit and made them use Katepart as well, for syntax highlighting and proper editor features :)&lt;/p&gt;
&lt;p&gt;I generally care about small things nowadays, like e.g. that all widgets have a proper tooltip. This is also something where you all could help: If you find a widget in KDevelop master (4.2) that has no tooltip, please notify me! I&amp;#8217;ve added those e.g. to the outline and quickopen toolbar widgets among others.&lt;/p&gt;
&lt;p&gt;And since KDevelop 4.1 was in beta stage I&amp;#8217;ve fixed lots of bugs and continue to do that. I triage each new bug for KDevelop/KDevplatform, request feedback and valgrind logs and try to fix whatever I can. Even now I can safely assume that KDevelop 4.2 will be more stable than 4.1, even though we did lots of architectural changes in the platform, esp. regarding MovingRanges.&lt;/p&gt;
&lt;p&gt;And now to the last and to me most pleasing part: New features! Remember how I said I didn&amp;#8217;t do lots of feature development at all these past days? This is basically true, instead I let others do the work :) We really get more and more patches and merge requests by other people, and I did merge quite some changes already. We have an &lt;a href=&#34;http://gitorious.org/kdevelop/kdevplatform/merge_requests/33&#34;&gt;improved &amp;#8220;find in files&amp;#8221; plugin&lt;/a&gt; now, and &lt;a href=&#34;http://blog.ben2367.fr/tag/kdevelop/&#34;&gt;the French students&lt;/a&gt; are working hard on giving it replace functionality as well! We already merged their &lt;a href=&#34;http://blog.ben2367.fr/2010/11/11/kdevelop-when-development-documentation-come-to-you/&#34;&gt;improved QtHelp plugin&lt;/a&gt; that gives you the ability to integrate arbitrary &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;.qch&lt;/code&gt;&lt;/span&gt; files into KDevelop, e.g. &lt;a href=&#34;http://api.kde.org/&#34;&gt;the KDE Api documentation&lt;/a&gt;. They also work on [&lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;man&lt;/code&gt;&lt;/span&gt; integration](, which will be a joy for all STD C / C++ developers.&lt;/p&gt;
&lt;p&gt;Furthermore we now have a &lt;a href=&#34;http://gitorious.org/kdevelop/kdevplatform/merge_requests/40&#34;&gt;&amp;#8220;Filter&amp;#8230;&amp;#8221; line edit&lt;/a&gt; above the project manager view, &lt;a href=&#34;http://gitorious.org/kdevelop/kdevelop/merge_requests/27&#34;&gt;&amp;#8220;Argument Dependent Lookup&amp;#8221;&lt;/a&gt; for the C++ plugin, a &lt;a href=&#34;http://gitorious.org/kdevelop/kdevplatform/merge_requests/39&#34;&gt;much improved &amp;#8220;Problems&amp;#8221; toolview&lt;/a&gt;, with the ability to show TODOs etc. pp.&lt;/p&gt;
&lt;p&gt;This is just from the last few weeks, and it&amp;#8217;s work done by many new contributors. It&amp;#8217;s really very cool to see this happening.&lt;/p&gt;
&lt;p&gt;Oh, and I personally worked a bit on the &lt;a href=&#34;http://websvn.kde.org/trunk/playground/devtools/kdevelop4-extra-plugins/qmake/&#34;&gt;QMake support&lt;/a&gt; for KDevelop, I&amp;#8217;m not sure whether I will manage to get this into a usable state for KDevelop 4.2, but I already use it at work.&lt;/p&gt;
&lt;p&gt;Which brings me to the last part of this blog post, release schedules! I&amp;#8217;ll finally release a KDevelop 4.1.1 bug fix version next week, and will make sure that there is a 4.2 release just before / shortly after the KDE 4.6 release in January. The big &amp;#8220;issue&amp;#8221; there is that &lt;strong&gt;KDevelop 4.1 will not work with KDE 4.6+&lt;/strong&gt;, since there are no SmartRanges in Kate from 4.6 anymore. So a big fat warning to any adventurous tester out there: If you want to try KDE 4.6 betas, remember that you&amp;#8217;ll have to get KDevelop master (== 4.2) as well somehow!&lt;/p&gt;
&lt;p&gt;So, that&amp;#8217;s it for now, have a nice sunday everyone :)&lt;/p&gt;</description></item><item><title>Kate on git.kde.org</title><link>https://kate-editor.org/2010/11/16/kate-on-git-kde-org/</link><pubDate>Tue, 16 Nov 2010 19:32:47 +0000</pubDate><guid>https://kate-editor.org/2010/11/16/kate-on-git-kde-org/</guid><description>&lt;p&gt;Goodbye to Gitorious, welcome to git.kde.org.&lt;/p&gt;
&lt;p&gt;You can find the Kate project &lt;a href=&#34;https://projects.kde.org/projects/svn-bridge/kate&#34;&gt;here&lt;/a&gt;.&lt;br /&gt;
The &lt;a href=&#34;https://kate-editor.org/get-it/&#34;&gt;&amp;#8220;Get It!&amp;#8221;&lt;/a&gt; page on the homepage is updated, too.&lt;br /&gt;
Push access is still restricted, but that will not last for ever ;)&lt;/p&gt;
&lt;p&gt;Thanks to the sysadmin team of KDE, thanks guys, for all the work you put into the new infrastructure (and to help me with my faults ;)&lt;br /&gt;
And thanks to Gitorious, it was a nice time there, and I learned to appreciate Git, like many Kate developers (some appreciated it even before).&lt;/p&gt;
&lt;p&gt;Like before, all changes in SVN and Git will be synced by me, as Kate is still released with KDE SC from SVN.&lt;/p&gt;
&lt;p&gt;For the future I would like (and most kate devs, too) to develop solely in the Kate repository and have Kate released from there with KDE SC (instead spread over several modules).&lt;br /&gt;
But this must still be discussed with the release team after 4.6.&lt;br /&gt;
Beside, this means no split off from KDE, but it makes contributing to Kate that much easier, given atm you would need to checkout/clone kdelibs + kdebase + kdesdk and try to build there the Kate relevant parts, which is just no fun, if you just want to hack on some small bug or feature :/&lt;/p&gt;</description></item><item><title>Kate git repository moving to git.kde.org soon!</title><link>https://kate-editor.org/2010/11/14/kate-git-repository-moving-to-git-kde-org-soon/</link><pubDate>Sun, 14 Nov 2010 18:40:32 +0000</pubDate><guid>https://kate-editor.org/2010/11/14/kate-git-repository-moving-to-git-kde-org-soon/</guid><description>&lt;p&gt;We tried to move weeks ago already, but in our current repository some small glitches occured during the SVN =&amp;gt; Git transition.&lt;br /&gt;
I have redone the conversion now and soon we will be on git.kde.org (if I not screw that again, thanks already to sysadmin for all help, now and in past!).&lt;br /&gt;
Still some small stuff will then need to be ported, which I will do after the initial repository is up there.&lt;br /&gt;
After this, the repository on Gitorious will vanish.&lt;/p&gt;
&lt;p&gt;I will keep syncing KDE SVN and the repository, until KDE has migrated, too.&lt;br /&gt;
But please, if you work on features rather than simple oneliner fixes, use the git repository on git.kde.org after it is announced to be available.&lt;br /&gt;
You have automagically a git account and it makes merges for me much easier, if there are not too many conflicts from SVN -&amp;gt;&amp;lt;- Git. I hope the Kate team can keep the kate repository then as sole workspace, as working on the kate part/app is much easier for all contributors if you don&amp;rsquo;t have to get whole kdelibs/kdesdk. But that is still not discussed out I think, release team has a say here, as I would rather like to stay in KDE release cycle.&lt;/p&gt;</description></item><item><title>Highlight Selected Text</title><link>https://kate-editor.org/2010/11/14/highlight-selected-text/</link><pubDate>Sun, 14 Nov 2010 12:49:04 +0000</pubDate><guid>https://kate-editor.org/2010/11/14/highlight-selected-text/</guid><description>&lt;p style=&#34;text-align: left;&#34;&gt;
Kate has a new plugin called &amp;#8220;Highlight Selection&amp;#8221;. Since it is a KTextEditor plugin, it is available for all apps using KatePart (e.g.: Kile, Kate, KWrite, KDevelop etc). What does it do? If you select a whole word, all occurrences of this word are highlighted as well:
&lt;/p&gt;
&lt;p style=&#34;text-align: left;&#34;&gt;
&lt;img class=&#34;aligncenter size-full wp-image-761&#34; style=&#34;border: 1px solid black;&#34; title=&#34;Highlight Selection&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2010/11/hl-selection.png&#34; alt=&#34;&#34; width=&#34;517&#34; height=&#34;174&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/11/hl-selection.png 517w, https://kate-editor.org/wp-content/uploads/2010/11/hl-selection-300x100.png 300w&#34; sizes=&#34;(max-width: 517px) 100vw, 517px&#34; /&gt;
&lt;/p&gt;
&lt;p style=&#34;text-align: left;&#34;&gt;
You can jump to the next occurrence with ctrl+h (btw: ctrl+h works already since KDE 4.2 or so). The plugin will be included in KDE 4.6. If you can&amp;#8217;t wait, you can use it already now by &lt;a title=&#34;Building Kate&#34; href=&#34;https://kate-editor.org/get-it/&#34; target=&#34;_self&#34;&gt;building Kate from the sources&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&#34;text-align: left;&#34;&gt;
(Side note: Be careful with enabling this plugin in KDevelop, since KDevelop itself is already doing extensive highlighting)
&lt;/p&gt;</description></item><item><title>PHP treeview improvements in Kate</title><link>https://kate-editor.org/2010/10/27/php-treeview-improvements-in-kate/</link><pubDate>Wed, 27 Oct 2010 19:04:31 +0000</pubDate><guid>https://kate-editor.org/2010/10/27/php-treeview-improvements-in-kate/</guid><description>&lt;div&gt;
Being a regular Kate user (more than half a dozen hours each day), I was not satisfied by the PHP treeview (available from the SymbolViewer plugin). As some of you have probably noticed, it is quite outdated and seems to only support the PHP4 syntax.
&lt;/div&gt;
&lt;div&gt;
Here is a screenshot:
&lt;/div&gt;
&lt;div&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/10/kate_phptree_old.png&#34;&gt;&lt;img class=&#34;size-medium wp-image-738 aligncenter&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2010/10/kate_phptree_old-300x177.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;177&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/10/kate_phptree_old-300x177.png 300w, https://kate-editor.org/wp-content/uploads/2010/10/kate_phptree_old-1024x604.png 1024w, https://kate-editor.org/wp-content/uploads/2010/10/kate_phptree_old.png 1280w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
The recent switch of Kate to gitourious was the trigger to try compile it on my own and to dive into the source code. A few hours later, the PHP treeview was rewritten. It currently supports the PHP5 syntax (even the namespaces).
&lt;/div&gt;
&lt;div&gt;
Here is screenshot with the same file:
&lt;/div&gt;
&lt;div&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/10/kate_phptree_new.png&#34;&gt;&lt;img class=&#34;aligncenter size-medium wp-image-739&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2010/10/kate_phptree_new-300x177.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;177&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/10/kate_phptree_new-300x177.png 300w, https://kate-editor.org/wp-content/uploads/2010/10/kate_phptree_new-1024x604.png 1024w, https://kate-editor.org/wp-content/uploads/2010/10/kate_phptree_new.png 1280w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
I&amp;#8217;ve submitted my patch to the Kate Team (via the mailing list) and it was kindly accepted and merged. Thanks.
&lt;/div&gt;
&lt;div&gt;
PS: Hi Planet KDE, this is my first post :)
&lt;/div&gt;</description></item><item><title>Recent Files Menu in Kate</title><link>https://kate-editor.org/2010/10/27/recent-files-menu-in-kate/</link><pubDate>Wed, 27 Oct 2010 10:13:48 +0000</pubDate><guid>https://kate-editor.org/2010/10/27/recent-files-menu-in-kate/</guid><description>&lt;p&gt;As many other applications Kate has the menu File &amp;gt; Recent Files, which lists all files you recently used. This recent file list right now is per session, i.e., each session has its own entries listed as recent files. Now there is a request to change it such that there is &lt;a title=&#34;Recent Files in Kate&#34; href=&#34;http://bugs.kde.org/show_bug.cgi?id=182759&#34; target=&#34;_blank&#34;&gt;just one single global recent file list&lt;/a&gt;. I think having two recent files menus (one for the session and one global) is a bad solution. Further, adding an option for that also sounds wrong.&lt;/p&gt;
&lt;p&gt;To change or not to change, that&amp;#8217;s the question?! :) What do you think?&lt;/p&gt;</description></item><item><title>File Tree plugin and Kate in KDE SC 4.6</title><link>https://kate-editor.org/2010/10/20/file-tree-plugin-and-kate-in-kde-4-6/</link><pubDate>Wed, 20 Oct 2010 07:38:29 +0000</pubDate><guid>https://kate-editor.org/2010/10/20/file-tree-plugin-and-kate-in-kde-4-6/</guid><description>&lt;p&gt;Hi! It&amp;#8217;s me again. Got some exciting news.&lt;/p&gt;
&lt;p&gt;The file tree is now the default (and only) document list/view widget. It actually took me by surprise. After I got the list mode and other features implemented, the old document list was unceremoniously ripped out, and extensions were added to allow kate to always load a given plugin, and give its settings tab a little more prominence.&lt;/p&gt;
&lt;p&gt;Since then however I&amp;#8217;ve fixed a few issues regarding the settings in the plugin. The file tree settings tab now sets the plugins global settings, and will clear out the setting overrides for the current session so they will get pulled from the global settings. And I just finished up adding back the &amp;#8220;Go&amp;#8221; menu, and the &amp;#8220;next&amp;#8221; and &amp;#8220;prev&amp;#8221; document shortcuts.&lt;/p&gt;
&lt;p&gt;Just to be clear, you are NOT forced to use a tree view from now on. That is just the current default. You can switch to list mode using either the settings dialog (which will apply to kate globally, minus any sessions you have used the document view context menu to change the mode for), or using the context menu on the document view (file tree) widget.&lt;/p&gt;
&lt;p&gt;Thank you to everyone who has used my plugin in the past, and to everyone who will be using it in the future :)&lt;/p&gt;</description></item><item><title>Introducing Kate GDB Plugin</title><link>https://kate-editor.org/2010/10/06/introducing-kate-gdb-plugin/</link><pubDate>Wed, 06 Oct 2010 21:08:34 +0000</pubDate><guid>https://kate-editor.org/2010/10/06/introducing-kate-gdb-plugin/</guid><description>&lt;p&gt;Have you, like me, had to switch to an external debugger or run raw gdb in the terminal plugin to debug the C/C++ application you develop with Kate? That might not be necessary any more. There is now a &amp;#8220;GDB Plugin&amp;#8221; in trunk that gives you the power of raw GDB with some QAction candy for the most common actions.&lt;/p&gt;
&lt;p&gt;I have always been a bit frustrated with not having a debugger directly in Kate, but too lazy/busy to start a debugger plugin project. Fortunately Ian Wakeling started this GDB plugin and got it off the ground. When I got introduced to it at Akademy, it triggered an itch in me to get this plugin into kdesdk and to add some features for the more point and click type of persons. As it seemed I had a bit more free time to spend on the plugin, Ian let me take over as maintainer.&lt;/p&gt;
&lt;p&gt;Main features of the plugin:&lt;br /&gt;
&amp;#8211; Jump to the corresponding file and line whenever gdb stops.&lt;br /&gt;
&amp;#8211; Insert and remove breakpoints.&lt;br /&gt;
&amp;#8211; Tool-bar buttons for the most often used actions like step into/over/out. Those actions can of course also be assigned to keyboard shortcuts.&lt;br /&gt;
&amp;#8211; Execution markers and breakpoint markers on the icon border.&lt;br /&gt;
&amp;#8211; A call stack tab for point and click navigation of the call stack.&lt;br /&gt;
&amp;#8211; Optional IO redirection to a separate tab.&lt;br /&gt;
&amp;#8211; Printing the value of the currently selected variable or expression. QStrings and friends are not supported (yet?).&lt;br /&gt;
&amp;#8211; And last but not least. A GDB console for the full power of GDB.&lt;/p&gt;
&lt;p&gt;And now the screen-shots&lt;br /&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/10/gdb_console.png&#34;&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2010/10/gdb_console-300x171.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;171&#34; class=&#34;alignnone size-medium wp-image-713&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/10/gdb_console-300x171.png 300w, https://kate-editor.org/wp-content/uploads/2010/10/gdb_console.png 967w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
GDB Console, execution marker and a breakpoint marker.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/10/gdb_call_stack.png&#34;&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2010/10/gdb_call_stack-300x171.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;171&#34; class=&#34;size-medium wp-image-714&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/10/gdb_call_stack-300x171.png 300w, https://kate-editor.org/wp-content/uploads/2010/10/gdb_call_stack.png 967w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
The current call stack.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/10/gdb_settings.png&#34;&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2010/10/gdb_settings-300x171.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;171&#34; class=&#34;alignnone size-medium wp-image-716&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/10/gdb_settings-300x171.png 300w, https://kate-editor.org/wp-content/uploads/2010/10/gdb_settings.png 967w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Settings tab.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/10/gdb_redirected_io.png&#34;&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2010/10/gdb_redirected_io-300x171.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;171&#34; class=&#34;alignnone size-medium wp-image-717&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/10/gdb_redirected_io-300x171.png 300w, https://kate-editor.org/wp-content/uploads/2010/10/gdb_redirected_io.png 967w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Redirected IO.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/10/gdb_print-value.png&#34;&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2010/10/gdb_print-value-300x171.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;171&#34; class=&#34;alignnone size-medium wp-image-719&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/10/gdb_print-value-300x171.png 300w, https://kate-editor.org/wp-content/uploads/2010/10/gdb_print-value.png 967w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
The selected variable and the GDB value output.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/10/gdb_menu.png&#34;&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2010/10/gdb_menu-300x293.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;293&#34; class=&#34;alignnone size-medium wp-image-720&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/10/gdb_menu-300x293.png 300w, https://kate-editor.org/wp-content/uploads/2010/10/gdb_menu.png 468w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
The debug menu.&lt;/p&gt;</description></item><item><title>Kate Tree View Plugin Update</title><link>https://kate-editor.org/2010/09/12/kate-tree-view-plugin-update/</link><pubDate>Sun, 12 Sep 2010 15:27:23 +0000</pubDate><guid>https://kate-editor.org/2010/09/12/kate-tree-view-plugin-update/</guid><description>&lt;p&gt;It&amp;#8217;s me again. Given how much people seem to like the plugin, and that some would like to see this plugin replace the existing simple list view, I&amp;#8217;ve put in a bit of work to make it so the tree view plugin replaces as much functionality of the original file list as possible.&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s now a list mode (which was surprisingly easy to do), as well as the tree mode and I&amp;#8217;ve extended the sorting support to include all but the &amp;#8220;custom sort order&amp;#8221; option of the original file list (it&amp;#8217;ll take a bit more work to support that, if its something people actually use, I just haven&amp;#8217;t felt like doing the work to get drag and drop to work, and before now it didn&amp;#8217;t make much sense to add). While I was at it I also added a Settings Dialog Page for the plugin.&lt;/p&gt;
&lt;p&gt;One improvement (imo) over the old file list, is that all tree view settings are session specific. Each session saves its own sorting, view mode, and item highlighting color settings.&lt;/p&gt;
&lt;p&gt;Now for some gratuitous screen shots:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-menu2.png&#34;&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-menu2-300x178.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;178&#34; class=&#34;alignnone size-medium wp-image-695&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here we see the new sort order context menu items, pretty dull so far.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-menu1.png&#34;&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-menu1-300x178.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;178&#34; class=&#34;alignnone size-medium wp-image-695&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-menu1-300x178.png 300w, https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-menu1-1024x609.png 1024w, https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-menu1.png 1280w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now it starts to get a little more interesting. The view mode context menu!&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-menu3.png&#34;&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-menu3-300x178.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;178&#34; class=&#34;alignnone size-medium wp-image-699&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-menu3-300x178.png 300w, https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-menu3-1024x609.png 1024w, https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-menu3.png 1280w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ooh, and now we can see it displaying in list mode!&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-menu4.png&#34;&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-menu4-300x178.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;178&#34; class=&#34;alignnone size-medium wp-image-700&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-menu4-300x178.png 300w, https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-menu4-1024x609.png 1024w, https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-menu4.png 1280w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Again in list mode, but sorted by the document&amp;#8217;s path, rather than just by document name.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-config1.png&#34;&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-config1-300x161.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;161&#34; class=&#34;alignnone size-medium wp-image-697&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-config1-300x161.png 300w, https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview-config1.png 686w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And here&amp;#8217;s the new config page. Nothing much to look at, but it works :)&lt;/p&gt;
&lt;p&gt;I still have a couple more things I want to add, like a fancy way to filter and eventually, if everyone&amp;#8217;s agreeable, I&amp;#8217;ll thief the back/forward actions, and the &amp;#8220;Go&amp;#8221; menu from the main file list.&lt;/p&gt;
&lt;p&gt;Before I go, I was wondering if people would be willing to help me with some distro packages, I might be able to manage some Debian packages, but I&amp;#8217;m not sure when I&amp;#8217;ll get to it so if anyone is willing and capable, have at it.&lt;/p&gt;
&lt;p&gt;Thats all for now. Thanks for reading :)&lt;/p&gt;</description></item><item><title>Tree View plugin introduction</title><link>https://kate-editor.org/2010/09/10/tree-view-plugin-introduction/</link><pubDate>Fri, 10 Sep 2010 01:07:36 +0000</pubDate><guid>https://kate-editor.org/2010/09/10/tree-view-plugin-introduction/</guid><description>&lt;p&gt;Kate has been my favorite editor for some time now. And only recently has it not been able to do something I asked it do to. I was working on a rather large project in Perl when things started getting confusing. The classic file list had 50+ files in it, some of them have the same file name, so would have (1) or (2) or even (4) after the file name, and while thats handy, it gets confusing pretty quickly.&lt;/p&gt;
&lt;p&gt;So I spent a week to try and bring order to the chaos. And this is what I came up with.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview1.png&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-667&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview1-300x170.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;170&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview1-300x170.png 300w, https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview1.png 845w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now I can tell people are thinking, but Thomas, that doesn&amp;#8217;t look so confusing.. Granted.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s what my larger project looks like with the file list:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-filelist1.png&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-668&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-filelist1-300x164.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;164&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-filelist1-300x164.png 300w, https://kate-editor.org/wp-content/uploads/2010/09/kate-filelist1.png 932w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I think anyone will have a hard time working with &lt;em&gt;that&lt;/em&gt; unholy mess. After trying to manage that for more than a couple of days I sat down and decided to write the tree plugin. Heres what the mess looks like now:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview2.png&#34;&gt;&lt;img src=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview2-300x164.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;164&#34; class=&#34;alignnone size-medium wp-image-674&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview2-300x164.png 300w, https://kate-editor.org/wp-content/uploads/2010/09/kate-treeview2.png 932w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Is that not a lot better?&lt;/p&gt;
&lt;p&gt;Some of you reading this might have noticed that it isn&amp;#8217;t creating a full file system tree. That is it isn&amp;#8217;t making &amp;#8220;/&amp;#8221; or &amp;#8220;C:&amp;amp;#8221; the root of the tree. Indeed. It uses a couple tricks to make sure the tree isn&amp;#8217;t cluttered with directories you really don&amp;#8217;t care about. If people are interested I can explain more about how it does what it does in a more technical post.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve heard a few people ask if this shouldn&amp;#8217;t just outright replace the existing file list. The Kate developers don&amp;#8217;t see why not, but I have my doubts that it is a proper &amp;#8220;one size fits all&amp;#8221; solution. As far as I can tell, it is &lt;em&gt;impossible&lt;/em&gt; to make the tree behave in a fully sane and expected manner. In some cases it won&amp;#8217;t merge some folders you think it should, but (IMO) trying to make the tree behave any &amp;#8220;better&amp;#8221; would make it less useful (at least to me). I&amp;#8217;m interested in what people think, is it &amp;#8220;good enough&amp;#8221; to become the default document list, or even replace the existing one outright?&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve committed the plugin to KDE svn, and just uploaded to kde-apps if anyone is interested in giving it a try. I&amp;#8217;ve tested it with Kate/KDE 4.4, 4.5, and Kate from trunk. Please let me know what you think, and tell me if you have any problems or concerns! Thanks :)&lt;/p&gt;
&lt;p&gt;p.s. I&amp;#8217;m new to this whole blogging thing, please be gentle ;)&lt;/p&gt;</description></item><item><title>Beware of KDevelop Master and KDELibs 4.5.1 or lower</title><link>https://kate-editor.org/2010/09/08/beware-of-kdevelop-master-and-kdelibs-4-5-1-or-lower-2/</link><pubDate>Wed, 08 Sep 2010 15:57:41 +0000</pubDate><guid>https://kate-editor.org/2010/09/08/beware-of-kdevelop-master-and-kdelibs-4-5-1-or-lower-2/</guid><description>&lt;p&gt;Hey all,&lt;/p&gt;
&lt;p&gt;please don&amp;#8217;t use KDevelop master with KDELibs 4.5.1 or lower. Katepart in that version misses a crucial commit that makes KDevelop crash. It is fixed for 4.5.2. In the meantime you have on of the following options:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://kate-editor.org/get-it/&#34;&gt;Build kate from sources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Switch to the stable branches, i.e.: KDevplatform 1.1, KDevelop 4.1, PHP 1.1, &amp;#8230;&lt;/li&gt;
&lt;li&gt;wait for the 4.5.2 release&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;bye&lt;/p&gt;</description></item><item><title>Beware of KDevelop Master and KDELibs 4.5.1 or lower</title><link>https://kate-editor.org/2010/09/08/beware-of-kdevelop-master-and-kdelibs-4-5-1-or-lower/</link><pubDate>Wed, 08 Sep 2010 15:57:41 +0000</pubDate><guid>https://kate-editor.org/2010/09/08/beware-of-kdevelop-master-and-kdelibs-4-5-1-or-lower/</guid><description>&lt;p&gt;Hey all,&lt;/p&gt;
&lt;p&gt;please don&amp;#8217;t use KDevelop master with KDELibs 4.5.1 or lower. Katepart in that version misses a crucial commit that makes KDevelop crash. It is fixed for 4.5.2. In the meantime you have on of the following options:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://kate-editor.org/get-it/&#34;&gt;Build kate from sources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Switch to the stable branches, i.e.: KDevplatform 1.1, KDevelop 4.1, PHP 1.1, &amp;#8230;&lt;/li&gt;
&lt;li&gt;wait for the 4.5.2 release&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;bye&lt;/p&gt;</description></item><item><title>Encoding Detection Revised</title><link>https://kate-editor.org/2010/08/26/encoding-detection-revised/</link><pubDate>Thu, 26 Aug 2010 16:26:43 +0000</pubDate><guid>https://kate-editor.org/2010/08/26/encoding-detection-revised/</guid><description>
&lt;p&gt;In recent KDE releases up to version 4.4 Kate unfortunately very often selected the wrong encoding. The result is that e.g. german umlauts (öäü) show up as cryptic signs in the text editor. What I&amp;#8217;ve seen lots of times is that in this case people start to fix those characters manually for the entire document. In other words: They totally do not get at all that the text document simply was opened with the wrong encoding. In fact, the users usually do not even know &lt;a title=&#34;Wikipedia: Character Encoding&#34; href=&#34;http://en.wikipedia.org/wiki/Character_encoding&#34; target=&#34;_blank&#34;&gt;what encoding is at all&lt;/a&gt;. While this is of course kind of sad, this certainly won&amp;#8217;t change&amp;#8230;&lt;/p&gt;
&lt;p&gt;Given this fact, the only correct &amp;#8220;fix&amp;#8221; is a very good automatic encoding detection, such that the encoding is usually chosen correctly. In the rewrite of Kate&amp;#8217;s text buffer for KDE 4.5, Christoph also rewrote the file loader including the encoding detection. The detection now works as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;﻿try selected encoding by the user (through the open-file-dialog or the console)&lt;/li&gt;
&lt;li&gt;try encoding detection (some intelligent trial &amp;amp; error method)&lt;/li&gt;
&lt;li&gt;use fallback encoding&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In step 1, Kate tries to use the encoding specified in the open-file-dialog or the one given when launching Kate from the console. On success, we are done.&lt;/p&gt;
&lt;p&gt;The encoding detection in step 2 first tries unicode encoding by looking for a &lt;a title=&#34;Wikipedia: Byte Order Mark&#34; href=&#34;http://en.wikipedia.org/wiki/Byte_order_mark&#34; target=&#34;_blank&#34;&gt;Byte Order Mark (BOM)&lt;/a&gt;. If found, it is certain that the text document is unicode encoded.  If there is no BOM, Kate next uses a tool from KDElibs (KEncodingProber) to detect the correct encoding. This is basically trial &amp;amp; error: Try encoding A, if there are characters in the document the encoding is not able to represent, try encoding B. Then C and so on&amp;#8230; Unfortunately, this also doesn&amp;#8217;t always work, because a byte sequence might be valid in several encodings and represent different characters. This is why it&amp;#8217;s more or less &lt;em&gt;impossible&lt;/em&gt; to get the encoding always right. There is simply no way&amp;#8230;&lt;/p&gt;
&lt;p&gt;If the encoding detection fails, Kate uses a fallback encoding. You can configure this fallback encoding in the editor component settings in the &amp;#8220;Open/Save&amp;#8221; category. If the fallback encoding fails as well, the document is marked as read-only and a warning is shown.&lt;/p&gt;
&lt;h3 id=&#34;what-about-kile-and-kdevelop&#34;&gt;What about Kile and KDevelop?&lt;/h3&gt;
&lt;p&gt;One of the applications that heavily suffered of the wrong encoding detection in the past was the LaTeX editor Kile. The same holds probably for KDevelop (although it&amp;#8217;s usually less critical with source code). The good news is, that with KDE &amp;gt;= 4.5 the problems with respect to wrong encoding should be gone. So it&amp;#8217;s certainly worth to update if you are affected by this issue.&lt;/p&gt;</description></item><item><title>Kate – GSoC Summary</title><link>https://kate-editor.org/2010/08/26/kate-gsoc-summary/</link><pubDate>Thu, 26 Aug 2010 10:43:35 +0000</pubDate><guid>https://kate-editor.org/2010/08/26/kate-gsoc-summary/</guid><description>&lt;p&gt;Hello planet,&lt;/p&gt;
&lt;p&gt;As Google Summer of Code is now finished and I have successfully passed the final evaluation, I would like to give a brief description of my project.&lt;/p&gt;
&lt;p&gt;Kate is now able to recover (most of) what was written after last save in case of a crash or power failure. A swap file is created after the first editing action on a document that was successfully saved. If the user closes the document normally or saves its content, the swap file is deleted, otherwise, if Kate crashes, it remains on the disk. On load, Kate searches for the swap file, and if it exists, a warning bar pops from the top and provides the user with three possibilities: recover the lost data, discard the swap file or view differences between the original data and the recovered one. If the user chooses to restore the lost data, the editing actions from the swap file are replayed over the current content of the document. If somehow the swap file is not valid, for example a finishEditing statement is missing, the recovery is done, but the user is warned that it might be incomplete.&lt;/p&gt;
&lt;p&gt;Only the core feature for swap file is implemented at the moment. I know I could have done more, but things went slow at the beginning, as I was new to Qt and KDE development and also had a demanding exam period. But this has a positive aspect, too, as will motivate me to continue my work at this project.&lt;/p&gt;
&lt;p&gt;This has been a great summer for me as I was accepted into GSoC program and got a chance to do what I like and get paid for it. I want to thank Christoph, my mentor, for having patience with me and helping me with all the problems I have encountered. I also want to thank the whole Kate team, KDE community and Google :).&lt;/p&gt;</description></item><item><title>Kate Night-Make</title><link>https://kate-editor.org/2010/08/23/kate-night-make/</link><pubDate>Mon, 23 Aug 2010 19:31:08 +0000</pubDate><guid>https://kate-editor.org/2010/08/23/kate-night-make/</guid><description>&lt;p&gt;Each night now Kate (part/app) is build from git and all unit tests are run. Yeah, we even got some tests .P&lt;br /&gt;
Until now, that just reminds on of our failures ;) But I hope the daily mail will perhaps motivate me and others more to fix them ;)&lt;/p&gt;
&lt;p&gt;Beside, thanks for all the people working to write these tests, like Bernhard, Dominik and Milian.&lt;/p&gt;
&lt;pre&gt;Kate Nightmake Tests
From: cullmann@kate-editor.org
To: kwrite-devel@kde.org
Date: Today 05:06:46
[HANDLER_OUTPUT]
Test project /home/www/kate-editor.org/build/build
Start  1: katetextbuffertest
1/34 Test  #1: katetextbuffertest ...............   Passed    0.02 sec
Start  2: range_test
2/34 Test  #2: range_test .......................   Passed    1.09 sec
Start  3: testkateregression
3/34 Test  #3: testkateregression ...............***Failed    0.03 sec
Start  4: undomanager_test
4/34 Test  #4: undomanager_test .................   Passed    1.34 sec
Start  5: plaintextsearch_test
5/34 Test  #5: plaintextsearch_test .............   Passed    7.56 sec
Start  6: regexpsearch_test
6/34 Test  #6: regexpsearch_test ................   Passed    8.45 sec
Start  7: scriptdocument_test
7/34 Test  #7: scriptdocument_test ..............   Passed    1.36 sec
Start  8: completion_test
8/34 Test  #8: completion_test ..................***Failed    0.95 sec
Start  9: searchbar_test
9/34 Test  #9: searchbar_test ...................***Failed   11.24 sec
Start 10: movingcursor_test
10/34 Test #10: movingcursor_test ................   Passed    0.94 sec
Start 11: movingrange_test
11/34 Test #11: movingrange_test .................   Passed    1.79 sec
Start 12: katedocument_test
12/34 Test #12: katedocument_test ................   Passed    1.09 sec
Start 13: revision_test
13/34 Test #13: revision_test ....................   Passed    0.63 sec
Start 14: templatehandler_test
14/34 Test #14: templatehandler_test .............   Passed    0.44 sec
Start 15: indenttest
15/34 Test #15: indenttest .......................***Failed   25.87 sec
Start 16: bug213964_test
16/34 Test #16: bug213964_test ...................   Passed    0.73 sec
Start 17: utf8.txt_create
17/34 Test #17: utf8.txt_create ..................   Passed    0.17 sec
Start 18: utf8.txt_diff
18/34 Test #18: utf8.txt_diff ....................   Passed    0.01 sec
Start 19: latin15.txt_create
19/34 Test #19: latin15.txt_create ...............***Exception: SegFault  0.04 sec
Start 20: latin15.txt_diff
20/34 Test #20: latin15.txt_diff .................***Failed    0.01 sec
Start 21: utf32.txt_create
21/34 Test #21: utf32.txt_create .................   Passed    0.13 sec
Start 22: utf32.txt_diff
22/34 Test #22: utf32.txt_diff ...................   Passed    0.01 sec
Start 23: utf16.txt_create
23/34 Test #23: utf16.txt_create .................   Passed    0.10 sec
Start 24: utf16.txt_diff
24/34 Test #24: utf16.txt_diff ...................   Passed    0.01 sec
Start 25: utf32be.txt_create
25/34 Test #25: utf32be.txt_create ...............   Passed    0.10 sec
Start 26: utf32be.txt_diff
26/34 Test #26: utf32be.txt_diff .................   Passed    0.01 sec
Start 27: utf16be.txt_create
27/34 Test #27: utf16be.txt_create ...............   Passed    0.10 sec
Start 28: utf16be.txt_diff
28/34 Test #28: utf16be.txt_diff .................   Passed    0.01 sec
Start 29: cyrillic_utf8.txt_create
29/34 Test #29: cyrillic_utf8.txt_create .........   Passed    0.10 sec
Start 30: cyrillic_utf8.txt_diff
30/34 Test #30: cyrillic_utf8.txt_diff ...........   Passed    0.01 sec
Start 31: cp1251.txt_create
31/34 Test #31: cp1251.txt_create ................   Passed    0.10 sec
Start 32: cp1251.txt_diff
32/34 Test #32: cp1251.txt_diff ..................   Passed    0.01 sec
Start 33: koi8-r.txt_create
33/34 Test #33: koi8-r.txt_create ................   Passed    0.11 sec
Start 34: koi8-r.txt_diff
34/34 Test #34: koi8-r.txt_diff ..................   Passed    0.01 sec
82% tests passed, 6 tests failed out of 34
Total Test time (real) =  64.64 sec
The following tests FAILED:
3 - testkateregression (Failed)
8 - completion_test (Failed)
9 - searchbar_test (Failed)
15 - indenttest (Failed)
19 - latin15.txt_create (SEGFAULT)
20 - latin15.txt_diff (Failed)
[ERROR_MESSAGE]
Errors while running CTest
&lt;/pre&gt;</description></item><item><title>Kate History ;)</title><link>https://kate-editor.org/2010/08/15/kate-history/</link><pubDate>Sun, 15 Aug 2010 16:16:46 +0000</pubDate><guid>https://kate-editor.org/2010/08/15/kate-history/</guid><description>&lt;p&gt;While setting up the new server for the Kate homepage, I actually found again old stuff ;)&lt;br /&gt;
Amazing that mails nearly ten years old can still be somewhere on the filesystem.&lt;br /&gt;
Perhaps a little hint, to post the beginnings of what today is Kate/KatePart/KWrite and KTextEditor.&lt;/p&gt;
&lt;p&gt;Ten years ago, I asked the original author of KWrite, if he is interested in a MDI version of it (sorry, german, original mail):&lt;/p&gt;
&lt;pre&gt;From: Cullmann Christoph &amp;lt;crossfire@babylon2k.de&amp;gt;
To: digisnap@cs.tu-berlin.de
Subject: KWrite - Verbesserungsvorschläge
Date: Thu, 14 Dec 2000 18:38:42 +0100
Hallo
Ich benutze KWrite regelmässig um Quellcode zu bearbeiten und das
Syntaxhighlighting ist sehr praktisch.
Es wäre jedoch schön wenn KWrite eine MDI-Oberfläche hätte.
Ich baue gerade eine und falls jemand Interesse hat können sie sich ja melden.
Danke und Tschö
Christoph Cullmann&lt;/pre&gt;
&lt;p&gt;I actually never got any reaction from the author Jochen Wilhelmy. Guess the mail address was already abandoned at that time.&lt;br /&gt;
Later I tried my luck with kde-devel:&lt;/p&gt;
&lt;pre&gt;From: Cullmann Christoph &amp;lt;crossfire@babylon2k.de&amp;gt;
To: kde-devel@max.tat.physik.uni-tuebingen.de
Subject: Need help - KWrite
Date: Thu, 4 Jan 2001 00:21:35 +0100
Hi,
i am building a mdi texteditor using the kwrite-widget.
I want to use most of the extended features of the kwrite class, like search
dialog, kspell, ....
Is there any way to do this using the KParts system or must i use the kwrite
include files and compile the kwrite widget into my program ?
cu and thanks for any answer
C. Cullmann&lt;/pre&gt;
&lt;p&gt;Not much reactions, thought, but I kept to be persistent ;)&lt;/p&gt;
&lt;pre&gt;From: Cullmann Christoph &amp;lt;crossfire@babylon2k.de&amp;gt;
To: kde-devel@max.tat.physik.uni-tuebingen.de
Subject: Re: Looking for kwrite developers.
Date: Thu, 11 Jan 2001 17:30:19 +0100
Hi all,
I have build up a editor using the KWrite Widget and a QTabWidget to provide
a multidocument interface :-)
It has some bugs at the moment (I think QTabWidget is the problem) but works
real nice.
Anybody interested in this ?
cu
C. cullmann&lt;/pre&gt;
&lt;p&gt;Shortly after this mail, one of the developers which stayed around for years joined, Anders Lund (more at &lt;a href=&#34;https://kate-editor.org/the-team/&#34;&gt;the team page&lt;/a&gt;).&lt;br /&gt;
I named the starting project &amp;#8220;KCEdit&amp;#8221; and put it up on sourceforge.net:&lt;/p&gt;
&lt;pre&gt;From: Cullmann Christoph &amp;lt;crossfire@babylon2k.de&amp;gt;
To: kde-devel@max.tat.physik.uni-tuebingen.de
Subject: MDI TextEditor - KCEdit
Date: Sat, 13 Jan 2001 12:04:33 +0100
Hi all,
I have build up a small mdi texteditor using the kwrite widget :-)
If someone is interested in helping to improve it or only wants to
test it a bit, i have set a sourceforge.net project up.
url : http://sourceforge.net/projects/kcedit
It would be nice if someone wants to take part in the development.
cu
C.Cullmann&lt;/pre&gt;
&lt;p&gt;After that, the next nice guy joined: Michael Bartl.&lt;br /&gt;
We searched for a new name for the editor, as KCEdit was not that nice, as very similar to KEdit and no longer only &amp;#8220;Cullmann&amp;#8221;&amp;#8216;s pet project.&lt;br /&gt;
What did we choose? Here you see:&lt;/p&gt;
&lt;pre&gt;From: Cullmann Christoph &amp;lt;crossfire@babylon2k.de&amp;gt;
To: Michael Bartl &amp;lt;michael.bartl1@chello.at&amp;gt;
Subject: Kant is born ;-)
Date: Fri, 19 Jan 2001 20:55:59 +0100
Here it is ;-)
kant-0.1.0.tar.gz&lt;/pre&gt;
&lt;p&gt;As sourceforge.net failed to be a nice hosting, we moved the project to &lt;a href=&#34;http://www.openave.net&#34;&gt;http://www.openave.net&lt;/a&gt; (and later back again, lol).&lt;br /&gt;
Because of family problems Michael dropped out of the time after sometime, still BIG THANK YOU.&lt;/p&gt;
&lt;p&gt;Later, I tried to get my changes back in KDE, as I didn&amp;#8217;t want to do a permanent fork:&lt;/p&gt;
&lt;pre&gt;From: Cullmann Christoph &amp;lt;crossfire@babylon2k.de&amp;gt;
To: kde-devel@max.tat.physik.uni-tuebingen.de
Subject: How can I participate in the KWrite project ?
Date: Tue, 20 Feb 2001 20:25:15 +0100
Cc: kde-core-devel@max.tat.physik.uni-tuebingen.de
Hi,
I want to help as a developer in the kwrite project. I and some other people
are working on Kant (http://www.sourceforge.net/projects/kant), a MDI
texteditor for kde &amp;gt;=2.0 and we often find bugs in the kwrite code or missing
features we would need. It would be great if I could help to develop kwrite
because only sending bug reports and hoping that new features in kwrite will
come up sometime is really annoying.
How can I join the KWrite team and get CVS read/write access (perhaps ;-) ?
To have an overview about my skills please look at the Kant sourcecode or
simply download and test Kant out of the CVS at sourceforge.net.
cu and thx for you interest
Christoph Cullmann
P.S.
Sorry for the bad English ;-)&lt;/pre&gt;
&lt;p&gt;Without much problems, I got a CVS account on the KDE server and was allowed to add my code and the code of the others to the KWrite codebase.&lt;br /&gt;
All other contributors which were still active got accounts later, too. Worked all like a charm thanks to Waldo Bastian.&lt;br /&gt;
Still Kant itself was not in KDE, therefor next try:&lt;/p&gt;
&lt;pre&gt;From: Cullmann Christoph &amp;lt;crossfire@babylon2k.de&amp;gt;
To: kde-devel@max.tat.physik.uni-tuebingen.de
Subject: Could Kant replace or extend KWrite in KDE ?
Date: Sat, 24 Feb 2001 17:28:58 +0100
Hi,
I am the projectmanager of Kant, a MDI texteditor which uses the KWrite
widget for displaying text (no MDI like you know it from windows, MDI like
you know it from Emacs or Konqueror :).
Kant has come to a level of stability which would it allow to put it into the
kde cvs i hope. I have talked with Carsten Pfeiffer (he likes Kant :) and he
told me to send a message to this list to start a discussion if and where
Kant could be integrated.
I just released a new Kant version (kant-0.2.0-prerelease) on sourceforge.net
for testing the app that you have an overview about its features.
Kant Homepage:
http://sourceforge.net/projects/kant/
newest Kant version to download:
http://download.sourceforge.net/kant/kant-0.2.0-prerelease.tar.gz
nice screenshot of Kant:
http://sourceforge.net/dbimage.php?id=1590
If you want to look at the unstable development code just look into the Kant
CVS at sourceforge.net, you find the exact description to checkout at the
Kant Homepage under &#34;CVS&#34; (cvs-modulename: kant).
Kant links dynamic to kwritepart and konsolepart. This must be considered if
you want to put Kant into kde cvs.
I hope you all like Kant, I think it would be a nice replacement for KWrite.
cu and thx
Christoph
P.S.
Sorry for my poor English and the big tar.gz file (something isn&#39;t right with
make dist in kant, must fix it :)&lt;/pre&gt;
&lt;p&gt;After some changes to the code, we were allowed to move the development completly to KDE CVS.&lt;br /&gt;
Joseph Wenninger joined the development, too.&lt;/p&gt;
&lt;p&gt;Btw., my nice old e-mail footer:&lt;/p&gt;
&lt;pre&gt;| | / / - get an edge in editing -
| | / / »»»» GET KANT ««««
| |/ / a fast and capable multiple document,
| \ multiple view text editor for KDE
| |\ \
| | \ \ http://devel-home.kde.org/~kant&lt;/pre&gt;
&lt;p&gt;Whereas Kant was just a fine name for us, it had some pronunciation in english which was not that political correct ;)&lt;br /&gt;
Therefor we searched a new name:&lt;/p&gt;
&lt;pre&gt;From: Cullmann Christoph &amp;lt;crossfire@babylon2k.de&amp;gt;
To: David Faure &amp;lt;david@mandrakesoft.com&amp;gt;
Subject: Hi, is Kate a good name ?
Date: Sat, 31 Mar 2001 15:15:47 +0200
Hi David,
would be Kate a political correct name for Kant ?
Kate - KDE Advanced Text Editor
cu
Christoph&lt;/pre&gt;
&lt;p&gt;We even asked the developers of Katy, an other text editor, if they would have problems with that name change ;)&lt;br /&gt;
Kate was born ;)&lt;/p&gt;</description></item><item><title>kate-editor.org moved</title><link>https://kate-editor.org/2010/08/14/kate-editor-org-moved/</link><pubDate>Sat, 14 Aug 2010 14:10:56 +0000</pubDate><guid>https://kate-editor.org/2010/08/14/kate-editor-org-moved/</guid><description>&lt;p&gt;The website is now on a new server, which is a lot faster than the old one and software/hardware is fresh again.&lt;br /&gt;
Hope the problems we had in the past few weeks are over now.&lt;br /&gt;
No other real downtimes are planned, perhaps some reboots but nothing more than some minutes ;)&lt;br /&gt;
Hope I can now finally setup my planned automated unit-tests and build ;)&lt;br /&gt;
The DNS transfer seems to be faster than thought, still some people might arrive at the old server, where now only a stupid &amp;#8220;Maintainance&amp;#8221; page is up. The IP of the new server is 85.214.230.250.&lt;/p&gt;</description></item><item><title>kate-editor.org moving</title><link>https://kate-editor.org/2010/08/13/kate-editor-org-moving/</link><pubDate>Fri, 13 Aug 2010 15:31:44 +0000</pubDate><guid>https://kate-editor.org/2010/08/13/kate-editor-org-moving/</guid><description>&lt;p&gt;In the last weeks, the homepage was sometimes down, as the server it is on is slowly dying. I just negotiate the transfer to a new one. That one will allow additional stuff to be run, guess we than even have nightly unit test runs (at least I hope so) ;)&lt;/p&gt;
&lt;p&gt;Therefor it may be, that the site is not reachable, as DNS transfer might always take some days.&lt;/p&gt;</description></item><item><title>SmartRanges goodbye</title><link>https://kate-editor.org/2010/08/13/smartranges-goodbye/</link><pubDate>Fri, 13 Aug 2010 06:53:13 +0000</pubDate><guid>https://kate-editor.org/2010/08/13/smartranges-goodbye/</guid><description>&lt;p&gt;Like told in previous posts &lt;a href=&#34;https://kate-editor.org/2010/07/13/kde-4-5-smartrange-movingrange/&#34;&gt;here&lt;/a&gt; and &lt;a href=&#34;https://kate-editor.org/2010/07/23/movingranges-moving-on/&#34;&gt;there&lt;/a&gt;, KDE 4.6 won&amp;#8217;t have a KatePart that supports the SmartInterface but instead KatePart moves on to the new and shiny (and much simpler) MovingInterface for the handling of automatic moving cursors and ranges.&lt;/p&gt;
&lt;p&gt;Now the big cut is done: KatePart in /trunk no longer implements the SmartInterface. KDevelop already adopted the new interface in a development branch, lets see how that all evolves.&lt;/p&gt;
&lt;pre&gt;SVN commit 1162946 by cullmann:
Smart* handling is purged in kate part now for KDE 4.6.
It seems to work, at least I used it in that state now more than a day.
More stuff needs polishing still, like removing the duplicated edit history, but nice first start.
M +0 -7 CMakeLists.txt
M +0 -1 completion/katecompletiondelegate.cpp
M +13 -49 completion/katecompletionwidget.cpp
M +5 -6 completion/katecompletionwidget.h
M +6 -215 document/katedocument.cpp
M +0 -64 document/katedocument.h
M +1 -5 render/katerenderer.cpp
M +0 -191 render/katerenderrange.cpp
M +1 -25 render/katerenderrange.h
D smart (directory)
M +0 -2 tests/completion_test.cpp
M +0 -81 view/kateview.cpp
M +0 -17 view/kateview.h
M +0 -1 view/kateviewhelpers.cpp
M +7 -184 view/kateviewinternal.cpp
M +1 -20 view/kateviewinternal.h
&lt;/pre&gt;</description></item><item><title>Featured Articles</title><link>https://kate-editor.org/2010/08/12/featured-articles/</link><pubDate>Thu, 12 Aug 2010 12:38:11 +0000</pubDate><guid>https://kate-editor.org/2010/08/12/featured-articles/</guid><description>&lt;p&gt;Looking back at the last month, migrating our &lt;a title=&#34;Kate Homepage&#34; href=&#34;http://www.kate-editor.org&#34; target=&#34;_self&#34;&gt;Kate homepage&lt;/a&gt; over to WordPress was a vast success.﻿ The useful content we had on our old Drupal was copied over. The benefit of WordPress is that we now have a nice blog software as well with which we even aggregate some external blogs related to Kate. The new homepage is also more structured by having a list of &lt;a title=&#34;Featured Articles&#34; href=&#34;https://kate-editor.org/featured-articles/&#34; target=&#34;_self&#34;&gt;featured articles&lt;/a&gt; showing useful resources, such as links to user or developer documentation.&lt;/p&gt;
&lt;p&gt;The idea behind of the featured articles is to provide links to blog entries explaining in more depth what you can do with Kate. There are lots of useful tricks probably even some KDE developers aren&amp;#8217;t aware of. If you have further hints of how to efficiently use Kate, please &lt;a title=&#34;Contact Us&#34; href=&#34;https://kate-editor.org/support/&#34; target=&#34;_self&#34;&gt;contact us&lt;/a&gt; and write a blog entry on kate-editor.org.&lt;/p&gt;
&lt;p&gt;Besides that, thanks to all contributors for our &lt;a title=&#34;Kate in KDE 4.5&#34; href=&#34;https://kate-editor.org/2010/08/06/kde-4-5-is-approaching-thanks-to-all-kate-contributors/&#34; target=&#34;_self&#34;&gt;awesome release in 4.5&lt;/a&gt;! :)&lt;/p&gt;</description></item><item><title>KDE 4.5 is approaching, thanks to all Kate contributors</title><link>https://kate-editor.org/2010/08/06/kde-4-5-is-approaching-thanks-to-all-kate-contributors/</link><pubDate>Fri, 06 Aug 2010 08:10:11 +0000</pubDate><guid>https://kate-editor.org/2010/08/06/kde-4-5-is-approaching-thanks-to-all-kate-contributors/</guid><description>&lt;p&gt;KDE 4.5 will be released in the next days with the most polished Kate/KWrite and KatePart during the KDE 4.x series.&lt;/p&gt;
&lt;p&gt;A lot of work went into fixing bugs and cleaning up old code for this release. Many important aspects where redone, just to enumerate a few:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;encoding detection &amp;amp; handling&lt;/li&gt;
&lt;li&gt;the text buffer&lt;/li&gt;
&lt;li&gt;the undo/redo system (thanks Bernhard)&lt;/li&gt;
&lt;li&gt;search/replace (thanks again Bernhard)&lt;/li&gt;
&lt;li&gt;handling cursors and ranges&lt;/li&gt;
&lt;li&gt;improved spell checking (thanks Michel)&lt;/li&gt;
&lt;li&gt;improved indentation (thanks Milian)&lt;/li&gt;
&lt;li&gt;speed improvements (Milian too)&lt;/li&gt;
&lt;li&gt;better JS scripting (Dominik)&lt;/li&gt;
&lt;li&gt;porting of KDevelop to new interfaces (David Nolden)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It will be the most unit-tested release of KatePart ever I guess, but still a long way to go until we have a good test coverage. (we just scratch the surface)&lt;/p&gt;
&lt;p&gt;Many thanks to the people contributing to this release (not only to the ones named above or below!), without that much helping hands, never such an amount of cool stuff would have happened ;)&lt;/p&gt;
&lt;p&gt;I guess one of the real kickoffs was the great Kate/KDevelop sprint in Berlin, handled by Milian and sponsored by the e.V., thanks a lot!&lt;/p&gt;
&lt;p&gt;For the next release, with KDE 4.6, already new cool stuff is in production:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;vim-like swapfiles by Diana (see &lt;a href=&#34;https://kate-editor.org/2010/07/12/gsoc-swap-files-for-kate/&#34;&gt;here&lt;/a&gt; and &lt;a href=&#34;https://kate-editor.org/2010/07/27/gsoc-view-differences-for-kates-swap-files/&#34;&gt;here&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;the awesome &lt;a href=&#34;https://kate-editor.org/2010/07/29/katesql-a-new-plugin-for-kate/&#34;&gt;SQL plugin&lt;/a&gt; by Marco&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you think, you can help us, just &lt;a href=&#34;https://kate-editor.org/join-us/&#34;&gt;join us&lt;/a&gt; and make Kate for KDE 4.6 even more awesome.&lt;/p&gt;</description></item><item><title>KateSQL, a new plugin for Kate</title><link>https://kate-editor.org/2010/07/29/katesql-a-new-plugin-for-kate/</link><pubDate>Thu, 29 Jul 2010 21:45:22 +0000</pubDate><guid>https://kate-editor.org/2010/07/29/katesql-a-new-plugin-for-kate/</guid><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;today i will show you a new plugin for Kate, called &lt;strong&gt;KateSQL&lt;/strong&gt;.&lt;br /&gt;
As you may have guessed, it brings to Kate the basic features of an SQL client, allowing you to open connections, execute queries, and display result data from SELECT statements or stored procedures.&lt;br /&gt;
Since this plugin makes an extreme use of the &lt;strong&gt;Qt Sql module&lt;/strong&gt;, most of database drivers are supported..&lt;/p&gt;
&lt;p&gt;Said this, let me explain how it works..&lt;/p&gt;
&lt;p style=&#34;text-align: center&#34;&gt;
&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/07/katesql-screenshot-1.png&#34;&gt;&lt;img class=&#34;size-full wp-image-496 aligncenter&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2010/07/katesql-screenshot-1.png&#34; alt=&#34;Kate MainWindow with KateSQL widgets&#34; width=&#34;661&#34; height=&#34;454&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/07/katesql-screenshot-1.png 1101w, https://kate-editor.org/wp-content/uploads/2010/07/katesql-screenshot-1-300x206.png 300w, https://kate-editor.org/wp-content/uploads/2010/07/katesql-screenshot-1-1024x704.png 1024w&#34; sizes=&#34;(max-width: 661px) 100vw, 661px&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;First of all, you have to create a new db connection through &lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/07/katesql-wizard-screenshot.png&#34;&gt;a simple wizard&lt;/a&gt;, specifying driver, connection parameters (hostname, username, password, etc&amp;#8230;), and a descriptive name, that KateSQL will use as identifier.&lt;br /&gt;
Done this, what you need to do is just select the query text in the editor and press F5 (or your preferred shortcut). The whole text will be executed through the selected connection.&lt;/p&gt;
&lt;p&gt;For SQL output, two toolbox are disposed in the bottom area:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The first will show messages returned from the server (errors in red, others in green, like number of affected rows).&lt;/li&gt;
&lt;li&gt;The second contains a table view with a custom model associated, to show resultsets of a query. This custom model does nothing more than a &lt;strong&gt;QSqlQueryModel&lt;/strong&gt;, only provides colors and formatting for each cell..&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ah, about this, my last commit implements a configuration widget that let you choose colors and font styles for text fields, numbers, blobs, nulls, booleans and dates&amp;#8230; cool, yeah? :)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/07/katesql-screenshot-2.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-497&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2010/07/katesql-screenshot-2.png&#34; alt=&#34;KateSQL Configuration Dialog&#34; width=&#34;352&#34; height=&#34;192&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/07/katesql-screenshot-2.png 705w, https://kate-editor.org/wp-content/uploads/2010/07/katesql-screenshot-2-300x163.png 300w&#34; sizes=&#34;(max-width: 352px) 100vw, 352px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Last but not least, on the left panel you can find a basic and useful &lt;strong&gt;schema browser&lt;/strong&gt;, that show the tree schema of the database connection currently selected. With this tree widget you can browse through tables, system tables and views, up to individual fields. obviously, primary key fields are distinguished by the classic yellow key icon.&lt;/p&gt;
&lt;p&gt;Currently, there are few problems with multiple query handling.. Some engines doesn’t supports it natively, others can receive queries separated by a semicolon, but the QSqlQueryModel can handle only one resultset at time.. probably the best solution is to parse the text, split queries, and execute them separately.. Surely, this feature will be implemented soon.&lt;br /&gt;
Stay tuned!&lt;/p&gt;
&lt;p&gt;Of course, if you want to &lt;a href=&#34;https://kate-editor.org/join-us/&#34;&gt;help us&lt;/a&gt; with development, you are welcome!&lt;/p&gt;</description></item><item><title>GSoC – View differences for Kate’s swap files</title><link>https://kate-editor.org/2010/07/27/gsoc-view-differences-for-kates-swap-files/</link><pubDate>Tue, 27 Jul 2010 09:16:07 +0000</pubDate><guid>https://kate-editor.org/2010/07/27/gsoc-view-differences-for-kates-swap-files/</guid><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;div&gt;
As I stated in a previous &lt;a title=&#34;post&#34; href=&#34;https://kate-editor.org/2010/07/12/gsoc-swap-files-for-kate/&#34; target=&#34;_blank&#34;&gt;post&lt;/a&gt;, the swap file feature for Kate is almost done. Back then, the view differences feature wasn&amp;#8217;t ready, but now we have a basic implementation of it.
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
So now, by pressing the &amp;#8220;View changes&amp;#8221; button, a new KProcess is created, which receives as command line arguments the &amp;#8216;diff&amp;#8217; program and the two files to be compared. One file is the original file on the disk, and the other one is represented by the recovered data read from the standard input. Then, Kompare launches, and there you can see the differences.
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
But sadly, at the moment you can&amp;#8217;t merge the changes or some of them through Kompare, but I&amp;#8217;m working on it. All you can do is see the differences and decide whether you want to recover the lost data or not. Close Kompare, and then press the &amp;#8220;Recover&amp;#8221; button or the &amp;#8220;Discard&amp;#8221; one, depending on what you want to do.
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;</description></item><item><title>Spotlight: Kate Scripting</title><link>https://kate-editor.org/2010/07/26/spotlight-kate-scripting-2/</link><pubDate>Mon, 26 Jul 2010 22:51:25 +0000</pubDate><guid>https://kate-editor.org/2010/07/26/spotlight-kate-scripting-2/</guid><description>
&lt;p&gt;Hey ho everyone.&lt;/p&gt;
&lt;p&gt;Dominik asked me to blog about a feature in Kate that is still (sadly!) pretty unknown and seldom used: &lt;em&gt;Kate Scripting&lt;/em&gt;. &lt;a href=&#34;https://kate-editor.org/2009/10/29/extending-kate-with-scripts/&#34;&gt;As&lt;/a&gt; &lt;a href=&#34;https://kate-editor.org/2009/11/01/scripting-kate/&#34;&gt;you&lt;/a&gt; &lt;a href=&#34;https://kate-editor.org/2010/02/17/developer-meeting-more-on-scripting-kate/&#34;&gt;should&lt;/a&gt; &lt;a href=&#34;https://kate-editor.org/2010/07/09/kate-scripted-actions/&#34;&gt;know&lt;/a&gt; you can script KatePart completely via JavaScript. As those articles explain, it&amp;#8217;s rather simple to write functions and put them into a file to have them reusable. But what for those write-use-throwaway kind of cases, where you simply need to get a job done quickly and don&amp;#8217;t want to go through the overhead of writing some full fledged, documented, action-binded, localized script?&lt;/p&gt;
&lt;h5 id=&#34;utility-functions-and-why-javascript-rocks&#34;&gt;Utility Functions and why JavaScript rocks&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Neither &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;map&lt;/code&gt;&lt;/span&gt; nor &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;filter&lt;/code&gt;&lt;/span&gt; will be shipped with 4.5 to my knowledge, sorry about that. But you can still use the &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;each&lt;/code&gt;&lt;/span&gt; helper (see below) to achieve the same with a bit more typing&amp;#8230;&lt;/p&gt;
&lt;p&gt;Take a look at &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;utils.js&lt;/code&gt;&lt;/span&gt; on current git master: &lt;a href=&#34;http://gitorious.org/kate/kate/blobs/master/part/script/data/utils.js&#34;&gt;http://gitorious.org/kate/kate/blobs/master/part/script/data/utils.js&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Put a special note on the helper functions &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;map&lt;/code&gt;&lt;/span&gt;, &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;filter&lt;/code&gt;&lt;/span&gt; and &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;each&lt;/code&gt;&lt;/span&gt; and how they are used to implement e.g. &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;rmblank&lt;/code&gt;&lt;/span&gt;, &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;[rl]trim&lt;/code&gt;&lt;/span&gt; and the other functions. Cool eh? And the best part, you can reuse them directly from inside KatePart to get a job done:&lt;/p&gt;
&lt;h6 id=&#34;mail-style-quoting&#34;&gt;mail-style quoting&lt;/h6&gt;
&lt;p&gt;Lets assume you write an email or use something like Markdown or Textile and want to quote. You&amp;#8217;ll have to prepend a few lines with the two chars &amp;#8216;&amp;gt; &amp;#8216;. Instead of copy&amp;#8217;n&amp;#8217;pasting like a maniac do this instead and save yourself some breath:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;press &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;F7&lt;/code&gt;&lt;/span&gt; to open the Kate command line&lt;/li&gt;
&lt;li&gt;write e.g. &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;map &amp;ldquo;function(l) { return &amp;lsquo;&amp;gt; &amp;lsquo; + l; }&amp;rdquo;&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;execute&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; When you don&amp;#8217;t have anything selected, the whole document will get &amp;#8220;quoted&amp;#8221;.&lt;/p&gt;
&lt;h6 id=&#34;remove-lines-that-match-a-pattern&#34;&gt;remove lines that match a pattern&lt;/h6&gt;
&lt;p&gt;This is something everyone needs to do sooner or later, happened quite a few times to me already. I bet &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;vim&lt;/code&gt;&lt;/span&gt; has some esoteric command I cannot remember and &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;emacs&lt;/code&gt;&lt;/span&gt; has something like &lt;a href=&#34;http://xkcd.com/378/&#34;&gt;&lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;C-x M-c M-butterfly&lt;/code&gt;&lt;/span&gt;&lt;/a&gt;. But with Kate most users only see search &amp;amp; replace and forfeit to the command line. Well, now it&amp;#8217;s again a good time to use the command line:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;press &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;F7&lt;/code&gt;&lt;/span&gt; again&lt;/li&gt;
&lt;li&gt;write e.g. &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;filter &amp;ldquo;function(l) { return l.indexOf(&amp;lsquo;myNeedle&amp;rsquo;) == -1; }&amp;rdquo;&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;execute&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now all lines that contain &amp;#8216;myNeedle&amp;#8217; will get removed. Sure, this is &amp;#8220;verbose&amp;#8221; but assuming you know JavaScript it&amp;#8217;s actually quite easy, expendable and - best of all - good to remember. At least for me, YMMV.&lt;/p&gt;
&lt;h6 id=&#34;shortcuts&#34;&gt;shortcuts&lt;/h6&gt;
&lt;p&gt;For simple cases I&amp;#8217;ve now introduced a shortcut way of doing the above, that saves you even more typing, but is limited to simple evaluations like the ones above. If you need something fancy, you&amp;#8217;ll have to stick to the type-intensive way. Aynhow, here&amp;#8217;s the shortcut version of the two scripts:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;map &amp;ldquo;&amp;rsquo;&amp;gt; &amp;lsquo; + line&amp;rdquo;&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;filter &amp;ldquo;line.indexOf(&amp;lsquo;myNeedle&amp;rsquo;) == -1&amp;rdquo;&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h6 id=&#34;the-guts-span-class-geshifilter-code-class-text-geshifilter-text-each-code-span-interesting-for-users-of-kde-4-x-x-6&#34;&gt;the guts: &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;each&lt;/code&gt;&lt;/span&gt; (interesting for users of KDE 4.x, x &amp;lt; 6)&lt;/h6&gt;
&lt;p&gt;Both of the above are implemented using the &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;each&lt;/code&gt;&lt;/span&gt; helper I introduced even before KDE 4.4 afair. If you are using KDE 4.5 and want to do one of the above, a bit more typing is required:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;for map, you write something like this:&lt;br /&gt;
&lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;each &amp;ldquo;function(lines) { return lines.map(function(l){ /** actual map code **/ }); }&amp;rdquo;&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;for filter you do the same but replace &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;map&lt;/code&gt;&lt;/span&gt; with &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;filter&lt;/code&gt;&lt;/span&gt;:&lt;br /&gt;
&lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;each &amp;ldquo;function(lines) { return lines.filter(function(l){ /** actual filter code **/ }); }&amp;rdquo;&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h5 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h5&gt;
&lt;p&gt;You see, it&amp;#8217;s quite simple &lt;em&gt;and&lt;/em&gt; powerful. I really love map-reduce and how easy it is to use with JavaScript. Hope you like it as well.&lt;/p&gt;
&lt;p&gt;&lt;strike&gt;PS: I actually think about making it yet even easier, by allowing some syntax like this: &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;map &amp;lsquo;&amp;gt; &amp;lsquo; + line&lt;/code&gt;&lt;/span&gt; or &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;filter line.indexOf(&amp;lsquo;myNeedle&amp;rsquo;) == -1&lt;/code&gt;&lt;/span&gt;, must take a look on how hard it would be (beside the need for extensive documentation, but hey we have the &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;help&lt;/code&gt;&lt;/span&gt; command in the Kate CLI, who can complain now? :)&lt;/strike&gt; &lt;strong&gt;Implemented&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bye&lt;/p&gt;</description></item><item><title>Spotlight: Kate Scripting</title><link>https://kate-editor.org/2010/07/26/spotlight-kate-scripting/</link><pubDate>Mon, 26 Jul 2010 22:51:25 +0000</pubDate><guid>https://kate-editor.org/2010/07/26/spotlight-kate-scripting/</guid><description>
&lt;p&gt;Hey ho everyone.&lt;/p&gt;
&lt;p&gt;Dominik asked me to blog about a feature in Kate that is still (sadly!) pretty unknown and seldom used: &lt;em&gt;Kate Scripting&lt;/em&gt;. &lt;a href=&#34;https://kate-editor.org/2009/10/29/extending-kate-with-scripts/&#34;&gt;As&lt;/a&gt; &lt;a href=&#34;https://kate-editor.org/2009/11/01/scripting-kate/&#34;&gt;you&lt;/a&gt; &lt;a href=&#34;https://kate-editor.org/2010/02/17/developer-meeting-more-on-scripting-kate/&#34;&gt;should&lt;/a&gt; &lt;a href=&#34;https://kate-editor.org/2010/07/09/kate-scripted-actions/&#34;&gt;know&lt;/a&gt; you can script KatePart completely via JavaScript. As those articles explain, it&amp;#8217;s rather simple to write functions and put them into a file to have them reusable. But what for those write-use-throwaway kind of cases, where you simply need to get a job done quickly and don&amp;#8217;t want to go through the overhead of writing some full fledged, documented, action-binded, localized script?&lt;/p&gt;
&lt;h5 id=&#34;utility-functions-and-why-javascript-rocks&#34;&gt;Utility Functions and why JavaScript rocks&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Neither &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;map&lt;/code&gt;&lt;/span&gt; nor &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;filter&lt;/code&gt;&lt;/span&gt; will be shipped with 4.5 to my knowledge, sorry about that. But you can still use the &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;each&lt;/code&gt;&lt;/span&gt; helper (see below) to achieve the same with a bit more typing&amp;#8230;&lt;/p&gt;
&lt;p&gt;Take a look at &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;utils.js&lt;/code&gt;&lt;/span&gt; on current git master: &lt;a href=&#34;http://gitorious.org/kate/kate/blobs/master/part/script/data/utils.js&#34;&gt;http://gitorious.org/kate/kate/blobs/master/part/script/data/utils.js&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Put a special note on the helper functions &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;map&lt;/code&gt;&lt;/span&gt;, &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;filter&lt;/code&gt;&lt;/span&gt; and &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;each&lt;/code&gt;&lt;/span&gt; and how they are used to implement e.g. &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;rmblank&lt;/code&gt;&lt;/span&gt;, &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;[rl]trim&lt;/code&gt;&lt;/span&gt; and the other functions. Cool eh? And the best part, you can reuse them directly from inside KatePart to get a job done:&lt;/p&gt;
&lt;h6 id=&#34;mail-style-quoting&#34;&gt;mail-style quoting&lt;/h6&gt;
&lt;p&gt;Lets assume you write an email or use something like Markdown or Textile and want to quote. You&amp;#8217;ll have to prepend a few lines with the two chars &amp;#8216;&amp;gt; &amp;#8216;. Instead of copy&amp;#8217;n&amp;#8217;pasting like a maniac do this instead and save yourself some breath:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;press &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;F7&lt;/code&gt;&lt;/span&gt; to open the Kate command line&lt;/li&gt;
&lt;li&gt;write e.g. &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;map &amp;ldquo;function(l) { return &amp;lsquo;&amp;gt; &amp;lsquo; + l; }&amp;rdquo;&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;execute&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; When you don&amp;#8217;t have anything selected, the whole document will get &amp;#8220;quoted&amp;#8221;.&lt;/p&gt;
&lt;h6 id=&#34;remove-lines-that-match-a-pattern&#34;&gt;remove lines that match a pattern&lt;/h6&gt;
&lt;p&gt;This is something everyone needs to do sooner or later, happened quite a few times to me already. I bet &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;vim&lt;/code&gt;&lt;/span&gt; has some esoteric command I cannot remember and &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;emacs&lt;/code&gt;&lt;/span&gt; has something like &lt;a href=&#34;http://xkcd.com/378/&#34;&gt;&lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;C-x M-c M-butterfly&lt;/code&gt;&lt;/span&gt;&lt;/a&gt;. But with Kate most users only see search &amp;amp; replace and forfeit to the command line. Well, now it&amp;#8217;s again a good time to use the command line:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;press &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;F7&lt;/code&gt;&lt;/span&gt; again&lt;/li&gt;
&lt;li&gt;write e.g. &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;filter &amp;ldquo;function(l) { return l.indexOf(&amp;lsquo;myNeedle&amp;rsquo;) == -1; }&amp;rdquo;&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;execute&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now all lines that contain &amp;#8216;myNeedle&amp;#8217; will get removed. Sure, this is &amp;#8220;verbose&amp;#8221; but assuming you know JavaScript it&amp;#8217;s actually quite easy, expendable and - best of all - good to remember. At least for me, YMMV.&lt;/p&gt;
&lt;h6 id=&#34;shortcuts&#34;&gt;shortcuts&lt;/h6&gt;
&lt;p&gt;For simple cases I&amp;#8217;ve now introduced a shortcut way of doing the above, that saves you even more typing, but is limited to simple evaluations like the ones above. If you need something fancy, you&amp;#8217;ll have to stick to the type-intensive way. Aynhow, here&amp;#8217;s the shortcut version of the two scripts:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;map &amp;ldquo;&amp;rsquo;&amp;gt; &amp;lsquo; + line&amp;rdquo;&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;filter &amp;ldquo;line.indexOf(&amp;lsquo;myNeedle&amp;rsquo;) == -1&amp;rdquo;&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h6 id=&#34;the-guts-span-class-geshifilter-code-class-text-geshifilter-text-each-code-span-interesting-for-users-of-kde-4-x-x-6&#34;&gt;the guts: &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;each&lt;/code&gt;&lt;/span&gt; (interesting for users of KDE 4.x, x &amp;lt; 6)&lt;/h6&gt;
&lt;p&gt;Both of the above are implemented using the &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;each&lt;/code&gt;&lt;/span&gt; helper I introduced even before KDE 4.4 afair. If you are using KDE 4.5 and want to do one of the above, a bit more typing is required:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;for map, you write something like this:&lt;br /&gt;
&lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;each &amp;ldquo;function(lines) { return lines.map(function(l){ /** actual map code **/ }); }&amp;rdquo;&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;for filter you do the same but replace &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;map&lt;/code&gt;&lt;/span&gt; with &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;filter&lt;/code&gt;&lt;/span&gt;:&lt;br /&gt;
&lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;each &amp;ldquo;function(lines) { return lines.filter(function(l){ /** actual filter code **/ }); }&amp;rdquo;&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h5 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h5&gt;
&lt;p&gt;You see, it&amp;#8217;s quite simple &lt;em&gt;and&lt;/em&gt; powerful. I really love map-reduce and how easy it is to use with JavaScript. Hope you like it as well.&lt;/p&gt;
&lt;p&gt;&lt;strike&gt;PS: I actually think about making it yet even easier, by allowing some syntax like this: &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;map &amp;lsquo;&amp;gt; &amp;lsquo; + line&lt;/code&gt;&lt;/span&gt; or &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;filter line.indexOf(&amp;lsquo;myNeedle&amp;rsquo;) == -1&lt;/code&gt;&lt;/span&gt;, must take a look on how hard it would be (beside the need for extensive documentation, but hey we have the &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;help&lt;/code&gt;&lt;/span&gt; command in the Kate CLI, who can complain now? :)&lt;/strike&gt; &lt;strong&gt;Implemented&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bye&lt;/p&gt;</description></item><item><title>The Mission of KDE’s Wikis</title><link>https://kate-editor.org/2010/07/26/the-mission-of-kdes-wikis/</link><pubDate>Sun, 25 Jul 2010 22:21:36 +0000</pubDate><guid>https://kate-editor.org/2010/07/26/the-mission-of-kdes-wikis/</guid><description>&lt;p&gt;KDE has three wikis: &lt;a title=&#34;KDE TechBase&#34; href=&#34;http://techbase.kde.org&#34; target=&#34;_blank&#34;&gt;TechBase&lt;/a&gt;, &lt;a title=&#34;KDE Community Wiki&#34; href=&#34;http://community.kde.org&#34; target=&#34;_blank&#34;&gt;Community&lt;/a&gt; and &lt;a title=&#34;KDE UserBase&#34; href=&#34;http://userbase.kde.org&#34; target=&#34;_blank&#34;&gt;UserBase&lt;/a&gt;. The separation has the following meaning according to &lt;a href=&#34;http://wiki.kde.org&#34; target=&#34;_blank&#34;&gt;&lt;a href=&#34;http://wiki.kde.org&#34;&gt;http://wiki.kde.org&lt;/a&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TechBase&lt;/strong&gt;: The primary place for high quality technical information about KDE targeted at 3rd party developers, ISVs and system administrators.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Community&lt;/strong&gt;: The working area for the KDE community. It provides a place for sharing information within the community and coordinating community teams.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UserBase&lt;/strong&gt;: The home for KDE users and enthusiasts. It provides high quality information for end users on how to use KDE applications.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So TechBase is a source of mostly technical information. This includes step-by-step howtos for all sorts of KDE development as well as the feature plans and schedules for KDE releases and so forth. It&amp;#8217;s &lt;em&gt;mainly static content&lt;/em&gt;. Think of a howto for a Plasma Widget or a howto for building KDE. The content usually is valid for a long time, mostly even for &lt;em&gt;years&lt;/em&gt;. For those of you longer in the KDE project, TechBase is the same as our good old developer.kde.org page (and we&amp;#8217;ve never put arbitrary content there). The only difference is, that it&amp;#8217;s now maintained as wiki.&lt;/p&gt;
&lt;p&gt;UserBase is the same thing for users. It provides information about tips and tricks for KDE application, links to further pages an so on. It&amp;#8217;s also rather static content. This is also why TechBase and UserBase both feature the &amp;#8220;high quality&amp;#8221; term.&lt;/p&gt;
&lt;p&gt;This leaves us with the youngest of our wikis: the Community wiki. The purpose of the Community wiki is to give the KDE community a place where to coordinate. Think of leaving notes for thoughts. Or a list of contributors attending a conference. The current todo-list of a KDE project. In other words: **The community wiki is a scratch pad for all sorts of content that does not really fit into TechBase or UserBase. If you are unsure, the community wiki is most likely the right place.&lt;br /&gt;
**&lt;/p&gt;
&lt;p&gt;Currently, there is a lot of content on TechBase that never was supposed to be put there. This is because the Community wiki did not exist earlier. So what should be moved from TechBase to the Community wiki? &lt;strong&gt;All the articles in the &lt;a title=&#34;Projects on TechBase&#34; href=&#34;http://techbase.kde.org/Projects&#34; target=&#34;_blank&#34;&gt;Projects page&lt;/a&gt; without exception belong in the Community wiki&lt;/strong&gt;. Just read through the list and you&amp;#8217;ll get the impression that it&amp;#8217;s more a dumping ground for some project related content. This is exactly what we NOT want on TechBase. However, people keep putting content there. So this is an appeal to the KDE community: &lt;strong&gt;Please use the community wiki! You are free to do there whatever you want :)&lt;/strong&gt; We have to take care to keep TechBase maintainable (this is also why techbase uses the subpages to structure the content). Sometimes less is more, so please take the time to remove Projects pages no longer needed, or move them to the community wiki. And especially put new content to the Community wiki instead of TechBase. Thanks!!!&lt;/p&gt;</description></item><item><title>Join Kate Development!</title><link>https://kate-editor.org/2010/07/23/join-kate-development/</link><pubDate>Fri, 23 Jul 2010 17:10:53 +0000</pubDate><guid>https://kate-editor.org/2010/07/23/join-kate-development/</guid><description>&lt;p style=&#34;text-align: left;&#34;&gt;
The Wheel of Time turns&amp;#8230; meaning that the Kate Project has quite along history by now. The Kate Project was started back in December 2000, so it&amp;#8217;s almost 10 years old. Development sometimes continues with a fast pace; and at other times there is almost no progress for weeks. But all in all, looking back at those 10 years, we can proudly tell you that the project is very much alive. Let&amp;#8217;s take a look at the &lt;em&gt;traffic of our mailing&lt;/em&gt; list:&lt;img class=&#34;size-full wp-image-459 aligncenter&#34; title=&#34;Traffic on the kate mailing list&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2010/07/kwrite-devel.png&#34; alt=&#34;&#34; width=&#34;440&#34; height=&#34;221&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/07/kwrite-devel.png 440w, https://kate-editor.org/wp-content/uploads/2010/07/kwrite-devel-300x150.png 300w&#34; sizes=&#34;(max-width: 440px) 100vw, 440px&#34; /&gt;
&lt;/p&gt;
&lt;p style=&#34;text-align: left;&#34;&gt;
The traffic itself does not say much about the development. It probably tells us that there are quite a lot of people using Kate and reporting wishes and bugs. This is a good thing :) The commit statistics for Kate, KWrite and the KTextEditor interfaces look like this:
&lt;/p&gt;
&lt;p style=&#34;text-align: left;&#34;&gt;
&lt;img class=&#34;aligncenter size-full wp-image-460&#34; title=&#34;Kate, KWrite and KTextEditor Commits&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2010/07/kate-commits.png&#34; alt=&#34;&#34; width=&#34;440&#34; height=&#34;221&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/07/kate-commits.png 440w, https://kate-editor.org/wp-content/uploads/2010/07/kate-commits-300x150.png 300w&#34; sizes=&#34;(max-width: 440px) 100vw, 440px&#34; /&gt;Before 2000, Kate did not exist yet. Instead, so these commits come from the KWrite days. The commit rate is quite constant according to this statistic. In fact, there usually are always several developers working on Kate. Some only for a short period to implement single features or fix some bugs, and some long-term contributors. A very nice trend is given by the fact that &lt;a title=&#34;The Kate Team&#34; href=&#34;https://kate-editor.org/the-team/&#34; target=&#34;_self&#34;&gt;the core team of Kate grew&lt;/a&gt; from about 4 to 7 developers over the last two years. So the Kate Project is very healthy &amp;#8211; nice! And of course we are happy for every single contribution. So if you want to get involved in Kate development, &lt;a title=&#34;Join Us!&#34; href=&#34;https://kate-editor.org/join-us/&#34; target=&#34;_self&#34;&gt;join us&lt;/a&gt;!
&lt;/p&gt;</description></item><item><title>MovingRanges moving on ;)</title><link>https://kate-editor.org/2010/07/23/movingranges-moving-on/</link><pubDate>Fri, 23 Jul 2010 07:55:09 +0000</pubDate><guid>https://kate-editor.org/2010/07/23/movingranges-moving-on/</guid><description>&lt;p&gt;As with any new code, during adoption bottlenecks show up.&lt;/p&gt;
&lt;p&gt;For example the rendering of text lines with many ranges inside was quiet slow. This is now partly addressed by Milian Wolff, thanks a lot.&lt;/p&gt;
&lt;p&gt;An other bottleneck was the assumption, that it is fast enough to hash the ranges just by their block and iterate over all of them to search the ranges matching a specific line. This does scale well enough for KatePart itself, but KDevelop creates multi-thousand ranges for small documents. To improve this, an internal special mapping was implemented by David Nolden for ranges which don&amp;#8217;t span more than one line. For them an efficient line =&amp;gt; range mapping is easy and not to costly.&lt;/p&gt;
&lt;p&gt;If both changes are tested a bit more, they can be backported in time for KDE 4.5, which will allow a good usability of KatePart for KDevelop once again after the rewrite, given other bugs are fixed.&lt;/p&gt;</description></item><item><title>The Holy Church of Kate!</title><link>https://kate-editor.org/2010/07/16/the-holy-church-of-kate/</link><pubDate>Fri, 16 Jul 2010 20:51:31 +0000</pubDate><guid>https://kate-editor.org/2010/07/16/the-holy-church-of-kate/</guid><description>&lt;p&gt;Last year we already discovered that &lt;a title=&#34;News from the Holy Kate Land&#34; href=&#34;https://kate-editor.org/2009/09/18/news-from-the-holy-kate-land/&#34; target=&#34;_self&#34;&gt;Kate is truly the only holy text editor&lt;/a&gt;* (again thanks to rms for making us aware of it)! (and btw, &lt;a title=&#34;xkcd&#34; href=&#34;http://xkcd.com/378/&#34; target=&#34;_blank&#34;&gt;xkcd is totally wrong&lt;/a&gt;). And now we even have yet another proof: The holy Kate maintainer and the naked woman! &lt;a title=&#34;Join Us!&#34; href=&#34;https://kate-editor.org/join-us/&#34; target=&#34;_self&#34;&gt;Enjoy&lt;/a&gt; :-)&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
&lt;img class=&#34;size-full wp-image-420 aligncenter&#34; title=&#34;naked-woman&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2010/07/naked-woman.jpg&#34; alt=&#34;The Kate Maintainer and The Naked Woman&#34; width=&#34;600&#34; height=&#34;800&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/07/naked-woman.jpg 600w, https://kate-editor.org/wp-content/uploads/2010/07/naked-woman-225x300.jpg 225w&#34; sizes=&#34;(max-width: 600px) 100vw, 600px&#34; /&gt;
&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
(*) this is an insider from the joint KDE and Gnome conference (gcds) in Las Palmas, Gran Canaria, 2009.
&lt;/p&gt;</description></item><item><title>KDE 4.5: SmartRange =&gt; MovingRange</title><link>https://kate-editor.org/2010/07/13/kde-4-5-smartrange-movingrange/</link><pubDate>Tue, 13 Jul 2010 13:57:46 +0000</pubDate><guid>https://kate-editor.org/2010/07/13/kde-4-5-smartrange-movingrange/</guid><description>&lt;p&gt;Dominik already &lt;a href=&#34;https://kate-editor.org/2010/04/28/kate-internals-smart-cursors-and-smart-ranges/&#34;&gt;blogged&lt;/a&gt; about the issues we have in KatePart with the current SmartRange/SmartCursor/Smart* interfaces that were designed during the early KDE 4.0 release.&lt;/p&gt;
&lt;p&gt;Given that large amounts of the internal implementation are exposed to the outside in the interfaces, there was no feasible way to fix the issues with them. The problem with the not thread-safe behaviour could have been prevented by just stating the plain fact that multi-threaded access to the ranges doesn&amp;#8217;t work, even thought there is a mutex in the interface exposed which should be locked to gain this safety. Still the real problems of the unchangable bad implemenation and design choices would have remained.&lt;/p&gt;
&lt;p&gt;Given the fact, that the SmartInterface is an additional interface for a KTextEditor component and no component is required to implement it, we went the way to create a new redesigned additional interface, the MovingInterface.&lt;/p&gt;
&lt;p&gt;In short: it is a stripped down version of the SmartInterface, which tries to avoid to expose any implementation details and is focused on provide the features actually used by other applications like KDevelop and have them working correct instead of providing just a mass of features, which doesn&amp;#8217;t work at all in all corner cases.&lt;/p&gt;
&lt;p&gt;For KDE 4.5, to not just break all applications which rely on the SmartInterface be implemented in KatePart, both interfaces will be implemented there.&lt;/p&gt;
&lt;p&gt;As the SmartRange stuff somehow slipped into the CodeCompletionModelControllerInterface, we will provide a new version of this interface, too, version 3, subsuming 1 + 2, but without SmartRanges inside.&lt;/p&gt;
&lt;p&gt;For KDE 4.6, KatePart won&amp;#8217;t implement any longer the SmartInterface nor the old CodeCompletionModelControllerInterface(2), but:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MovingInterface&lt;/li&gt;
&lt;li&gt;CodeCompletionModelControllerInterface3&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your application relies on any of these two interfaces to be implemented (or will be crippled without them), you should switch over to the new interfaces and require KDE 4.5, as soon as it is released.&lt;br /&gt;
That way the applications will just keep working with KDE 4.5 and higher.&lt;/p&gt;
&lt;p&gt;KDevelop already is on the way to do so, hope others might follow (the interfaces are not widely used it seems, that at least means not that much applications are hit, KDevelop and Kile are for sure the major ones).&lt;/p&gt;
&lt;p&gt;I can understand that this change might not be really liked by any project using the interfaces, but the plain facts are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the code doesn&amp;#8217;t work&lt;/li&gt;
&lt;li&gt;it is not maintained&lt;/li&gt;
&lt;li&gt;nobody still around really understands it&lt;/li&gt;
&lt;li&gt;the BC of the interfaces disallows to fix the design flaws without a new interface&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There will be more information for about the new stuff in the future,  but thought it is a good idea to remember people outside of the Kate development about the changes, before KDE 4.5 releases (which still will provide a KatePart implementing the old interfaces).&lt;/p&gt;</description></item><item><title>GSoC – Swap Files for Kate</title><link>https://kate-editor.org/2010/07/12/gsoc-swap-files-for-kate/</link><pubDate>Mon, 12 Jul 2010 09:59:04 +0000</pubDate><guid>https://kate-editor.org/2010/07/12/gsoc-swap-files-for-kate/</guid><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;As mid-term evaluations have started, I would like to show my current state of GSoC project, because I&amp;#8217;ve never found the time to do it.&lt;/p&gt;
&lt;p&gt;The swap file feature is implemented, except for the view differences feature and few TODOs. Some more testing need to be done, though. Below are some screenshots of how it works.&lt;/p&gt;
&lt;p&gt;When you start editing in a document, a swap file for the document is created (&amp;#8220;.swp.originalFileName&amp;#8221;). If Kate crashes and the user didn&amp;#8217;t save the changes, the swap file remains on the disk.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/07/snapshot4.png&#34;&gt;&lt;img class=&#34;aligncenter size-large wp-image-394&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2010/07/snapshot4-1024x640.png&#34; alt=&#34;&#34; width=&#34;600&#34; height=&#34;375&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/07/snapshot4-1024x640.png 1024w, https://kate-editor.org/wp-content/uploads/2010/07/snapshot4-300x187.png 300w, https://kate-editor.org/wp-content/uploads/2010/07/snapshot4.png 1440w&#34; sizes=&#34;(max-width: 600px) 100vw, 600px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On the load of the original file, Kate checks if there is a swap file on the disk, and if it is, a warning bar pops from the top, asking if you either want to recover the data loss, discard it or view differences. If the recover button is pressed, the lost data is replayed. Otherwise, if the discard button is pressed, the swap file is removed from the disk. This also happens on normal close and on save of the original file.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/07/snapshot5.png&#34;&gt;&lt;img class=&#34;aligncenter size-large wp-image-395&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2010/07/snapshot5-1024x640.png&#34; alt=&#34;&#34; width=&#34;600&#34; height=&#34;375&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/07/snapshot5-1024x640.png 1024w, https://kate-editor.org/wp-content/uploads/2010/07/snapshot5-300x187.png 300w, https://kate-editor.org/wp-content/uploads/2010/07/snapshot5.png 1440w&#34; sizes=&#34;(max-width: 600px) 100vw, 600px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
Many thanks to Christoph and Dominik who helped me get it through.
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Akademy 2010 – Best experience so far</title><link>https://kate-editor.org/2010/07/11/akademy-2010-best-experience-so-far/</link><pubDate>Sun, 11 Jul 2010 18:23:13 +0000</pubDate><guid>https://kate-editor.org/2010/07/11/akademy-2010-best-experience-so-far/</guid><description>&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/07/logo_akademy-sq.png&#34;&gt;&lt;img class=&#34;aligncenter size-medium wp-image-388&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2010/07/logo_akademy-sq-300x300.png&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;300&#34; srcset=&#34;https://kate-editor.org/wp-content/uploads/2010/07/logo_akademy-sq-300x300.png 300w, https://kate-editor.org/wp-content/uploads/2010/07/logo_akademy-sq-150x150.png 150w, https://kate-editor.org/wp-content/uploads/2010/07/logo_akademy-sq.png 500w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My first Akademy was the greatest thing I&amp;#8217;ve ever experienced. I remember I was quite unsure a month ago, wheter to come or not, but finally decided and booked my flight and hotel. In my first day, I was very shy and didn&amp;#8217;t know what to do, but people came and talked to me and everything got better. The talks had very interesting topics and the speakers did their job professionally. I also want to congratulate the organization team, for making everything happen as scheduled.&lt;/p&gt;
&lt;p&gt;The BoFs at Demola were even more interesting. You go there, find a place to sit, and start hacking with many other KDE developers. I never did this before and it is simply amazing. You can&amp;#8217;t believe the things that can come out from these hacking days/nights :).&lt;/p&gt;
&lt;p&gt;I have never thought that KDE is such a great community, but now I am convinced. Akademy gave me a lot of confidence ( especially &amp;#8220;Highlights on KDE Women&amp;#8221; talk :P ) and now I really feel I can bring something to KDE. I am a little sad because I couldn&amp;#8217;t attend the whole Akademy, but I think that more Akademies are to come :).&lt;/p&gt;</description></item><item><title>kate-editor.org shaping up</title><link>https://kate-editor.org/2010/07/10/kate-editor-org-shaping-up/</link><pubDate>Sat, 10 Jul 2010 08:27:28 +0000</pubDate><guid>https://kate-editor.org/2010/07/10/kate-editor-org-shaping-up/</guid><description>&lt;p&gt;kate-editor.org now contains all articles from the old page still applicable to Kate in KDE 4 and in addition all blog entries of Dominik which are Kate centric.&lt;/p&gt;
&lt;p&gt;Beside that it will aggregate the blog entries of Milian for Kate ;)&lt;/p&gt;
&lt;p&gt;Still, a lot of work is needed. We already got an offer for help to beautify the page by a web designer, still content writers are missing. You have a nice short post about how to use Kate best? You have some howto? Just contact &lt;a href=&#34;mailto:kwrite-devel@kde.org&#34;&gt;us&lt;/a&gt; or me in &lt;a href=&#34;mailto:cullmann@kde.org&#34;&gt;private&lt;/a&gt;. We can either give you an account on the page or just add your content if you like that more.&lt;/p&gt;</description></item><item><title>New kate-editor.org launched</title><link>https://kate-editor.org/2010/07/09/new-kate-editor-org-launched/</link><pubDate>Fri, 09 Jul 2010 09:23:39 +0000</pubDate><guid>https://kate-editor.org/2010/07/09/new-kate-editor-org-launched/</guid><description>&lt;p&gt;After some years of no real updates, beside the brave work of Dominik, a new &lt;a href=&#34;https://kate-editor.org/&#34;&gt;kate-editor.org&lt;/a&gt; is launched.&lt;/p&gt;
&lt;p&gt;It will be used to aggregate the blogs of the Kate developers and provide information about current development in Kate/KWrite/KatePart and guides for users.&lt;/p&gt;
&lt;p&gt;Hope more people join the effort to once again provide a constant stream of up-to-date information.&lt;/p&gt;</description></item><item><title>Kate: Scripted Actions</title><link>https://kate-editor.org/2010/07/09/kate-scripted-actions/</link><pubDate>Fri, 09 Jul 2010 09:04:00 +0000</pubDate><guid>https://kate-editor.org/2010/07/09/kate-scripted-actions/</guid><description>&lt;p&gt;Finally, I came around to implement scripted actions for Kate in KDE SC 4.6. Let&amp;#8217;s take a look at how this works. When Kate starts, it searches for $KDEDIRS/share/apps/katepart/script/ for *.js files. As example, let&amp;#8217;s take a look at utils.js there:&lt;/p&gt;
&lt;pre&gt;/* kate-script
* author: Dominik Haumann Haumann
* license: LGPL
* revision: 3
* kate-version: 3.4
* type: commands
* functions: moveLinesDown
*/
function moveLinesDown()
{
var fromLine = -1;
var toLine = -1;
var selectionRange = view.selection();
if (selectionRange.isValid() &amp;&amp;
selectionRange.end.line &amp;lt; document.lines() - 1)
{
toLine = selectionRange.start.line;
fromLine = selectionRange.end.line + 1;
} else if (view.cursorPosition().line &amp;lt; document.lines() - 1) {
toLine = view.cursorPosition().line;
fromLine = toLine + 1;
}
if (fromLine != -1 &amp;&amp; toLine != -1) {
var text = document.line(fromLine);
document.editBegin();
document.removeLine(fromLine);
document.insertLine(toLine, text);
document.editEnd();
}
}
function action(cmd)
{
var a = new Object();
if (cmd == &#34;moveLinesDown&#34;) {
a.text = i18n(&#34;Move Lines Down&#34;);
a.icon = &#34;&#34;;
a.category = &#34;&#34;;
a.interactive = false;
a.shortcut = &#34;&#34;;
}
return a;
}
function help(cmd)
{
if (cmd == &#34;moveLinesDown&#34;) {
return i18n(&#34;Move selected lines down.&#34;);
}
}&lt;/pre&gt;
&lt;p&gt;What happens is the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;the header tells kate that there is an exported function &amp;#8220;moveLinesDown&amp;#8221;&lt;/li&gt;
&lt;li&gt;so when Kate Part is loaded, it calls &amp;#8220;action(moveLinesDown)&amp;#8221; to check whether this function should be exposed in the GUI. Here, we return the action info that includes the displayed text, an icon, a category, whether the script needs user input (interactive) and a default shortcut. Of course, you can change the shortcuts, and also configure the toolbars to show the actions.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;With this, every user is able to script arbitrary editing functions for Kate Part. We don&amp;#8217;t have to implement all those helpers in C++ anymore. The result looks like this:&lt;br /&gt;
&lt;a href=&#34;http://3.bp.blogspot.com/_JcjnuQSFzjw/TDbqo9NbCQI/AAAAAAAAAEM/8RVBJ2l17mc/s1600/scriptaction.png&#34; onblur=&#34;try {parent.deselectBloggerImageGracefully();} catch(e) {}&#34;&gt;&lt;img id=&#34;BLOGGER_PHOTO_ID_5491834784971426050&#34; style=&#34;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 298px;&#34; src=&#34;http://3.bp.blogspot.com/_JcjnuQSFzjw/TDbqo9NbCQI/AAAAAAAAAEM/8RVBJ2l17mc/s400/scriptaction.png&#34; border=&#34;0&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;You can have this already now, you just have to use the &lt;a title=&#34;Building Kate&#34; href=&#34;https://kate-editor.org/get-it/&#34; target=&#34;_self&#34;&gt;development version&lt;/a&gt; of Kate :)&lt;/p&gt;</description></item><item><title>Enjoying Tampere</title><link>https://kate-editor.org/2010/07/07/enjoying-tampere/</link><pubDate>Tue, 06 Jul 2010 22:11:00 +0000</pubDate><guid>https://kate-editor.org/2010/07/07/enjoying-tampere/</guid><description>&lt;p&gt;As always, the KDE conference has its funny sides, as you can see on the photo: 4 Kate developers shaping the future of the (as you all know) most awesome application: Kate :-)&lt;br /&gt;
&lt;a onblur=&#34;try {parent.deselectBloggerImageGracefully();} catch(e) {}&#34; href=&#34;http://2.bp.blogspot.com/_JcjnuQSFzjw/TDOqNVjjtwI/AAAAAAAAAEE/iwPLElohTnE/s1600/prettywoman-small.jpeg&#34;&gt;&lt;img style=&#34;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;&#34; src=&#34;http://2.bp.blogspot.com/_JcjnuQSFzjw/TDOqNVjjtwI/AAAAAAAAAEE/iwPLElohTnE/s400/prettywoman-small.jpeg&#34; alt=&#34;&#34; id=&#34;BLOGGER_PHOTO_ID_5490919516796073730&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>A Flashback of Kate in Gitorious</title><link>https://kate-editor.org/2010/06/24/a-flashback-of-kate-in-gitorious/</link><pubDate>Thu, 24 Jun 2010 20:32:00 +0000</pubDate><guid>https://kate-editor.org/2010/06/24/a-flashback-of-kate-in-gitorious/</guid><description>&lt;p&gt;Back in February, I blogged about &lt;a href=&#34;https://kate-editor.org/?p=109&#34; target=&#34;_self&#34;&gt;Kate&amp;#8217;s move to gitorious&lt;/a&gt;. The main reason for this move was to make building Kate as easy as possible. If you want to build Kate as part of KDE, (as of now) you have to compile kdesupport, phonon, dbusmenu-qt, kdelibs, kdepimlibs, kdebase for kwrite and kdesdk for the kate application. Getting all this done is a huge effort, especially if you are new to KDE development (I very well remember my own times spending weeks to get everything going. Be aware of new contributors might now close to nothing about KDE and all the dependencies!).&lt;br /&gt;
As &lt;span style=&#34;font-style: italic;&#34;&gt;getting new contributors is essential for keeping a project alive&lt;/span&gt;, the barrier to get involved should be as low as possible. And exactly this was achieved by moving all pieces to one place (this was gitorious for us). &lt;a title=&#34;Building Kate&#34; href=&#34;https://kate-editor.org/get-it/&#34; target=&#34;_self&#34;&gt;Building Kate is so simple right&lt;/a&gt; now that we can even make bug reporters build Kate out of the box. This helps a lot, and even results in patches from time to time. We also got quite some merge requests.&lt;br /&gt;
There were several voices at that time that considered moving &amp;#8220;away from KDE&amp;#8221; was very bad. However, this is not the case, as Christoph is synchronizing all the changes in KDE&amp;#8217;s subversion and gitorious almost every day. This is certainly not optimal, but looking back at the last months, we can say it was worth it.&lt;br /&gt;
KDE is moving to &lt;a href=&#34;http://cgit.kde.org/&#34;&gt;git.kde.org&lt;/a&gt; in the near future. This also raises the discussion about how KDE&amp;#8217;s source code will be organized. Speaking for Kate, we certainly want to have all of Kate&amp;#8217;s code in one place, just as it is now with gitorious, no matter what :) I hope we can find a solution the KDE community can live with. To be discussed, maybe &lt;a href=&#34;http://akademy2010.kde.org/&#34;&gt;in Tampere in two weeks&lt;/a&gt;? :)&lt;/p&gt;</description></item><item><title>Debugging Kate with Qt Creator</title><link>https://kate-editor.org/2010/06/19/kate-debugging-with-qt-creator/</link><pubDate>Sat, 19 Jun 2010 09:48:00 +0000</pubDate><guid>https://kate-editor.org/2010/06/19/kate-debugging-with-qt-creator/</guid><description>&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/wp-content/uploads/2010/06/qtcreator-sidebar.png&#34;&gt;&lt;img class=&#34;size-full wp-image-336&#34; title=&#34;qtcreator-sidebar&#34; src=&#34;https://kate-editor.org/wp-content/uploads/2010/06/qtcreator-sidebar.png&#34; alt=&#34;&#34; width=&#34;71&#34; height=&#34;542&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s have a quick look at how to debug Kate and KWrite with Qt Creator. First, make sure you meet the requirements:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a title=&#34;Building Kate&#34; href=&#34;https://kate-editor.org/get-it/&#34; target=&#34;_self&#34;&gt;build Kate according to this tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.qt.io/ide/&#34; target=&#34;_blank&#34;&gt;install Qt-Creator&lt;/a&gt; (in my case this is version 2.0.0)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Setup the Kate project Qt-Creator once like this&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;start Qt-Creator like this (&lt;strong&gt;important to get all environment variables right&lt;/strong&gt;):&lt;br /&gt;
&lt;span style=&#34;font-family: courier new;&#34;&gt;~/kde/run.sh qtcreator&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;invoke &lt;span style=&#34;font-family: courier new;&#34;&gt;File &amp;gt; Open File or Project&lt;/span&gt; and choose &lt;span style=&#34;font-family: courier new;&#34;&gt;~/kde/kate/CMakeLists.txt&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Build Location: choose &lt;span style=&#34;font-family: courier new;&#34;&gt;~/kde/build&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Run CMake arguments: type&lt;br /&gt;
&lt;span style=&#34;font-family: courier new;&#34;&gt;../kate -DCMAKE_BUILD_TYPE=debugfull -DCMAKE_INSTALL_PREFIX=~/kde/usr&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;click the button &amp;#8220;Run CMake&amp;#8221; and then &amp;#8220;Finish&amp;#8221;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Start debugging like this&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;click the &lt;strong&gt;&amp;copy;&lt;/strong&gt; &amp;#8220;hammer&amp;#8221; icon button on the very bottom left to compile Kate&lt;/li&gt;
&lt;li&gt;click the &lt;strong&gt;(B)&lt;/strong&gt; &amp;#8220;computer&amp;#8221; icon button and choose &amp;#8220;kate&amp;#8221; (or &amp;#8220;kwrite&amp;#8221;) in the Run combo box&lt;/li&gt;
&lt;li&gt;choose the &lt;strong&gt;(A)&lt;/strong&gt; &amp;#8220;Debug&amp;#8221; icon in the left pane&lt;/li&gt;
&lt;li&gt;invoke &amp;#8220;Debug &amp;gt; Start Debugging (F5)&amp;#8221;, now Kate starts&lt;/li&gt;
&lt;li&gt;open part/document/katedocument.cpp in the file tree view on the left&lt;/li&gt;
&lt;li&gt;go to the line &amp;#8220;&lt;span style=&#34;font-family: courier new;&#34;&gt;KateDocument::insertText&lt;/span&gt;&amp;#8221; and click &amp;#8220;Debug &amp;gt; Toggle Breakpoint (F9)&amp;#8221;&lt;/li&gt;
&lt;li&gt;now if you type a character in Kate, Qt-Crator will halt in &lt;span style=&#34;font-family: courier new;&#34;&gt;KateDocument::insertText&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;chose &amp;#8220;Debug &amp;gt; Step Opver (F10)&amp;#8221; (and &amp;#8220;Debug &amp;gt; Stip Into (F11)&amp;#8221;) to step through the code&lt;/li&gt;
&lt;li&gt;click on &amp;#8220;Locals and Watchers&amp;#8221; in the debugging pane on the bottom and you see the values of local variables&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Happy debugging! :)&lt;/p&gt;</description></item><item><title>Kate: Code Folding Crash</title><link>https://kate-editor.org/2010/06/10/kate-code-folding-crash/</link><pubDate>Thu, 10 Jun 2010 20:55:00 +0000</pubDate><guid>https://kate-editor.org/2010/06/10/kate-code-folding-crash/</guid><description>&lt;p&gt;We still have a &lt;a href=&#34;http://bugs.kde.org/show_bug.cgi?id=213964&#34;&gt;crash in Kate&amp;#8217;s code folding code&lt;/a&gt;; no one was able to find a proper fix, yet. So if you want to get your hands dirty, &lt;a href=&#34;http://gitorious.org/kate/pages/Building%20Kate&#34;&gt;just build Kate&lt;/a&gt;, find a fix and be the hero of all Kate developers :)&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;Update: &lt;/span&gt;Fixed by Stefan Schenk &lt;a href=&#34;http://gitorious.org/kate/kate/commit/8db89fcffbb18a9001eedbc4d33256026fd5ae85&#34;&gt;in this commit for KDE 4.5&lt;/a&gt;. Awesome! :)&lt;/p&gt;</description></item><item><title>Kate Internals: Smart Cursors and Smart Ranges</title><link>https://kate-editor.org/2010/04/28/kate-internals-smart-cursors-and-smart-ranges/</link><pubDate>Wed, 28 Apr 2010 15:53:00 +0000</pubDate><guid>https://kate-editor.org/2010/04/28/kate-internals-smart-cursors-and-smart-ranges/</guid><description>&lt;p&gt;&lt;span style=&#34;font-size:180%;&#34;&gt;SmartCursors and SmartRanges in KDE 4.0 &amp;#8211; KDE 4.4&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Since KDE 4.0 the KTextEditor interfaces have so called &lt;a href=&#34;http://api.kde.org/4.4-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1SmartCursor.html&#34;&gt;SmartCursors&lt;/a&gt; and &lt;a href=&#34;http://api.kde.org/4.4-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1SmartRange.html&#34;&gt;SmartRanges&lt;/a&gt;. A SmartCursor is a text cursor (i.e. a line/column tuple) , which is bound to a text document. When editing the text document, the cursor is automatically moved such that it maintains its position. You need this for the displayed text cursor in a view for instance. If you type text, the cursor automatically moves.&lt;br /&gt;
A SmartRange consists of two SmartCursors: start and end. We use that for instance for the text selection or the inline spell checking, or KDevelop uses it to add arbitrary highlighting to parsed C/C++ code. Again, if you modify text in the document, the text range automatically moves, expands or shrinks.&lt;/p&gt;
&lt;p&gt;The concept of SmartCursors and SmartRanges is doubtless very useful. However, for KDE 4.5 the Kate developers came up with an alternative implementation that will even deprecate the SmartCursors and SmartRanges in KDE 4.6. The reason for this is that the current implementation has several problems, which we will discuss in the following.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-size:180%;&#34;&gt;API Usage&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;http://api.kde.org/4.4-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1SmartRange.html&#34;&gt;SmartRanges&lt;/a&gt; API can be used in very wrong ways. For instance, the &lt;a href=&#34;http://api.kde.org/4.4-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1SmartInterface.html&#34;&gt;SmartInterface&lt;/a&gt; has the two functions deleteCursors() and deleteRanges(). Besides that, a document reload also deletes all SmartCursors and SmartRanges. Both cases lead to a dangling pointer if you use SmartCursors or SmartRanges. Hence, whenever you use them, you always need a so-called &lt;a href=&#34;http://api.kde.org/4.4-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1SmartCursorWatcher.html&#34;&gt;SmartCursorWatcher&lt;/a&gt; / &lt;a href=&#34;http://api.kde.org/4.4-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1SmartCursorNotifier.html&#34;&gt;SmartCursorNotifier&lt;/a&gt; and &lt;a href=&#34;http://api.kde.org/4.4-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1SmartRangeWatcher.html&#34;&gt;SmartRangeWatcher&lt;/a&gt; / &lt;a href=&#34;http://api.kde.org/4.4-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1SmartRangeNotifier.html&#34;&gt;SmartRangeNotifier&lt;/a&gt;, which tell you that your SmartCursor or SmartRange is about to be deleted. Watcher and Notifier basically do the same thing. Besides deletion notification, they also tell you more e.g. that the SmartCursor position changed. If you use a notifier, those notifications are sent via signals. If you use a watcher, you have to overwrite virtuals. That is, we have two different concepts that basically do the same thing. If you use thousands of SmartRanges e.g. for arbitrary highlighting, we have possibly thousands of those emits, which does not really scale.&lt;/p&gt;
&lt;p&gt;The API also allows to have parent/child relations, i.e. a SmartRange can have children and a parent. It is possible to traverse this hierarchy, and again since you get the pointers you can delete arbitrary SmartRanges or SmartCursors. Another reason why you always need a notifier or watcher. And if you have a notifier/watcher, you always have the signals emitted when e.g. a cursor changes, as explained above.&lt;/p&gt;
&lt;p&gt;Further, we have lots of places where we use reference object KTextEditor::Cursor&amp;amp; as parameter. This const reference-object signals that it does not change. But due to SmartRange deriving from KTextEditor::Cursor, this object might also be a SmartCursor. So despite of being declared as a const object, it may change its position behind your back. This may lead to unexpected behaviours in e.g. loops where the line or column of the cursor is assumed to be constant. This is a problem in almost all functions in KatePart, so passing SmartCursors as Cursors is a very bad idea, but of course allowed.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-size:180%;&#34;&gt;Scaleability Problems&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;As mentioned above, you always need a Notifier or Watcher for all SmartCursors and SmartRanges. This will emit lots of signals you probably rarely need. Still, there is no way around it. This is a huge overhead, it simply does not scale.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-size:180%;&#34;&gt;Implementation&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The implementation is really complex and rather undocumented in most areas. Unfortunately, only very few (or maybe even no one) really understand the code. Besides that, it is very fragile. If you change something, you might break the code. Hence, we often heard similar comments like &amp;#8220;don&amp;#8217;t touch the code, otherwise it will break&amp;#8221;. Such comments alone already indicate that the current implementation is not maintainable. Unmaintainable code is bad, especially in open source projects (this is not a good way to gain new developers at all). There are other downsides of the current implementation: SmartCursors need a lot of memory for each instance; there are lots of features like animations for SmartRanges, which make the code even more complex; redundancy of watchers and notifiers bloat the code and influence the runtime behavior.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-size:180%;&#34;&gt;Threading&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;It seems there was the idea of making the KTextEditor interfaces thread safe. The SmartRanges interact with the content of the document, e.g. querying lines count and line length of lines in the text buffer. As this is done by other threads we need correct locking in all places: in document content changes, in smart cursors, in smart ranges, in the painting routines, etc. The current state in KatePart is that not all functions do the right locking. That&amp;#8217;s why we have lots of asserts/crashs. KatePart already has more than 150 lockings at the moment, but they still do not voer problems. And very few developers (or no one?) really know when to lock and when not to. This is especially complex since we want to ensure that the locks are not hold while emitting signals or calling functions provided from the outside as callbacks, this is still not done completely right, too.&lt;/p&gt;
&lt;p&gt;If you think about Qt, the GUI widgets are also not thread-safe, they all live in the main thread. And if you need data in other threads, you always use queued signals. This is pretty much what we experience in KatePart now. Not enough locking? Too much locking? In other words: It&amp;#8217;s far too complex to make the KTextEditor interfaces thread-safe&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-size:180%;&#34;&gt;Threading and Revisions&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Now to another issue in the implementation. KDevelop uses KTextEditor::Ranges in the parsing thread. Think of the following use case: KDevelop gets all the document text in the current revision (or version, if you prefer). Now it takes some time until the parsing is finished. When it&amp;#8217;s finished, KDevelop uses the Ranges (which initially belong to the old revision of the document), and then translates those ranges to the current version of the text document (this is simple: Just track all edits inside KatePart (delete, insert, wrap, unwrap) and apply those transformations to the ranges). Now we transformed ranges from an old text revision to the current text revision. This means KDevelop does not have to parse everything again, as it knows exactly which parts changed. Awesome indeed :) However, now comes the problem: To transform Cursors and Ranges between revisions, you have to tell the SmartInterface about the revision you are working with. This is done via SmartInterface::useRevision(int). The API documentation says: &lt;span style=&#34;font-style: italic;&#34;&gt;Tell the smart interface to work against the given &lt;/span&gt;&lt;em style=&#34;font-style: italic;&#34;&gt;revision&lt;/em&gt; &lt;span style=&#34;font-style: italic;&#34;&gt;when creating cursors and ranges.&lt;/span&gt; That is, if you call useRevision() once, all succeeding calls like newSmartRange() etc are working in the past (at that revision). Also kind of cool, since useRevision() works locally in each thread. That is different threads don&amp;#8217;t influence each other. But there is huge problem with this: Think of a KTextEditor user (KDevelop, Kile, &amp;#8230;) uses useRevision() in the main thread. Then all succeding calls of e.g. newSmartRange() use an old revision instead of the current one. Hence, KatePart itself is completely broken in that case. (This case is now catched via a qFatal() in KatePart). But again this shows that multi-threading simply complicates the matter a lot. It would have been much easier to say transformRange(int fromRevision, int toRevision) instead of just one translateFromRevision() that translates the given range against the revision specified through useRevision(). Hence, the current API is unfortunately pretty much broken by design.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-size:180%;&#34;&gt;A necessary Step?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Often it&amp;#8217;s hard to get things done right in the first try. So maybe the issues above are a necessary step to a much better implementation. And that is exactly what happened in the last two months: We have new interfaces called &lt;a href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1MovingInterface.html&#34;&gt;MovingInterface&lt;/a&gt;, &lt;a href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1MovingCursor.html&#34;&gt;MovingCursor&lt;/a&gt; and &lt;a href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1MovingRange.html&#34;&gt;MovingRange&lt;/a&gt;. For feedback there is &lt;a href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1MovingRangeFeedback.html&#34;&gt;MovingRangeFeedback&lt;/a&gt;, which uses callbacks for notification (no signals by intention). All those classes have unit tests. KatePart in KDE 4.6 will not implement any Smart* interface anymore. Hence, KatePart will be completely single threaded again. We already started to remove several thousands of lines Smart* code that was never used/finished. Much more will follow immediately after the KDE 4.5 release. This means all developers using Smart* from the KTextEditor interfaces should migrate to the Moving* pendents for KDE 4.5 already, if possible.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ll provide very detailed information about the Moving* implementation in further blogs during the next month.&lt;/p&gt;</description></item><item><title>Kate XML Completion Plugin</title><link>https://kate-editor.org/2010/04/27/kate-xml-completion-plugin/</link><pubDate>Tue, 27 Apr 2010 19:45:00 +0000</pubDate><guid>https://kate-editor.org/2010/04/27/kate-xml-completion-plugin/</guid><description>&lt;p&gt;A while ago I&amp;#8217;ve blogged about the Kate&amp;#8217;s most powerful plugins: the &lt;a href=&#34;https://kate-editor.org/2010/01/17/kate-xml-completion-plugin-help-wanted/&#34; target=&#34;_self&#34;&gt;XML completion plugin&lt;/a&gt;. Thanks to Tomáš Trnka this plugin is back alive with all its features since today and compiled by default in trunk: It will be included in KDE 4.5. Yay! :) And if you need it already now for KDE 4.4, you can &lt;a href=&#34;https://kate-editor.org/2010/04/17/quick-compiling-kate-in-a-stable-kde-environment/&#34; target=&#34;_self&#34;&gt;build Kate yourself very easily according to this howto&lt;/a&gt;, without touching your global KDE installation (probably interesting for KDE documentation writers!). Have fun!&lt;/p&gt;</description></item><item><title>Quick Compiling Kate in a stable KDE Environment</title><link>https://kate-editor.org/2010/04/17/quick-compiling-kate-in-a-stable-kde-environment/</link><pubDate>Sat, 17 Apr 2010 12:10:00 +0000</pubDate><guid>https://kate-editor.org/2010/04/17/quick-compiling-kate-in-a-stable-kde-environment/</guid><description>&lt;p&gt;Since all of the &lt;a href=&#34;http://gitorious.org/kate&#34;&gt;Kate code is now co-hosted on gitorious&lt;/a&gt;, it became very easy to build Kate in your stable KDE &amp;gt;= 4.4 environment. This means you can run the newest version of Kate with very few effort. Just give it a try and do the following steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;make sure you have the following packages installed: git, cmake and kdelibs development package (on openSUSE this is &lt;span style=&#34;font-family: courier new;&#34;&gt;git&lt;/span&gt;, &lt;span style=&#34;font-family: courier new;&#34;&gt;cmake&lt;/span&gt; and &lt;span style=&#34;font-family: courier new;&#34;&gt;libkde4-devel&lt;/span&gt;)&lt;/li&gt;
&lt;li&gt;create and change into a KDE development directory:&lt;br /&gt;
&lt;span style=&#34;font-family: courier new;&#34;&gt;mkdir ~/kde; cd ~/kde&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;get a copy of the Kate code:&lt;br /&gt;
&lt;span style=&#34;font-family: courier new;&#34;&gt;git clone git://gitorious.org/kate/kate.git&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;create and change into a build directory for compilation:&lt;br /&gt;
&lt;span style=&#34;font-family: courier new;&#34;&gt;mkdir build; cd build&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;run the configure process with cmake:&lt;br /&gt;
&lt;span style=&#34;font-family: courier new;&#34;&gt;cmake ../kate -DCMAKE_BUILD_TYPE=debugfull &amp;lt;br /&amp;gt; -DCMAKE_INSTALL_PREFIX=~/kde/usr&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;compile Kate:&lt;br /&gt;
&lt;span style=&#34;font-family: courier new;&#34;&gt;make&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;finally install Kate:&lt;br /&gt;
&lt;span style=&#34;font-family: courier new;&#34;&gt;make install&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That&amp;#8217;s all! This installs Kate locally into the separate directory &lt;span style=&#34;font-family: courier new;&#34;&gt;~/kde/usr&lt;/span&gt;, so that your global KDE installation will not be touched at all.&lt;/p&gt;
&lt;p&gt;Now on to starting the newly compiled Kate. Create a file ~/kde/run.sh with the following content:&lt;/p&gt;
&lt;pre&gt;#!/bin/bashexport KATE_DIR=~/kde/usr
export PATH=$KATE_DIR/bin:$PATH
export LD_LIBRARY_PATH=$KATE_DIR/lib:$LD_LIBRARY_PATH
export KDEDIR=$KATE_DIR
export KDEDIRS=$KDEDIRexport XDG_DATA_DIRS=$XDG_DATA_DIRS:$KATE_DIR/share
# update KDE&#39;s system configuration cache
kbuildsycoca4
# start app
$@&lt;/pre&gt;
&lt;p&gt;Now you can run the compiled Kate version with &lt;span style=&#34;font-weight: bold; font-family: courier new;&#34;&gt;~/kde/run.sh kate&lt;/span&gt;. Just calling &lt;span style=&#34;font-weight: bold; font-family: courier new;&#34;&gt;kate&lt;/span&gt; directly will start the system version of Kate.&lt;/p&gt;
&lt;p&gt;Your copy of Kate contains &lt;a href=&#34;http://gitorious.org/kate/kate/trees/master&#34;&gt;all of the Kate code&lt;/a&gt;, i.e.: the KTextEditor interfaces, Kate Part, KWrite and the Kate Application. Feel free to send patches to our mailing list &lt;a href=&#34;mailto:kwrite-devel@kde.org&#34;&gt;kwrite-devel@kde.org&lt;/a&gt;. And join &lt;a href=&#34;irc://irc.kde.org/kate&#34;&gt;#kate on irc.kde.org&lt;/a&gt; :-)&lt;/p&gt;
&lt;p&gt;Note for KDE developers: All the changes in git are merged back to KDE&amp;#8217;s subversion repository in a timely manner. So don&amp;#8217;t worry about Kate moving away from KDE; this is not the case.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-style: italic;&#34;&gt;(Updated on 2010-04-17: Allow installation into local directory.&lt;/span&gt;)&lt;/p&gt;</description></item><item><title>Kate Internals: Text Buffer</title><link>https://kate-editor.org/2010/03/03/kate-internals-text-buffer/</link><pubDate>Tue, 02 Mar 2010 23:17:00 +0000</pubDate><guid>https://kate-editor.org/2010/03/03/kate-internals-text-buffer/</guid><description>&lt;p&gt;Right now, in Kate&amp;#8217;s gitorious repository we, or rather mainly Christoph, is rewriting the heart of Kate: The text buffer. In this blog I&amp;#8217;ll explain how the text buffer works in detail. After reading, you&amp;#8217;ll be able to understand the code. And be warned: Probably you will be desperately amazed about its awesomeness! So this is a must read :^)&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;Storage&lt;/span&gt;. Kate Part internally stores the content of a text document as a QVector of text lines. Each text line holds the text in a QString object as well as additional data like color attributes for highlighting. Inserting and removing text lines implies inserting or removing items in the QVector of the text lines. This is can get slow when there are thousands of text lines in a document, because QVector has to move the memory every time. Thus, to keep text operations fast, Kate splits all text lines into several text blocks: Each text block contains a certain amount of lines (e.g. 256). The expense of memory movement is then always limited. When a text block grows too much, it is automatically split. When the amount of lines in a text block shrinks, it is merged with the previous text block. In other words, Kate&amp;#8217;s text buffer automatically balances the text blocks. The basic idea of Kate&amp;#8217;s text buffer, the text blocks and text lines looks like this:&lt;br /&gt;
&lt;a href=&#34;http://1.bp.blogspot.com/_JcjnuQSFzjw/S4xLUOf6_3I/AAAAAAAAAD0/O7sJBv_HxOI/s1600-h/katetextbuffer.png&#34; onblur=&#34;try {parent.deselectBloggerImageGracefully();} catch(e) {}&#34;&gt;&lt;img id=&#34;BLOGGER_PHOTO_ID_5443808860445540210&#34; style=&#34;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&#34; src=&#34;http://1.bp.blogspot.com/_JcjnuQSFzjw/S4xLUOf6_3I/AAAAAAAAAD0/O7sJBv_HxOI/s400/katetextbuffer.png&#34; border=&#34;0&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;Text Cursors and Ranges.&lt;/span&gt; Text manipulation always takes place at certain positions in a text. Such a position is called a text cursor. Each text cursor is defined by a line and a column. Further, to specify e.g. text selections, we need text ranges. A text range has a start cursor and an end cursor. For instance, if you have two views of the same document, you want the cursor in the 2nd view to keep its correct position in the text if you insert text in the 1st view. Thus, text cursors have to be kind of intelligent. Whenever text changes, each text cursor needs to be moved. As a text range just consists of two text cursors, we will focus only on text cursors for now. The question is how to implement this efficiently? If we store all text cursors in a list in the text buffer, we have to iterate over all text cursors on every editing operation. This obviously does not scale for thousands of text cursors (KDevelop for instance uses thousands of text cursors for the highlighting). The solution is the same as with the text content itself: Let&amp;#8217;s just put a list of all text cursors in a text block to the text block itself. During text editing, we only have to adapt all text cursors of a single text block instead of all text cursors in a document. This looks as follows:&lt;br /&gt;
&lt;a href=&#34;http://2.bp.blogspot.com/_JcjnuQSFzjw/S4xQzccKZqI/AAAAAAAAAD8/SaGY_7uhR0I/s1600-h/katetextcursor.png&#34; onblur=&#34;try {parent.deselectBloggerImageGracefully();} catch(e) {}&#34;&gt;&lt;img id=&#34;BLOGGER_PHOTO_ID_5443814894321952418&#34; style=&#34;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&#34; src=&#34;http://2.bp.blogspot.com/_JcjnuQSFzjw/S4xQzccKZqI/AAAAAAAAAD8/SaGY_7uhR0I/s400/katetextcursor.png&#34; border=&#34;0&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;Editing Operations&lt;/span&gt;. When editing text, you usually have only four different types of text manipulation:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;insert text at a text cursor inside one line&lt;/li&gt;
&lt;li&gt;remove text at a text cursor inside one line&lt;/li&gt;
&lt;li&gt;wrap line at a text cursor (e.g. by hitting &lt;return/enter&gt;)&lt;/li&gt;
&lt;li&gt;unwrap line (e.g. by hitting &lt;backspace&gt; at the beginning of a line)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Those editing primitives are implemented in the Kate::TextBuffer and Kate::TextBlock and take care of balancing the text blocks. For each one the set of text cursors in a text block has to be adapted. Of course, corner cases need to be taken into account: For instance, unwrapping the first line in a text block means that cursors in the first line need to be moved to the previous text block. All editing primitives emit a signal, such that additional layers later can track what happens. For instance, the undo/redo system needs to know all editing operations. Or on top of that we could implement vim like swap file support, i.e., track all changes from the beginning, and if Kate crashes, replay all the editing primitives on the original files.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;Transactions&lt;/span&gt;. A transaction consists of several of the four editing operations. For instance, if you select text and then move it to another location in the document with drag &amp;amp; drop you want this to be grouped together to a single text operation on undo/redo. (The text operations in this case are unwrap lines and remove text, then insert text and wrap line). To be able to specify which parts of text operations belong together, the text buffer provides two functions: startEditing() starts a transaction and finishEditing() closes it. Those functions use reference counting, so you can call startEditing() multiple times and only the last finishEditing() completes a transaction. Again, signals are emitted e.g. in finishEditing() such that other layers (undo/redo system) are notified about this.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;Revisions&lt;/span&gt;. As an easy way to check whether a document changed you can get the current revision of the text buffer. The revision is simply an int64 starting with 0 after loading a document. The revision is incremented in every of the 4 editing primitives. This way you don&amp;#8217;t have to listen to multiple signals like textInserted() and textRemoved(). This could be useful for e.g. KDevelop&amp;#8217;s background parser: Parse a file. When done, check whether the revision is the same. If yes, parsing was successful. If not, parse again. This is how QtCreator does it. Easy and straight forward.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;Unit Tests&lt;/span&gt;. The text buffer, text block, text line, text cursors are all designed such that unit tests can be written. Hence, each of the above implementation details will be covered by unit tests.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;Further ideas&lt;/span&gt;. As mentioned previously, the design of the text buffer leaves room for further features. For now, let&amp;#8217;s face two ideas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vim like swap files: If Kate or the application using Kate Part crashes, the unsaved data in the text document is lost. Vim has a backup mechanism called &amp;#8216;swap files&amp;#8217; to recover from crashes to avoid data loss since years, and it works as follows: Each of the 4 editing primitives explained above are streamed into a separate file. When you save a file successfully, the swap file is cleared. If a crash happens, vim loads the original text document and then replays all editing operations in the swap file. This way the current unsaved editing state is recovered; no data is lost. Since the text buffer emits all necessary signals, implementing this feature is kind of trivial. Any takers?&lt;/li&gt;
&lt;li&gt;Right now, the highlighting works in an extra class, accessing the text buffer&amp;#8217;s text lines and setting the text attributes such as the color. As idea, we could also derive a class Kate::HighlightingBuffer from Kate::TextBuffer and do the additional modifications in the derived class instead of an extra class. We&amp;#8217;ll have to see whether that makes sense.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;Please Contribute&lt;/span&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;join &lt;a href=&#34;irc://irc.kde.org/kate&#34;&gt;#kate on irc://irc.kde.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://gitorious.org/kate&#34;&gt;checkout the code base&lt;/a&gt;, clone it, create branches, and merge back!&lt;/li&gt;
&lt;li&gt;other kate internals: &lt;a href=&#34;https://kate-editor.org/2008/11/14/kate-internals-the-undoredo-system/&#34; target=&#34;_self&#34;&gt;undo/redo system&lt;/a&gt; (little bit outdated, but all in all still valid)&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Design Ideas of the Kate::TextBuffer</title><link>https://kate-editor.org/2010/02/28/design-ideas-of-the-katetextbuffer/</link><pubDate>Sun, 28 Feb 2010 13:11:16 +0000</pubDate><guid>https://kate-editor.org/2010/02/28/design-ideas-of-the-katetextbuffer/</guid><description>
&lt;h2 id=&#34;storage&#34;&gt;Storage&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Basic idea: text stored as lines&lt;/li&gt;
&lt;li&gt;Lines hold text and additional data (like for highlighting)&lt;/li&gt;
&lt;li&gt;Advanced Concept: Stores lines in blocks of xxx lines, to have better performance&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;cursor-support&#34;&gt;Cursor Support&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;They will move on editing&lt;/li&gt;
&lt;li&gt;Cursors can be combined to ranges&lt;/li&gt;
&lt;li&gt;KateTextCursor will be stored in the buffer blocks&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;transactions&#34;&gt;Transactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Each edit action must be encapsuled in a transaction&lt;/li&gt;
&lt;li&gt;startEdit/endEdit will do this&lt;/li&gt;
&lt;li&gt;Signals for starting and ending this transactions&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;revisions&#34;&gt;Revisions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;After loading, buffer has revision 0&lt;/li&gt;
&lt;li&gt;Each edit action which is no nop will lead to increment in revision number&lt;/li&gt;
&lt;li&gt;Successful saving will reset revision back to 0&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;editing-operations-only-4-different-editing-primitives&#34;&gt;Editing Operations (only 4 different editing primitives)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Insert Text (inside one line)&lt;/li&gt;
&lt;li&gt;Remove Text (inside one line)&lt;/li&gt;
&lt;li&gt;Wrap Line (wrap a line at given position, create a new line with content behind wrap position)&lt;/li&gt;
&lt;li&gt;Unwrap Line (unites the line with its predecessor)&lt;/li&gt;
&lt;li&gt;Signals for all of these actions, containing the change (to allow to layer undo/swap file support/&amp;hellip;) on top of the buffer&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;load-save-encodings&#34;&gt;Load/Save &amp;amp; Encodings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Loading will try to use given codec, if that doesn&amp;rsquo;t work, try to detect the codec by the BOM at start of file or use fallback codec, if that again doesn&amp;rsquo;t work, given codec will be used again, and errors reported&lt;/li&gt;
&lt;li&gt;Saving will just use the given codec&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;unit-tests&#34;&gt;Unit Tests&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Each of the above implementation details will be covered by unit tests&lt;/li&gt;
&lt;li&gt;KateTextBuffer (+KateTextLine and Cursor) must therefor be usable without other components&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Kate Partly Moving to Gitorious</title><link>https://kate-editor.org/2010/02/27/kate-partly-moving-to-gitorious/</link><pubDate>Sat, 27 Feb 2010 16:55:00 +0000</pubDate><guid>https://kate-editor.org/2010/02/27/kate-partly-moving-to-gitorious/</guid><description>&lt;p&gt;We are about to move the applications Kate and KWrite as well as the libraries KTextEditor and Kate Part to &lt;a href=&#34;http://gitorious.org/kate&#34;&gt;gitorious&lt;/a&gt;. Christoph is working on the migration right now in order to keep the development history. Things look good so far, so the migration is soon finished.&lt;br /&gt;
We have discussed a bit about the migration to gitorious on the Kate Developer Meeting and Christoph came up with this mainly because building only KTextEditor, Kate Part, KWrite and Kate is much &lt;span style=&#34;font-style: italic;&#34;&gt;faster and easier&lt;/span&gt; compared to building the KDE modules kdesupport, kdelibs, kdepimlibs, kdebase, kdesdk.&lt;br /&gt;
I myself remember the time where I started KDE development, and it took more than two weeks to have a first successful build of KDE. You have to learn so many things at once, like revision control, lots of so far unknown software, and what not. Talking to other developers verifies this. In other words: Getting into KDE development is not easy and straight forward.&lt;br /&gt;
Moving to gitorious removes this barrier for Kate development: You just checkout the Kate repository and that&amp;#8217;s all you need. It would be nice if you join Kate development and contribute patches :)&lt;br /&gt;
&lt;span style=&#34;font-weight: bold;&#34;&gt;What does that mean for Kate in KDE? &lt;span style=&#34;font-style: italic;&#34;&gt;Nothing changes.&lt;/span&gt; We will merge the changes in Gitorious back to the main KDE development line and vice versa.&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Kate Highlighting for QML, JavaScript</title><link>https://kate-editor.org/2010/02/26/kate-highlighting-for-qml-javascript-2/</link><pubDate>Fri, 26 Feb 2010 14:45:21 +0000</pubDate><guid>https://kate-editor.org/2010/02/26/kate-highlighting-for-qml-javascript-2/</guid><description>&lt;p&gt;Hey everyone!&lt;/p&gt;
&lt;div style=&#34;float:right&#34;&gt;
&lt;a href=&#34;http://www.flickr.com/photos/milianw/4389235505&#34; title=&#34;qmlhlQML Highlighting in Kate&#34;&gt;&lt;img src=&#34;http://farm5.staticflickr.com/4027/4389235505_144e6d3def_m.jpg&#34; alt=&#34;qmlhlQML Highlighting in Kate&#34; title=&#34;qmlhlQML Highlighting in Kate&#34; class=&#34; flickr-photo-img&#34; height=&#34;240&#34; width=&#34;197&#34; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;I&amp;#8217;ve started my internship at &lt;a href=&#34;http://www.kdab.com/&#34;&gt;KDAB&lt;/a&gt; this week, it&amp;#8217;s great fun so far! Though I spent most of my time this week on &lt;a href=&#34;http://bertjan.broeksemaatjes.nl/node/51&#34;&gt;Bertjans KDevelop plugin&lt;/a&gt;, I couldn&amp;#8217;t resist on a bit of Kate hacking:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://steveire.wordpress.com/2010/02/19/qml-with-akonadi-or-how-to-use-your-existing-model-view-design-with-qml/&#34;&gt;steveire is experimenting with QML&lt;/a&gt; so I couldn&amp;#8217;t stop but notice that there is no highlighting for it in Kate. Well, there &lt;strong&gt;was&lt;/strong&gt; none ;-) Now you get pretty colors, rejoice!&lt;/p&gt;
&lt;p&gt;Note: Since QML is basically JSON with some added sugar, I reused the existing JavaScript highlighter and improved it. Hence you get imrpoved JSON and member highlighting in plain&lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;.js&lt;/code&gt;&lt;/span&gt; as well. Enjoy!&lt;/p&gt;</description></item><item><title>Kate Highlighting for QML, JavaScript</title><link>https://kate-editor.org/2010/02/26/kate-highlighting-for-qml-javascript/</link><pubDate>Fri, 26 Feb 2010 14:45:21 +0000</pubDate><guid>https://kate-editor.org/2010/02/26/kate-highlighting-for-qml-javascript/</guid><description>&lt;p&gt;Hey everyone!&lt;/p&gt;
&lt;div style=&#34;float:right&#34;&gt;
&lt;a href=&#34;http://www.flickr.com/photos/milianw/4389235505&#34; title=&#34;qmlhlQML Highlighting in Kate&#34;&gt;&lt;img src=&#34;http://farm5.staticflickr.com/4027/4389235505_144e6d3def_m.jpg&#34; alt=&#34;qmlhlQML Highlighting in Kate&#34; title=&#34;qmlhlQML Highlighting in Kate&#34; class=&#34; flickr-photo-img&#34; height=&#34;240&#34; width=&#34;197&#34; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;I&amp;#8217;ve started my internship at &lt;a href=&#34;http://www.kdab.com/&#34;&gt;KDAB&lt;/a&gt; this week, it&amp;#8217;s great fun so far! Though I spent most of my time this week on &lt;a href=&#34;http://bertjan.broeksemaatjes.nl/node/51&#34;&gt;Bertjans KDevelop plugin&lt;/a&gt;, I couldn&amp;#8217;t resist on a bit of Kate hacking:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://steveire.wordpress.com/2010/02/19/qml-with-akonadi-or-how-to-use-your-existing-model-view-design-with-qml/&#34;&gt;steveire is experimenting with QML&lt;/a&gt; so I couldn&amp;#8217;t stop but notice that there is no highlighting for it in Kate. Well, there &lt;strong&gt;was&lt;/strong&gt; none ;-) Now you get pretty colors, rejoice!&lt;/p&gt;
&lt;p&gt;Note: Since QML is basically JSON with some added sugar, I reused the existing JavaScript highlighter and improved it. Hence you get imrpoved JSON and member highlighting in plain&lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;.js&lt;/code&gt;&lt;/span&gt; as well. Enjoy!&lt;/p&gt;</description></item><item><title>Kate/KDevelop HackSprint – Up To Day 4</title><link>https://kate-editor.org/2010/02/17/katekdevelop-hacksprint-up-to-day-4-2/</link><pubDate>Wed, 17 Feb 2010 17:43:38 +0000</pubDate><guid>https://kate-editor.org/2010/02/17/katekdevelop-hacksprint-up-to-day-4-2/</guid><description>
&lt;p&gt;Woha, quite a few days flew by without me blogging about anything. Thankfully the others started to write so I don&amp;#8217;t have to repeat it all ;-) Instead I&amp;#8217;ll concentrate on stuff I did or learned.&lt;/p&gt;
&lt;h5 id=&#34;ghns-for-snippets&#34;&gt;GHNS for Snippets&lt;/h5&gt;
&lt;p&gt;Well, first I think an excuse is in oder: There is a GHNS button for Kate Snippets in 4.4.0 but it&amp;#8217;s broken, neither me nor Joseph had time to acutally use and fix it&amp;#8230; But anyways, I fixed it now for 4.4.1. For 4.5 we&amp;#8217;ll also have an Upload Dialog.&lt;/p&gt;
&lt;p&gt;I also added &lt;strong&gt;both&lt;/strong&gt; now to KDevelop, you can now upload and download snippets from it. I added a few dump examples but will probably improve it steadily.&lt;/p&gt;
&lt;h5 id=&#34;kate-performance&#34;&gt;Kate Performance&lt;/h5&gt;
&lt;p&gt;On Saturday and Sunday I started to profile Kate highlighting for a large MySQL dump and managed to greatly improve the speed. Actually the funny thing is that I could improve RegExp based highlighting (you still should try to prevent using it, it will always be slower than simple char/string based highlighting). And the knowledge for this optimization I had from my time as an active contributor for &lt;a href=&#34;http://qbnz.com/highlighter/&#34;&gt;GeSHi&lt;/a&gt;. I feel like it was ages ago, he funny :)&lt;/p&gt;
&lt;p&gt;So if anybody has a big file that takes ages to load (but only if you use KDE 4.5 trunk or higher), tell me and give me the file. I might find some more ways to optimize different languages.&lt;/p&gt;
&lt;h5 id=&#34;other-stuff&#34;&gt;Other Stuff&lt;/h5&gt;
&lt;p&gt;Other than that I also managed to fix a few more bugs in Kate and KDevelop and had a good time with the other guys here in Berlin. Yesterday I showed some others how I spent quite a few nights: Partying in Berlin is nice :)&lt;/p&gt;
&lt;p&gt;Oh and Bernhard showed me a little gem of his: &lt;a href=&#34;http://github.com/shentok/kate-standalone&#34;&gt;Kate Standalone&lt;/a&gt; which you can use to build &lt;em&gt;only&lt;/em&gt; KatePart from kdelibs trunk. This actually works very well (up until some new API from KDE trunk is used).&lt;/p&gt;</description></item><item><title>Kate/KDevelop HackSprint – Up To Day 4</title><link>https://kate-editor.org/2010/02/17/katekdevelop-hacksprint-up-to-day-4/</link><pubDate>Wed, 17 Feb 2010 17:43:38 +0000</pubDate><guid>https://kate-editor.org/2010/02/17/katekdevelop-hacksprint-up-to-day-4/</guid><description>
&lt;p&gt;Woha, quite a few days flew by without me blogging about anything. Thankfully the others started to write so I don&amp;#8217;t have to repeat it all ;-) Instead I&amp;#8217;ll concentrate on stuff I did or learned.&lt;/p&gt;
&lt;h5 id=&#34;ghns-for-snippets&#34;&gt;GHNS for Snippets&lt;/h5&gt;
&lt;p&gt;Well, first I think an excuse is in oder: There is a GHNS button for Kate Snippets in 4.4.0 but it&amp;#8217;s broken, neither me nor Joseph had time to acutally use and fix it&amp;#8230; But anyways, I fixed it now for 4.4.1. For 4.5 we&amp;#8217;ll also have an Upload Dialog.&lt;/p&gt;
&lt;p&gt;I also added &lt;strong&gt;both&lt;/strong&gt; now to KDevelop, you can now upload and download snippets from it. I added a few dump examples but will probably improve it steadily.&lt;/p&gt;
&lt;h5 id=&#34;kate-performance&#34;&gt;Kate Performance&lt;/h5&gt;
&lt;p&gt;On Saturday and Sunday I started to profile Kate highlighting for a large MySQL dump and managed to greatly improve the speed. Actually the funny thing is that I could improve RegExp based highlighting (you still should try to prevent using it, it will always be slower than simple char/string based highlighting). And the knowledge for this optimization I had from my time as an active contributor for &lt;a href=&#34;http://qbnz.com/highlighter/&#34;&gt;GeSHi&lt;/a&gt;. I feel like it was ages ago, he funny :)&lt;/p&gt;
&lt;p&gt;So if anybody has a big file that takes ages to load (but only if you use KDE 4.5 trunk or higher), tell me and give me the file. I might find some more ways to optimize different languages.&lt;/p&gt;
&lt;h5 id=&#34;other-stuff&#34;&gt;Other Stuff&lt;/h5&gt;
&lt;p&gt;Other than that I also managed to fix a few more bugs in Kate and KDevelop and had a good time with the other guys here in Berlin. Yesterday I showed some others how I spent quite a few nights: Partying in Berlin is nice :)&lt;/p&gt;
&lt;p&gt;Oh and Bernhard showed me a little gem of his: &lt;a href=&#34;http://github.com/shentok/kate-standalone&#34;&gt;Kate Standalone&lt;/a&gt; which you can use to build &lt;em&gt;only&lt;/em&gt; KatePart from kdelibs trunk. This actually works very well (up until some new API from KDE trunk is used).&lt;/p&gt;</description></item><item><title>The Power of Developer Meetings</title><link>https://kate-editor.org/2010/02/17/the-power-of-developer-meetings/</link><pubDate>Wed, 17 Feb 2010 14:15:00 +0000</pubDate><guid>https://kate-editor.org/2010/02/17/the-power-of-developer-meetings/</guid><description>&lt;p&gt;Since several years, we have lots of small &lt;a href=&#34;http://ev.kde.org/activities/devmeetings/&#34;&gt;developer meetings in the KDE project&lt;/a&gt;, gratefully supported by the KDE e.V. There, developers of a certain project (e.g. KMail/kdepim, Plasma, you name it) meet to discuss further plans and to push the project further. From experience we can tell that those meetings are really beneficial in several ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Social aspect: You get to know the other developers involved in the project in real life, which is a great motivation factor. This also happens at KDE&amp;#8217;s annual conference &lt;a href=&#34;http://akademy.kde.org/&#34;&gt;Akademy&lt;/a&gt;, although there are &lt;span style=&#34;font-style: italic;&#34;&gt;a lot&lt;/span&gt; more people.&lt;/li&gt;
&lt;li&gt;Productivity: Since you are sitting next to each other discussions about &lt;span style=&#34;font-style: italic;&#34;&gt;how&lt;/span&gt; to do &lt;span style=&#34;font-style: italic;&#34;&gt;what&lt;/span&gt; are very focused. It&amp;#8217;s amazing how quickly a project can evolve this way. (I haven&amp;#8217;t seen such focused work in companies, yet. I guess the variance in the knowledge of people involved is higher. And the motivation is usually very different).&lt;/li&gt;
&lt;li&gt;Knowledge Transfer: Since participants are experts in different areas, discussions lead to knowledge transfer. This is essential, as sometimes developers have very few free time to contributes to a project. Spreading the knowledge helps a lot to keep the project alive.&lt;/li&gt;
&lt;li&gt;Steady Contributions: We are always open for new contributors. Just send a patch, &lt;a href=&#34;http://techbase.kde.org/Contribute/Get_a_SVN_Account&#34;&gt;get commit access&lt;/a&gt; and join development. Experience shows that participants of a developer meeting usually contribute for years to come.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enough said, here is what happened the last three days in Kate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1091712&#34;&gt;memory optimization:&lt;/a&gt; &lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1091718&#34;&gt;remove unused&lt;/a&gt; &lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1091735&#34;&gt;edit history items&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=227293&#34;&gt;fix crash in doHighlight due to wrong initialization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=190853&#34;&gt;don&amp;#8217;t squeeze captions in the window title&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=225746&#34;&gt;fix crash when using katepart in e.g. konqueror&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1091115&#34;&gt;kate vi mode improvements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=223624&#34;&gt;fix: invalid js commands lead to a crash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1091074&#34;&gt;share code snippets between kate and kdevelop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=196516&#34;&gt;more syntax highlighting files for asm dialects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1091041&#34;&gt;replace: show number of replacements in a passive popup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=125104&#34;&gt;new command line command: unwrap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=227008&#34;&gt;fix crash when switching sessions with multiple main windows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=129494&#34;&gt;fix incorrect global replace %s///g&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=226409&#34;&gt;fix crash in smart range group handling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090637&#34;&gt;turn search option &amp;#8220;highlight all&amp;#8221; into the action &amp;#8220;find all&amp;#8221;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090635&#34;&gt;replace old text snippet plugin with new one&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090601&#34;&gt;optimize away nops for text editing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090598&#34;&gt;fixes in the template handler code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090593&#34;&gt;remove pythong browser plugin, since the symbol viewer plugin can do the same and much more&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090592&#34;&gt;remove unmaintained html tools plugin, since it was never ported&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090558&#34;&gt;optimization for bracket matching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090515&#34;&gt;new text snippet plugin: context aware snippet completion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=226529&#34;&gt;fix filtering in the file browser plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090382&#34;&gt;always start search&amp;amp;replace from cursor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090377&#34;&gt;developer doumentation&lt;/a&gt; &lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090380&#34;&gt;for smart range usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=169415&#34;&gt;cstyle indenter: fix indentation of multi-line comments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090241&#34;&gt;update of syntax highlighting for MySQL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090237&#34;&gt;performance optimization&lt;/a&gt; &lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090238&#34;&gt;in the highlighting system:&lt;/a&gt; &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=225228&#34;&gt;bug&lt;/a&gt;, &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=145686&#34;&gt;bug&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=152203&#34;&gt;fix crash in removeTrailingSpaces, if undo/redo is active&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090122&#34;&gt;new interface for getting the mode at a given cursor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;search &amp;amp; replace: &lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090106&#34;&gt;lots of&lt;/a&gt; &lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090100&#34;&gt;code&lt;/a&gt; &lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090103&#34;&gt;cleanups&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090101&#34;&gt;basic regression tests for search&lt;/a&gt;, &lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090102&#34;&gt;scripting&lt;/a&gt;, &lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090164&#34;&gt;and more&lt;/a&gt;&amp;#8230;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1090086&#34;&gt;scripting: add support for quoting in command line scripts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=226724&#34;&gt;Kate crashes because of spell checking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=222181&#34;&gt;fix regression: with auto brackets + selection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=213096&#34;&gt;find-in-files: set filter correctly when opening the search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1089691&#34;&gt;fix: make reload-scripts work with new functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?view=revision&amp;amp;revision=1089690&#34;&gt;share a KCompletion object between all KateCmdLineEdits&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are even more changes I left out. Most of those changes will be in KDE 4.4.1. If you want to help, join #kate in irc.kde.org!&lt;/p&gt;</description></item><item><title>Developer Meeting: More on scripting Kate</title><link>https://kate-editor.org/2010/02/17/developer-meeting-more-on-scripting-kate/</link><pubDate>Wed, 17 Feb 2010 13:57:00 +0000</pubDate><guid>https://kate-editor.org/2010/02/17/developer-meeting-more-on-scripting-kate/</guid><description>&lt;p&gt;We are 10 people here at the developer meeting in Berlin. Kate, KDevelop as well as Okteta see a lot of commits. I&amp;#8217;ll mainly talk about what&amp;#8217;s happening in the holy Kate land, though :-)&lt;br /&gt;
Yesterday I closed a bug requesting an &amp;#8220;unwrap&amp;#8221; feature in Kate that works like &amp;#8220;Tools &amp;gt; Join Lines&amp;#8221; but maintains paragraph separation, i.e., empty lines are not removed. This feature is implemented now in javascript. Further infos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=125104&#34;&gt;the bug report&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/trunk/KDE/kdelibs/kate/script/data/utils.js?r1=1091040&amp;amp;r2=1091039&amp;amp;pathrev=1091040&#34;&gt;the javascript implementation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To run the script simply switch to the command line (F7) and write &amp;#8220;unwrap&amp;#8221;. If you have further ideas about useful scripts, don&amp;#8217;t hesitate to start hacking right away, see also&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://docs.kde.org/stable/en/kdesdk/kate/advanced-editing-tools-scripting.html&#34;&gt;how to extend Kate with scripting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Fixes with regard to the scripting support in the last days are&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?revision=1089691&amp;amp;view=revision&#34;&gt;make reload-scripts work properly&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?revision=1089690&amp;amp;view=revision&#34;&gt;fix command line completion for new scripts without restarting kate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?revision=1090086&amp;amp;view=revision&#34;&gt;support quoting in arguments for scripts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/?revision=1091093&amp;amp;view=revision&#34;&gt;fix crash for invalid commands in scripts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Those fixes will be in KDE 4.4.1. More to come in other blog entries :-)&lt;/p&gt;</description></item><item><title>Kate/KDevelop HackSprint Day 1</title><link>https://kate-editor.org/2010/02/14/katekdevelop-hacksprint-day-1-2/</link><pubDate>Sat, 13 Feb 2010 23:58:53 +0000</pubDate><guid>https://kate-editor.org/2010/02/14/katekdevelop-hacksprint-day-1-2/</guid><description>&lt;p&gt;So, first day of the Kate/KDevelop hacksprint.&lt;/p&gt;
&lt;p&gt;We just talked and hacked at the rented flat,got to know each other and had a fun time. Everybody made it more or less in time, even last minute attendee Adymo from Ukraine, nice! Hacking-wise the productivity wasn&amp;#8217;t that high, esp. for me, but a few patches got committed here and there.&lt;/p&gt;
&lt;p&gt;Right now I&amp;#8217;m working on a little speedup for Kate, esp. for big MySQL files - lets see how it turns out. Cullmann showed me a few things I could do so maybe it works out, lets see.&lt;/p&gt;
&lt;p&gt;Over the next week I plan to push in user configurable include paths for the PHP plugin and do some more Snippets &amp;amp; Scripting work in Kate, lets see how it turns out. I&amp;#8217;ll go home now, kinda sucks that I don&amp;#8217;t stay with the others here at the flat but have to take a 1h ride into the city&amp;#8230; Berlin is definitely too big :D&lt;/p&gt;</description></item><item><title>Kate/KDevelop HackSprint Day 1</title><link>https://kate-editor.org/2010/02/14/katekdevelop-hacksprint-day-1/</link><pubDate>Sat, 13 Feb 2010 23:58:53 +0000</pubDate><guid>https://kate-editor.org/2010/02/14/katekdevelop-hacksprint-day-1/</guid><description>&lt;p&gt;So, first day of the Kate/KDevelop hacksprint.&lt;/p&gt;
&lt;p&gt;We just talked and hacked at the rented flat,got to know each other and had a fun time. Everybody made it more or less in time, even last minute attendee Adymo from Ukraine, nice! Hacking-wise the productivity wasn&amp;#8217;t that high, esp. for me, but a few patches got committed here and there.&lt;/p&gt;
&lt;p&gt;Right now I&amp;#8217;m working on a little speedup for Kate, esp. for big MySQL files - lets see how it turns out. Cullmann showed me a few things I could do so maybe it works out, lets see.&lt;/p&gt;
&lt;p&gt;Over the next week I plan to push in user configurable include paths for the PHP plugin and do some more Snippets &amp;amp; Scripting work in Kate, lets see how it turns out. I&amp;#8217;ll go home now, kinda sucks that I don&amp;#8217;t stay with the others here at the flat but have to take a 1h ride into the city&amp;#8230; Berlin is definitely too big :D&lt;/p&gt;</description></item><item><title>Snippets In KDevelop / Kate</title><link>https://kate-editor.org/2010/02/03/snippets-in-kdevelop-kate-2/</link><pubDate>Wed, 03 Feb 2010 15:59:46 +0000</pubDate><guid>https://kate-editor.org/2010/02/03/snippets-in-kdevelop-kate-2/</guid><description>
&lt;p&gt;Hey all!&lt;/p&gt;
&lt;p&gt;Just wanted to give you a little rundown on Snippets in Kate 4.4 (via the snippets_tng plugin) and KDevelop Beta 8 (soon to be released).&lt;/p&gt;
&lt;p&gt;Note: The Kate plugin was written by Jowenn and introduced me to all these nice features. For KDevelop I wrote a somewhat simpler yet imo better implementation. We will try to get the best of both worlds into KDE 4.5. Stay tuned!&lt;/p&gt;
&lt;h5 id=&#34;general-usage-features&#34;&gt;General Usage &amp;amp; Features&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;create a snippet repository (or download via GHNS [see below])&lt;/li&gt;
&lt;li&gt;create snippets in that repository&lt;/li&gt;
&lt;li&gt;insert snippets via the snippets view (i.e. double click), or (imo better/faster) insert them via code-completion (remember: CTRL + Space requests code completion at the current cursor position!).&lt;/li&gt;
&lt;li&gt;snippet gets inserted (properly indented) and potential placeholders/variables get expanded. A variable is something like &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;%{date}&lt;/code&gt;&lt;/span&gt; or &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;${email}&lt;/code&gt;&lt;/span&gt;. Also take a look at the &lt;a href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1TemplateInterface.html&#34;&gt;API documentation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;variables that get inserted via &amp;#8220;${&amp;#8230;}&amp;#8221; will be &amp;#8220;selectable&amp;#8221;, meaning you can jump from one var to the other by hitting TAB / Shift TAB&lt;/li&gt;
&lt;li&gt;the &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;%{&amp;hellip;}&lt;/code&gt;&lt;/span&gt; vars will only get expanded and inserted, without getting selectable.&lt;/li&gt;
&lt;li&gt;multiple occurrences of the same variable will be updated once one of them gets edited, something that is called &amp;#8220;mirroring&amp;#8221; in other editors.&lt;/li&gt;
&lt;li&gt;once one edits ESC the cursor is placed at the end of the snippet or to the first occurrence of &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;${cursor}&lt;/code&gt;&lt;/span&gt; or &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;%{cursor}&lt;/code&gt;&lt;/span&gt; and the user types something, the snippet-handler quits and you are left with your normal editor until you insert the next snippet&lt;/li&gt;
&lt;li&gt;nested snippets (i.e. insert snippet than insert another one) should &amp;#8220;just work&amp;#8221;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;snippet-management&#34;&gt;Snippet Management&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;group snippets by file type, i.e. PHP snippets will only be offered during code completion when one edits a PHP file.&lt;br /&gt;
Note: In KDevelop and KDE 4.4 nested documents are supported, e.g. create a CSS snippet and it will be shown inside the CSS parts of a HTML document or similar. This uses my HighlightInterface I wrote for KDE 4.4. I still have to rewrite some parts of the snippets_tng plugin for Kate so that it works there as well&lt;/li&gt;
&lt;li&gt;group snippets in repositories, set an Author and a License of your choice&lt;/li&gt;
&lt;li&gt;publish snippet repositories via GHNS: In Kate you can already download snippets from GHNS but we sadly don&amp;#8217;t have any repos up on opendesktop&amp;#8230; I&amp;#8217;ll have to add some prior to KDE 4.4. Also we didn&amp;#8217;t have enough time to implement uploading of Repos from inside Kate in time for KDE 4.4. So stay tuned for KDE 4.5. KDevelop currently has no support for GHNS, but I plan to fix this tomorrow or the next days - together with uploading from inside KDevelop, i.e. all the nice features of GHNS v3.&lt;/li&gt;
&lt;li&gt;in KDevelop (and someday in Kate as well) you can simply select a part of your currently opened document and select the &amp;#8220;create snippet from selection&amp;#8221; in the ContextMenu - easy &amp;amp; fast!&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;todo&#34;&gt;TODO&lt;/h5&gt;
&lt;p&gt;There&amp;#8217;s much to do.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Highest priority right now for me is to get GHNS with all bells and whistles supported for KDevelop.&lt;/li&gt;
&lt;li&gt;Then I&amp;#8217;ll merge and integrate the Kate &amp;amp; KDevelop plugins as much as possible, so we have a reduce code base.&lt;/li&gt;
&lt;li&gt;Also important is to make all shortcuts configurable&lt;/li&gt;
&lt;li&gt;Another thing is: How could we improve interoperability even between e.g. editors like TextMate or Gedit? Both have snippets features and their bundles are available in the net. If we can support those we&amp;#8217;d save us a lot of work&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, I should probably do a screencast&amp;#8230; Not now though ;-)&lt;/p&gt;</description></item><item><title>Snippets In KDevelop / Kate</title><link>https://kate-editor.org/2010/02/03/snippets-in-kdevelop-kate/</link><pubDate>Wed, 03 Feb 2010 15:59:46 +0000</pubDate><guid>https://kate-editor.org/2010/02/03/snippets-in-kdevelop-kate/</guid><description>
&lt;p&gt;Hey all!&lt;/p&gt;
&lt;p&gt;Just wanted to give you a little rundown on Snippets in Kate 4.4 (via the snippets_tng plugin) and KDevelop Beta 8 (soon to be released).&lt;/p&gt;
&lt;p&gt;Note: The Kate plugin was written by Jowenn and introduced me to all these nice features. For KDevelop I wrote a somewhat simpler yet imo better implementation. We will try to get the best of both worlds into KDE 4.5. Stay tuned!&lt;/p&gt;
&lt;h5 id=&#34;general-usage-features&#34;&gt;General Usage &amp;amp; Features&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;create a snippet repository (or download via GHNS [see below])&lt;/li&gt;
&lt;li&gt;create snippets in that repository&lt;/li&gt;
&lt;li&gt;insert snippets via the snippets view (i.e. double click), or (imo better/faster) insert them via code-completion (remember: CTRL + Space requests code completion at the current cursor position!).&lt;/li&gt;
&lt;li&gt;snippet gets inserted (properly indented) and potential placeholders/variables get expanded. A variable is something like &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;%{date}&lt;/code&gt;&lt;/span&gt; or &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;${email}&lt;/code&gt;&lt;/span&gt;. Also take a look at the &lt;a href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1TemplateInterface.html&#34;&gt;API documentation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;variables that get inserted via &amp;#8220;${&amp;#8230;}&amp;#8221; will be &amp;#8220;selectable&amp;#8221;, meaning you can jump from one var to the other by hitting TAB / Shift TAB&lt;/li&gt;
&lt;li&gt;the &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;%{&amp;hellip;}&lt;/code&gt;&lt;/span&gt; vars will only get expanded and inserted, without getting selectable.&lt;/li&gt;
&lt;li&gt;multiple occurrences of the same variable will be updated once one of them gets edited, something that is called &amp;#8220;mirroring&amp;#8221; in other editors.&lt;/li&gt;
&lt;li&gt;once one edits ESC the cursor is placed at the end of the snippet or to the first occurrence of &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;${cursor}&lt;/code&gt;&lt;/span&gt; or &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;%{cursor}&lt;/code&gt;&lt;/span&gt; and the user types something, the snippet-handler quits and you are left with your normal editor until you insert the next snippet&lt;/li&gt;
&lt;li&gt;nested snippets (i.e. insert snippet than insert another one) should &amp;#8220;just work&amp;#8221;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;snippet-management&#34;&gt;Snippet Management&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;group snippets by file type, i.e. PHP snippets will only be offered during code completion when one edits a PHP file.&lt;br /&gt;
Note: In KDevelop and KDE 4.4 nested documents are supported, e.g. create a CSS snippet and it will be shown inside the CSS parts of a HTML document or similar. This uses my HighlightInterface I wrote for KDE 4.4. I still have to rewrite some parts of the snippets_tng plugin for Kate so that it works there as well&lt;/li&gt;
&lt;li&gt;group snippets in repositories, set an Author and a License of your choice&lt;/li&gt;
&lt;li&gt;publish snippet repositories via GHNS: In Kate you can already download snippets from GHNS but we sadly don&amp;#8217;t have any repos up on opendesktop&amp;#8230; I&amp;#8217;ll have to add some prior to KDE 4.4. Also we didn&amp;#8217;t have enough time to implement uploading of Repos from inside Kate in time for KDE 4.4. So stay tuned for KDE 4.5. KDevelop currently has no support for GHNS, but I plan to fix this tomorrow or the next days - together with uploading from inside KDevelop, i.e. all the nice features of GHNS v3.&lt;/li&gt;
&lt;li&gt;in KDevelop (and someday in Kate as well) you can simply select a part of your currently opened document and select the &amp;#8220;create snippet from selection&amp;#8221; in the ContextMenu - easy &amp;amp; fast!&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;todo&#34;&gt;TODO&lt;/h5&gt;
&lt;p&gt;There&amp;#8217;s much to do.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Highest priority right now for me is to get GHNS with all bells and whistles supported for KDevelop.&lt;/li&gt;
&lt;li&gt;Then I&amp;#8217;ll merge and integrate the Kate &amp;amp; KDevelop plugins as much as possible, so we have a reduce code base.&lt;/li&gt;
&lt;li&gt;Also important is to make all shortcuts configurable&lt;/li&gt;
&lt;li&gt;Another thing is: How could we improve interoperability even between e.g. editors like TextMate or Gedit? Both have snippets features and their bundles are available in the net. If we can support those we&amp;#8217;d save us a lot of work&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, I should probably do a screencast&amp;#8230; Not now though ;-)&lt;/p&gt;</description></item><item><title>Kate polishing</title><link>https://kate-editor.org/2010/01/21/kate-polishing-2/</link><pubDate>Thu, 21 Jan 2010 00:09:47 +0000</pubDate><guid>https://kate-editor.org/2010/01/21/kate-polishing-2/</guid><description>&lt;p&gt;Phew, I just finished some last-minute backports to the KDE 4.3.5 branch. Lets hope the bug fixes I and pletourn did are as good as they look. Expect a much more stable Kate for 4.3.5 &amp;amp; 4.4! We managed to fix two bugs which are potentially the cause for dozens of bug reports, all seemingly random. Lets see whether our fixes hold up to our hopes!&lt;/p&gt;
&lt;p&gt;Other than that: You should look forward to Kate scripting (with JavaScript) in 4.4. It&amp;#8217;s dead simple but actually useful. In the &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;utils.js&lt;/code&gt;&lt;/span&gt; file we ship with Kate there are now the following tools (all operate on the selection or - if none exists - on the whole document):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sort - simple sorting&lt;/li&gt;
&lt;li&gt;natsort - natural sorting&lt;/li&gt;
&lt;li&gt;uniq - filter duplicates&lt;/li&gt;
&lt;li&gt;trim - remove leading &amp;amp; trailing whitespace&lt;/li&gt;
&lt;li&gt;ltrim - remove leading whitespace&lt;/li&gt;
&lt;li&gt;rtrim - remove trailing whitespace&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Do you have more ideas for such simple helper functions?&lt;/p&gt;</description></item><item><title>Kate polishing</title><link>https://kate-editor.org/2010/01/21/kate-polishing/</link><pubDate>Thu, 21 Jan 2010 00:09:47 +0000</pubDate><guid>https://kate-editor.org/2010/01/21/kate-polishing/</guid><description>&lt;p&gt;Phew, I just finished some last-minute backports to the KDE 4.3.5 branch. Lets hope the bug fixes I and pletourn did are as good as they look. Expect a much more stable Kate for 4.3.5 &amp;amp; 4.4! We managed to fix two bugs which are potentially the cause for dozens of bug reports, all seemingly random. Lets see whether our fixes hold up to our hopes!&lt;/p&gt;
&lt;p&gt;Other than that: You should look forward to Kate scripting (with JavaScript) in 4.4. It&amp;#8217;s dead simple but actually useful. In the &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;utils.js&lt;/code&gt;&lt;/span&gt; file we ship with Kate there are now the following tools (all operate on the selection or - if none exists - on the whole document):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sort - simple sorting&lt;/li&gt;
&lt;li&gt;natsort - natural sorting&lt;/li&gt;
&lt;li&gt;uniq - filter duplicates&lt;/li&gt;
&lt;li&gt;trim - remove leading &amp;amp; trailing whitespace&lt;/li&gt;
&lt;li&gt;ltrim - remove leading whitespace&lt;/li&gt;
&lt;li&gt;rtrim - remove trailing whitespace&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Do you have more ideas for such simple helper functions?&lt;/p&gt;</description></item><item><title>Kate XML Completion Plugin: Help Wanted</title><link>https://kate-editor.org/2010/01/17/kate-xml-completion-plugin-help-wanted/</link><pubDate>Sun, 17 Jan 2010 12:58:00 +0000</pubDate><guid>https://kate-editor.org/2010/01/17/kate-xml-completion-plugin-help-wanted/</guid><description>&lt;p&gt;In KDE3 Kate had a plugin called &amp;#8220;XML Completion Plugin&amp;#8221;. It was able to list XML elements, attributes and attribute values and entities in a completion popup menu depending on the currently active DTD. For instance, it was able to complete all your KDE/docbook tags and, thus, was one of the best tools for writing KDE documentation.&lt;/p&gt;
&lt;p&gt;Unfortunately, &lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=222859&#34;&gt;this plugin has not been ported to KDE4&lt;/a&gt;, yet. So this is a request for developers: Please someone pick it up and make it available for Kate in KDE4.&lt;/p&gt;
&lt;p&gt;The location in svn is: &lt;a href=&#34;http://websvn.kde.org/trunk/KDE/kdesdk/kate/plugins/xmltools&#34;&gt;trunk/KDE/kdesdk/kate/plugins/xmltools&lt;/a&gt;&lt;br /&gt;
Just enable this folder in the kate/plugins/CMakeLists.txt file and start porting it. The code completion interface changed quite a lot, but there are other plugins and good api documentation (&lt;a href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/interfaces/ktexteditor/html/index.html&#34;&gt;KTextEditor interfaces&lt;/a&gt;, &lt;a href=&#34;http://api.kde.org/4.x-api/kdesdk-apidocs/kate/interfaces/kate/html/index.html&#34;&gt;Kate Application interfaces&lt;/a&gt;) where you can have a look at how things work.&lt;/p&gt;
&lt;p&gt;Having a working XML Completion plugin for KDE4.5 would be awesome.&lt;/p&gt;</description></item><item><title>Kate Love: HighlightInterface, Autobrace</title><link>https://kate-editor.org/2009/11/22/kate-love-highlightinterface-autobrace-2/</link><pubDate>Sun, 22 Nov 2009 18:15:34 +0000</pubDate><guid>https://kate-editor.org/2009/11/22/kate-love-highlightinterface-autobrace-2/</guid><description>
&lt;p&gt;Well, I have to admit: I didn&amp;#8217;t spent much time developing the PHP plugin for KDevelop these past weeks. Instead I hacked on Kate:&lt;/p&gt;
&lt;h5 id=&#34;highlightinterface&#34;&gt;HighlightInterface&lt;/h5&gt;
&lt;p&gt;I added another Kate interface, this time to access some of the highlighting information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;what&amp;#8217;s the Attribute for a given default style right now? Default styles are those known from syntax files, e.g. &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;dsKeyword&lt;/code&gt;&lt;/span&gt;, &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;dsFunction&lt;/code&gt;&lt;/span&gt;,&amp;#8230;&lt;/li&gt;
&lt;li&gt;what are used Attributes in a given line and what range do they occupy?&lt;/li&gt;
&lt;li&gt;what modes do we embed? E.g. PHP embeds HTML, JavaScript, CSS, &amp;#8230;&lt;/li&gt;
&lt;li&gt;what mode is used at a given Cursor position?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This made it possible to port the &amp;#8220;Export to HTML&amp;#8221; action to a real plugin. If you come up with other output formats I might add them, I wondered about LaTeX support&amp;#8230; might do this at some point.&lt;/p&gt;
&lt;p&gt;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!&lt;/p&gt;
&lt;p&gt;The other stuff gives huge potential in various places, but I fear it won&amp;#8217;t make it in KDE 4.4. But think of it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;simple code completion based on keyword databases, dependent on the mode at the position where completion was requested&lt;/li&gt;
&lt;li&gt;same as above for snippets (actually this will make it to 4.4).&lt;/li&gt;
&lt;li&gt;insert your ideas here :)&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;auto-brace-plugin&#34;&gt;Auto-Brace plugin&lt;/h5&gt;
&lt;p&gt;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 &amp;#8220;auto-brackets&amp;#8221; 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.&lt;/p&gt;
&lt;p&gt;And I don&amp;#8217;t just copied to kdelibs, I also added a few features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;automatically add a semicolon after the closing brace when we start a new struct/class in C++ mode&lt;/li&gt;
&lt;li&gt;check for auto-brackets feature and disable it automatically&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also did this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;don&amp;#8217;t add brace when current line contains &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;namespace&lt;/code&gt;&lt;/span&gt; and a following line starts with &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;class&lt;/code&gt;&lt;/span&gt; or &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;struct&lt;/code&gt;&lt;/span&gt; (C++ mode only)&lt;/li&gt;
&lt;li&gt;don&amp;#8217;t add brace when current line contains &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;class&lt;/code&gt;&lt;/span&gt;, &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;interface&lt;/code&gt;&lt;/span&gt; or &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;struct&lt;/code&gt;&lt;/span&gt; and the following line contains &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;private&lt;/code&gt;&lt;/span&gt;, &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;public&lt;/code&gt;&lt;/span&gt;, &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;protected&lt;/code&gt;&lt;/span&gt;. C++ code is also checked for &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;signals&lt;/code&gt;&lt;/span&gt;, &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;Q_SIGNALS&amp;rdquo;, other modes are checked for&lt;/code&gt;&lt;/span&gt;function`.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This should fix the bug for code like (note the indendation levels):&lt;/p&gt;
&lt;div class=&#34;geshifilter&#34;&gt;
&lt;pre class=&#34;cpp geshifilter-cpp&#34; style=&#34;font-family:monospace;&#34;&gt;&lt;ol&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;kw2&#34;&gt;namespace&lt;/span&gt; foo &lt;span class=&#34;br0&#34;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&#34;co1&#34;&gt;// insert line here&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;kw2&#34;&gt;class&lt;/span&gt; bar;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;br0&#34;&gt;&amp;#125;&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;kw2&#34;&gt;class&lt;/span&gt; asdf &lt;span class=&#34;br0&#34;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&#34;co1&#34;&gt;// insert line here&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li2&#34;&gt;
&lt;div class=&#34;de2&#34;&gt;
&lt;span class=&#34;kw2&#34;&gt;private&lt;/span&gt;&lt;span class=&#34;sy4&#34;&gt;:&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
...
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;br0&#34;&gt;&amp;#125;&lt;/span&gt;;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/pre&gt;
&lt;/div&gt;</description></item><item><title>Kate Love: HighlightInterface, Autobrace</title><link>https://kate-editor.org/2009/11/22/kate-love-highlightinterface-autobrace/</link><pubDate>Sun, 22 Nov 2009 18:15:34 +0000</pubDate><guid>https://kate-editor.org/2009/11/22/kate-love-highlightinterface-autobrace/</guid><description>
&lt;p&gt;Well, I have to admit: I didn&amp;#8217;t spent much time developing the PHP plugin for KDevelop these past weeks. Instead I hacked on Kate:&lt;/p&gt;
&lt;h5 id=&#34;highlightinterface&#34;&gt;HighlightInterface&lt;/h5&gt;
&lt;p&gt;I added another Kate interface, this time to access some of the highlighting information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;what&amp;#8217;s the Attribute for a given default style right now? Default styles are those known from syntax files, e.g. &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;dsKeyword&lt;/code&gt;&lt;/span&gt;, &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;dsFunction&lt;/code&gt;&lt;/span&gt;,&amp;#8230;&lt;/li&gt;
&lt;li&gt;what are used Attributes in a given line and what range do they occupy?&lt;/li&gt;
&lt;li&gt;what modes do we embed? E.g. PHP embeds HTML, JavaScript, CSS, &amp;#8230;&lt;/li&gt;
&lt;li&gt;what mode is used at a given Cursor position?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This made it possible to port the &amp;#8220;Export to HTML&amp;#8221; action to a real plugin. If you come up with other output formats I might add them, I wondered about LaTeX support&amp;#8230; might do this at some point.&lt;/p&gt;
&lt;p&gt;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!&lt;/p&gt;
&lt;p&gt;The other stuff gives huge potential in various places, but I fear it won&amp;#8217;t make it in KDE 4.4. But think of it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;simple code completion based on keyword databases, dependent on the mode at the position where completion was requested&lt;/li&gt;
&lt;li&gt;same as above for snippets (actually this will make it to 4.4).&lt;/li&gt;
&lt;li&gt;insert your ideas here :)&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;auto-brace-plugin&#34;&gt;Auto-Brace plugin&lt;/h5&gt;
&lt;p&gt;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 &amp;#8220;auto-brackets&amp;#8221; 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.&lt;/p&gt;
&lt;p&gt;And I don&amp;#8217;t just copied to kdelibs, I also added a few features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;automatically add a semicolon after the closing brace when we start a new struct/class in C++ mode&lt;/li&gt;
&lt;li&gt;check for auto-brackets feature and disable it automatically&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also did this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;don&amp;#8217;t add brace when current line contains &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;namespace&lt;/code&gt;&lt;/span&gt; and a following line starts with &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;class&lt;/code&gt;&lt;/span&gt; or &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;struct&lt;/code&gt;&lt;/span&gt; (C++ mode only)&lt;/li&gt;
&lt;li&gt;don&amp;#8217;t add brace when current line contains &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;class&lt;/code&gt;&lt;/span&gt;, &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;interface&lt;/code&gt;&lt;/span&gt; or &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;struct&lt;/code&gt;&lt;/span&gt; and the following line contains &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;private&lt;/code&gt;&lt;/span&gt;, &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;public&lt;/code&gt;&lt;/span&gt;, &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;protected&lt;/code&gt;&lt;/span&gt;. C++ code is also checked for &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;signals&lt;/code&gt;&lt;/span&gt;, &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;Q_SIGNALS&amp;rdquo;, other modes are checked for&lt;/code&gt;&lt;/span&gt;function`.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This should fix the bug for code like (note the indendation levels):&lt;/p&gt;
&lt;div class=&#34;geshifilter&#34;&gt;
&lt;pre class=&#34;cpp geshifilter-cpp&#34; style=&#34;font-family:monospace;&#34;&gt;&lt;ol&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;kw2&#34;&gt;namespace&lt;/span&gt; foo &lt;span class=&#34;br0&#34;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&#34;co1&#34;&gt;// insert line here&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;kw2&#34;&gt;class&lt;/span&gt; bar;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;br0&#34;&gt;&amp;#125;&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;kw2&#34;&gt;class&lt;/span&gt; asdf &lt;span class=&#34;br0&#34;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&#34;co1&#34;&gt;// insert line here&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li2&#34;&gt;
&lt;div class=&#34;de2&#34;&gt;
&lt;span class=&#34;kw2&#34;&gt;private&lt;/span&gt;&lt;span class=&#34;sy4&#34;&gt;:&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
...
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;br0&#34;&gt;&amp;#125;&lt;/span&gt;;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/pre&gt;
&lt;/div&gt;</description></item><item><title>KDevelop &amp; KWrite/Kate hacksprint 2010 in Berlin</title><link>https://kate-editor.org/2009/11/16/kdevelop-kwritekate-hacksprint-2010-in-berlin/</link><pubDate>Mon, 16 Nov 2009 15:38:01 +0000</pubDate><guid>https://kate-editor.org/2009/11/16/kdevelop-kwritekate-hacksprint-2010-in-berlin/</guid><description>&lt;p&gt;Hey everybody!&lt;/p&gt;
&lt;p&gt;If you are a KDevelop and/or Kate/Kwrite developer and do not read the mailing lists: There&amp;#8217;s a hack sprint coming up in Berlin in 2010. I think there&amp;#8217;ve been enough sprints in Berlin already so that you know it&amp;#8217;s a great city for such an event. Though this time it won&amp;#8217;t be at KDAB or Nokia offices, but at the Physics Faculty of the FU-Berlin. Since I (currently) work there as an IT admin, it was my first choice and worked out. I hope it will be a good location for the meeting. If you want to attend, vote on doodle:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.doodle.com/vkyh9up9794zr4s8&#34; title=&#34;http://www.doodle.com/vkyh9up9794zr4s8&#34;&gt;http://www.doodle.com/vkyh9up9794zr4s8&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;But you probably also should register either on the KDevelop or KWrite mailing lists so I have some kind of way to contact you.&lt;/p&gt;
&lt;p&gt;PS: in unrelated news I&amp;#8217;ll do an internship at KDAB next year! yay&lt;/p&gt;</description></item><item><title>Scripting Kate</title><link>https://kate-editor.org/2009/11/01/scripting-kate/</link><pubDate>Sun, 01 Nov 2009 15:04:00 +0000</pubDate><guid>https://kate-editor.org/2009/11/01/scripting-kate/</guid><description>&lt;p&gt;In my &lt;a href=&#34;https://kate-editor.org/2009/10/29/extending-kate-with-scripts/&#34; target=&#34;_self&#34;&gt;last blog&lt;/a&gt; I explained Kate&amp;#8217;s scripting features in KDE 4.4. To better understand how scripting can be used let&amp;#8217;s look at some use cases.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=125104&#34;&gt;join lines&lt;/a&gt;: This feature request wants the action &amp;#8220;join lines&amp;#8221; to not join different paragraphs, i.e. not remove empty lines. We have not implemented this wish, as there are probably users who prefer the current behaviour. This request can be fixed by writing a small script that joins the lines according to the user&amp;#8217;s wishes.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=93398&#34;&gt;reformat paragraph&lt;/a&gt;: An intelligent reformatter for paragraphs. Should be rather straight forward to implement.&lt;/li&gt;
&lt;li&gt;XML tools: In KDE3, Kate once had a xmltools plugin. Unfortunately noone ported it to KDE4. The plugin provided lots of very useful features for xml editing. For example, you could select text and then wrap it with xml elements, e.g. &amp;#8220;text&amp;#8221; would become &amp;#8220;&lt;para&gt;text&lt;/para&gt;&amp;#8221;. This is a perfect example for a command line script as well. Any volunteers? :)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Scripting also brings us closer to fixing the following reports:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=44908&#34;&gt;macro system&lt;/a&gt;: Kate still does not have a macro system. A macro can be interpreted as a group of scripts, executed in a sequence (more or less). The vi input mode already supports pretty complex commands, and the code for scripting is all there. It&amp;#8217;s just a matter of putting this together so it&amp;#8217;s usable for users.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://bugs.kde.org/show_bug.cgi?id=65740&#34;&gt;word count&lt;/a&gt;: maybe the word count features can be implemented by a script (too slow?). Problem is, that a script cannot show dialogs etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To make scripting an even better experience, we still need to implement binding shortcuts to scripts. Again: any volunteers? :)&lt;/p&gt;</description></item><item><title>Extending Kate with Scripts</title><link>https://kate-editor.org/2009/10/29/extending-kate-with-scripts/</link><pubDate>Thu, 29 Oct 2009 18:41:00 +0000</pubDate><guid>https://kate-editor.org/2009/10/29/extending-kate-with-scripts/</guid><description>&lt;p&gt;As mentioned in one of my &lt;a title=&#34;News from the Holy Kate Land&#34; href=&#34;https://kate-editor.org/2009/09/18/news-from-the-holy-kate-land/&#34; target=&#34;_self&#34;&gt;last blogs&lt;/a&gt;, there has been quite some work for JavaScript scripting support in trunk recently. So what will Kate 3.4 (KDE 4.4) will bring? This is explained in detail in the sections:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Indentation Scripting&lt;/li&gt;
&lt;li&gt;Command Line Scripting&lt;/li&gt;
&lt;li&gt;Some Remarks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The scripting allows to extend Kate with lots of little helper functions. All users can add scripts as they wish. The documentation here is copied from the &lt;a title=&#34;Kate Handbook&#34; href=&#34;http://docs.kde.org/stable/en/kde-baseapps/kate/advanced-editing-tools-scripting.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;official Kate handbook&lt;/a&gt;. So instead of using this blog as reference, please use the handbook later for an up-to-date version. To script something useful, you&amp;#8217;ll need to know the scripting API. All the available functions are documented in the section &lt;a title=&#34;Kate Scripting API&#34; href=&#34;https://docs.kde.org/stable5/en/applications/katepart/dev-scripting.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Scripting API in the handbook&lt;/a&gt; as well. Enough said, here we go:&lt;/p&gt;
&lt;div class=&#34;titlepage&#34;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 class=&#34;title&#34; style=&#34;clear: both;&#34;&gt;
&lt;a name=&#34;advanced-editing-tools-scripting&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;titlepage&#34;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 class=&#34;title&#34; style=&#34;clear: both;&#34;&gt;
&lt;a name=&#34;advanced-editing-tools-scripting&#34;&gt;&lt;/a&gt;Extending &lt;span class=&#34;application&#34;&gt;Kate&lt;/span&gt; with Scripts
&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Since &lt;span class=&#34;application&#34;&gt;Kate&lt;/span&gt; 3.4 in KDE 4.4 the &lt;span class=&#34;application&#34;&gt;Kate&lt;/span&gt; editor component is easily extensible by writing scripts. The scripting language is ECMAScript (widely known as JavaScript). &lt;span class=&#34;application&#34;&gt;Kate&lt;/span&gt; supports two kinds of scripts: indentation and command line scripts.&lt;/p&gt;
&lt;div class=&#34;sect2&#34; lang=&#34;en&#34;&gt;
&lt;div class=&#34;titlepage&#34;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 class=&#34;title&#34;&gt;
&lt;a name=&#34;advanced-editing-tools-scripting-indentation&#34;&gt;&lt;/a&gt;Indentation Scripts
&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;p&gt;
Indentation scripts &amp;#8211; also referred as indenters &amp;#8211; automatically indent the source code while typing text. As example, after hitting the return-key code the indentation level often increases.
&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;&lt;p&gt;
The following sections describe step by step how to create the skeleton for a simple indenter. As first step, create a new &lt;code class=&#34;filename&#34;&gt;*.js&lt;/code&gt; file called e.g. &lt;code class=&#34;filename&#34;&gt;javascript.js&lt;/code&gt; in the local home folder &lt;code class=&#34;filename&#34;&gt;$KDEHOME/share/apps/katepart/script&lt;/code&gt;.
&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class=&#34;sect3&#34; lang=&#34;en&#34;&gt;
&lt;div class=&#34;titlepage&#34;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4 class=&#34;title&#34;&gt;
&lt;a name=&#34;advanced-editing-tools-scripting-indentation-header&#34;&gt;&lt;/a&gt;The Indentation Script Header
&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;p&amp;gt;
The header of the file &amp;lt;code class=&amp;#34;filename&amp;#34;&amp;gt;javascript.js&amp;lt;/code&amp;gt; is embedded in a comment and is of the following form
&amp;lt;/p&amp;gt;
&amp;lt;pre&amp;gt;/* kate-script&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;name: JavaScript&lt;/li&gt;
&lt;li&gt;author: Example Name&lt;/li&gt;
&lt;li&gt;license: BSD&lt;/li&gt;
&lt;li&gt;revision: 1&lt;/li&gt;
&lt;li&gt;kate-version: 3.4&lt;/li&gt;
&lt;li&gt;type: indentation&lt;/li&gt;
&lt;li&gt;required-syntax-style: javascript&lt;/li&gt;
&lt;li&gt;indent-languages: javascript&lt;/li&gt;
&lt;li&gt;priority: 0
*&lt;/li&gt;
&lt;li&gt;A line without colon &amp;lsquo;:&amp;rsquo; stops header parsing. That is, you can add optional&lt;/li&gt;
&lt;li&gt;&lt;p&gt;text here such as a detailed license.
*/&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;
Each entry is explained in detail now:
&lt;/p&gt;
&lt;div class=&#34;itemizedlist&#34;&gt;
&lt;ul type=&#34;disc&#34;&gt;
&lt;li&gt;
&lt;code class=&#34;literal&#34;&gt;kate-script&lt;/code&gt; [required]: This text string has to appear in the first line of the &lt;code class=&#34;filename&#34;&gt;*.js&lt;/code&gt; file, otherwise &lt;span class=&#34;application&#34;&gt;Kate&lt;/span&gt; skips the script.
&lt;/li&gt;
&lt;li&gt;
&lt;code class=&#34;literal&#34;&gt;name&lt;/code&gt; [required]: This is the indenter name that appears in the menu &lt;span class=&#34;guiitem&#34;&gt;&lt;span class=&#34;guimenu&#34;&gt;Tools&lt;/span&gt;&lt;/span&gt;-&gt;&lt;span class=&#34;guiitem&#34;&gt;&lt;span class=&#34;guimenuitem&#34;&gt;Indentation&lt;/span&gt;&lt;/span&gt; and in the configuration dialog.
&lt;/li&gt;
&lt;li&gt;
&lt;code class=&#34;literal&#34;&gt;author&lt;/code&gt; [optional]: The author&amp;#8217;s name and contact information.
&lt;/li&gt;
&lt;li&gt;
&lt;code class=&#34;literal&#34;&gt;license&lt;/code&gt; [optional]: Short form of the license, such as BSD or LGPLv3.
&lt;/li&gt;
&lt;li&gt;
&lt;code class=&#34;literal&#34;&gt;revision&lt;/code&gt; [required]: The revision of the script. This number should be increased whenever the script is modified.
&lt;/li&gt;
&lt;li&gt;
&lt;code class=&#34;literal&#34;&gt;kate-version&lt;/code&gt; [required]: Minimal required &lt;span class=&#34;application&#34;&gt;Kate&lt;/span&gt; version.
&lt;/li&gt;
&lt;li&gt;
&lt;code class=&#34;literal&#34;&gt;type&lt;/code&gt; [required]: The type must be “&lt;span class=&#34;quote&#34;&gt;&lt;code class=&#34;literal&#34;&gt;indentation&lt;/code&gt;&lt;/span&gt;”, otherwise &lt;span class=&#34;application&#34;&gt;Kate&lt;/span&gt; skips this script.
&lt;/li&gt;
&lt;li&gt;
&lt;code class=&#34;literal&#34;&gt;required-syntax-style&lt;/code&gt; [optional]: Comma separated list of required syntax highlighting styles. This is important for indenters that rely on specific highlight information in the document. If a required syntax style is specified, the indenter is available only when the appropriate highlighter is active. This prevents “&lt;span class=&#34;quote&#34;&gt;undefined behavior&lt;/span&gt;” caused by using the indenter without the expected highlighting schema. For instance, the Ruby indenter makes use of this in the files &lt;code class=&#34;filename&#34;&gt;ruby.js&lt;/code&gt; and &lt;code class=&#34;filename&#34;&gt;ruby.xml&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;code class=&#34;literal&#34;&gt;indent-languages&lt;/code&gt; [optional]: Comma separated list of syntax styles the indenter can indent correctly, e.g.: c++, java.
&lt;/li&gt;
&lt;li&gt;
&lt;code class=&#34;literal&#34;&gt;priority&lt;/code&gt; [optional]: If several indenters are suited for a certain highlighted file, the priority decides which indenter is chosen as default indenter.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;p&gt;
&lt;span class=&#34;application&#34;&gt;Kate&lt;/span&gt; reads all pairs of the form “&lt;span class=&#34;quote&#34;&gt;&lt;span class=&#34;replaceable&#34;&gt;&lt;em class=&#34;replaceable&#34;&gt;&lt;code&gt;key&lt;/code&gt;&lt;/em&gt;&lt;/span&gt;:&lt;span class=&#34;replaceable&#34;&gt;&lt;em class=&#34;replaceable&#34;&gt;&lt;code&gt;value&lt;/code&gt;&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;” until it cannot fine a colon anymore. This implies that the header can contain arbitrary text such as a license as shown in the example.
&lt;/p&gt;
&lt;/div&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;div class=&#34;sect3&#34; lang=&#34;en&#34;&gt;
&lt;div class=&#34;titlepage&#34;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4 class=&#34;title&#34;&gt;
&lt;a name=&#34;advanced-editing-tools-scripting-indentation-body&#34;&gt;&lt;/a&gt;The Indenter Source Code
&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;p&amp;gt;
Having specified the header this section explains how the indentation scripting itself works. The basic skeleton of the body looks like this:
&amp;lt;/p&amp;gt;
&amp;lt;pre&amp;gt;triggerCharacters = &amp;#34;{}/:;&amp;#34;;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;function indent(line, indentWidth, ch)
{
// called for each newline (ch == &amp;lsquo;\n&amp;rsquo;) and all characters specified in
// the global variable triggerCharacters. When calling Tools -&amp;gt; Align
// the variable ch is empty, i.e. ch == &amp;ldquo;.
//
// see also: Scripting API
return -2;
}&lt;/pre&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;p&amp;gt;
The function &amp;lt;code class=&amp;#34;function&amp;#34;&amp;gt;indent()&amp;lt;/code&amp;gt; has three parameters:
&amp;lt;/p&amp;gt;
&amp;lt;div class=&amp;#34;itemizedlist&amp;#34;&amp;gt;
&amp;lt;ul type=&amp;#34;disc&amp;#34;&amp;gt;
&amp;lt;li&amp;gt;
&amp;lt;code class=&amp;#34;literal&amp;#34;&amp;gt;line&amp;lt;/code&amp;gt;: the line that has to be indented
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
&amp;lt;code class=&amp;#34;literal&amp;#34;&amp;gt;indentWidth&amp;lt;/code&amp;gt;: the indentation width in amount of spaces
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
&amp;lt;code class=&amp;#34;literal&amp;#34;&amp;gt;ch&amp;lt;/code&amp;gt;: either a newline character (&amp;lt;code class=&amp;#34;literal&amp;#34;&amp;gt;ch == &amp;#39;\n&amp;#39;&amp;lt;/code&amp;gt;), the trigger character specified in &amp;lt;code class=&amp;#34;literal&amp;#34;&amp;gt;triggerCharacters&amp;lt;/code&amp;gt; or empty if the user invoked the action &amp;lt;span class=&amp;#34;guiitem&amp;#34;&amp;gt;&amp;lt;span class=&amp;#34;guimenu&amp;#34;&amp;gt;Tools&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;-&amp;gt;&amp;lt;span class=&amp;#34;guiitem&amp;#34;&amp;gt;&amp;lt;span class=&amp;#34;guimenuitem&amp;#34;&amp;gt;Align&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;.
&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;p&amp;gt;
The return value of the &amp;lt;code class=&amp;#34;function&amp;#34;&amp;gt;indent()&amp;lt;/code&amp;gt; function specifies how the line will be indented. If the return value is a simple integer number, it is interpreted as follows:
&amp;lt;/p&amp;gt;
&amp;lt;div class=&amp;#34;itemizedlist&amp;#34;&amp;gt;
&amp;lt;ul type=&amp;#34;disc&amp;#34;&amp;gt;
&amp;lt;li&amp;gt;
return value &amp;lt;code class=&amp;#34;literal&amp;#34;&amp;gt;-2&amp;lt;/code&amp;gt;: do nothing
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
return value &amp;lt;code class=&amp;#34;literal&amp;#34;&amp;gt;-1&amp;lt;/code&amp;gt;: keep indentation (searches for previous non-blank line)
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
return value &amp;lt;code class=&amp;#34;literal&amp;#34;&amp;gt; 0&amp;lt;/code&amp;gt;: numbers &amp;gt;= 0 specify the indentation depth in spaces
&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;p&amp;gt;
Alternatively, an array of two elements can be returned:
&amp;lt;/p&amp;gt;
&amp;lt;div class=&amp;#34;itemizedlist&amp;#34;&amp;gt;
&amp;lt;ul type=&amp;#34;disc&amp;#34;&amp;gt;
&amp;lt;li&amp;gt;
&amp;lt;code class=&amp;#34;literal&amp;#34;&amp;gt;return [ indent, align ];&amp;lt;/code&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;p&amp;gt;
In this case, the first element is the indentation depth like above with the same meaning of the special values. However, the second element is an absolute value representing a column for “&amp;lt;span class=&amp;#34;quote&amp;#34;&amp;gt;alignment&amp;lt;/span&amp;gt;”. If this value is higher than the indent value, the difference represents a number of spaces to be added after the indentation of the first parameter. Otherwise, the second number is ignored. Using tabs and spaces for indentation is often referred to as “&amp;lt;span class=&amp;#34;quote&amp;#34;&amp;gt;mixed mode&amp;lt;/span&amp;gt;”.
&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;
Consider the following example: Assume using tabs to indent, and tab width is set to 4. Here, &amp;lt;tab&amp;gt; represents a tab and &amp;amp;#8216;.&amp;amp;#8217; a space:
&amp;lt;/p&amp;gt;
&amp;lt;pre&amp;gt;1: &amp;amp;lt;tab&amp;amp;gt;&amp;amp;lt;tab&amp;amp;gt;foobar(&amp;#34;hello&amp;#34;,&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;2: &amp;lt;tab&amp;gt;&amp;lt;tab&amp;gt;&amp;hellip;&amp;hellip;.&amp;ldquo;world&amp;rdquo;);&lt;/pre&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;p&amp;gt;
When indenting line 2, the &amp;lt;code class=&amp;#34;function&amp;#34;&amp;gt;indent()&amp;lt;/code&amp;gt; function returns [8, 15]. As result, two tabs are inserted to indent to column 8, and 7 spaces are added to align the second parameter under the first, so that it stays aligned if the file is viewed with a different tab width.
&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;
A default KDE installation ships &amp;lt;span class=&amp;#34;application&amp;#34;&amp;gt;Kate&amp;lt;/span&amp;gt; with several indenters. The corresponding JavaScript source code can be found in &amp;lt;code class=&amp;#34;filename&amp;#34;&amp;gt;$KDRDIR/share/apps/katepart/script&amp;lt;/code&amp;gt;.
&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;
Developing an indenter requires to reload the scripts to see whether the changes behave appropriately. Instead of restarting the application, simply switch to the command line and invoke the command &amp;lt;span class=&amp;#34;command&amp;#34;&amp;gt;&amp;lt;strong class=&amp;#34;command&amp;#34;&amp;gt;reload-scripts&amp;lt;/strong&amp;gt;&amp;lt;/span&amp;gt;.
&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;
If you develop useful scripts please consider contributing to the &amp;lt;span class=&amp;#34;application&amp;#34;&amp;gt;Kate&amp;lt;/span&amp;gt; Project by &amp;lt;a href=&amp;#34;mailto:kwrite-devel@kde.org&amp;#34; target=&amp;#34;_top&amp;#34;&amp;gt;contacting the mailing list&amp;lt;/a&amp;gt;.
&amp;lt;/p&amp;gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;div class=&#34;sect2&#34; lang=&#34;en&#34;&gt;
&lt;div class=&#34;titlepage&#34;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 class=&#34;title&#34;&gt;
&lt;a name=&#34;advanced-editing-tools-scripting-command-line&#34;&gt;&lt;/a&gt;Command Line Scripts
&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;p&gt;
As it is hard to satisfy everyone&amp;#8217;s needs, &lt;span class=&#34;application&#34;&gt;Kate&lt;/span&gt; supports little helper tools for quick text manipulation through the &lt;a title=&#34;The Editor Component Command Line&#34; href=&#34;http://docs.kde.org/development/en/kdesdk/kate/advanced-editing-tools-commandline.html&#34;&gt;built-in command line&lt;/a&gt;. For instance, the command &lt;span class=&#34;command&#34;&gt;&lt;strong class=&#34;command&#34;&gt;sort&lt;/strong&gt;&lt;/span&gt; is implemented as script. This section explains how to create &lt;code class=&#34;filename&#34;&gt;*.js&lt;/code&gt; files to extend &lt;span class=&#34;application&#34;&gt;Kate&lt;/span&gt; with arbitrary helper scripts.
&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;&lt;p&gt;
Command line scripts are located in the save folder as indentation scripts. So as first step, create a new &lt;code class=&#34;filename&#34;&gt;*.js&lt;/code&gt; file called &lt;code class=&#34;filename&#34;&gt;myutils.js&lt;/code&gt; in the local home folder &lt;code class=&#34;filename&#34;&gt;$KDEHOME/share/apps/katepart/script&lt;/code&gt;.
&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class=&#34;sect3&#34; lang=&#34;en&#34;&gt;
&lt;div class=&#34;titlepage&#34;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4 class=&#34;title&#34;&gt;
&lt;a name=&#34;advanced-editing-tools-scripting-command-line-header&#34;&gt;&lt;/a&gt;The Command Line Script Header
&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;p&amp;gt;
The header of each command line script is embedded in a comment and is of the following form
&amp;lt;/p&amp;gt;
&amp;lt;pre&amp;gt;/* kate-script&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;author: Example Name&lt;/li&gt;
&lt;li&gt;license: BSD&lt;/li&gt;
&lt;li&gt;revision: 1&lt;/li&gt;
&lt;li&gt;kate-version: 3.4&lt;/li&gt;
&lt;li&gt;type: commands&lt;/li&gt;
&lt;li&gt;functions: sort, format-paragraph
*&lt;/li&gt;
&lt;li&gt;A line without colon &amp;lsquo;:&amp;rsquo; stops header parsing. That is, you can add optional&lt;/li&gt;
&lt;li&gt;&lt;p&gt;text here such as a detailed license.
*/&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;
Each entry is explained in detail now:
&lt;/p&gt;
&lt;div class=&#34;itemizedlist&#34;&gt;
&lt;ul type=&#34;disc&#34;&gt;
&lt;li&gt;
&lt;code class=&#34;literal&#34;&gt;kate-script&lt;/code&gt; [required]: This text string has to appear in the first line of the &lt;code class=&#34;filename&#34;&gt;*.js&lt;/code&gt; file, otherwise &lt;span class=&#34;application&#34;&gt;Kate&lt;/span&gt; skips the script.
&lt;/li&gt;
&lt;li&gt;
&lt;code class=&#34;literal&#34;&gt;author&lt;/code&gt; [optional]: The author&amp;#8217;s name and contact information.
&lt;/li&gt;
&lt;li&gt;
&lt;code class=&#34;literal&#34;&gt;license&lt;/code&gt; [optional]: Short form of the license, such as BSD or LGPLv3.
&lt;/li&gt;
&lt;li&gt;
&lt;code class=&#34;literal&#34;&gt;revision&lt;/code&gt; [required]: The revision of the script. This number should be increased whenever the script is modified.
&lt;/li&gt;
&lt;li&gt;
&lt;code class=&#34;literal&#34;&gt;kate-version&lt;/code&gt; [required]: Minimal required &lt;span class=&#34;application&#34;&gt;Kate&lt;/span&gt; version.
&lt;/li&gt;
&lt;li&gt;
&lt;code class=&#34;literal&#34;&gt;type&lt;/code&gt; [required]: The type must be &amp;#8216;commands&amp;#8217;, otherwise &lt;span class=&#34;application&#34;&gt;Kate&lt;/span&gt; skips this script.
&lt;/li&gt;
&lt;li&gt;
&lt;code class=&#34;literal&#34;&gt;functions&lt;/code&gt; [required]: Comma separated list of commands in the script.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;p&gt;
&lt;span class=&#34;application&#34;&gt;Kate&lt;/span&gt; reads all pairs of the form “&lt;span class=&#34;quote&#34;&gt;&lt;span class=&#34;replaceable&#34;&gt;&lt;em class=&#34;replaceable&#34;&gt;&lt;code&gt;key&lt;/code&gt;&lt;/em&gt;&lt;/span&gt;:&lt;span class=&#34;replaceable&#34;&gt;&lt;em class=&#34;replaceable&#34;&gt;&lt;code&gt;value&lt;/code&gt;&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;” until it cannot fine a colon anymore. This implies that the header can contain arbitrary text such as a license as shown in the example. The value of the key functions is a comma separated list of command line commands. This means a single script contains an arbitrary amount of command line commands. Each function is available through &lt;span class=&#34;application&#34;&gt;Kate&lt;/span&gt;&amp;#8216;s &lt;a title=&#34;The Editor Component Command Line&#34; href=&#34;http://docs.kde.org/development/en/kdesdk/kate/advanced-editing-tools-commandline.html&#34;&gt;built-in command line&lt;/a&gt;.
&lt;/p&gt;
&lt;/div&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;div class=&#34;sect3&#34; lang=&#34;en&#34;&gt;
&lt;div class=&#34;titlepage&#34;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4 class=&#34;title&#34;&gt;
&lt;a name=&#34;advanced-editing-tools-scripting-command-line-body&#34;&gt;&lt;/a&gt;The Script Source Code
&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;p&amp;gt;
All functions specified in the header have to be implemented in the script. For instance, the script file from the example above needs to implement the two functions &amp;lt;span class=&amp;#34;command&amp;#34;&amp;gt;&amp;lt;strong class=&amp;#34;command&amp;#34;&amp;gt;sort&amp;lt;/strong&amp;gt;&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;#34;command&amp;#34;&amp;gt;&amp;lt;strong class=&amp;#34;command&amp;#34;&amp;gt;format-paragraph&amp;lt;/strong&amp;gt;&amp;lt;/span&amp;gt;. All functions have the following syntax:
&amp;lt;/p&amp;gt;
&amp;lt;pre class=&amp;#34;programlisting&amp;#34;&amp;gt;function (arg1, arg2, ...) {&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;// &amp;hellip; implementation, see also: Scripting API
}&lt;/pre&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;p&amp;gt;
Arguments in the command line are passed to the function as &amp;lt;span class=&amp;#34;parameter&amp;#34;&amp;gt;&amp;lt;em class=&amp;#34;parameter&amp;#34;&amp;gt;&amp;lt;code&amp;gt;arg1&amp;lt;/code&amp;gt;&amp;lt;/em&amp;gt;&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;#34;parameter&amp;#34;&amp;gt;&amp;lt;em class=&amp;#34;parameter&amp;#34;&amp;gt;&amp;lt;code&amp;gt;arg2&amp;lt;/code&amp;gt;&amp;lt;/em&amp;gt;&amp;lt;/span&amp;gt;, etc. In order to provide documentation for each command, simply implement the &amp;amp;#8216;&amp;lt;code class=&amp;#34;function&amp;#34;&amp;gt;help&amp;lt;/code&amp;gt;&amp;amp;#8216; function as follows:
&amp;lt;/p&amp;gt;
&amp;lt;pre class=&amp;#34;programlisting&amp;#34;&amp;gt;function help(cmd)&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;{
if (cmd == &amp;ldquo;sort&amp;rdquo;) {
return &amp;ldquo;Sort the selected text.&amp;rdquo;;
} else if (cmd == &amp;ldquo;&amp;hellip;&amp;rdquo;) {
// &amp;hellip;
}
}&lt;/pre&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;p&amp;gt;
Executing &amp;lt;span class=&amp;#34;command&amp;#34;&amp;gt;&amp;lt;strong class=&amp;#34;command&amp;#34;&amp;gt;help sort&amp;lt;/strong&amp;gt;&amp;lt;/span&amp;gt; in the command line then calls this help function with the argument &amp;lt;span class=&amp;#34;parameter&amp;#34;&amp;gt;&amp;lt;em class=&amp;#34;parameter&amp;#34;&amp;gt;&amp;lt;code&amp;gt;cmd&amp;lt;/code&amp;gt;&amp;lt;/em&amp;gt;&amp;lt;/span&amp;gt; set to the given command, i.e. &amp;lt;span class=&amp;#34;parameter&amp;#34;&amp;gt;&amp;lt;em class=&amp;#34;parameter&amp;#34;&amp;gt;&amp;lt;code&amp;gt;cmd == &amp;#34;sort&amp;#34;&amp;lt;/code&amp;gt;&amp;lt;/em&amp;gt;&amp;lt;/span&amp;gt;. &amp;lt;span class=&amp;#34;application&amp;#34;&amp;gt;Kate&amp;lt;/span&amp;gt; then presents the returned text as documentation to the user.
&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;
Developing a command line script requires to reload the scripts to see whether the changes behave appropriately. Instead of restarting the application, simply switch to the command line and invoke the command &amp;lt;span class=&amp;#34;command&amp;#34;&amp;gt;&amp;lt;strong class=&amp;#34;command&amp;#34;&amp;gt;reload-scripts&amp;lt;/strong&amp;gt;&amp;lt;/span&amp;gt;.
&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;
If you develop useful scripts please consider contributing to the &amp;lt;span class=&amp;#34;application&amp;#34;&amp;gt;Kate&amp;lt;/span&amp;gt; Project by &amp;lt;a href=&amp;#34;mailto:kwrite-devel@kde.org&amp;#34; target=&amp;#34;_top&amp;#34;&amp;gt;contacting the mailing list&amp;lt;/a&amp;gt;.
&amp;lt;/p&amp;gt;
&amp;lt;h2 class=&amp;#34;title&amp;#34; style=&amp;#34;clear: both;&amp;#34;&amp;gt;
Final Remarks
&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;
The command line scripting can be accessed for all KTextEditor users through the &amp;lt;a href=&amp;#34;http://api.kde.org/4.x-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1CommandInterface.html&amp;#34;&amp;gt;KTextEditor::CommandInterface&amp;lt;/a&amp;gt;. That is, you can query a specific command and &amp;lt;a href=&amp;#34;http://api.kde.org/4.x-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1Command.html#afcf59107ca87d860fc7a17e507df02d2&amp;#34;&amp;gt;execute it&amp;lt;/a&amp;gt; with arbitrary parameters (The parameter cmd contains the command itself including all arguments. Example: cmd = &amp;amp;#8220;goto 65&amp;amp;#8221;).
&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;
Kate&amp;amp;#8217;s command line itself is actually a quite powerful tool. It&amp;amp;#8217;s a little bit sad that it&amp;amp;#8217;s rather unknown. If you want to know more, just invoke &amp;amp;#8220;View -&amp;gt; Swith to command line&amp;amp;#8221; (shortcut: F7) and start typing text. More details are in the &amp;lt;a title=&amp;#34;Kate Command Line&amp;#34; href=&amp;#34;http://docs.kde.org/stable/en/kde-baseapps/kate/advanced-editing-tools-commandline.html&amp;#34; target=&amp;#34;_blank&amp;#34; rel=&amp;#34;noopener&amp;#34;&amp;gt;Kate handbook&amp;lt;/a&amp;gt; as well.
&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;
The Kate scripting API can be found &amp;lt;a title=&amp;#34;Kate Scripting API&amp;#34; href=&amp;#34;http://docs.kde.org/stable/en/kde-baseapps/kate/advanced-editing-tools-scripting.html#advanced-editing-tools-scripting-api&amp;#34; target=&amp;#34;_blank&amp;#34; rel=&amp;#34;noopener&amp;#34;&amp;gt;here&amp;lt;/a&amp;gt;.
&amp;lt;/p&amp;gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/p&gt;</description></item><item><title>first experience with Archlinux</title><link>https://kate-editor.org/2009/10/18/first-experience-with-archlinux/</link><pubDate>Sun, 18 Oct 2009 00:24:14 +0000</pubDate><guid>https://kate-editor.org/2009/10/18/first-experience-with-archlinux/</guid><description>&lt;p&gt;So, I kinda messed up my desktop right after the upgrade to karmic, because I was too greedy for performance and converted my root file system to ext4. Well, that worked like a charm on my laptop, but it broke my desktop. This is in no way karmic&amp;#8217;s fault, it&amp;#8217;s my own misbehavior. Thankfully I could rescue most of my data.&lt;/p&gt;
&lt;p&gt;Since I&amp;#8217;d had to reinstall anyways, I decided to finally try out Archlinux. I find the rolling release mantra very intriguing. Together with a &amp;#8220;simpler&amp;#8221; packaging, namely no splitting between &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;-dev&lt;/code&gt;&lt;/span&gt; and &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;-dbg&lt;/code&gt;&lt;/span&gt; packages like debian/ubuntu does, this is destined to be a good environment for a developer. I always hated it to track down missing &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;-dev&lt;/code&gt;&lt;/span&gt; packages when compiling software. And don&amp;#8217;t get me started on outdated software in repos&amp;#8230; I just compiled kdelibs and the only missing build dependency was hspell, that I don&amp;#8217;t need anyways. Under Jaunty I had to compile stuff from kdesupport to fulfill updated dependencies. And the list of not-found optional dependencies was huge, since I did not spent time to install all those &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;-dev&lt;/code&gt;&lt;/span&gt; packages by hand&amp;#8230;&lt;/p&gt;
&lt;p&gt;My first impression of Archlinux is very good so far. I also finally migrated to 64bit wich works like a charm, no issues with flash or anything. Since I never used a 64bit Ubuntu/Debian I&amp;#8217;m not sure, whether the perceived performance increase is due to the switch to 64bit or whether Archlinux optimized packages are responsible. Probably both. Nevertheless I can safely say that my system feels snappier than before.&lt;/p&gt;
&lt;p&gt;Of course, the installation and initial setup is not as straight forward / easy as with Debian/Ubuntu: Yet it&amp;#8217;s no big deal for anyone with some Linux experience. And, once everything is setup, you are running KDE again, so no real difference. Thanks to the Chakra team for kdemod, it works like a charm!&lt;/p&gt;
&lt;p&gt;I might have spent a bit more time during the installation / initial configuration, but I think this would have happened also if I&amp;#8217;d installed any other distro I&amp;#8217;ve never used before, like OpenSuse or Fedora.&lt;/p&gt;
&lt;p&gt;Oh and since I can install &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;sudo&lt;/code&gt;&lt;/span&gt; I can keep my old habits. Neat.&lt;/p&gt;
&lt;p&gt;The only thing I miss so far is &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;aptitude&lt;/code&gt;&lt;/span&gt; with it&amp;#8217;s straight forward command structure. Yaourt/Pacman is fast and nice, esp. with pacman-color, but the commands don&amp;#8217;t feel as straight forward to me&amp;#8230; Personal preference I&amp;#8217;d say.&lt;/p&gt;
&lt;p&gt;To conclude: Archlinux is very nice, I can wholeheartedly recommend using it so far. Probably nothing for a novice Linux user, yet perfect for advanced users. Very good as a development environment. Fast. Up to date. I like it :)&lt;/p&gt;
&lt;p&gt;Now I can finally continue hacking on Kate/Kdelibs again :) I&amp;#8217;m currently in the process of refactoring Kate&amp;#8217;s implementation of the &lt;a href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1TemplateInterface.html&#34;&gt;TemplateInterface&lt;/a&gt;. Even in it&amp;#8217;s current state it already implements features like mirrored snippets and the like. But once I&amp;#8217;ve finished with the cleanup I will try to implement some more of the features that are found in e.g. &lt;a href=&#34;http://code.google.com/p/yasnippet/&#34;&gt;yasnippet&lt;/a&gt; for Emacs. I really wonder why nobody else did that already&amp;#8230;&lt;/p&gt;
&lt;p&gt;Once this is finished, you can expect that I will deeply integrate that feature in various places in KDevelop, especially for code completion, snippet plugin etc. pp. Stay tuned!&lt;/p&gt;</description></item><item><title>News from the Holy Kate Land</title><link>https://kate-editor.org/2009/09/18/news-from-the-holy-kate-land/</link><pubDate>Thu, 17 Sep 2009 22:36:00 +0000</pubDate><guid>https://kate-editor.org/2009/09/18/news-from-the-holy-kate-land/</guid><description>&lt;p&gt;Since we now all know that Kate is holy (thanks to rms. By accident, he obviously confused Kate with emacs, though) let&amp;#8217;s have a look at what&amp;#8217;s going on. In the last months Kate development is quite active, so here is a quick update:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;new: &lt;a href=&#34;http://dhaumann.blogspot.com/2009/07/followup-on-kates-on-fly-spellchecking.html&#34;&gt;on-the-fly spell checking&lt;/a&gt; thanks to Michel Ludwig. Highlights include e.g. spell checking in comments of source code or latex parts. Also, constructs like sch&amp;amp;#8221;on work in latex.&lt;/li&gt;
&lt;li&gt;extended scripting support in the command line, more on that later&lt;/li&gt;
&lt;li&gt;more and more mature vi input mode&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.kde.org/buglist.cgi?query_format=advanced&amp;amp;short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;product=kate&amp;amp;long_desc_type=substring&amp;amp;long_desc=&amp;amp;bug_file_loc_type=allwordssubstr&amp;amp;bug_file_loc=&amp;amp;keywords_type=allwords&amp;amp;keywords=&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=CLOSED&amp;amp;resolution=FIXED&amp;amp;resolution=WORKSFORME&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;chfieldfrom=2009-06-25&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;amp;cmdtype=doit&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;field0-0-0=noop&amp;amp;type0-0-0=noop&amp;amp;value0-0-0=&#34;&gt;lots of bug fixing&lt;/a&gt;. quite impressive bug squashing by Pascal Létourneau for more than 4 months now&lt;/li&gt;
&lt;li&gt;lots of refactoring and code cleanups thanks to Bernhard!&lt;/li&gt;
&lt;li&gt;&amp;#8220;Find in Files&amp;#8221; appears by default again in the tool view,&lt;/li&gt;
&lt;li&gt;&amp;#8220;File Browser&amp;#8221; uses UrlNavigator, huge code cleanup&lt;/li&gt;
&lt;li&gt;convenience updates of syntax highlighting&lt;/li&gt;
&lt;li&gt;delayed highlighting of code folding ranges to prevent flickering on mouse move&lt;/li&gt;
&lt;li&gt;new command line commands: &amp;#8216;toggle-header&amp;#8217; in the Open Header plugin. &amp;#8216;grep&amp;#8217; and &amp;#8216;find-in-files&amp;#8217;&lt;/li&gt;
&lt;li&gt;haskell and lilypond indenter&lt;/li&gt;
&lt;li&gt;much, much more, see commits for details.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all contributors involved in Kate development. Keep it up :)&lt;/p&gt;</description></item><item><title>Improved PHP support in Kate</title><link>https://kate-editor.org/2009/08/26/improved-php-support-in-kate/</link><pubDate>Wed, 26 Aug 2009 14:20:49 +0000</pubDate><guid>https://kate-editor.org/2009/08/26/improved-php-support-in-kate/</guid><description>&lt;nav&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#improved-heredocs&#34;&gt;Improved HereDocs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#better-support-for-overlapping-syntax-regions&#34;&gt;Better support for overlapping syntax regions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/nav&gt;
&lt;p&gt;Not only KDevelop gets better and better PHP support &amp;#8212; the Kate PHP syntax file also got a few new features and fixes over the last weeks. The good thing is of course that all users of KWrite, Kate, Quanta, KDevelop and other editors leveraging the Katepart benefit from these changes.&lt;/p&gt;
&lt;h6 id=&#34;improved-heredocs&#34;&gt;Improved HereDocs&lt;/h6&gt;
&lt;p style=&#34;float:right; text-align:center; font-size:xx-small; margin-left:10px;&#34;&gt;
&lt;a href=&#34;http://imagebin.ca/view/YOWiEyE.html&#34; title=&#34;view fullsized screenshot&#34;&gt; &lt;img alt=&#34;screenshot of improved highlighting in PHP heredocs&#34; src=&#34;http://imagebin.ca/img/YOWiEyE.png&#34; height=&#34;200&#34; /&gt; &lt;br /&gt; screenshot of improved highlighting in PHP heredocs &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;I went over &lt;a href=&#34;https://bugs.kde.org/buglist.cgi?query_format=advanced&amp;amp;short_desc_type=allwordssubstr&amp;amp;short_desc=php&amp;amp;product=kate&amp;amp;product=kdevelop&amp;amp;product=kdevplatform&amp;amp;product=quanta&amp;amp;long_desc_type=substring&amp;amp;long_desc=&amp;amp;bug_file_loc_type=allwordssubstr&amp;amp;bug_file_loc=&amp;amp;keywords_type=allwords&amp;amp;keywords=&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;chfieldfrom=&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;amp;cmdtype=doit&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;field0-0-0=noop&amp;amp;type0-0-0=noop&amp;amp;value0-0-0=&#34;&gt;PHP related bugs&lt;/a&gt; on &lt;a href=&#34;http://bugs.kde.org&#34;&gt;bugs.kde.org&lt;/a&gt; today and spotted one that was fairly easy to fix:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=118668&#34;&gt;vim-like syntax highlighting support for heredocs in php.xml&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;With some magic (&lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;IncludeRules&lt;/code&gt;&lt;/span&gt; just rocks) I got it working fairly easy. You can see the results to the right.&lt;/p&gt;
&lt;p&gt;Additionally I added code folding to heredocs, since often these strings include lots of text and hiding it often makes sense.&lt;/p&gt;
&lt;h6 id=&#34;better-support-for-overlapping-syntax-regions&#34;&gt;Better support for overlapping syntax regions&lt;/h6&gt;
&lt;p style=&#34;float:left; text-align:center; font-size:xx-small; padding-right:10px;&#34;&gt;
&lt;img alt=&#34;code folding with overlapping syntax regions&#34; src=&#34;http://i25.tinypic.com/e9gfwi.png&#34; /&gt; &lt;br /&gt; code folding with overlapping syntax regions
&lt;/p&gt;
&lt;p&gt;Another long standing bug (&lt;em&gt;&amp;#8221;&lt;a href=&#34;https://bugs.kde.org/show_bug.cgi?id=103257&#34;&gt;accommodate overlapping syntax regions (especially for php)&lt;/a&gt;&amp;#8221;&lt;/em&gt;) got fixed by James Sleeman.&lt;/p&gt;
&lt;p&gt;Finally PHP templates with code such as&lt;/p&gt;
&lt;div class=&#34;geshifilter&#34;&gt;
&lt;pre class=&#34;php geshifilter-php&#34; style=&#34;font-family:monospace;&#34;&gt;&lt;ol&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;kw2&#34;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&#34;kw1&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;br0&#34;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&#34;kw2&#34;&gt;true&lt;/span&gt; &lt;span class=&#34;br0&#34;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&#34;sy0&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kw2&#34;&gt;?&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&amp;lt;!-- some html stuff --&amp;gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;kw2&#34;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&#34;kw1&#34;&gt;elseif&lt;/span&gt; &lt;span class=&#34;br0&#34;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&#34;kw2&#34;&gt;false&lt;/span&gt; &lt;span class=&#34;br0&#34;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&#34;br0&#34;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&#34;kw2&#34;&gt;?&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&amp;lt;!-- some other html stuff --&amp;gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li2&#34;&gt;
&lt;div class=&#34;de2&#34;&gt;
&lt;span class=&#34;kw2&#34;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&#34;br0&#34;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&#34;kw2&#34;&gt;?&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;can be folded properly. This kind of spaghetti code is used quite often in simple templates and having the posibility to fold it properly is a huge win in my opinion. Thanks to James Sleeman again!&lt;/p&gt;</description></item><item><title>Followup on Kate’s on-the-fly spellchecking</title><link>https://kate-editor.org/2009/07/08/followup-on-kates-on-the-fly-spellchecking/</link><pubDate>Wed, 08 Jul 2009 10:09:00 +0000</pubDate><guid>https://kate-editor.org/2009/07/08/followup-on-kates-on-the-fly-spellchecking/</guid><description>&lt;p&gt;As there was a lot of feedback in the &lt;a href=&#34;https://kate-editor.org/2009/07/07/on-the-fly-spellchecking-in-kate/&#34; target=&#34;_self&#34;&gt;last blog&lt;/a&gt;, I&amp;#8217;ll answer some of the questions here.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style=&#34;font-style: italic;&#34;&gt;Where can I get this patch?&lt;/span&gt;&lt;br /&gt;
The relevant subversion revisions are r992778, r992779, r992780, r992784.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-style: italic;&#34;&gt;Will it be available in 4.3, or only in 4.4?&lt;/span&gt;&lt;br /&gt;
As KDE 4.3 will be released end of the month, this feature will be available in KDE 4.4 and not earlier.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-style: italic;&#34;&gt;Please, please tell me that it&amp;#8217;s powered by Sonnet, one of the most awaited KDE4 pillar by me&amp;#8230;&lt;/span&gt;&lt;br /&gt;
Yes, it uses Sonnet :)&lt;br /&gt;
The old spellcheck dialog however still uses the old spellchecking code without Sonnet. Any volunteers to port this? Also, the on-the-fly spellchecking needs to be more configurable in Kate&amp;#8217;s config dialog, e.g. selecting the correct language.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-style: italic;&#34;&gt;Thanks so much, this was the feature I was mostly longing for in kate.&lt;/span&gt;&lt;br /&gt;
Yes, it is one of the &lt;a href=&#34;http://bugs.kde.org/show_bug.cgi?id=33857&#34;&gt;oldest reports&lt;/a&gt; with &lt;span style=&#34;font-weight: bold;&#34;&gt;1245 votes&lt;/span&gt;!&lt;/p&gt;
&lt;p&gt;What languages are supported support?&lt;br /&gt;
On-the-fly spellchecking works if the specific itemDatas are marked with spellChecking=&amp;#8221;true&amp;#8221; or &amp;#8220;1&amp;#8221; in the xml highlighting definition files. UPDATE: On-the-fly spellchecking is enabled for all itemDatas by default in the xml highlighting defintion files. To disable it, you have to add &lt;span style=&#34;font-weight: bold;&#34;&gt;spellChecking=&amp;#8221;false&amp;#8221;&lt;/span&gt; or &amp;#8220;0&amp;#8221; to an itemData, e.g. at the end of the &lt;a href=&#34;http://websvn.kde.org/trunk/KDE/kdelibs/kate/syntax/data/cpp.xml?view=markup&#34;&gt;cpp.xml&lt;/a&gt; file:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&amp;lt;itemDatas&amp;gt;
&amp;lt;itemData name=&#34;Normal Text&#34; &lt;span style=&#34;font-weight: bold;&#34;&gt;spellChecking=&#34;0&#34;&lt;/span&gt; /&amp;gt;
...
&amp;lt;itemData name=&#34;String&#34; /&amp;gt;
&amp;lt;itemData name=&#34;String Char&#34; &lt;span style=&#34;font-weight: bold;&#34;&gt;spellChecking=&#34;0&#34;&lt;/span&gt; /&amp;gt;
&amp;lt;itemData name=&#34;Comment&#34; /&amp;gt;
&amp;lt;itemData name=&#34;Symbol&#34; &lt;span style=&#34;font-weight: bold;&#34;&gt;spellChecking=&#34;0&#34;&lt;/span&gt; /&amp;gt;
...
&amp;lt;/itemData&amp;gt;&lt;/pre&gt;
&lt;p&gt;So we have to go through all .xml files and change the relevant parts in the itemDatas section. And that&amp;#8217;s where we need your help, as we don&amp;#8217;t know all the languages :) &amp;#8230;and if you want to test this feature, you first have to enable it in Tools &amp;gt; On-the-fly spellchecking.&lt;br /&gt;
PS: Is there a better name? Maybe Inline spellchecking? Any linguistic experts around? :)&lt;/p&gt;</description></item><item><title>On-the-fly spellchecking in Kate</title><link>https://kate-editor.org/2009/07/07/on-the-fly-spellchecking-in-kate/</link><pubDate>Tue, 07 Jul 2009 18:51:00 +0000</pubDate><guid>https://kate-editor.org/2009/07/07/on-the-fly-spellchecking-in-kate/</guid><description>&lt;p&gt;Christoph just added an awesome and long awaited feature: on-the-fly spellchecking. &amp;#8216;Kate&amp;#8217;s xml highlighting files now have an additional attribute in the itemData section: spellChecking=&amp;#8221;true/false&amp;#8221;. C++ comments and strings can be spellchecked now :) Same for all other languages such as Latex. Really big thanks to Michel Ludwig for the patch, good work! Screenshot for latex highlighting:&lt;/p&gt;
&lt;p&gt;&lt;a onblur=&#34;try {parent.deselectBloggerImageGracefully();} catch(e) {}&#34; href=&#34;http://1.bp.blogspot.com/_JcjnuQSFzjw/SlOZuLvbdHI/AAAAAAAAADs/mX4dVlvZA50/s1600-h/snapshot1.png&#34;&gt;&lt;img style=&#34;cursor: pointer; width: 400px; height: 326px;&#34; src=&#34;http://1.bp.blogspot.com/_JcjnuQSFzjw/SlOZuLvbdHI/AAAAAAAAADs/mX4dVlvZA50/s400/snapshot1.png&#34; alt=&#34;&#34; id=&#34;BLOGGER_PHOTO_ID_5355793400578405490&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kate Test Regression Suite</title><link>https://kate-editor.org/2009/06/07/kate-test-regression-suite/</link><pubDate>Sun, 07 Jun 2009 11:55:00 +0000</pubDate><guid>https://kate-editor.org/2009/06/07/kate-test-regression-suite/</guid><description>&lt;p&gt;This blog is mainly about documenting the process how to run Kate Part&amp;#8217;s test regression suite and probably not much use for other developers.&lt;/p&gt;
&lt;p&gt;Step I: Setup the environment&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;create the file ~/.testkateregression. The content of this file is a single line pointing to the folder of the checkout of the test regression suite data. For me this is&lt;br /&gt;
/home/dh/kde/tests/katetests/regression/&lt;/li&gt;
&lt;li&gt;Create the folder where you checkout the suite&lt;br /&gt;
mkdir /home/dh/kde/tests&lt;/li&gt;
&lt;li&gt;Change to this folder&lt;/li&gt;
&lt;li&gt;Checkout the data:&lt;br /&gt;
svn co svn://anonsvn.kde.org/home/kde/trunk/tests/katetests&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now all the data is there for testing.&lt;/p&gt;
&lt;p&gt;Step II: Run the test suite&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;go to your build directory of kate (e.g. kdelibs/build/kate/tests/&lt;/li&gt;
&lt;li&gt;run the complete suite:&lt;br /&gt;
./testkateregression.shell&lt;/li&gt;
&lt;li&gt;run specific tests, e.g. for the c indenter:&lt;br /&gt;
./testkateregression.shell -t indent/csmart&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That&amp;#8217;s it.&lt;/p&gt;</description></item><item><title>Kate linter plugin</title><link>https://kate-editor.org/2009/01/15/kate-linter-plugin/</link><pubDate>Thu, 15 Jan 2009 17:58:24 +0000</pubDate><guid>https://kate-editor.org/2009/01/15/kate-linter-plugin/</guid><description>
&lt;p&gt;Just a quicky: I wrote a little plugin for KTextEditor which supplies you with basic error checking when you save documents. Currently only PHP (via &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;bash geshifilter-bash&#34;&gt;php &amp;lt;span class=&amp;ldquo;re5&amp;rdquo;&amp;gt;-l&amp;lt;/span&amp;gt;&lt;/code&gt;&lt;/span&gt;) and JavaScript (via &lt;a href=&#34;http://javascriptlint.com/&#34;&gt;JavaScript Lint&lt;/a&gt;) are supported. &lt;!--break--&gt;&lt;/p&gt;
&lt;h5 id=&#34;screenshots&#34;&gt;Screenshots&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://milianw.de/files/screens/kte_linter/php_error.png&#34;&gt;PHP error&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://milianw.de/files/screens/kte_linter/error_list.png&#34;&gt;list of errors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;requirements&#34;&gt;Requirements&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;usual tools for compiling C++, e.g. gcc.&lt;/li&gt;
&lt;li&gt;cmake&lt;/li&gt;
&lt;li&gt;Qt development packages, i.e. under Ubuntu: &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;bash geshifilter-bash&#34;&gt;&amp;lt;span class=&amp;ldquo;kw2&amp;rdquo;&amp;gt;sudo&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;ldquo;kw2&amp;rdquo;&amp;gt;aptitude&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;ldquo;kw2&amp;rdquo;&amp;gt;install&amp;lt;/span&amp;gt; libqt4-dev&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;KDE 4.2 with development packages for kdelibs and kdebase, i.e. under Ubuntu: &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;bash geshifilter-bash&#34;&gt;&amp;lt;span class=&amp;ldquo;kw2&amp;rdquo;&amp;gt;sudo&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;ldquo;kw2&amp;rdquo;&amp;gt;aptitude&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;ldquo;kw2&amp;rdquo;&amp;gt;install&amp;lt;/span&amp;gt; kdebase-dev kdebase-workspace-dev kdelibs5-dev&lt;/code&gt;&lt;/span&gt;. &lt;strong&gt;Note:&lt;/strong&gt; You&amp;#8217;ll need the experimental KDE 4.2 packages activated as of now, see for example &lt;a href=&#34;http://www.kubuntu.org/news/kde-4.2-rc1&#34;&gt;the Kubuntu news on KDE 4.2 RC1&lt;/a&gt; for hints.&lt;/li&gt;
&lt;li&gt;proper setup of environment variables, read &lt;a href=&#34;http://techbase.kde.org/Getting_Started/Increased_Productivity_in_KDE4_with_Scripts#Bash&#34;&gt;this techbase article&lt;/a&gt; for more information. the &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;.bashrc&lt;/code&gt;&lt;/span&gt; linked there should be enough for most people&lt;/li&gt;
&lt;li&gt;For PHP support: a PHP executable which supports the &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;-l&lt;/code&gt;&lt;/span&gt; switch for linting&lt;/li&gt;
&lt;li&gt;For JavaScript support: a JavaScript Lint executable, you could &lt;a href=&#34;http://javascriptlint.com/download.htm&#34;&gt;download&lt;/a&gt; and compile the sources for example.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;installing&#34;&gt;Installing&lt;/h5&gt;
&lt;p&gt;Get &lt;a href=&#34;http://websvn.kde.org/trunk/playground/devtools/kte_linter/&#34;&gt;the sources&lt;/a&gt; for the linter plugin from KDE SVN and compile it, using e.g. the functions supplied via the &lt;span class=&#34;geshifilter&#34;&gt;&lt;code class=&#34;text geshifilter-text&#34;&gt;.bashrc&lt;/code&gt;&lt;/span&gt; mentioned above:&lt;/p&gt;
&lt;div class=&#34;geshifilter&#34;&gt;
&lt;pre class=&#34;bash geshifilter-bash&#34; style=&#34;font-family:monospace;&#34;&gt;&lt;ol&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;co0&#34;&gt;# go to your development folder&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
cs
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;co0&#34;&gt;# checkout sources&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;kw2&#34;&gt;svn&lt;/span&gt; &lt;span class=&#34;kw2&#34;&gt;co&lt;/span&gt; &lt;span class=&#34;kw2&#34;&gt;svn&lt;/span&gt;:&lt;span class=&#34;sy0&#34;&gt;//&lt;/span&gt;anonsvn.kde.org&lt;span class=&#34;sy0&#34;&gt;/&lt;/span&gt;home&lt;span class=&#34;sy0&#34;&gt;/&lt;/span&gt;kde&lt;span class=&#34;sy0&#34;&gt;/&lt;/span&gt;trunk&lt;span class=&#34;sy0&#34;&gt;/&lt;/span&gt;playground&lt;span class=&#34;sy0&#34;&gt;/&lt;/span&gt;devtools&lt;span class=&#34;sy0&#34;&gt;/&lt;/span&gt;kte_linter
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li2&#34;&gt;
&lt;div class=&#34;de2&#34;&gt;
&lt;span class=&#34;kw3&#34;&gt;cd&lt;/span&gt; kte_linter
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;co0&#34;&gt;# build base linter plugin&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;kw3&#34;&gt;cd&lt;/span&gt; linter
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
cmakekde
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;co0&#34;&gt;# build php linter plugin&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li2&#34;&gt;
&lt;div class=&#34;de2&#34;&gt;
&lt;span class=&#34;kw3&#34;&gt;cd&lt;/span&gt; ..&lt;span class=&#34;sy0&#34;&gt;/&lt;/span&gt;phplinter
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
cmakekde
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;co0&#34;&gt;# build javascript linter plugin&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;kw3&#34;&gt;cd&lt;/span&gt; ..&lt;span class=&#34;sy0&#34;&gt;/&lt;/span&gt;jslinter
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
cmakekde
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li2&#34;&gt;
&lt;div class=&#34;de2&#34;&gt;
&lt;span class=&#34;co0&#34;&gt;# update sycoca&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
kbuildsycoca4
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
&lt;span class=&#34;co0&#34;&gt;# start editor and select the plugins - happy coding!&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;li1&#34;&gt;
&lt;div class=&#34;de1&#34;&gt;
kwrite
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h5 id=&#34;todo&#34;&gt;Todo&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Support for more languages&lt;/p&gt;
&lt;p&gt;If you know good linters drop me a note. But it would be even better if you could write your own linter plugin. It&amp;#8217;s pretty easy, take a look at one of the existing plugins for a skeleton &amp;amp; documentation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Right now each plugin returns a hardcoded list of highlighting-modes which it supports for linting. This should be made configurable so that custom highlighting modes are supported&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;make error messages more pretty&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Happy coding!&lt;/p&gt;</description></item><item><title>System Load Viewer</title><link>https://kate-editor.org/2009/01/02/system-load-viewer/</link><pubDate>Fri, 02 Jan 2009 17:28:00 +0000</pubDate><guid>https://kate-editor.org/2009/01/02/system-load-viewer/</guid><description>&lt;p&gt;Last year I&amp;#8217;ve blogged about the &lt;a href=&#34;http://dhaumann.blogspot.com/2008/05/i-miss-applet-which-shows-system-usage.html&#34;&gt;missing system monitor&lt;/a&gt; with the three bars for the panel and about its port to Plasma. Meanwhile other developers &lt;a href=&#34;http://www.kde-look.org/content/show.php/System+Status?content=74891&#34;&gt;also did a port&lt;/a&gt; called System Status. In a collaboration with them we finally have the applet back in &lt;a href=&#34;http://websvn.kde.org/trunk/kdereview/plasma/applets/systemloadviewer&#34;&gt;KDE&amp;#8217;s subversion&lt;/a&gt;, the name is now &amp;#8220;System Load Viewer&amp;#8221; and it uses the data engine &amp;#8220;systemmonitor&amp;#8221; that already exists in KDE 4.2.&lt;br /&gt;
So if you want to have the plasmoid for your KDE4.2 desktop, it should be straightforward to compile/install.&lt;br /&gt;
On the screenshot you can see the plasmoid in action. There are two instances, one on the panel and one on the desktop. The one on the left is the KDE3 one.&lt;br /&gt;
&lt;a onblur=&#34;try {parent.deselectBloggerImageGracefully();} catch(e) {}&#34; href=&#34;http://3.bp.blogspot.com/_JcjnuQSFzjw/SV5C46qPUqI/AAAAAAAAACQ/BHHOPImx9kc/s1600-h/systemloadviewer.png&#34;&gt;&lt;img style=&#34;cursor: pointer; width: 400px; height: 251px;&#34; src=&#34;http://3.bp.blogspot.com/_JcjnuQSFzjw/SV5C46qPUqI/AAAAAAAAACQ/BHHOPImx9kc/s400/systemloadviewer.png&#34; alt=&#34;&#34; id=&#34;BLOGGER_PHOTO_ID_5286736558166069922&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
It&amp;#8217;s worth to mention that the plasmoid already supports more featues than the KDE3 version. Features include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;show all cpus (for computers with multicores)&lt;/li&gt;
&lt;li&gt;tooltip updates continuously&lt;/li&gt;
&lt;li&gt;nicer visualization (maybe needs some more tweaks)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As soon as the KDE 4.2 freeze is over we&amp;#8217;ll have to see where we can put the plasmoid to make sure it&amp;#8217;s available for KDE 4.3 :)&lt;/p&gt;</description></item><item><title>Kate Internals: The Undo/Redo System</title><link>https://kate-editor.org/2008/11/14/kate-internals-the-undoredo-system/</link><pubDate>Fri, 14 Nov 2008 16:10:00 +0000</pubDate><guid>https://kate-editor.org/2008/11/14/kate-internals-the-undoredo-system/</guid><description>&lt;p&gt;The Kate Editor Component (also called KatePart) has its own &lt;span style=&#34;font-weight: bold;&#34;&gt;undo/redo system&lt;/span&gt;. It did not change much since KDE2 and basically it is very simple. Meanwhile there are classes for &lt;a href=&#34;http://doc.trolltech.com/4.4/qundostack.html&#34;&gt;undo/redo support in Qt&lt;/a&gt; as well. In fact both systems are very similar. This article focuses on Kate Part&amp;#8217;s system.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-weight: bold; font-size: 130%;&#34;&gt;Text Operations&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;First we have to take a look at what actions need to be saved. In Kate Part this basically comes down to&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;insert text or line&lt;/li&gt;
&lt;li&gt;remove text or line&lt;/li&gt;
&lt;li&gt;selection changes&lt;/li&gt;
&lt;li&gt;(and a few others like wrapping a line)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When typing text, each keystroke inserts a character. This is exactly one &lt;span style=&#34;font-weight: bold;&#34;&gt;undo/redo item&lt;/span&gt;. As example, typing a character &amp;#8216;x&amp;#8217; creates a new undo item:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the content is &amp;#8216;x&amp;#8217;&lt;/li&gt;
&lt;li&gt;the type is &amp;#8216;&lt;span style=&#34;font-style: italic;&#34;&gt;insert text&lt;/span&gt;&amp;#8216;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Undo in this case means &amp;#8216;&lt;span style=&#34;font-style: italic;&#34;&gt;remove x&lt;/span&gt;&amp;#8216;. Redo means &amp;#8216;&lt;span style=&#34;font-style: italic;&#34;&gt;insert x (again)&lt;/span&gt;&amp;#8216;. Hence, the undo/redo history is just a list (more like a stack to be precise) of simple edit actions.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-size: 130%;&#34;&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;KateUndo Items&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;In KatePart, each edit primitive in the undo history is based on the class &lt;a title=&#34;kateundo.cpp&#34; href=&#34;http://websvn.kde.org/trunk/KDE/kdelibs/kate/undo/kateundo.cpp&#34; target=&#34;_blank&#34;&gt;KateUndo&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;class KateUndo {
public:
KateUndo(KateDocument* document);
virtual ~KateUndo();
enum UndoType {
editInsertText,
editRemoveText,
editWrapLine,
editUnWrapLine,
editInsertLine,
editRemoveLine,
editMarkLineAutoWrapped,
editInvalid
};
virtual bool mergeWith(const KateUndo* undo);
virtual void undo() = 0;
virtual void redo() = 0;
virtual KateUndo::UndoType type() const = 0;
};
&lt;/pre&gt;
&lt;p&gt;For each of the edit primitives above exists a subclass of KateUndo, for instance the class for inserting text looks like this:&lt;/p&gt;
&lt;pre&gt;class KateEditInsertTextUndo : public KateUndo
{
public:
KateEditInsertTextUndo (KateDocument *document,
int line, int col, const QString &amp;text);
virtual void undo();
virtual void redo();
bool mergeWith (const KateUndo *undo);
KateUndo::UndoType type() const { return KateUndo::editInsertText; }
private:
const int m_line;
const int m_col;
QString m_text;
};
&lt;/pre&gt;
&lt;p&gt;&lt;span style=&#34;font-size: 130%;&#34;&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;Item Merging&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Note the function KateUndo::mergeWith(const KateUndo* undo); This functions merges two undo items of the same type if possible. For instance, typing &amp;#8216;hello world&amp;#8217; inserts one undo item for every character, i.e. 11 undo items of type &amp;#8216;insert text&amp;#8217;. Kate merges those 11 items into only 1 item with the string &amp;#8216;hello world&amp;#8217;. Merging leads to less KateUndo items (less memory) and faster undo/redo replaying.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-size: 130%;&#34;&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;Item Grouping&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;What&amp;#8217;s still missing is the possibility to &lt;span style=&#34;font-weight: bold;&#34;&gt;group several undo items together&lt;/span&gt;. Imagine you have selected the text &amp;#8216;hello world&amp;#8217; and paste the text &amp;#8216;cheers&amp;#8217; from the clipboard. What happens is this&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;remove selected text&lt;/li&gt;
&lt;li&gt;insert text from clipboard&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So there are two undo items of different type. They cannot be merged into only one KateUndo item. Though, we want to support undoing both items in one go, that&amp;#8217;s why we add several undo items into undo groups. In KatePart, this is done by the class &lt;a title=&#34;KateUndoGroup&#34; href=&#34;http://websvn.kde.org/trunk/KDE/kdelibs/kate/undo/kateundo.h?view=markup&#34; target=&#34;_blank&#34;&gt;KateUndoGroup&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;class KateUndoGroup {
public:
explicit KateUndoGroup (KateUndoManager *manager,
const KTextEditor::Cursor &amp;cursorPosition,
const KTextEditor::Range &amp;selectionRange);
void undo(KTextEditor::View *view);
void redo(KTextEditor::View *view);
enum UndoType { ... };
void addItem (KateUndoGroup::UndoType type, uint line,
uint col, uint len, const QString &amp;text);
void setUndoSelection (const KTextEditor::Range &amp;selection);
void setRedoSelection (const KTextEditor::Range &amp;selection);
void setUndoCursor(const KTextEditor::Cursor &amp;cursor);
void setRedoCursor(const KTextEditor::Cursor &amp;cursor);
bool merge(KateUndoGroup* newGroup,bool complex);
void safePoint (bool safePoint=true);
};&lt;/pre&gt;
&lt;p&gt;Every KateUndo item belongs to one KateUndoGroup. A KateUndoGroup can have an arbitrary count of KateUndo items. In the example above we want to group &amp;#8216;&lt;span style=&#34;font-style: italic;&#34;&gt;remove selected text&lt;/span&gt;&amp;#8216; and &amp;#8216;&lt;span style=&#34;font-style: italic;&#34;&gt;insert text&lt;/span&gt;&amp;#8216; together. Grouping can be explicitely done in the code as follows (simplified version):&lt;/p&gt;
&lt;pre&gt;void &lt;a style=&#34;font-family: courier new;&#34; href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/kate/html/katedocument_8cpp-source.html#l04218&#34;&gt;KateDocument::paste&lt;/a&gt;( KateView* view, QClipboard::Mode mode )
{
QString s = QApplication::clipboard()-&amp;gt;text(mode);
editStart();
view-&amp;gt;removeSelectedText();
insertText(pos, s, view-&amp;gt;blockSelectionMode());
editEnd();
}&lt;/pre&gt;
&lt;p&gt;&lt;span style=&#34;font-size: 130%;&#34;&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;Grouping: editStart()/editEnd()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The call of &lt;a href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/kate/html/katedocument_8cpp-source.html#l00933&#34;&gt;editStart()&lt;/a&gt; tells the document that an edit operation is running. All text operations are added to the current KateUndoGroup, until &lt;a href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/kate/html/katedocument_8cpp-source.html#l01043&#34;&gt;editEnd()&lt;/a&gt; is called. editStart() and editEnd() do reference counting, i.e. editStart() can be called nested as long as for each call of editStart() there is (finally) a call of editEnd().&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-size: 130%;&#34;&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;Grouping: Cursors and Selections&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Undoing the paste-action above should restore the selection if there was one previously. Redo (i.e. paste again) should remove the selection again. So there are &lt;span style=&#34;font-weight: bold;&#34;&gt;two different types of selections&lt;/span&gt;: one before the undo group, and one after. That&amp;#8217;s why each undo group has the functions setUndoSelection() and setRedoSelection(). The same applies for the cursor position: We have to store &lt;span style=&#34;font-weight: bold;&#34;&gt;two different cursor positions&lt;/span&gt;, one for undo and one for redo.&lt;br /&gt;
For instance, imagine we removed the text &amp;#8216;world&amp;#8217;. Undo (i.e. insert &amp;#8216;&lt;span style=&#34;font-style: italic;&#34;&gt;hello&lt;/span&gt;&amp;#8216;) should set the cursor position to the end of &amp;#8216;hello&amp;#8217;. Redo (i.e. remove &amp;#8216;&lt;span style=&#34;font-style: italic;&#34;&gt;hello&lt;/span&gt;&amp;#8216;) should set the cursor position to the start of it.&lt;/p&gt;
&lt;p&gt;Luckily a programmer does not have to set the undo/redo cursor positions and text selections manually. &lt;a href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/kate/html/katedocument_8cpp-source.html#l00964&#34;&gt;undoStart()&lt;/a&gt; is called the first time editStart() is called. The closing editEnd() finally calls &lt;a href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/kate/html/katedocument_8cpp-source.html#l00976&#34;&gt;undoEnd()&lt;/a&gt;. So undoStart() sets the undo cursor position and undo text selection, while undoEnd() sets the redo cursor position and redo text selection.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-size: 130%;&#34;&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;Group Merging&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The careful reader might have noticed KateUndoGroup::merge(). So merging of two groups is also supported. Whether text operations should be merged into an existing undo group can be controlled with KateDocument::setUndoDontMerge(). Pasting text for example set&amp;#8217;s this flag.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-size: 130%;&#34;&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;Undo and Redo&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Every document in KatePart has two lists: An &lt;span style=&#34;font-weight: bold;&#34;&gt;undo list&lt;/span&gt;, and a &lt;span style=&#34;font-weight: bold;&#34;&gt;redo list&lt;/span&gt;. Suppose we have 10 KateUndoGroups in the undo list and the user invokes undo 4 times. Then the undo list only contains 6 items and the redo list 4. Now it is also possible to redo. However, typing text clears the redo list.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-size: 130%;&#34;&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;Document Modified Flag&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;KateDocument::updateModifed() is called to update the &lt;span style=&#34;font-weight: bold;&#34;&gt;modified flag&lt;/span&gt; of a file. This update also relies on the current active undo group. Saving the file saves a pointer to the current undo group, and later we simply can check whether the current undo group is the active one. Pretty simple mechanism.&lt;/p&gt;</description></item><item><title>Akademy 08: Kate Flashback</title><link>https://kate-editor.org/2008/08/14/akademy-08-kate-flashback/</link><pubDate>Thu, 14 Aug 2008 21:28:00 +0000</pubDate><guid>https://kate-editor.org/2008/08/14/akademy-08-kate-flashback/</guid><description>&lt;p&gt;This Akademy&amp;#8217;s Kate changes include&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fix: drag &amp;amp; drop of text&lt;/li&gt;
&lt;li&gt;code completion: only show group header if the group name is not empty&lt;/li&gt;
&lt;li&gt;reintroduction of buffer blocks in Kate&amp;#8217;s document buffer (one buffer contains up to 4096 lines). The blocks build a linked list. Editing a 500 MB file kind of works now again. It&amp;#8217;s still rather slow, though.&lt;/li&gt;
&lt;li&gt;more speedup in Kate&amp;#8217;s document buffer&lt;/li&gt;
&lt;li&gt;Kate is using KEncodingProber instead of KEncodingDetector now&lt;/li&gt;
&lt;li&gt;generate internal version of KatePart automatically, so developers don&amp;#8217;t have to adapt it manually each release&lt;/li&gt;
&lt;li&gt;python encoding detection plugin that warns if encoding is not correct while saving&lt;/li&gt;
&lt;li&gt;new plugin: Backtrace browser, mainly for developers&lt;/li&gt;
&lt;li&gt;find in files: several speed optimizations&lt;/li&gt;
&lt;li&gt;find in files: progress indicator while search is active&lt;/li&gt;
&lt;li&gt;find in files: redesign of workflow. Search happens with non-modal dialog and results are shown in toolviews.&lt;/li&gt;
&lt;li&gt;lots of vi mode changes&lt;/li&gt;
&lt;li&gt;lots of bugs closed, mainly old ones&lt;/li&gt;
&lt;li&gt;some real bug fixes&amp;#8230;&lt;/li&gt;
&lt;li&gt;things I forgot&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Kate: Fast backtrace navigation</title><link>https://kate-editor.org/2008/08/12/kate-fast-backtrace-navigation/</link><pubDate>Tue, 12 Aug 2008 15:13:00 +0000</pubDate><guid>https://kate-editor.org/2008/08/12/kate-fast-backtrace-navigation/</guid><description>&lt;p&gt;I&amp;#8217;ve added a new plugin to kdesdk/kate/plugin: a backtrace browser. It&amp;#8217;s meant for developers and probably of no use for users. What does it do? It shows a backtrace delivered by gdb in a listview in a Kate toolview. Clicking on an item opens the selected file and jumps to the correct line number. It works for backtraces generated on your own machine, but it will also work for backtraces from other people, i.e. with /home/dummy/qt-copy/&amp;#8230;/qwidget.cpp will still be found on other machines. For that to work, you have to index the directories where the source code is located.&lt;br /&gt;
Sometimes there are several files with the same name, e.g.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;trunk/kdegraphics/okular/generators/dvi/config.h&lt;/li&gt;
&lt;li&gt;trunk/kdepim/mimelib/mimelib/config.h&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To pick the right choice, the plugin picks the last two parts of the url, in this case this would be&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dvi/config.h&lt;/li&gt;
&lt;li&gt;mimelib/config.h&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;and then usually finds the correct one. Indexing trunk/KDE and branches/KDE/4.1 of course will lead to a clash, now way to fix it. Maybe I could present a list of valid files to the user and let the user pick the right one. I don&amp;#8217;t think that&amp;#8217;s necessary though for now.&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;How to configure&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enable the plugin: go to Settings &amp;gt; Configure Kate &amp;gt; Application Plugins and enable &amp;#8216;Kate Backtrace Browser&amp;#8217;&lt;a onblur=&#34;try {parent.deselectBloggerImageGracefully();} catch(e) {}&#34; href=&#34;http://4.bp.blogspot.com/_JcjnuQSFzjw/SKGpTC4siKI/AAAAAAAAABU/RSgBUgutmPU/s1600-h/btbrowser-enable.jpg&#34;&gt;&lt;img style=&#34;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&#34; src=&#34;http://4.bp.blogspot.com/_JcjnuQSFzjw/SKGpTC4siKI/AAAAAAAAABU/RSgBUgutmPU/s400/btbrowser-enable.jpg&#34; alt=&#34;&#34; id=&#34;BLOGGER_PHOTO_ID_5233650386638506146&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A config page appeared, so click on it and add the directories containing the source code&lt;a onblur=&#34;try {parent.deselectBloggerImageGracefully();} catch(e) {}&#34; href=&#34;http://2.bp.blogspot.com/_JcjnuQSFzjw/SKGpf0SzDyI/AAAAAAAAABc/LY7RWRi9Wd0/s1600-h/btbrowser-configure.jpg&#34;&gt;&lt;img style=&#34;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&#34; src=&#34;http://2.bp.blogspot.com/_JcjnuQSFzjw/SKGpf0SzDyI/AAAAAAAAABc/LY7RWRi9Wd0/s400/btbrowser-configure.jpg&#34; alt=&#34;&#34; id=&#34;BLOGGER_PHOTO_ID_5233650606059753250&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clicking OK will start indexing. It will take some time (the index of kdesupport + kdelibs + kdepimlibs + kdebase + kdesdk + playground/plasma + plasma-addons + kdevplatform + kdegraphics is about 6MB)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When indexing is finished, open the toolview &amp;#8220;Backtrace Browser&amp;#8221;. Now you can load a backtrace from the clipboard (e.g. when you clicked &amp;#8220;Copy to Clipboard&amp;#8221; in Dr. Konqi) or from a file.&lt;br /&gt;
&lt;a onblur=&#34;try {parent.deselectBloggerImageGracefully();} catch(e) {}&#34; href=&#34;http://1.bp.blogspot.com/_JcjnuQSFzjw/SKGpsTLocuI/AAAAAAAAABk/dj-7kU8BV2E/s1600-h/btbrowser-usage.jpg&#34;&gt;&lt;img style=&#34;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&#34; src=&#34;http://1.bp.blogspot.com/_JcjnuQSFzjw/SKGpsTLocuI/AAAAAAAAABk/dj-7kU8BV2E/s400/btbrowser-usage.jpg&#34; alt=&#34;&#34; id=&#34;BLOGGER_PHOTO_ID_5233650820509627106&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Hope it&amp;#8217;s useful :)&lt;/p&gt;</description></item><item><title>Do you understand the word HTML?</title><link>https://kate-editor.org/2008/04/16/do-you-understand-the-word-html/</link><pubDate>Wed, 16 Apr 2008 09:39:00 +0000</pubDate><guid>https://kate-editor.org/2008/04/16/do-you-understand-the-word-html/</guid><description>&lt;p&gt;During the &lt;a href=&#34;http://dot.kde.org/1208269318/&#34;&gt;Kate developer meeting&lt;/a&gt; we also thought about simplifying KWrite and how to make the decision whether KWrite should be launched in full featured mode or in a stripped version. &amp;#8230;well, and we found a really funny idea:&lt;/p&gt;
&lt;p&gt;&lt;a onblur=&#34;try {parent.deselectBloggerImageGracefully();} catch(e) {}&#34; href=&#34;http://3.bp.blogspot.com/_JcjnuQSFzjw/SAXLaO1HblI/AAAAAAAAABE/bKJ9-I4nb6k/s1600-h/P1020901.JPG&#34;&gt;&lt;img style=&#34;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&#34; src=&#34;http://3.bp.blogspot.com/_JcjnuQSFzjw/SAXLaO1HblI/AAAAAAAAABE/bKJ9-I4nb6k/s400/P1020901.JPG&#34; alt=&#34;&#34; id=&#34;BLOGGER_PHOTO_ID_5189777797132283474&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;br /&gt;
Note, that this would even work, the question would be rather annoying, though :) The solution right now is to always start KWrite in a simple mode. Mostly only actions are hidden in the menus (@distributors: &lt;span style=&#34;font-family: courier new;&#34;&gt;kdelibs/kate/data/katepartsimpleui.rc&lt;/span&gt;), but you can also change c++ code at Kate part level, as there are some functions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bool KateDocument::simpleMode() (kate part internal), and&lt;/li&gt;
&lt;li&gt;bool KTextEditor::Editor::simpleMode() (along with setSimpleMode())&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This way config dialogs can be adapted depending on the mode as well. Ah, and if you want the normal mode back, go into the KWrite settings and enable &lt;span style=&#34;font-family: courier new;&#34;&gt;[x] Enable Developer Mode&lt;/span&gt;. Then restart KWrite.&lt;/p&gt;
&lt;p&gt;PS: Tackat, we came up with this image before our phone call. That&amp;#8217;s why it was really funny when you said HTML is something that should not be removed. hehe&amp;#8230; :)&lt;/p&gt;</description></item><item><title>Kate Meeting: Day 1 and 2</title><link>https://kate-editor.org/2008/04/15/kate-meeting-day-1-and-2/</link><pubDate>Tue, 15 Apr 2008 13:29:00 +0000</pubDate><guid>https://kate-editor.org/2008/04/15/kate-meeting-day-1-and-2/</guid><description>&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/news/development-sprint-results&#34;&gt;The Kate Developer Meeting&lt;/a&gt; was a productive weekend and once more shows how important the developer sprints are. The summary will be on the dot shortly. Work already started on several topics. As everyone want screenshots, here we go: The new annotation interface available now in KTextEditor can be use to e.g. show svn annotations directly in kate:&lt;br /&gt;
&lt;a onblur=&#34;try {parent.deselectBloggerImageGracefully();} catch(e) {}&#34; href=&#34;http://3.bp.blogspot.com/_JcjnuQSFzjw/SAS_Qe1HbjI/AAAAAAAAAA0/W6C00c79l6k/s1600-h/kate-annotations.png&#34;&gt;&lt;img style=&#34;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 333px; height: 271px;&#34; src=&#34;http://3.bp.blogspot.com/_JcjnuQSFzjw/SAS_Qe1HbjI/AAAAAAAAAA0/W6C00c79l6k/s400/kate-annotations.png&#34; alt=&#34;&#34; id=&#34;BLOGGER_PHOTO_ID_5189482960512314930&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;basysKom&amp;#8217;s coffee maching is simply the best: It can do everything, you just have to press the right key combos:&lt;a onblur=&#34;try {parent.deselectBloggerImageGracefully();} catch(e) {}&#34; href=&#34;http://2.bp.blogspot.com/_JcjnuQSFzjw/SATADO1HbkI/AAAAAAAAAA8/1_eFQ6eSaew/s1600-h/P1020906.JPG&#34;&gt;&lt;img style=&#34;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&#34; src=&#34;http://2.bp.blogspot.com/_JcjnuQSFzjw/SATADO1HbkI/AAAAAAAAAA8/1_eFQ6eSaew/s400/P1020906.JPG&#34; alt=&#34;&#34; id=&#34;BLOGGER_PHOTO_ID_5189483832390676034&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kate Developer Sprint 2008 Results</title><link>https://kate-editor.org/2008/04/15/kate-developer-sprint-2008-results/</link><pubDate>Tue, 15 Apr 2008 11:58:22 +0000</pubDate><guid>https://kate-editor.org/2008/04/15/kate-developer-sprint-2008-results/</guid><description>
&lt;p&gt;The below notes is what was decided at the development sprint in Darmstadt on April 11-13, 2008&lt;/p&gt;
&lt;h2 id=&#34;short-term-goals&#34;&gt;Short term goals&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Scripting, part level QtScript&lt;/li&gt;
&lt;li&gt;API for indentation scripts&lt;/li&gt;
&lt;li&gt;Sessions handling&lt;/li&gt;
&lt;li&gt;make text completion work!&lt;/li&gt;
&lt;li&gt;VI-Modes (GSoC-project)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;long-term-goals&#34;&gt;Long term goals&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Scripting at application level (Kate): Kross&lt;/li&gt;
&lt;li&gt;Combination of highlightings &amp;amp; indentations&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Scripting&lt;/li&gt;
&lt;li&gt;Indentation&lt;/li&gt;
&lt;li&gt;Kate Sessions&lt;/li&gt;
&lt;li&gt;Extending the highlighting system (Highlighting combination)&lt;/li&gt;
&lt;li&gt;Collaborative editing&lt;/li&gt;
&lt;li&gt;Text input modes (vi mode)&lt;/li&gt;
&lt;li&gt;Minor topics: Search &amp;amp; Replace, text completion&lt;/li&gt;
&lt;li&gt;Interface Review&lt;/li&gt;
&lt;li&gt;Simplifying KWrite&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;scripting&#34;&gt;Scripting&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Use cases
&lt;ul&gt;
&lt;li&gt;indentation&lt;/li&gt;
&lt;li&gt;helper scripts + assign shortcut&lt;/li&gt;
&lt;li&gt;useful for vi-mode scripting&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;right now: kjs (barely documented, future uncertain)&lt;/li&gt;
&lt;li&gt;choices: Kross, QtScript
&lt;ul&gt;
&lt;li&gt;Kross: language independent, depends on available bindings/plugins at runtime&lt;/li&gt;
&lt;li&gt;QtScript, Kross: simply wrap QObjects (signals/slots, Q_SCRIPTABLE automatically exported)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;kate-part-qtscript&#34;&gt;Kate Part: QtScript&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;flexible integration possible&lt;/li&gt;
&lt;li&gt;make it fast for specific use cases (e.g. indentation)&lt;/li&gt;
&lt;li&gt;script header
&lt;ul&gt;
&lt;li&gt;meta information: key/value pairs (type, name, mimetype, wildcard, &amp;#8230;)&lt;/li&gt;
&lt;li&gt;contact i18n people: how to do translation&lt;/li&gt;
&lt;li&gt;translation possible outside KDE?&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;kate-app&#34;&gt;Kate App&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Kross&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;indentation&#34;&gt;Indentation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;allow multiple indenters for documents with mixed languages (e.g. php and html)
&lt;ul&gt;
&lt;li&gt;document variables: e.g. indent-mode &lt;language&gt; &lt;mode&gt; [&lt;language&gt; &lt;mode&gt;];&lt;/li&gt;
&lt;li&gt;document variables: allow different settings (indent-width, &amp;#8230;)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;remove option &amp;#8220;Default Indenter&amp;#8221;, it does not make sense (really?)&lt;/li&gt;
&lt;li&gt;the script header should state which hl-modes it can indent (instead of mimetype/wildcard in the header)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;auto-completion&#34;&gt;Auto-completion:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;build word completion plugin into kate part by default&lt;/li&gt;
&lt;li&gt;fix implementation to actually complete stuff&lt;/li&gt;
&lt;li&gt;simplfy the popupmenu (!), just as in KDE3&lt;/li&gt;
&lt;li&gt;remove code completion config dialog, this must be implemented in the code completion model, as this is not applicable to any other than the cpp model. Better have something tiny working instead of a broken monster&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;kate-sessions-profiles&#34;&gt;Kate Sessions (profiles)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;data stored:
&lt;ul&gt;
&lt;li&gt;application plugin config&lt;/li&gt;
&lt;li&gt;file list (opened files)&lt;/li&gt;
&lt;li&gt;window configuration&lt;/li&gt;
&lt;li&gt;editor component config&lt;/li&gt;
&lt;li&gt;ktexteditor plugin config (maybe kpluginselector problems)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;session level configuration / document variables&lt;/li&gt;
&lt;li&gt;kill default.katesession file, always use katerc&lt;/li&gt;
&lt;li&gt;do not show the session chooser at startup, instead, make a good default (katerc)&lt;/li&gt;
&lt;li&gt;clone session: &amp;#8220;save as&amp;#8221; opens a small dialog with line edit and options like window config, file list&lt;/li&gt;
&lt;li&gt;remove option &amp;#8220;restore view config&amp;#8221; -&amp;gt; simply always do it&lt;/li&gt;
&lt;li&gt;make sure kate part plugins can save data to sessions: fork kpluginselector, if necessary :)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;highlighting&#34;&gt;Highlighting&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;extend highlighting system to allow combined highlighting
&lt;ul&gt;
&lt;li&gt;add e.g. &amp;#8220;entercontext&amp;#8221; rules&lt;/li&gt;
&lt;li&gt;separate highlighting loader from hightlight class&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Explanation: The purpose of this is to combine template languages such as PHP, EmbPerl, Mason etc with &lt;em&gt;any&lt;/em&gt; other syntax highlighting &lt;em&gt;on the fly&lt;/em&gt;, as opposed to the current practice which requires a combined set of files to be generated at build time. This is only done for the HTML + PHP combination, so with the new way a multitude of combination becomes available. In addition to that, nothing needs to be regenerated when a highlight is updated, makeing it much easier for users to keep their highlightings updated.&lt;/p&gt;
&lt;h2 id=&#34;highlighting-modes&#34;&gt;Highlighting / Modes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;when opening the config page choose the current used entries (highlight and mode) in the combo box, so that it is immediately clear to the user which mode/hl is active
&lt;ul&gt;
&lt;li&gt;&amp;#8220;Fonts &amp;amp; Colors&amp;#8221; &amp;gt; Highlight Text Styles&lt;/li&gt;
&lt;li&gt;&amp;#8220;Open/Save&amp;#8221; &amp;gt; Modes &amp;amp; Filetypes&lt;/li&gt;
&lt;li&gt;-&amp;gt; implement in kate part internally: simply track an active view (the last that got focus)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;collaborative-editing&#34;&gt;Collaborative Editing&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;example: gobby&lt;/li&gt;
&lt;li&gt;as KTextEditor plugin?
&lt;ul&gt;
&lt;li&gt;probably not completely possible right now, missing internal access&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Decibel (realtime communication protocol)
&lt;ul&gt;
&lt;li&gt;move communication framework into separate process and use dbus interfaces&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;implementation postponed&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;input-modes-vi-mode&#34;&gt;Input modes (vi mode)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;background: yzis
&lt;ul&gt;
&lt;li&gt;rewrite from scratch&lt;/li&gt;
&lt;li&gt;idea of abstracting away &amp;#8220;everything&amp;#8221; to be flexible (e.g. to support different front ends)&lt;/li&gt;
&lt;li&gt;development stalled 2 years ago&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;right now in kate part
&lt;ul&gt;
&lt;li&gt;command line already similar to vim&amp;#8217;s &amp;#8220;input mode&amp;#8221;&lt;/li&gt;
&lt;li&gt;keep this mode + extend, if needed&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;idea: integrate into kate part: extend/refactor kate to support input modes
&lt;ul&gt;
&lt;li&gt;make code reusable (in other modes)&lt;/li&gt;
&lt;li&gt;extend KTE::Commands to support ranges (e.g. &lt;1,10&gt;)&lt;/li&gt;
&lt;li&gt;add &amp;#8220;normal mode&amp;#8221;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;search-replace&#34;&gt;Search &amp;amp; Replace&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;bar has big minimum width, works bad in split view&lt;/li&gt;
&lt;li&gt;make it possible to embed widgets in the host application (KTE extension?)&lt;/li&gt;
&lt;li&gt;search &amp;amp; replace over multiple buffers&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;interfaces&#34;&gt;Interfaces&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Rule of thumb: Introduce interfaces only if usecase is known and best thing is always to have an implementation ready to get out the bugs before binary compatibility issues count&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;annotation-interfaces&#34;&gt;Annotation Interfaces&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;derive AnnotationViewInterface from AnnotationInterface&lt;/li&gt;
&lt;li&gt;&amp;#8212;&amp;gt; allow for KTE::Document and KTE::View&lt;/li&gt;
&lt;li&gt;merge header files into one&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;spellchecking-interface-viewport-interface&#34;&gt;Spellchecking Interface / Viewport Interface&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;both aim to support Kile doing spellcheck&lt;/li&gt;
&lt;li&gt;conclusions
&lt;ul&gt;
&lt;li&gt;spellcheck should be first integrated in katepart&lt;/li&gt;
&lt;li&gt;on-the-fly spellcheck support&lt;/li&gt;
&lt;li&gt;highlighting should feed info which parts are able to be spellchecked (extend highlighting system)&lt;/li&gt;
&lt;li&gt;after this is done, an interface can be invented to help Kile to enrich the spellcheck with meta-info like languages, additional spellcheckable ranges, &amp;#8230;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;message-interface&#34;&gt;Message Interface&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;implement a way to show messages in a non-intrusive way in the view bar&lt;/li&gt;
&lt;li&gt;avoid message boxes by using it, this won&amp;#8217;t influence the workflow!&lt;/li&gt;
&lt;li&gt;allow quering the user (buttons like OK, Yes, No, i.e. KMessageBox-like)&lt;/li&gt;
&lt;li&gt;multiple messages should be queued (or stacked?)&lt;/li&gt;
&lt;li&gt;allow both implementation in the part for messages per view and a fallback provided by the application for messages when no view is available&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;load-save-filter-interfaces&#34;&gt;Load/Save Filter Interfaces&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;preprocessing/postprocessing of text streamed from/to file&lt;/li&gt;
&lt;li&gt;checking of input/output, warning, error, &amp;#8230;&lt;/li&gt;
&lt;li&gt;allow lazy loading, using .desktop files to describe mime-type + wildcards&lt;/li&gt;
&lt;li&gt;allow to trigger usage of the plugins via document vars or mode config&lt;/li&gt;
&lt;li&gt;default: not allow any plugin, user must allow them (!)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;kwrite-should-be-more-simple&#34;&gt;KWrite: should be more simple&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;extend the kate part to allow blacklist/whitelist highlightings/plugins&lt;/li&gt;
&lt;li&gt;remove some advanced actions from ui file, provide simple mode, dummy mode&lt;/li&gt;
&lt;li&gt;remove hl&lt;/li&gt;
&lt;li&gt;remove folding option&lt;/li&gt;
&lt;li&gt;remove bookmarks (menu, settings)&lt;/li&gt;
&lt;li&gt;remove modus&lt;/li&gt;
&lt;li&gt;remove almost all of extras&lt;/li&gt;
&lt;li&gt;all in all: strip down to make it usable for the average user&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Kate Meeting: Day 0</title><link>https://kate-editor.org/2008/04/11/kate-meeting-day-0/</link><pubDate>Fri, 11 Apr 2008 16:20:00 +0000</pubDate><guid>https://kate-editor.org/2008/04/11/kate-meeting-day-0/</guid><description>&lt;p&gt;Finally it all begins: Anders and Joseph arrived at basysKom and we&amp;#8217;ve started to discuss some things we want to do for KDE 4.1. Later, we are going to meet with the rest of the attendees in a restaurant to get to know each other. The official start of the meeting is tomorrow morning. If you are interested in contributing to Kate, just join #kate on irc.kde.org. I&amp;#8217;m looking forward to the next two days :)&lt;/p&gt;</description></item><item><title>Kate Developer Sprint 2008</title><link>https://kate-editor.org/2008/03/25/kate-developer-sprint-2008/</link><pubDate>Tue, 25 Mar 2008 12:53:43 +0000</pubDate><guid>https://kate-editor.org/2008/03/25/kate-developer-sprint-2008/</guid><description>&lt;p&gt;In April there will be a Kate Developer Sprint, similar to previous sprints for &lt;a href=&#34;http://dot.kde.org/1174669960/&#34;&gt;Decibel&lt;/a&gt;, &lt;a href=&#34;http://dot.kde.org/1203626978/&#34;&gt;Akonadi&lt;/a&gt;, &lt;a href=&#34;http://dot.kde.org/1202500128/&#34;&gt;KDevelop&lt;/a&gt; and others. This is a great opportunity as developers interested in development of KDE&amp;#8217;s text editor will discuss what to do to make Kate &lt;a href=&#34;http://www.linuxquestions.org/questions/2007-linuxquestions.org-members-choice-awards-79/text-editor-of-the-year-610219/&#34;&gt;the best text editor&lt;/a&gt; on earth. This also means lots of polishing so that Kate in KDE 4.1 will shine even more! The meeting will take place from 2008-04-11 till 2008-04-13. The location is hosted by &lt;a href=&#34;http://www.basyskom.de&#34;&gt;basysKom&lt;/a&gt; in Darmstadt, Germany. Many thanks goes especially to the &lt;a href=&#34;http://ev.kde.org&#34;&gt;KDE e.V.&lt;/a&gt; for their financial support. If you are interested in Kate development, join our &lt;a href=&#34;https://mail.kde.org/mailman/listinfo/kwrite-devel&#34;&gt;mailing list&lt;/a&gt;. More to come, stay tuned!&lt;/p&gt;
&lt;p&gt;The event is organized by Dominik Haumann, and is supported by the kde.ev.&lt;/p&gt;
&lt;p&gt;On the agenda is discussing Kates future development and improving scripting capabilities amongst others.&lt;/p&gt;</description></item><item><title>Encapsulation is not Information Hiding</title><link>https://kate-editor.org/2007/12/21/encapsulation-is-not-information-hiding/</link><pubDate>Fri, 21 Dec 2007 13:03:00 +0000</pubDate><guid>https://kate-editor.org/2007/12/21/encapsulation-is-not-information-hiding/</guid><description>&lt;p&gt;As food for thought and in reply to &lt;a href=&#34;http://www.kdedevelopers.org/node/3163&#34;&gt;Why Encapsulation is a Good Thing&lt;/a&gt; it&amp;#8217;s interesting to take a closer look. What does encapsulation mean exactly, and what can you do with it? Maybe what you really want is Information Hiding? &amp;#8230;and encapsulation is just a way of possibly achieving it? If you are interested in the details/differences, read the article &lt;a href=&#34;http://www.javaworld.com/javaworld/jw-05-2001/jw-0518-encapsulation.html&#34;&gt;Encapsulation is not Information Hiding&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Memory Leak Continued</title><link>https://kate-editor.org/2007/11/22/memory-leak-continued/</link><pubDate>Thu, 22 Nov 2007 11:55:00 +0000</pubDate><guid>https://kate-editor.org/2007/11/22/memory-leak-continued/</guid><description>&lt;p&gt;There was some confusion with regard to &lt;a href=&#34;http://dhaumann.blogspot.com/2007/11/memory-leak-ui-files-and-direct.html&#34;&gt;my last blog&lt;/a&gt; about leaking memory. Suppose the ui_mywidget.h files looks like this:&lt;/p&gt;
&lt;pre&gt;class Ui_Widget
{
public:
QGridLayout *gridLayout;
QGroupBox *groupBox;
QGridLayout *gridLayout1;
QListWidget *listWidget;
QSpacerItem *spacerItem;
QPushButton *pushButton;
void setupUi(QWidget *Widget);
void retranslateUi(QWidget *Widget);
};&lt;/pre&gt;
&lt;p&gt;Of course, those 6 QObject derived classes are deleted. But the sizeof(Ui_Widget) = 6 * sizeof(void*) = 24 bytes are not deleted. As Ui_Widget is not QObject derived those 24 bytes leak. Confirmed by &lt;a href=&#34;http://techbase.kde.org/Development/Tools/Valgrind&#34;&gt;valgrind&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In a comment to my last blog Paolo suggested to use auto_ptr or &lt;a href=&#34;http://www.boost.org/libs/smart_ptr/scoped_ptr.htm&#34;&gt;scoped_ptr&lt;/a&gt;, which is more elegant than an extra wrapper class :)&lt;/p&gt;</description></item><item><title>Memory leak: Ui files and direct approach</title><link>https://kate-editor.org/2007/11/21/memory-leak-ui-files-and-direct-approach/</link><pubDate>Wed, 21 Nov 2007 22:38:00 +0000</pubDate><guid>https://kate-editor.org/2007/11/21/memory-leak-ui-files-and-direct-approach/</guid><description>&lt;p&gt;The KDE codebase often uses a forward declaration in the .h-file to speedup compilation. The code often looks like this:&lt;/p&gt;
&lt;pre&gt;// header file
namespace Ui { class MyWidget; }
class MyDialog : public KDialog {
// ...
private:
Ui::MyWidget *ui;
};&lt;/pre&gt;
&lt;p&gt;The impl looks like this:&lt;/p&gt;
&lt;pre&gt;// source file
#include &#34;mydialog.h&#34;
#include &#34;ui_mywidget.h&#34;
MyDialog::MyDialog() : KDialog()
{
QWidget *w = new QWidget(this);
setMainWidget(w);
ui = new Ui::MyWidget(); // allocation
ui-&amp;gt;setupUi(w);
// ui-&amp;gt;...
}&lt;/pre&gt;
&lt;p&gt;See the memory leak? &lt;span style=&#34;font-weight: bold;&#34;&gt;You have to call »delete ui;« in the destructor&lt;/span&gt; if you use the »direct approach«. &lt;a href=&#34;http://lxr.kde.org/ident?i=Ui&#34;&gt;Searching in lxr.kde.org&lt;/a&gt; shows &lt;span style=&#34;font-style: italic;&#34;&gt;lots&lt;/span&gt; of results, and in some places this delete is missing indeed. Happy fixing :)&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;Update:&lt;/span&gt; The really correct fix is to guard the pointer with an auto_ptr or scoped_ptr. For further details &lt;a href=&#34;http://dhaumann.blogspot.com/2007/11/memory-leak-ui-files-and-direct.html#c3247518843345483865&#34;&gt;read the&lt;/a&gt; &lt;a href=&#34;http://dhaumann.blogspot.com/2007/11/memory-leak-ui-files-and-direct.html#c6385817874350497424&#34;&gt;comments below&lt;/a&gt;. Or use &lt;a href=&#34;http://doc.trolltech.com/4.3/designer-using-a-component.html&#34;&gt;another approach to include your ui-file&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;* *If you do not want to delete it manually, you can for instance use a workaround like this:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;// header file
namespace Ui { class MyWidget; }
&lt;span style=&#34;font-weight: bold;&#34;&gt;class MyWidget;&lt;/span&gt;
class MyDialog : public KDialog {
// ...
private:
Ui::MyWidget *ui;
};&lt;/pre&gt;
&lt;p&gt;Source file:&lt;/p&gt;
&lt;pre&gt;// source file
#include &#34;mydialog.h&#34;
#include &#34;ui_mywidget.h&#34;
&lt;span style=&#34;font-weight: bold;&#34;&gt;class MyWidget : public QWidget, public Ui::MyWidget {&lt;/span&gt;
&lt;span style=&#34;font-weight: bold;&#34;&gt;public:&lt;/span&gt;
&lt;span style=&#34;font-weight: bold;&#34;&gt; MyWidget( QWidget * parent = 0 ) : QWidget( parent )&lt;/span&gt;
&lt;span style=&#34;font-weight: bold;&#34;&gt; { setupUi(this); }&lt;/span&gt;
&lt;span style=&#34;font-weight: bold;&#34;&gt;};&lt;/span&gt;
MyDialog::MyDialog() : KDialog()
{
&lt;span style=&#34;font-weight: bold;&#34;&gt;ui = new MyWidget(this);&lt;/span&gt;
&lt;span style=&#34;font-weight: bold;&#34;&gt;setMainWidget(ui);&lt;/span&gt;
QWidget *w = new QWidget(this);
setMainWidget(w);
ui = new Ui::MyDialog(); // allocation
ui-&amp;gt;setupUi(w);
// ui-&amp;gt;...
}&lt;/pre&gt;</description></item><item><title>Kate Highlighting Power</title><link>https://kate-editor.org/2007/09/12/kate-highlighting-power/</link><pubDate>Wed, 12 Sep 2007 19:23:00 +0000</pubDate><guid>https://kate-editor.org/2007/09/12/kate-highlighting-power/</guid><description>&lt;p&gt;Kate&amp;#8217;s highlighting capabilities are amazing. If you want you can highlight really complex syntax, without having to hardcode rules in C++. As an example, we&amp;#8217;ll take a look at how Lua comments can be realized:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&#34;font-family: courier new;&#34;&gt;&amp;#8211;[=[&lt;/span&gt; starts a multiline comment (the &amp;#8216;=&amp;#8217; chars are optional)&lt;/li&gt;
&lt;li&gt;&lt;span style=&#34;font-family: courier new;&#34;&gt;]=]&lt;/span&gt; ends the multiline comment&lt;/li&gt;
&lt;li&gt;the number of &amp;#8216;=&amp;#8217; chars in &lt;span style=&#34;font-family: courier new;&#34;&gt;]=]&lt;/span&gt; must match the number of &lt;span style=&#34;font-family: courier new;&#34;&gt;&amp;#8211;[=[&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That means: When the highlighting processor matches the end of a multiline comment, it has to know how many &amp;#8216;=&amp;#8217; chars started the comment. Thanks to the concept of &lt;span style=&#34;font-style: italic;&#34;&gt;dynamic rules and contexts&lt;/span&gt; Kate is able to do that. The highlighting file looks like this. First comes the header&lt;/p&gt;
&lt;pre&gt;&amp;lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&amp;gt;
&amp;lt;!DOCTYPE language SYSTEM &#34;language.dtd&#34; &amp;gt;
&amp;lt;language name=&#34;Test&#34; version=&#34;1.0&#34; kateversion=&#34;2.4&#34; section=&#34;Markup&#34; extensions=&#34;&#34; mimetype=&#34;&#34;&amp;gt;
&amp;lt;highlighting&amp;gt;&lt;/pre&gt;
&lt;p&gt;Then the body with the contexts. We start in the first context called &lt;span style=&#34;font-style: italic;&#34;&gt;&amp;#8220;Normal Text&amp;#8221;&lt;/span&gt;. When the regular expression &lt;span style=&#34;font-family: courier new;&#34;&gt;&amp;#8211;[(=*)[&lt;/span&gt; matches it switches to the context Comment.&lt;/p&gt;
&lt;pre&gt;&amp;lt;contexts&amp;gt;
&amp;lt;context attribute=&#34;Normal Text&#34; lineEndContext=&#34;#stay&#34; name=&#34;Normal&#34;&amp;gt;
&amp;lt;RegExpr attribute=&#34;Comment&#34; context=&#34;Comment&#34; String=&#34;--\[(=*)\[&#34; dynamic=&#34;true&#34;/&amp;gt;
&amp;lt;/context&amp;gt;&lt;/pre&gt;
&lt;p&gt;The part &lt;span style=&#34;font-family: courier new;&#34;&gt;(=*)&lt;/span&gt; is now available as %1 in the rule below:&lt;/p&gt;
&lt;pre&gt;&amp;lt;context name=&#34;Comment&#34; attribute=&#34;Comment&#34; lineEndContext=&#34;#stay&#34; dynamic=&#34;true&#34; &amp;gt;
&amp;lt;RegExpr attribute=&#34;Comment&#34; context=&#34;#pop&#34; String=&#34;\]%1\]&#34; dynamic=&#34;true&#34; /&amp;gt;
&amp;lt;/context&amp;gt;
&amp;lt;/contexts&amp;gt;&lt;/pre&gt;
&lt;p&gt;The last part is the footer:&lt;/p&gt;
&lt;pre&gt;&amp;lt;itemDatas&amp;gt;
&amp;lt;itemData name=&#34;Normal Text&#34; defStyleNum=&#34;dsNormal&#34; /&amp;gt;
&amp;lt;itemData name=&#34;Comment&#34; defStyleNum=&#34;dsComment&#34; /&amp;gt;
&amp;lt;/itemDatas&amp;gt;
&amp;lt;/highlighting&amp;gt;
&amp;lt;/language&amp;gt;&lt;/pre&gt;
&lt;p&gt;If you want to know more about Kate&amp;#8217;s highlighting, &lt;a href=&#34;https://kate-editor.org/2005/03/24/writing-a-syntax-highlighting-file/&#34; title=&#34;Writing a Kate Syntax Highlighting File&#34;&gt;have a look at the documentation&lt;/a&gt; :) There are also &lt;a href=&#34;http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kate&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=VERIFIED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfieldfrom=&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;amp;newqueryname=&amp;amp;order=bugs.bug_id&#34;&gt;lots of bug reports&lt;/a&gt;, so if you want to contribute you can fix them!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: As I don&amp;#8217;t know much about Lua, comments might work differently. That does not really matter, as the example still shows what you can do :)&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Extending Kate by Scripts</title><link>https://kate-editor.org/2007/07/21/extending-kate-by-scripts/</link><pubDate>Sat, 21 Jul 2007 11:29:00 +0000</pubDate><guid>https://kate-editor.org/2007/07/21/extending-kate-by-scripts/</guid><description>&lt;p&gt;We &lt;a href=&#34;http://dhaumann.blogspot.com/2007/07/kate-scripting-indentation.html&#34;&gt;have&lt;/a&gt; &lt;a href=&#34;http://dhaumann.blogspot.com/2007/07/kate-more-on-indentation-scripting.html&#34;&gt;seen&lt;/a&gt; how scripting basically works for indentation. It&amp;#8217;s also possible to register commandline functions (The command line is bound to F7 by default, or invoke View &amp;gt; Switch to Command Line). We will consider a small example again: sort the selected text.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style=&#34;font-family:courier new;&#34;&gt;/&lt;em&gt;&amp;nbsp;kate-script&lt;br /&gt;&amp;nbsp;&lt;/em&gt;&amp;nbsp;name:&amp;nbsp;unused&lt;br /&gt;&amp;nbsp;&lt;em&gt;&amp;nbsp;author:&amp;nbsp;foo&amp;nbsp;bar&lt;br /&gt;&amp;nbsp;&lt;/em&gt;&amp;nbsp;license:&amp;nbsp;LGPL&lt;br /&gt;&amp;nbsp;&lt;em&gt;&amp;nbsp;version:&amp;nbsp;1&lt;br /&gt;&amp;nbsp;&lt;/em&gt;&amp;nbsp;kate-version:&amp;nbsp;3.0&lt;br /&gt;&amp;nbsp;&lt;em&gt;&amp;nbsp;functions:&amp;nbsp;sorter&lt;br /&gt;&amp;nbsp;&lt;/em&gt;/&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;
function&amp;nbsp;sorter&amp;nbsp;()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(view.hasSelection())&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;start&amp;nbsp;=&amp;nbsp;view.startOfSelection().line;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;end&amp;nbsp;=&amp;nbsp;view.endOfSelection().line;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;text&amp;nbsp;=&amp;nbsp;document.textRange(start,&amp;nbsp;0,&amp;nbsp;end,&amp;nbsp;document.lineLength(end));
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;lines&amp;nbsp;=&amp;nbsp;text.split(&amp;#8220;\n&amp;#8221;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lines.sort();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text&amp;nbsp;=&amp;nbsp;lines.join(&amp;#8220;\n&amp;#8221;);
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;view.clearSelection();
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.editBegin();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.removeText(start,&amp;nbsp;0,&amp;nbsp;end,&amp;nbsp;document.lineLength(end));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.insertText(start,&amp;nbsp;0,&amp;nbsp;text);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.editEnd();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/span&gt;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;
The header line &lt;span style=&#34;font-weight: bold;&#34;&gt;functions: sorter&lt;/span&gt; makes Kate Part aware of the function in the script. A list of functions is supported, separated by white spaces. You can use the function by typing &amp;#8216;sorter&amp;#8217; in the commandline.&lt;br /&gt;Some todo items:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
provide better JavaScript API. For example: document.textRange() takes 4 parameters. It would be more elegant to take one range or two cursors, just like we do in the KTextEditor interfaces in kdelibs/interfaces/ktexteditor
&lt;/li&gt;
&lt;li&gt;
make is possible to bind scripts to shortcuts. This could be done by e.g. binding commandline functions to shortcuts or implementing a vim-like command-mode in Kate&amp;#8217;s commandline. How to configure the shortcuts is unclear, though.
&lt;/li&gt;
&lt;li&gt;
then, think about replacing the C++ implementations of &amp;#8216;uppercase&amp;#8217;, &amp;#8216;lowercase&amp;#8217;, &amp;#8216;capitalize&amp;#8217; etc. with scripts
&lt;/li&gt;
&lt;li&gt;
things I forgot&amp;#8230;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
If you are interested subscribe to kwrite-devel@kde.org and contribute :) We also need indentation scripts, of course!
&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Kate: More on Indentation Scripting</title><link>https://kate-editor.org/2007/07/20/kate-more-on-indentation-scripting/</link><pubDate>Fri, 20 Jul 2007 17:18:00 +0000</pubDate><guid>https://kate-editor.org/2007/07/20/kate-more-on-indentation-scripting/</guid><description>&lt;p&gt;&lt;a href=&#34;https://kate-editor.org/2007/07/18/kate-scripting-indentation/&#34; target=&#34;_self&#34;&gt;My last blog&lt;/a&gt; was about the theory of how indentation works by using javascripts. Now we will look at a concrete example: a LISP-style indenter. (LISP indentation is easy, that&amp;#8217;s why it&amp;#8217;s a good example).&lt;br /&gt;
The rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;comments starting with ;;; always have indentation 0&lt;/li&gt;
&lt;li&gt;comments starting with ;; should be aligned with the next line&lt;/li&gt;
&lt;li&gt;comments starting with ; should only appear behind code, so they are simply ignored&lt;/li&gt;
&lt;li&gt;every &amp;#8216;(&amp;#8216; indents and every &amp;#8216;)&amp;#8217; unindents&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;lisp.js looks like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style=&#34;font-family: courier new;&#34;&gt;/** kate-script&lt;br /&gt; * name: LISP&lt;br /&gt; * license: LGPL&lt;br /&gt; * author: foo bar&lt;br /&gt; * version: 1&lt;br /&gt; * kate-version: 3.0&lt;br /&gt; * type: indentation&lt;br /&gt; &lt;em&gt;/&lt;br /&gt; // indent should be called when ; is pressed&lt;br /&gt; triggerCharacters = &amp;#8220;;&amp;#8221;;&lt;br /&gt; function indent(line, indentWidth, ch)&lt;br /&gt; {&lt;br /&gt; // special rules: ;;; -&amp;gt; indent 0&lt;br /&gt; //                ;;  -&amp;gt; align with next line, if possible&lt;br /&gt; //                ;   -&amp;gt; usually on the same line as code -&amp;gt; ignore&lt;br /&gt; textLine = document.line(line);&lt;br /&gt; if (textLine.search(/^\s&lt;/em&gt;;;;/) != -1) {&lt;br /&gt; return 0;&lt;br /&gt; } else if (textLine.search(/^\s*;;/) != -1) {&lt;br /&gt; // try to align with the next line&lt;br /&gt; nextLine = document.nextNonEmptyLine(line + 1);&lt;br /&gt; if (nextLine != -1) {&lt;br /&gt; return document.firstVirtualColumn(nextLine);&lt;br /&gt; }&lt;br /&gt; }&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;
cursor = document.anchor(line, 0, &amp;#8216;(&amp;#8216;);&lt;br /&gt; if (cursor) {&lt;br /&gt; return document.toVirtualColumn(cursor.line, cursor.column) + indentWidth;&lt;br /&gt; } else {&lt;br /&gt; return 0;&lt;br /&gt; }&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;
&lt;/span&gt;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;
The result:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
&lt;span style=&#34;font-family: courier new;&#34;&gt;;;; fib : number -&gt; number&lt;br /&gt; (define (fib n)&lt;br /&gt; (if (&lt; n 2)&lt;br /&gt; 1&lt;br /&gt; (+ (fib (- n 1)) (fib (- n 2)))))&lt;/span&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
As this indenter is scripted, everybody can adapt the style to the own needs.
&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Kate Scripting: Indentation</title><link>https://kate-editor.org/2007/07/18/kate-scripting-indentation/</link><pubDate>Wed, 18 Jul 2007 11:17:00 +0000</pubDate><guid>https://kate-editor.org/2007/07/18/kate-scripting-indentation/</guid><description>&lt;p&gt;Kate Part in KDE4 supports the ECMAScript (JavaScript) language by using &lt;a href=&#34;http://api.kde.org/4.0-api/kdelibs-apidocs/kjs/html/classes.html&#34;&gt;kjs&lt;/a&gt;. In KDE3 we had several hard-coded indenters in C++, the idea is to let scripts do all the indentation in KDE4.&lt;br /&gt;
&lt;span style=&#34;font-weight: bold;&#34;&gt;How does it work?&lt;/span&gt; It is similar to vim: You simply create a script in the directory $KDEDIR/share/apps/katepart/jscript. An indentation script has to follow several rules:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;it must have a valid script header (the first line must include the string &lt;span style=&#34;font-weight: bold;&#34;&gt;kate-script&lt;/span&gt; and indentation scripts must have the &lt;span style=&#34;font-weight: bold;&#34;&gt;type: indentation&lt;/span&gt;)&lt;/li&gt;
&lt;li&gt;it must define some variables and functions&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Whenever the user types a character, the flow in Kate Part works like this&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;check the indentation script&amp;#8217;s &lt;span style=&#34;font-weight: bold;&#34;&gt;trigger characters&lt;/span&gt;, i.e. whether the script wants to indent code for the typed character&lt;/li&gt;
&lt;li&gt;if yes, call the indentation function&lt;/li&gt;
&lt;li&gt;the return value of the indentation function is an &lt;span style=&#34;font-weight: bold;&#34;&gt;integer value representing the new indentation depth&lt;/span&gt; in spaces.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In the 3rd step there are 2 special cases for the return value:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;return value = -1:&lt;/span&gt; Kate keeps the indentation, that is it searches for the last non-empty line and uses its indentation for the current line&lt;/li&gt;
&lt;li&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;return value &amp;lt; -1&lt;/span&gt; tells Kate to do nothing&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;So how does a script look like exactly?&lt;span style=&#34;font-weight: bold;&#34;&gt;&lt;br /&gt; &lt;/span&gt;&lt;/span&gt;The name does not really matter, so let&amp;#8217;s call it foobar.js:&lt;span style=&#34;font-weight: bold;&#34;&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;&lt;br /&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;/* kate-script
* name: MyLanguage Indenter
* license: LGPL
* author: Foo Bar
* version: 1
* kate-version: 3.0
* type: indentation
*
* optional bla bla here
*/
// specifies the characters which should trigger indent() beside the default &#39;\n&#39;
triggerCharacters = &#34;{}&#34;;
// called for the triggerCharacters {} and
function indent(line, indentWidth, typedChar)
{
// do calculations here
// if typedChar is an empty string, the user hit enter/return
// todo: Implement your indentation algorithms here.
return -1; // keep indentation
}&lt;/pre&gt;
&lt;p&gt;More details on the header:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;name [required]: the name will appear in Kate&amp;#8217;s menus&lt;/li&gt;
&lt;li&gt;license [optional]: not visible in gui, but should be specified in js-files. it is always better to have a defined license&lt;/li&gt;
&lt;li&gt;author [optional]: name&lt;/li&gt;
&lt;li&gt;version [optional]: recommended. an integer&lt;/li&gt;
&lt;li&gt;kate-version [required]: the minimum required kate-version (e.g. for api changes)&lt;/li&gt;
&lt;li&gt;type [required]: must be set to indentation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The only missing part is the API which Kate Part exports to access the document and the view. Right now, there is no API documentation, so you have to look at the code:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://websvn.kde.org/trunk/KDE/kdelibs/kate/jscript/katejscript.cpp?revision=683169&amp;amp;view=markup&#34;&gt;kdelibs/kate/jscript/katejscript.cpp&lt;/a&gt; search for &amp;#8220;&lt;span style=&#34;font-weight: bold;&#34;&gt;@Begin&lt;/span&gt;&amp;#8221; tags&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You will find, that the current document exports functions like&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;document.fileName()&lt;/li&gt;
&lt;li&gt;document.isModified()&lt;/li&gt;
&lt;li&gt;document.charAt(line, column)&lt;/li&gt;
&lt;li&gt;etc&amp;#8230;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The view exports functions like&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;view.cursorPosition()&lt;/li&gt;
&lt;li&gt;view.hasSelection()&lt;/li&gt;
&lt;li&gt;view.clearSelection()&lt;/li&gt;
&lt;li&gt;&amp;#8230;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&amp;#8217;s the boring part of this blog. The interesting one is unfortunately shorter: &lt;span style=&#34;font-weight: bold;&#34;&gt;we are looking for contributors&lt;/span&gt; who want to write scripts or help in the C++ implementation :)&lt;/p&gt;</description></item><item><title>API documentation &amp; refactored kdelibs/kdeui</title><link>https://kate-editor.org/2006/12/28/api-documentation-refactored-kdelibskdeui/</link><pubDate>Wed, 27 Dec 2006 23:05:00 +0000</pubDate><guid>https://kate-editor.org/2006/12/28/api-documentation-refactored-kdelibskdeui/</guid><description>&lt;p&gt;During the last weeks/days the directory structure of especially kdelibs/kdeui got a major overhaul: in KDE 3 all files of a module were in the same directory which was more or less a mess as you did not know immediately which files belonged to the same category. &lt;a href=&#34;http://websvn.kde.org/trunk/KDE/kdelibs/kdeui/&#34;&gt;kdelibs/kdeui in KDE4&lt;/a&gt; has a rather clean structure now (similar to the one in Qt) by using subfolders like&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;actions&lt;/li&gt;
&lt;li&gt;dialogs&lt;/li&gt;
&lt;li&gt;widgets&lt;/li&gt;
&lt;li&gt;xmlgui&lt;/li&gt;
&lt;li&gt;several others&amp;#8230;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Compare this to &lt;a href=&#34;http://websvn.kde.org/branches/KDE/3.5/kdelibs/kdeui&#34;&gt;KDE3&amp;#8217;s kdelibs/kdeui&lt;/a&gt; structure. For KDE4 this is a huge benefit, as we have clearly defined groups. We already had lots of discussions in the past about API documentation and this is exactly where the new structure is important: In Qt every class usually belongs to a group (&lt;a href=&#34;http://doc.trolltech.com/4.2/groups.html&#34;&gt;example&lt;/a&gt;). Our API documentation tool &lt;a href=&#34;http://www.stack.nl/%7Edimitri/doxygen/&#34;&gt;doxygen&lt;/a&gt; of course supports &lt;a href=&#34;http://www.stack.nl/%7Edimitri/doxygen/grouping.html&#34;&gt;grouping&lt;/a&gt;, and now it is even easy to know which class should be in which group. For instance, all classes in the widgets directory should be in the &amp;#8216;&lt;span style=&#34;font-style: italic;&#34;&gt;Widgets&lt;/span&gt;&amp;#8216; group, and then maybe even more fine-grained divided into sub-groups.&lt;br /&gt;
By the way, we have a policy that every widget in kdelibs has a screenshot to immediately see how it looks like &amp;#8211; another nice way to get involved :)&lt;br /&gt;
All in all this is really awesome and I&amp;#8217;d like to thank all involved developers. Next prey is &lt;a href=&#34;http://websvn.kde.org/trunk/KDE/kdelibs/kdecore/&#34;&gt;kdelibs/kdecore&lt;/a&gt;? =)&lt;/p&gt;</description></item><item><title>Share Kate Highlighting Files</title><link>https://kate-editor.org/2006/10/12/share-kate-highlighting-files/</link><pubDate>Thu, 12 Oct 2006 21:35:00 +0000</pubDate><guid>https://kate-editor.org/2006/10/12/share-kate-highlighting-files/</guid><description>&lt;p&gt;Thanks to Frank we have a &lt;a href=&#34;http://kde-files.org/&#34;&gt;dedicated section for Kate Highlighting files on kde-files.org&lt;/a&gt; now. We encourage everyone to publish their .xml files there. The Kate team agreed to add more highlighting files to the official Kate releases, though, as long as they are of general use. For KDE4 we plan to have a section for Kate Indentation scripts, too. But that&amp;#8217;s content for another blog, which will follow later :)&lt;/p&gt;</description></item><item><title>Kate: More eye-candy</title><link>https://kate-editor.org/2006/09/29/kate-more-eye-candy/</link><pubDate>Fri, 29 Sep 2006 17:34:00 +0000</pubDate><guid>https://kate-editor.org/2006/09/29/kate-more-eye-candy/</guid><description>&lt;p&gt;Two years ago we had the KDE conference in Ludwigsburg, Germany. At that time, Martijn Klingens committed a patch to &lt;a href=&#34;http://lists.kde.org/?l=kwrite-devel&amp;amp;m=109424792916463&amp;amp;w=2&#34;&gt;show trailing spaces&lt;/a&gt; in Kate. I just change the visualization a bit, the change is in for KDE4 :) Tabs are marked with a &amp;#8216;»&amp;#8217; character, and spaces with a dot. On the left you can see the old and on the right the new version; Here is a screenshot:&lt;br /&gt;
&lt;a onblur=&#34;try {parent.deselectBloggerImageGracefully();} catch(e) {}&#34; href=&#34;http://photos1.blogger.com/blogger/4106/1694/1600/tabsspaces.0.png&#34;&gt;&lt;img style=&#34;cursor: pointer;&#34; src=&#34;http://photos1.blogger.com/blogger/4106/1694/400/tabsspaces.0.png&#34; alt=&#34;&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>The Wheel of Time Turns…</title><link>https://kate-editor.org/2006/09/16/the-wheel-of-time-turns/</link><pubDate>Sat, 16 Sep 2006 05:53:00 +0000</pubDate><guid>https://kate-editor.org/2006/09/16/the-wheel-of-time-turns/</guid><description>&lt;p&gt;&amp;#8230;and this time it turns out that I &lt;span style=&#34;font-style: italic;&#34;&gt;am&lt;/span&gt; going to akademy. Dublin I&amp;#8217;m coming, wheee! :)&lt;/p&gt;</description></item><item><title>Smart End</title><link>https://kate-editor.org/2006/08/09/smart-end/</link><pubDate>Wed, 09 Aug 2006 10:33:00 +0000</pubDate><guid>https://kate-editor.org/2006/08/09/smart-end/</guid><description>&lt;p&gt;Since KDE 3.5.4 Kate Part supports &amp;#8220;&lt;a href=&#34;http://bugs.kde.org/show_bug.cgi?id=78258&#34;&gt;smart end&lt;/a&gt;&amp;#8220;. Right now it behaves like this when pressing &amp;#8220;end&amp;#8221;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;go to last non-space character&lt;/li&gt;
&lt;li&gt;go to the last character (i.e. hit end twice)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I&amp;#8217;m writing this blog to get feedback about what&amp;#8217;s the right/expected behaviour. Is it as described above, or should we first go to the very last character, and to the last non-space only when hitting then end-key twice?&lt;/p&gt;
&lt;p&gt;Feedback along with why you prefer solution A or B is welcome!&lt;/p&gt;</description></item><item><title>Kate in KDE 3.5.4</title><link>https://kate-editor.org/2006/08/02/kate-in-kde-3-5-4/</link><pubDate>Wed, 02 Aug 2006 18:51:00 +0000</pubDate><guid>https://kate-editor.org/2006/08/02/kate-in-kde-3-5-4/</guid><description>&lt;p&gt;Finally, &lt;a href=&#34;http://www.kde.org/announcements/announce-3.5.4.php&#34;&gt;KDE 3.5.4 is out&lt;/a&gt;! We were able to &lt;a href=&#34;http://bugs.kde.org/buglist.cgi?&amp;amp;product=kate&amp;amp;resolution=FIXED&amp;amp;resolution=WORKSFORME&amp;amp;chfield=resolution&amp;amp;chfieldfrom=2006-05-25&amp;amp;chfieldto=2006-07-24&#34;&gt;fix a lot of issues in Kate&lt;/a&gt; and the &lt;a href=&#34;http://bugs.kde.org/reports.cgi?product=kate&amp;amp;output=show_chart&amp;amp;datasets=NEW%3A&amp;amp;datasets=ASSIGNED%3A&amp;amp;datasets=REOPENED%3A&amp;amp;datasets=UNCONFIRMED%3A&amp;amp;links=1&amp;amp;banner=1&amp;amp;quip=0&#34;&gt;bug curves went noticeably down&lt;/a&gt;. Thanks to all contributors for the nice KDE release :)&lt;/p&gt;</description></item><item><title>Kate: Shortcomings of .kateconfig file</title><link>https://kate-editor.org/2006/07/23/kate-shortcomings-of-kateconfig-file/</link><pubDate>Sun, 23 Jul 2006 19:02:00 +0000</pubDate><guid>https://kate-editor.org/2006/07/23/kate-shortcomings-of-kateconfig-file/</guid><description>&lt;p&gt;Assume you have a .kateconfig file optimized for C++ code that replaces tabs on save. Now you open a Makefile that contains tabs (due to its strict syntax). If you save the Makefile in kate, the tabs then are replaced which results in a corrupted Makefile.&lt;/p&gt;
&lt;p&gt;In other words: The .kateconfig file applies to &lt;span style=&#34;font-style: italic;&#34;&gt;every&lt;/span&gt; file. &lt;span style=&#34;font-weight: bold;&#34;&gt;It lacks mimetype/extension support and thus can lead to unwanted behaviours.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;So &lt;span style=&#34;font-style: italic;&#34;&gt;if&lt;/span&gt; you use a .kateconfig file, &lt;span style=&#34;font-style: italic;&#34;&gt;keep&lt;/span&gt; that in mind :) Maybe we should simply use modelines in the h/cpp files for now.&lt;/p&gt;</description></item><item><title>Indentation and Coding Style</title><link>https://kate-editor.org/2006/07/23/indentation-and-coding-style/</link><pubDate>Sun, 23 Jul 2006 08:56:00 +0000</pubDate><guid>https://kate-editor.org/2006/07/23/indentation-and-coding-style/</guid><description>&lt;p&gt;&lt;a href=&#34;http://lists.kde.org/?l=kde-core-devel&amp;amp;m=115340952719876&amp;amp;w=2&#34;&gt;kdelibs will have coding style conventions&lt;/a&gt;. In general. this is not a bad idea. Our 45528 slocs in KatePart all use a &lt;span style=&#34;font-style: italic;&#34;&gt;consistent&lt;/span&gt; indent-width of 2 spaces. Changing this does not really make sense &amp;#8211; ok, if svn praise -w (sure, we never need svn blame in our code ;) finally works, we can discuss this again.&lt;/p&gt;
&lt;p&gt;In other words: How &amp;#8220;consistent&amp;#8221; will kdelibs get with this new conventions? The interesting part of Zack&amp;#8217;s mail is&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[&amp;#8230;]&lt;br /&gt;
No exceptions. Either everything or nothing&lt;br /&gt;
[&amp;#8230;]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;While everything would really be cool, in truth it&amp;#8217;s not possible to achieve, is it? We will have exceptions or rather violations, I&amp;#8217;m pretty sure :)&lt;/p&gt;
&lt;p&gt;Some developers already start adding &lt;a href=&#34;https://kate-editor.org/?p=236&#34; target=&#34;_self&#34;&gt;katepart modelines&lt;/a&gt; to their souce code. For those who don&amp;#8217;t know yet: You also can simply use a single &lt;a href=&#34;https://kate-editor.org/?p=244&#34; target=&#34;_self&#34;&gt;.kateconfig file&lt;/a&gt;, which is the equivalent to emacs dir config files. You just have to make sure to set the search depth for a .kateconfig file to &amp;#8211; let&amp;#8217;s say &amp;#8211; 3. Do this in&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Settings &amp;gt; Configure Kate&amp;#8230; &amp;gt; Open/Save&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Kate Project Plugin</title><link>https://kate-editor.org/2006/07/20/kate-project-plugin/</link><pubDate>Thu, 20 Jul 2006 08:24:00 +0000</pubDate><guid>https://kate-editor.org/2006/07/20/kate-project-plugin/</guid><description>&lt;p&gt;&lt;a onblur=&#34;try {parent.deselectBloggerImageGracefully();} catch(e) {}&#34; href=&#34;http://photos1.blogger.com/blogger/4106/1694/1600/kateprojectmanager.png&#34;&gt;&lt;img style=&#34;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;&#34; src=&#34;http://photos1.blogger.com/blogger/4106/1694/320/kateprojectmanager.png&#34; alt=&#34;&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;It is not a secret that removing Kate&amp;#8217;s project manager in KDE 3.5 was not the right thing to do. It seems a lot of people used it and we got &lt;a href=&#34;http://bugs.kde.org/show_bug.cgi?id=116946&#34;&gt;many complaints&lt;/a&gt; about this decision. That also shows that it is hard go get feedback about what users are really using. If a feature is done well, noone will ever talk about it. This is paradox, as we thought the project manager was not well integrated :) (I still think that)&lt;/p&gt;
&lt;p&gt;Ok, let&amp;#8217;s come to the interesting part: Three developers wrote a new &lt;a href=&#34;http://sourceforge.net/projects/kate-prj-mng/&#34;&gt;&lt;span style=&#34;font-style: italic;&#34;&gt;Kate Project Manager Plugin&lt;/span&gt;&lt;/a&gt; and published an initial release on sourceforge.net and on &lt;a href=&#34;http://www.kde-apps.org/content/show.php?content=42653&#34;&gt;kde-apps.org&lt;/a&gt;. It works quite well already and reading the comments on kde-apps.org gives me the impression that there are more features to come with the next release. &amp;#8212; If you are interested maybe you want to join the project&amp;#8230;&lt;/p&gt;
&lt;p&gt;PS: I have the secret hope the plugin will be ported to KDE4 using Qt&amp;#8217;s model/view architecture, so that it has good support for multiple mainwindows :)&lt;/p&gt;</description></item><item><title>Triple clicks</title><link>https://kate-editor.org/2006/06/30/triple-clicks/</link><pubDate>Fri, 30 Jun 2006 10:13:00 +0000</pubDate><guid>https://kate-editor.org/2006/06/30/triple-clicks/</guid><description>&lt;p&gt;Text editors and line edits support the so-called triple clicks according to &lt;a href=&#34;http://developer.kde.org/documentation/standards/kde/style/mouse/selection.html&#34;&gt;&lt;a href=&#34;http://developer.kde.org/documentation/standards/kde/style/mouse/selection.html&#34;&gt;1&lt;/a&gt;&lt;/a&gt;. The document says&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Triple Click: Select the targeted row. [&amp;#8230;]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is unclear whether the &amp;#8220;targeted row&amp;#8221; includes the trailing linebreak. Kate Part selects the targeted line including the linebreak. You get the following behavior:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you move the selected row with the mouse, you usually have the linebreaks right. The same applies for copy/cut &amp;amp; paste. If you are used to it, it really is a nice feature.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While this behavior is pretty straightforward, it is not widely in use. If you look at text edit widgets like in firefox, konqueror, Qt, KWord or OOo you will notice that they do not include the trailing newline character.&lt;/p&gt;
&lt;p&gt;Question now is: Should we change it for KDE 4 in Kate Part just to be compliant with the others? As Kate Part is an editor component mainly used for programming, my favourite option is to include it, i.e. to keep the current behavior.&lt;/p&gt;
&lt;p&gt;(update) I just stumbled over &lt;a href=&#34;http://bugs.kde.org/show_bug.cgi?id=91041&#34;&gt;http://bugs.kde.org/show_bug.cgi?id=91041&lt;/a&gt; =)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://developer.kde.org/documentation/standards/kde/style/mouse/selection.html&#34;&gt;1&lt;/a&gt; &lt;a href=&#34;http://developer.kde.org/documentation/standards/kde/style/mouse/selection.html&#34;&gt;http://developer.kde.org/documentation/standards/kde/style/mouse/selection.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kate Part in upcoming KDE 3.5.4</title><link>https://kate-editor.org/2006/06/28/kate-part-in-upcoming-kde-3-5-4/</link><pubDate>Wed, 28 Jun 2006 19:03:00 +0000</pubDate><guid>https://kate-editor.org/2006/06/28/kate-part-in-upcoming-kde-3-5-4/</guid><description>&lt;p&gt;The last week was highly productive for Kate Part, as the following bugs were fixed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://bugs.kde.org/show_bug.cgi?id=89042&#34;&gt;89042&lt;/a&gt; while pressing &amp;#8220;del&amp;#8221; key kate crashes (crash, bt)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://bugs.kde.org/show_bug.cgi?id=103648&#34;&gt;103648&lt;/a&gt; Codefolding Crash &amp;#8211; Reproducable&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://bugs.kde.org/show_bug.cgi?id=118584&#34;&gt;118584&lt;/a&gt; scroll position not upgrading (dynamic word wrap)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://bugs.kde.org/show_bug.cgi?id=119435&#34;&gt;119435&lt;/a&gt; kate crash when a file is saved&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://bugs.kde.org/show_bug.cgi?id=123315&#34;&gt;123315&lt;/a&gt; kwrite/kate crashes randomly after save&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://bugs.kde.org/show_bug.cgi?id=124102&#34;&gt;124102&lt;/a&gt; changing syntax highlighting when code is folded crashes katepart&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://bugs.kde.org/show_bug.cgi?id=127928&#34;&gt;127928&lt;/a&gt; kate crashes deleting a block of text&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://bugs.kde.org/show_bug.cgi?id=128690&#34;&gt;128690&lt;/a&gt; Dynamic word wrap makes text input slow&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://bugs.kde.org/show_bug.cgi?id=129853&#34;&gt;129853&lt;/a&gt; Horizontal scrollbar and view not synced, if dynamic and static word wrap are off&lt;/li&gt;
&lt;li&gt;and some minor issues&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That are 6 crash fixes. Kate Part in KDE 3.5.4 will be more stable than ever :) That&amp;#8217;s especially cool for KDevelop, Quanta+, Kile &amp;#8211; well and Kate.&lt;br /&gt;
Special thanks to Andreas Kling for initiating the bug squashing sessions! You are like a blackbox: The input is a bug and your output is the fix ;)&lt;/p&gt;</description></item><item><title>Kate Modes &amp; Filetypes</title><link>https://kate-editor.org/2006/02/09/kate-modes-filetypes/</link><pubDate>Thu, 09 Feb 2006 15:57:45 +0000</pubDate><guid>https://kate-editor.org/2006/02/09/kate-modes-filetypes/</guid><description>
&lt;p&gt;Modes allow the user to override the default configuration for documents of specified mimetypes or file extensions. When the editor loads a document and the mimetype or file extensions match for one of the defined filetypes, KatePart will read the configuration from the mode and apply the modelines defined. If more filetypes match, the one with the highest priority will be used.&lt;/p&gt;
&lt;p&gt;To create a filetype, go into the settings dialog available in Kate via &lt;em&gt;Settings &amp;gt; Configure Kate &amp;gt; Open/Save &amp;gt; Modes/Filetypes&lt;/em&gt;, then press the &lt;em&gt;New&lt;/em&gt; button and fill in the properties. To remove an existing filetype, select it from the dropdown list and press the &lt;em&gt;Delete&lt;/em&gt; button. To edit an existing mode, select it from the dropdown list.&lt;/p&gt;
&lt;h3 id=&#34;some-available-properties&#34;&gt;Some Available Properties&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;br /&gt;
This is a user friendly name that will be displayed in the menu &lt;em&gt;Tools &amp;gt; Mode&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Section&lt;/strong&gt;&lt;br /&gt;
A submenu of &lt;em&gt;Tools &amp;gt; Mode&lt;/em&gt; in which to place this filetype. If the section does not already exist, it will automatically be created.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Variables&lt;/strong&gt;&lt;br /&gt;
This is where the actual configuration goes. Variables set here will overwrite the default configuration values. Be aware that this line must begin with &lt;strong&gt;kate:&lt;/strong&gt; and end with a semicolon. For a full list of available variables refer to &lt;a title=&#34;Kate Modelines&#34; href=&#34;https://kate-editor.org/2006/02/09/kate-modelines/&#34; target=&#34;_self&#34;&gt;modelines&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;File Extensions&lt;/strong&gt;&lt;br /&gt;
A semicolon separated list of filename globs used to determine if a document matches this filetype.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mimetypes&lt;/strong&gt;&lt;br /&gt;
A semicolon separated list of mime types used to determine if a document matches this filetype.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Priority&lt;/strong&gt;&lt;br /&gt;
If a document matches several filetypes, the one with the highest priority will be chosen.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;example&#34;&gt;Example&lt;/h3&gt;
&lt;p&gt;As an example we will create a new mode configuration for C++ and Java files. It should use the C Style indenter and indent with 4 spaces (no tabs). The configuration could look like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;Name: C++ and Java settings
Section: Sources
Variables: kate: space-indent on; indent-width 4; mixed-indent off; indent-mode cstyle;
File Extensions: *.cpp;*.java
Mimetypes: text/x-c++hdr;text/x-c++src;text/x-java
Priority: 10&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>.kateconfig Files</title><link>https://kate-editor.org/2006/02/09/kateconfig-files/</link><pubDate>Thu, 09 Feb 2006 12:45:52 +0000</pubDate><guid>https://kate-editor.org/2006/02/09/kateconfig-files/</guid><description>
&lt;p&gt;Kate allows you to specify local &lt;em&gt;document variables&lt;/em&gt; by setting the corresponding &lt;a href=&#34;https://kate-editor.org/?p=236&#34;&gt;modelines&lt;/a&gt;. The hidden file &lt;strong&gt;.kateconfig&lt;/strong&gt; provides exactly the same functionality, but for all files in the directory.&lt;/p&gt;
&lt;h3 id=&#34;enable-the-feature&#34;&gt;Enable the Feature&lt;/h3&gt;
&lt;p&gt;To use a &lt;em&gt;.kateconfig&lt;/em&gt; file you first have to enable the feature by invoking &lt;strong&gt;Settings &amp;gt; Configure Kate&lt;/strong&gt;. In the config page &lt;strong&gt;Open/Save&lt;/strong&gt; you can find the option &lt;em&gt;Search depth for config file&lt;/em&gt;, which defaults to &lt;em&gt;Do not use a config file&lt;/em&gt;. Change the value to an appropriate number,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;__ means &lt;em&gt;look in the current folder&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;1&lt;/em&gt; means &lt;em&gt;look in the current folder, and if there is no .kateconfig file, look in the parent folder&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;etc…&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In short &amp;#8211; Kate will search the number of given folder levels upwards for a &lt;em&gt;.kateconfig&lt;/em&gt; file and load the settings from it.&lt;/p&gt;
&lt;h3 id=&#34;fill-the-kateconfig-file&#34;&gt;Fill the .kateconfig File&lt;/h3&gt;
&lt;p&gt;The &lt;em&gt;.kateconfig&lt;/em&gt; file simply contains &lt;a href=&#34;https://kate-editor.org/?p=236&#34;&gt;modelines&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The following example will cause all documents to indent with 4 spaces with a tab width of 4. Tabs will be replaced during editing text and the end-of-line symbol is a linefeed (\n).&lt;/p&gt;
&lt;pre&gt;kate: space-indent on; tab-width 4; indent-width 4; replace-tabs on; eol unix;&lt;/pre&gt;
&lt;h3 id=&#34;extended-options-in-kde-3-5-x-kde-4-and-kate-5&#34;&gt;Extended Options in KDE 3.5.x, KDE 4 and Kate 5&lt;/h3&gt;
&lt;p&gt;Kate in KDE 4 as well as later versions of Kate always search for a .kateconfig file for local files (not remote files). In addition, it is now possible to set options based on wildcards (file extensions) as follows:&lt;/p&gt;
&lt;pre&gt;kate: tab-width 4; indent-width 4; replace-tabs on;
kate-wildcard(*.xml): indent-width 2;
kate-wildcard(Makefile): replace-tabs off;&lt;/pre&gt;
&lt;p&gt;In this example, all files use a tab-width of 4 spaces, an indent-width of 4 spaces, and tabs are replaced expanded to spaces. However, for all *.xml files, the indent width is set to 2 spaces. And Makefiles use tabs, i.e. tabs are not replaced with spaces. Wildcards are semicolon separated, i.e. you can also specify multiple file extensions as follows:&lt;/p&gt;
&lt;pre&gt;kate-wildcard(*.json;*.xml): indent-width 2;&lt;/pre&gt;
&lt;p&gt;Further, you can also use the mimetype to match certain files, e.g. to indent all C++ source files with 4 spaces, you can write :&lt;/p&gt;
&lt;pre&gt;kate-mimetype(text/x-c++src): indent-width 4;&lt;/pre&gt;
&lt;p&gt;Note: Next to the support in .kateconfig files, wildcard and mimetype dependent document variables are also supported in the files itself as comments.&lt;/p&gt;</description></item><item><title>Kate Modelines</title><link>https://kate-editor.org/2006/02/09/kate-modelines/</link><pubDate>Thu, 09 Feb 2006 12:41:07 +0000</pubDate><guid>https://kate-editor.org/2006/02/09/kate-modelines/</guid><description>
&lt;p&gt;Kate Part’s modelines &amp;#8211; also called &lt;strong&gt;Kate document variables&lt;/strong&gt; &amp;#8211; are Kate Part’s implementation of document variables, similar to &lt;a title=&#34;Emacs Modelines&#34; href=&#34;http://www.emacswiki.org/cgi-bin/wiki/FileLocalVariables&#34; target=&#34;_blank&#34;&gt;Emacs&lt;/a&gt; and &lt;a title=&#34;Vim Modelines&#34; href=&#34;http://vimdoc.sourceforge.net/htmldoc/options.html#%27modelines%27&#34; target=&#34;_blank&#34;&gt;vim&lt;/a&gt; modelines.&lt;/p&gt;
&lt;p&gt;Document variables can be used to set Kate settings local to a file. This is for example for using another indenter than the one defined in the GUI settings. Or assume you work on two projects, the first indents with spaces and the second with tabs, then you can simply add a &lt;em&gt;modeline&lt;/em&gt; that contains the specific document variables that set the specific indentation properties.&lt;/p&gt;
&lt;p&gt;The following contents is mainly from the &lt;a title=&#34;Kate Handbook&#34; href=&#34;http://docs.kde.org/stable/en/applications/kate/config-variables.html&#34; target=&#34;_blank&#34;&gt;&lt;em&gt;Kate Handbook&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;modeline-format&#34;&gt;Modeline Format&lt;/h2&gt;
&lt;p&gt;A modeline in the Kate Part has the following format:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;kate: VARIABLENAME VALUE; [ VARIABLENAME VALUE; ... ] &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The lines can be in a comment, in &lt;em&gt;C++&lt;/em&gt; for example in &lt;code&gt;/*...*/&lt;/code&gt; sections. Multiple modelines are supported, i.e. modelines can be split over several lines for better visibility. &lt;em&gt;Variable&lt;/em&gt; names are single words (no whitespace), and anything up to the next semicolon is the &lt;em&gt;value&lt;/em&gt;. The trailing semicolon (&lt;strong&gt;;&lt;/strong&gt;) is &lt;em&gt;required&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Here is an example of how a modeline could look like, forcing indentation settings for a C++, Java or JavaScript file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;// kate: space-indent on; indent-width 4; mixedindent off; indent-mode cstyle; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;NOTE: Only &lt;strong&gt;the first and last 10 lines&lt;/strong&gt; in a file are searched for modelines.&lt;/p&gt;
&lt;p&gt;There are variables to support almost all options in Kate Part, and additionally plugins can use variables, in which case it should be documented in the plugin’s documentation.&lt;/p&gt;
&lt;h2 id=&#34;how-kate-part-uses-variables&#34;&gt;How Kate Part uses Variables&lt;/h2&gt;
&lt;p&gt;When reading settings, Kate Part looks in the following places in the order&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;the global configuration, i.e. settings made in the user interface&lt;/li&gt;
&lt;li&gt;the &lt;a title=&#34;Modes and Filetypes&#34; href=&#34;https://kate-editor.org/2006/02/09/kate-modes-filetypes/&#34; target=&#34;_self&#34;&gt;Modes &amp;amp; Filetypes&lt;/a&gt; configuration&lt;/li&gt;
&lt;li&gt;the &lt;a title=&#34;.kateconfig Files&#34; href=&#34;https://kate-editor.org/2006/02/09/kateconfig-files/&#34; target=&#34;_self&#34;&gt;.kateconfig file&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;the modelines in the document itself&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This means Kate Part’s modelines have actually the highest precedence. Whenever a document is saved, the &lt;em&gt;document variables&lt;/em&gt; are reread, and will overwrite changes made using menu items or the &lt;a title=&#34;The Command Line in the Kate Handbook&#34; href=&#34;http://docs.kde.org/stable/en/kdesdk/kate/advanced-editing-tools-commandline.html&#34; target=&#34;_blank&#34;&gt;command line&lt;/a&gt;.&lt;br /&gt;
Any variable not listed below is stored in the document and can be queried by other objects such as plugins, which can use them for their own purpose.&lt;/p&gt;
&lt;h2 id=&#34;available-modelines&#34;&gt;Available Modelines&lt;/h2&gt;
&lt;p&gt;The variables listed here documents Kate version 2.4. More variables may be added in the future. There are defied 3 types of values for variables, with the following valid expressions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;BOOL&lt;/strong&gt; &amp;#8211; on|off|true|false|1|0&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;INTEGER&lt;/strong&gt; &amp;#8211; any integer number&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;STRING&lt;/strong&gt; &amp;#8211; anything else&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Available modelines are, in detail:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;auto-brackets&lt;/strong&gt; [BOOL]&lt;br /&gt;
Set auto insertion of brackets on or off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;auto-center-lines&lt;/strong&gt; [INT]&lt;br /&gt;
Set the number of autocenter lines.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;auto-insert-doxygen&lt;/strong&gt; [BOOL]&lt;br /&gt;
Turn insertion of the leading asterisk in doxygen comments on or off. This has no effect unless you use the cstyle auto-indenter.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;background-color&lt;/strong&gt; [STRING]&lt;br /&gt;
Sets the document background color. The value must be something that can be evaluated to a valid color, for example &lt;em&gt;#ff0000&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;backspace-indents&lt;/strong&gt; [BOOL]Turn backspace indenting on or off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;block-selection&lt;/strong&gt; [BOOL]&lt;br /&gt;
Turn block selection on or off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bom&lt;/strong&gt; | &lt;strong&gt;byte-order-marker&lt;/strong&gt; [BOOL] (new in Kate 3.4/KDE 4.4)&lt;br /&gt;
Enable/disable the &lt;a title=&#34;Byte Order Mark on Wikipedia&#34; href=&#34;http://en.wikipedia.org/wiki/Byte-order_mark&#34; target=&#34;_blank&#34;&gt;byte order marker&lt;/a&gt; when saving files in unicode format (utf-8/utf-16/utf-32).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bracket-highlight-color&lt;/strong&gt; [STRING]&lt;br /&gt;
Sets the color for the bracket highlight. The value must be something that can be evaluated to a valid color, for example &lt;em&gt;#ff0000&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;current-line-color&lt;/strong&gt; [STRING]&lt;br /&gt;
Sets the color for the current line. The value must be something that can be evaluated to a valid color, for example &lt;em&gt;#ff0000&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;default-dictionary&lt;/strong&gt; [STRING] (new in Kate 3.4/KDE 4.4)Sets the default dictionary used for spell checking.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dynamic-word-wrap&lt;/strong&gt; [BOOL]&lt;br /&gt;
Turns dynamic word wrap on or off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;eol&lt;/strong&gt; | &lt;strong&gt;end-of-line&lt;/strong&gt; [STRING]&lt;br /&gt;
Sets the end of line mode. Valid settings are &lt;em&gt;unix&lt;/em&gt;, &lt;em&gt;mac&lt;/em&gt; and &lt;em&gt;dos&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;folding-markers&lt;/strong&gt; [BOOL]&lt;br /&gt;
Set the display of folding markers on or off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;font-size&lt;/strong&gt; [INT]Sets the point size of the document font.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;font&lt;/strong&gt; [STRING]&lt;br /&gt;
Sets the font of the document. The value should be a valid font name, for example &lt;em&gt;courier&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;hl&lt;/strong&gt; | &lt;strong&gt;syntax&lt;/strong&gt; [STRING]Set the syntax highlighting. Valid strings are all the names you can find in the menus. For instance, for C++ you write &lt;em&gt;C++&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;icon-bar-color&lt;/strong&gt; [STRING]&lt;br /&gt;
Sets the icon bar color. The value must be something that can be evaluated to a valid color, for example &lt;em&gt;#ff0000&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;icon-border&lt;/strong&gt; [BOOL]&lt;br /&gt;
Set the display of the icon border on or off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;indent-mode&lt;/strong&gt; [STRING]&lt;br /&gt;
Set the auto-indentation mode. The options &lt;em&gt;none&lt;/em&gt;, &lt;em&gt;normal&lt;/em&gt;, &lt;em&gt;cstyle&lt;/em&gt;, &lt;em&gt;haskell&lt;/em&gt;, &lt;em&gt;python&lt;/em&gt;, &lt;em&gt;lilypond&lt;/em&gt;, &lt;em&gt;lisp&lt;/em&gt; are recognized. See the section Using Automatic Indenting for details.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;indent-width&lt;/strong&gt; [INT]&lt;br /&gt;
Sets the indentation width.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;keep-extra-spaces&lt;/strong&gt; [BOOL]&lt;br /&gt;
Set weather to keep extra spaces when calculating indentation width.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;keep-indent-profile&lt;/strong&gt; [BOOL] (Removed in Kate 3, i.e. since KDE4)&lt;br /&gt;
If enabled, prevents unindenting a block if at least one line has no indentation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;line-numbers&lt;/strong&gt; [BOOL]&lt;br /&gt;
Set the display of line numbers on or off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mixed-indent&lt;/strong&gt; [BOOL]&lt;br /&gt;
Set mixed indentation ala Emacs on or off.&lt;br /&gt;
&lt;strong&gt;DEPRECATED for Kate 3.0&lt;/strong&gt; From version 3.0 this variable is ignored, set &lt;code&gt;replace-tabs on;&lt;/code&gt; instead for that version.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;overwrite-mode&lt;/strong&gt; [BOOL]&lt;br /&gt;
Set overwrite mode on or off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;persistent-selection&lt;/strong&gt; [BOOL]&lt;br /&gt;
Set persistent selection on or off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;remove-trailing-space&lt;/strong&gt; [BOOL]&lt;br /&gt;
Set dynamic end of line cleanup on or off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;replace-tabs-save&lt;/strong&gt; [BOOL]&lt;br /&gt;
Set tab-&amp;gt;space conversion on save on or off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;replace-tabs&lt;/strong&gt; [BOOL]&lt;br /&gt;
Set dynamic tab-&amp;gt;space conversion on or off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;replace-trailing-space-save&lt;/strong&gt; [BOOL]&lt;br /&gt;
Set end of line cleanup on save on or off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;scheme&lt;/strong&gt; [STRING]&lt;br /&gt;
Set the color scheme. The string must be the name of a color scheme that exists in your configuration to have any effect.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;selection-color&lt;/strong&gt; [STRING]&lt;br /&gt;
Set the selection color. The value must be something that can be evaluated to a valid color, for example &lt;em&gt;#ff0000&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;show-tabs&lt;/strong&gt; [BOOL]Set the visual TAB character on or off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;smart-home&lt;/strong&gt; [BOOL]&lt;br /&gt;
Set smart home navigation on or off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;space-indent&lt;/strong&gt; [BOOL]&lt;br /&gt;
Set indentation with spaces on or off.&lt;br /&gt;
&lt;strong&gt;DEPRECATED for Kate 3.0&lt;/strong&gt; — From Kate 3.0 mixed-indent is the default behavior, set &lt;code&gt;replace-tabs on;&lt;/code&gt; to achieve space-only indentation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tab-indents&lt;/strong&gt; [BOOL]&lt;br /&gt;
Set the TAB key indentation on or off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tab-width&lt;/strong&gt; [INT]&lt;br /&gt;
Set the tab display width.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;undo-steps&lt;/strong&gt; [INT]&lt;br /&gt;
Set the number of undo steps to remember.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;word-wrap-column&lt;/strong&gt; [INT]&lt;br /&gt;
Set the hard word wrap width.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;word-wrap-marker-color&lt;/strong&gt; [STRING]&lt;br /&gt;
Set the work wrap marker color. The value must be something that can be evaluated to a valid color, for example &lt;code&gt;#ff0000&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;word-wrap&lt;/strong&gt; [BOOL]&lt;br /&gt;
Set hard word wrapping on or off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;wrap-cursor&lt;/strong&gt; [BOOL]&lt;br /&gt;
Set cursor wrapping on or off.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Writing a Syntax Highlighting File</title><link>https://kate-editor.org/2005/03/24/writing-a-syntax-highlighting-file/</link><pubDate>Thu, 24 Mar 2005 15:46:11 +0000</pubDate><guid>https://kate-editor.org/2005/03/24/writing-a-syntax-highlighting-file/</guid><description>
&lt;p&gt;&lt;strong&gt;Note: &lt;span style=&#34;color: #ff0000;&#34;&gt;&lt;a title=&#34;Writing a Kate Syntax Highlighting File&#34; href=&#34;https://docs.kde.org/stable5/en/applications/katepart/highlight.html&#34; target=&#34;_blank&#34;&gt;&lt;span style=&#34;color: #ff0000;&#34;&gt;Please refer to the Kate Handbook for the most recent version of how to write syntax highlighting files&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hint&lt;/strong&gt;: If you want to write a syntax highlighting file, the &lt;a href=&#34;https://kate-editor.org/2013/10/26/kate-xml-completion-converting-dtd-to-metadtd/&#34; title=&#34;Kate XML Completion Plugin&#34;&gt;XML Completion plugin&lt;/a&gt; might be of great help.&lt;/p&gt;
&lt;p&gt;This section is an overview of the Highlight Definition XML format in KDE4. Based on a small example it will describe the main components and their meaning and usage. The next section will go into detail with the highlight detection rules.&lt;/p&gt;
&lt;h2 id=&#34;main-sections-of-kate-highlight-definition-files&#34;&gt;Main sections of Kate Highlight Definition files&lt;/h2&gt;
&lt;p&gt;The formal definition, aka the DTD is stored in the file &lt;code&gt;language.dtd&lt;/code&gt; which should be installed on your system in the folder &lt;code&gt;$KDEDIR/share/apps/katepart/syntax&lt;/code&gt;. If &lt;code&gt;$KDEDIR&lt;/code&gt; is unset look up the folder by using &lt;code&gt;kde4-config --prefix&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;an-example&#34;&gt;An Example&lt;/h3&gt;
&lt;p&gt;A highlighting file contains a header that sets the XML version and the doctype:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34;?&amp;gt; &amp;lt;!DOCTYPE language SYSTEM &amp;#34;language.dtd&amp;#34;&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The root of the definition file is the element &lt;strong&gt;language&lt;/strong&gt;. Available attributes are:&lt;/p&gt;
&lt;p&gt;Required attributes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;name&lt;/strong&gt; sets the name of the language. It appears in the menus and dialogs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;section&lt;/strong&gt; specifies the category.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;extensions&lt;/strong&gt; defines file extensions, like &amp;#8220;&lt;em&gt;.cpp;&lt;/em&gt;.h&amp;#8221;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Optional attributes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;mimetype&lt;/strong&gt; associates files Mime Type based.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;version&lt;/strong&gt; specifies the current version of the definition file.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;kateversion&lt;/strong&gt; specifies the latest supported version of Kate.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;casesensitive&lt;/strong&gt; defines, whether the keywords are case sensitive or not. NOTE: not implemented yet.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;priority&lt;/strong&gt; is necessary if another highlight definition file uses the same extensions. The higher priority will win.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;author&lt;/strong&gt; contains the name of the author and his email-address.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;license&lt;/strong&gt; contains the license, usually LGPL, Artistic, GPL and others. It’s important to specify a license, as the kate team needs some legal backing for the distribution of the files.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;hidden&lt;/strong&gt; defines, whether the name should appear in Kate’s menus.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the next line may look like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;language name=&amp;#34;C++&amp;#34; version=&amp;#34;1.00&amp;#34; kateversion=&amp;#34;2.4&amp;#34; section=&amp;#34;Sources&amp;#34; extensions=&amp;#34;*.cpp;*.h&amp;#34; &amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Next comes the &lt;strong&gt;highlighting&lt;/strong&gt; element, which contains the optional element &lt;strong&gt;list&lt;/strong&gt; and the required elements &lt;strong&gt;contexts&lt;/strong&gt; and &lt;strong&gt;itemDatas&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;list&lt;/strong&gt; elements contain a list of keywords. In this case the keywords are &lt;em&gt;class&lt;/em&gt; and &lt;em&gt;const&lt;/em&gt;. You can add as many lists as you need. The &lt;strong&gt;contexts&lt;/strong&gt; element contains all contexts. The first context is by default the start of the highlighting. There are two rules in the context &lt;em&gt;Normal Text&lt;/em&gt;, which match the list of keywords with the name &lt;em&gt;somename&lt;/em&gt; and a rule that detects a quote and switches the context to &lt;em&gt;string&lt;/em&gt;. To learn more about rules read the next chapter.&lt;br /&gt;
The third part is the &lt;strong&gt;itemDatas&lt;/strong&gt; element. It contains all color and font styles needed by the contexts and rules.&lt;br /&gt;
In this example, the &lt;strong&gt;itemData&lt;/strong&gt; &lt;em&gt;Normal Text&lt;/em&gt;, &lt;em&gt;String&lt;/em&gt; and &lt;em&gt;Keyword&lt;/em&gt; are used.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt; &amp;lt;highlighting&amp;gt; &amp;lt;list name=&amp;#34;somename&amp;#34;&amp;gt; &amp;lt;item&amp;gt; class &amp;lt;/item&amp;gt; &amp;lt;item&amp;gt; const &amp;lt;/item&amp;gt; &amp;lt;/list&amp;gt; &amp;lt;contexts&amp;gt; &amp;lt;context attribute=&amp;#34;Normal Text&amp;#34; lineEndContext=&amp;#34;#pop&amp;#34; name=&amp;#34;Normal Text&amp;#34; &amp;gt; &amp;lt;keyword attribute=&amp;#34;Keyword&amp;#34; context=&amp;#34;#stay&amp;#34; String=&amp;#34;somename&amp;#34; /&amp;gt; &amp;lt;DetectChar attribute=&amp;#34;String&amp;#34; context=&amp;#34;string&amp;#34; char=&amp;#34;&amp;amp;quot;&amp;#34; /&amp;gt; &amp;lt;/context&amp;gt; &amp;lt;context attribute=&amp;#34;String&amp;#34; lineEndContext=&amp;#34;#stay&amp;#34; name=&amp;#34;string&amp;#34; &amp;gt; &amp;lt;DetectChar attribute=&amp;#34;String&amp;#34; context=&amp;#34;#pop&amp;#34; char=&amp;#34;&amp;amp;quot;&amp;#34; /&amp;gt; &amp;lt;/context&amp;gt; &amp;lt;/contexts&amp;gt; &amp;lt;itemDatas&amp;gt; &amp;lt;itemData name=&amp;#34;Normal Text&amp;#34; defStyleNum=&amp;#34;dsNormal&amp;#34; /&amp;gt; &amp;lt;itemData name=&amp;#34;Keyword&amp;#34; defStyleNum=&amp;#34;dsKeyword&amp;#34; /&amp;gt; &amp;lt;itemData name=&amp;#34;String&amp;#34; defStyleNum=&amp;#34;dsString&amp;#34; /&amp;gt; &amp;lt;/itemDatas&amp;gt; &amp;lt;/highlighting&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The last part of a highlight definition is the optional &lt;strong&gt;general&lt;/strong&gt; section. It may contain information about keywords, code folding, comments and indentation.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;comment&lt;/strong&gt; section defines with what string a single line comment is introduced. You also can define a multiline comments using &lt;em&gt;multiLine&lt;/em&gt; with the additional attribute &lt;em&gt;end&lt;/em&gt;. This is used if the user presses the corresponding shortcut for &lt;em&gt;comment/uncomment&lt;/em&gt;.&lt;br /&gt;
The &lt;strong&gt;keywords&lt;/strong&gt; section defines whether keyword lists are case sensitive or not. Other attributes will be explained later.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt; &amp;lt;general&amp;gt; &amp;lt;comments&amp;gt; &amp;lt;comment name=&amp;#34;singleLine&amp;#34; start=&amp;#34;#&amp;#34;/&amp;gt; &amp;lt;/comments&amp;gt; &amp;lt;keywords casesensitive=&amp;#34;1&amp;#34;/&amp;gt; &amp;lt;/general&amp;gt; &amp;lt;/language&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&#34;the-sections-in-detail&#34;&gt;The Sections in Detail&lt;/h3&gt;
&lt;p&gt;This part will describe all available attributes for contexts,&lt;br /&gt;
itemDatas, keywords, comments, code folding and indentation.&lt;/p&gt;
&lt;p&gt;The element &lt;strong&gt;context&lt;/strong&gt; belongs into the group &lt;strong&gt;contexts&lt;/strong&gt;. A context itself defines context specific rules like what should happen if the highlight system reaches the end of a line. Available attributes are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;name&lt;/strong&gt; the context name/identifier. Rules will use this name to specify the context to switch to if the rule matches.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;attribute&lt;/strong&gt; the default item data that is used if no rules match in the current context.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;lineEndContext&lt;/strong&gt; defines the context the highlight system switches to if it reaches the end of a line. This may either be a name of another context, &lt;strong&gt;#stay&lt;/strong&gt; to not switch the context (i.e. do nothing) or &lt;strong&gt;#pop&lt;/strong&gt; which will cause to leave this context. It is possible to use for example &lt;strong&gt;#pop#pop#pop&lt;/strong&gt; to pop three times.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;lineBeginContext&lt;/strong&gt; defines the context if a begin of a line is encountered. Default: #stay.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;fallthrough&lt;/strong&gt; defines if the highlight system switches to the context specified in fallthroughContext if no rule matches. Default: &lt;em&gt;false&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;fallthroughContext&lt;/strong&gt; specifies the next context if no rule matches.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dynamic&lt;/strong&gt; if &lt;em&gt;true&lt;/em&gt;, the context remembers strings/placeholders saved by dynamic rules. This is needed for &lt;em&gt;HERE&lt;/em&gt; documents for example. Default: &lt;em&gt;false&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The element &lt;strong&gt;itemData&lt;/strong&gt; is in the group &lt;strong&gt;itemDatas&lt;/strong&gt;. It defines the font style and colors. So it is possible to define your own styles and colors, however we recommend to stick to the default styles if possible so that the user will always see the same colors used in different languages. Though, sometimes there is no other way and it is necessary to change color and font attributes. The attributes name and defStyleNum are required, the other optional. Available attributes are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;name&lt;/strong&gt; sets the name of the itemData. Contexts and rules will use this name in their attribute.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;attribute&lt;/strong&gt; to reference an itemData.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;defStyleNum&lt;/strong&gt; defines which default style to use. Available default styles are explained in detail later.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;color&lt;/strong&gt; defines a color. Valid formats are ‘#rrggbb’ or ‘#rgb’.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;selColor&lt;/strong&gt; defines the selection color.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;italic&lt;/strong&gt; if &lt;em&gt;true&lt;/em&gt;, the text will be &lt;em&gt;italic&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bold&lt;/strong&gt; if &lt;em&gt;true&lt;/em&gt;, the text will be &lt;strong&gt;bold&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;underline&lt;/strong&gt; if &lt;em&gt;true&lt;/em&gt;, the text will be &lt;span style=&#34;text-decoration: underline;&#34;&gt;underlined&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;strikeout&lt;/strong&gt; if &lt;em&gt;true&lt;/em&gt;, the text will be &lt;span style=&#34;text-decoration: line-through;&#34;&gt;stroked out&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;spellChecking&lt;/strong&gt; if true, the text will be spell checked, otherwise it will be ignored during spell check.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The element &lt;strong&gt;keywords&lt;/strong&gt; in the group &lt;strong&gt;general&lt;/strong&gt; defines keyword properties. Available attributes are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;casesensitive&lt;/strong&gt; may be &lt;em&gt;true&lt;/em&gt; or &lt;em&gt;false&lt;/em&gt;. If &lt;em&gt;true&lt;/em&gt;, all keywords are matched case sensitive. Default: &lt;em&gt;true&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;weakDeliminator&lt;/strong&gt; is a list of characters that do &lt;em&gt;not&lt;/em&gt; act as word delimiters. For example the dot (&lt;strong&gt;.&lt;/strong&gt;) is a word delimiter. Assume a keyword in a &lt;strong&gt;list&lt;/strong&gt; contains a dot, it will only match if you specify the dot as a weak delimiter.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;additionalDeliminator&lt;/strong&gt; defines additional delimiters.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;wordWrapDeliminator&lt;/strong&gt; defines characters after which a line wrap may occur. Default delimiters and word wrap delimiters are the characters &lt;strong&gt;.():!+,-&amp;lt;=&amp;gt;%&amp;amp;_/;?[]^{|}~_*, space (&amp;#8216; &amp;#8216;)&lt;/strong&gt; and &lt;strong&gt;tabulator (\t)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The element &lt;strong&gt;comment&lt;/strong&gt; in the group &lt;strong&gt;comments&lt;/strong&gt; defines comment properties which are used&lt;br /&gt;
for &lt;code&gt;Tools &amp;gt; Comment&lt;/code&gt; and &lt;code&gt;Tools &amp;gt; Uncomment&lt;/code&gt;.&lt;br /&gt;
Available attributes are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;name&lt;/strong&gt; is either &lt;em&gt;singleLine&lt;/em&gt; or &lt;em&gt;multiLine&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;If you choose &lt;em&gt;singleLine&lt;/em&gt; the optinal attribute &lt;strong&gt;position&lt;/strong&gt; is available. Default for this attribute is to insert the single line comment string in column 0. If you want it to appear after the whitespaces you have to set it to &lt;em&gt;afterwhitespace&lt;/em&gt;, like: &lt;code&gt;position=&amp;quot;afterwhitespace&amp;quot;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If you choose &lt;em&gt;multiLine&lt;/em&gt; the attributes &lt;em&gt;end&lt;/em&gt; and &lt;em&gt;region&lt;/em&gt; are required.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;start&lt;/strong&gt; defines the string used to start a comment. In C++ this is &lt;code&gt;/*&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;end&lt;/strong&gt; defines the string used to close a comment. In C++ this is &lt;code&gt;*/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;region&lt;/strong&gt; should be the name of the the foldable multiline comment. Assume you have &lt;em&gt;beginRegion=”Comment”&lt;/em&gt; … &lt;em&gt;endRegion=”Comment”&lt;/em&gt; in your rules, you should use &lt;em&gt;region=”Comment”&lt;/em&gt;. This way uncomment works even if you do not select all the text of the multiline comment. The cursor only must be in the multiline comment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The element &lt;strong&gt;folding&lt;/strong&gt; in the group &lt;strong&gt;general&lt;/strong&gt; defines code folding properties. Available attributes are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;indentationsensitive&lt;/strong&gt; if &lt;em&gt;true&lt;/em&gt;, the code folding markers will be added indentation based, like in the scripting language &lt;a title=&#34;Python Project Page&#34; href=&#34;http://www.python.org&#34; target=&#34;_blank&#34;&gt;Python&lt;/a&gt;. Usually you do not need to set it, as it defaults to &lt;em&gt;false&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The element &lt;strong&gt;indentation&lt;/strong&gt; in the group &lt;strong&gt;general&lt;/strong&gt; defines which indenter will be used, however we strongly recommend to omit this element, as the indenter usually will be set by either defining a &lt;a title=&#34;Modes and Filetypes&#34; href=&#34;https://kate-editor.org/2006/02/09/kate-modes-filetypes/&#34; target=&#34;_self&#34;&gt;File Type&lt;/a&gt; or by adding a &lt;a title=&#34;Kate Modelines&#34; href=&#34;https://kate-editor.org/2006/02/09/kate-modelines/&#34; target=&#34;_self&#34;&gt;mode line&lt;/a&gt; to the text file. If you specify an indenter though, you will force a specific indentation on the user, which he might not like at all.&lt;br /&gt;
Available attributes are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;mode&lt;/strong&gt; is the name of the indenter. Available indenters right now are: &lt;em&gt;none&lt;/em&gt;, &lt;em&gt;normal&lt;/em&gt;, &lt;em&gt;cstyle&lt;/em&gt;, &lt;em&gt;haskell&lt;/em&gt;, &lt;em&gt;lilypond&lt;/em&gt;, &lt;em&gt;lisp&lt;/em&gt;, &lt;em&gt;python&lt;/em&gt;, &lt;em&gt;ruby&lt;/em&gt; and &lt;em&gt;xml&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;available-default-styles&#34;&gt;Available Default Styles&lt;/h3&gt;
&lt;p&gt;Default styles are predefined font and color styles. For convenience Kate provides several default styles, in detail:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;dsNormal&lt;/strong&gt;, used for normal text.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsKeyword&lt;/strong&gt;, used for keywords.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsDataType&lt;/strong&gt;, used for data types.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsDecVal&lt;/strong&gt;, used for decimal values.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsBaseN&lt;/strong&gt;, used for values with a base other than 10.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsFloat&lt;/strong&gt;, used for float values.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsChar&lt;/strong&gt;, used for a character.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsString&lt;/strong&gt;, used for strings.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsComment&lt;/strong&gt;, used for comments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsOthers&lt;/strong&gt;, used for ‘other’ things.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsAlert&lt;/strong&gt;, used for warning messages.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsFunction&lt;/strong&gt;, used for function calls.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsRegionMarker&lt;/strong&gt;, used for region markers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dsError&lt;/strong&gt;, used for error highlighting and wrong syntax.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;highlight-detection-rules&#34;&gt;Highlight Detection Rules&lt;/h3&gt;
&lt;p&gt;This section describes the syntax detection rules.&lt;/p&gt;
&lt;p&gt;Each rule can match zero or more characters at the beginning of the string they are tested against. If the rule matches, the matching characters are assigned the style or &lt;em&gt;attribute&lt;/em&gt; defined by the rule, and a rule may ask that the current context is switched.&lt;/p&gt;
&lt;p&gt;A rule looks like this:&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;attribute&lt;/em&gt; identifies the style to use for matched characters by name, and the &lt;em&gt;context&lt;/em&gt; identifies the context to use from here.&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;context&lt;/em&gt; can be identified by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An &lt;em&gt;identifier&lt;/em&gt;, which is the name/identifier of another context.&lt;/li&gt;
&lt;li&gt;An &lt;em&gt;order&lt;/em&gt; telling the engine to stay in the current context (&lt;strong&gt;#stay&lt;/strong&gt;), or to pop back to a previous context used in the string (&lt;strong&gt;#pop&lt;/strong&gt;). To go back more steps, the #pop keyword can be repeated: &lt;strong&gt;#pop#pop#pop&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some rules can have &lt;em&gt;child rules&lt;/em&gt; which are then evaluated only if the parent rule matched. The entire matched string will be given the attribute defined by the parent rule. A rule with child rules looks like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;RuleName (attributes)&amp;gt; &amp;lt;ChildRuleName (attributes) /&amp;gt; ... &amp;lt;/RuleName&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Rule specific attributes vary and are described in the following sections.&lt;/p&gt;
&lt;h3 id=&#34;common-attributes&#34;&gt;Common attributes&lt;/h3&gt;
&lt;p&gt;All rules have the following attributes in common and are available whenever a &lt;strong&gt;(common attributes)&lt;/strong&gt; appears. All following attributes are optional.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;attribute&lt;/strong&gt; maps to a defined &lt;em&gt;itemData&lt;/em&gt;. Default: the attribute from the &lt;em&gt;destination context&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;context&lt;/strong&gt; specifies the context to which the highlighting system switches if the rule matches. Default: &lt;em&gt;#stay&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;beginRegion&lt;/strong&gt; starts a code folding block. Default: unset.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;endRegion&lt;/strong&gt; closes a code folding block. Default: unset.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;lookAhead&lt;/strong&gt;, if &lt;em&gt;true&lt;/em&gt;, the highlighting system will not process the matches length. Default: &lt;em&gt;false&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;firstNonSpace&lt;/strong&gt;, if &lt;em&gt;true&lt;/em&gt;, the rule only matches, if the string is the first non-whitespace in the line. Default: &lt;em&gt;false&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;column&lt;/strong&gt; defines the column. The rule only matches, if the current column matches the given one. Default: unset.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;dynamic-rules&#34;&gt;Dynamic rules&lt;/h3&gt;
&lt;p&gt;Some rules allow the optional attribute &lt;strong&gt;dynamic&lt;/strong&gt; of type boolean that defaults to &lt;em&gt;false&lt;/em&gt;. If dynamic is &lt;em&gt;true&lt;/em&gt;, a rule can use placeholders representing the text matched by a &lt;em&gt;regular expression&lt;/em&gt; rule that switched to the current context in its &lt;strong&gt;string&lt;/strong&gt; or &lt;strong&gt;char&lt;/strong&gt; attributes. In a &lt;strong&gt;string&lt;/strong&gt;, the placeholder &lt;strong&gt;%N&lt;/strong&gt; (where N is a number) will be replaced with the corresponding capture &lt;strong&gt;N&lt;/strong&gt; from the calling regular expression. In a &lt;strong&gt;char&lt;/strong&gt; the placeholer must be a number &lt;strong&gt;N&lt;/strong&gt; and it will be replaced with the first character of the corresponding capture &lt;strong&gt;N&lt;/strong&gt; from the calling regular expression. Whenever a rule allows this attribute it will contain a &lt;em&gt;(dynamic)&lt;/em&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;dynamic&lt;/strong&gt; may be either &lt;em&gt;true&lt;/em&gt; or &lt;em&gt;false&lt;/em&gt;. Default: &lt;em&gt;false&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;the-rules-in-detail&#34;&gt;The Rules in Detail&lt;/h2&gt;
&lt;h3 id=&#34;detectchar&#34;&gt;DetectChar&lt;/h3&gt;
&lt;p&gt;Detect a single specific character. Commonly used for example to find the ends of quoted strings.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;DetectChar char=&amp;#34;(character)&amp;#34; (common attributes) (dynamic) /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The &lt;strong&gt;char&lt;/strong&gt; attribute defines the character to match.&lt;/p&gt;
&lt;h3 id=&#34;detect2chars&#34;&gt;Detect2Chars&lt;/h3&gt;
&lt;p&gt;Detect two specific characters in a defined order.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;Detect2Chars char=&amp;#34;(character)&amp;#34; char1=&amp;#34;(character)&amp;#34; (common attributes) (dynamic) /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The &lt;strong&gt;char&lt;/strong&gt; attribute defines the first character to match, &lt;strong&gt;char1&lt;/strong&gt; the second.&lt;/p&gt;
&lt;h3 id=&#34;anychar&#34;&gt;AnyChar&lt;/h3&gt;
&lt;p&gt;Detect one character of a set of specified characters.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;AnyChar String=&amp;#34;(string)&amp;#34; (common attributes) /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The &lt;strong&gt;String&lt;/strong&gt; attribute defines the set of characters.&lt;/p&gt;
&lt;h3 id=&#34;stringdetect&#34;&gt;StringDetect&lt;/h3&gt;
&lt;p&gt;Detect an exact string.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;StringDetect String=&amp;#34;(string)&amp;#34; [insensitive=&amp;#34;true|false&amp;#34;] (common attributes) (dynamic) /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The &lt;strong&gt;String&lt;/strong&gt; attribute defines the string to match. The &lt;strong&gt;insensitive&lt;/strong&gt; attribute defaults to &lt;em&gt;false&lt;/em&gt; and is passed to the string comparison function. If the value is &lt;em&gt;true&lt;/em&gt; insensitive comparing is used.&lt;/p&gt;
&lt;h3 id=&#34;worddetect-kde-4-5-kate-3-5&#34;&gt;WordDetect (KDE &amp;gt;= 4.5, Kate &amp;gt;= 3.5)&lt;/h3&gt;
&lt;p&gt;Detect an exact string but additionally require word boundaries like a dot (.) or a whitespace on the beginning and the end of the word. You can think of &lt;em&gt;\b\b&lt;/em&gt; in terms of a regular expression.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;WordDetect String=&amp;#34;(string)&amp;#34; [insensitive=&amp;#34;true|false&amp;#34;] (common attributes) (dynamic) /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The &lt;strong&gt;String&lt;/strong&gt; attribute defines the string to match. The &lt;strong&gt;insensitive&lt;/strong&gt; attribute defaults to &lt;em&gt;false&lt;/em&gt; and is passed to the string comparison function. If the value is &lt;em&gt;true&lt;/em&gt; insensitive comparing is used.&lt;/p&gt;
&lt;h3 id=&#34;regexpr&#34;&gt;RegExpr&lt;/h3&gt;
&lt;p&gt;Matches against a regular expression.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;RegExpr String=&amp;#34;(string)&amp;#34; [insensitive=&amp;#34;true|false&amp;#34;] [minimal=&amp;#34;true|false&amp;#34;] (common attributes) (dynamic) /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;String&lt;/strong&gt; attribute defines the regular expression.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;insensitive&lt;/strong&gt; defaults to &lt;em&gt;false&lt;/em&gt; and is passed to the regular expression engine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;minimal&lt;/strong&gt; defaults to &lt;em&gt;false&lt;/em&gt; and is passed to the regular expression engine.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Because the rules are always matched against the beginning of the current string, a regular expression starting with a caret (&lt;strong&gt;^&lt;/strong&gt;) indicates that the rule should only be matched against the start of a line.&lt;/p&gt;
&lt;h3 id=&#34;keyword&#34;&gt;keyword&lt;/h3&gt;
&lt;p&gt;Detect a keyword from a specified list.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;keyword String=&amp;#34;(list name)&amp;#34; (common attributes) /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The &lt;strong&gt;String&lt;/strong&gt; attribute identifies the keyword list by name. A list with that name must exist.&lt;/p&gt;
&lt;h3 id=&#34;int&#34;&gt;Int&lt;/h3&gt;
&lt;p&gt;Detect an integer number.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;Int (common attributes) (dynamic) /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This rule has no specific attributes. Child rules are typically used to detect combinations of &lt;strong&gt;L&lt;/strong&gt; and &lt;strong&gt;U&lt;/strong&gt; after the number, indicating the integer type in program code. Actually all rules are allowed as child rules, though, the DTD only allowes the child rule &lt;strong&gt;StringDetect&lt;/strong&gt;.&lt;br /&gt;
The following example matches integer numbers follows by the character ‘L’.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;Int attribute=&amp;#34;Decimal&amp;#34; context=&amp;#34;#stay&amp;#34; &amp;gt; &amp;lt;StringDetect attribute=&amp;#34;Decimal&amp;#34; context=&amp;#34;#stay&amp;#34; String=&amp;#34;L&amp;#34; insensitive=&amp;#34;true&amp;#34;/&amp;gt; &amp;lt;/Int&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&#34;float&#34;&gt;Float&lt;/h3&gt;
&lt;p&gt;Detect a floating point number.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;Float (common attributes) /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This rule has no specific attributes. &lt;strong&gt;AnyChar&lt;/strong&gt; is allowed as a child rules and typically used to detect combinations, see rule &lt;strong&gt;Int&lt;/strong&gt; for reference.&lt;/p&gt;
&lt;h3 id=&#34;hlcoct&#34;&gt;HlCOct&lt;/h3&gt;
&lt;p&gt;Detect an octal point number representation.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;HlCOct (common attributes) /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This rule has no specific attributes.&lt;/p&gt;
&lt;h3 id=&#34;hlchex&#34;&gt;HlCHex&lt;/h3&gt;
&lt;p&gt;Detect a hexadecimal number representation.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;HlCHex (common attributes) /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This rule has no specific attributes.&lt;/p&gt;
&lt;h3 id=&#34;hlcstringchar&#34;&gt;HlCStringChar&lt;/h3&gt;
&lt;p&gt;Detect an escaped character.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;HlCStringChar (common attributes) /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This rule has no specific attributes.&lt;/p&gt;
&lt;p&gt;It matches literal representations of characters commonly used in program code, for example &lt;strong&gt;\n&lt;/strong&gt; (newline) or &lt;strong&gt;\t&lt;/strong&gt; (tabulator).&lt;/p&gt;
&lt;p&gt;The following characters will match if they follow a backslash (*&lt;em&gt;*&lt;/em&gt;): *&lt;em&gt;abefnrtv&amp;#8221;’?*&lt;/em&gt;. Additionally, escaped hexadecimal numbers like for example &lt;strong&gt;\xff&lt;/strong&gt; and escaped octal numbers, for example &lt;strong&gt;\033&lt;/strong&gt; will match.&lt;/p&gt;
&lt;h3 id=&#34;hlcchar&#34;&gt;HlCChar&lt;/h3&gt;
&lt;p&gt;Detect an C character.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;HlCChar (common attributes) /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This rule has no specific attributes.&lt;/p&gt;
&lt;p&gt;It matches C characters enclosed in a tick (Example: ‘&lt;strong&gt;c&lt;/strong&gt;’). So in the ticks may be a simple character or an escaped character. See HlCStringChar for matched escaped character sequences.&lt;/p&gt;
&lt;h3 id=&#34;rangedetect&#34;&gt;RangeDetect&lt;/h3&gt;
&lt;p&gt;Detect a string with defined start and end characters.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;RangeDetect char=&amp;#34;(character)&amp;#34; char1=&amp;#34;(character)&amp;#34; (common attributes) /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;char&lt;/strong&gt; defines the character starting the range, &lt;strong&gt;char1&lt;/strong&gt; the character ending the range. Usefull to detect for example small quoted strings and the like, but note that since the highlighting engine works on one line at a time, this will not find strings spanning over a line break.&lt;/p&gt;
&lt;h3 id=&#34;linecontinue&#34;&gt;LineContinue&lt;/h3&gt;
&lt;p&gt;Matches a backslash (&amp;#8216;&amp;amp;#8217;) at the end of a line.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;LineContinue (common attributes) /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This rule has no specific attributes.&lt;br /&gt;
This rule is useful for switching context at end of line, if the last character is a backslash (‘****’). This is needed for example in C/C++ to continue macros or strings.&lt;/p&gt;
&lt;h3 id=&#34;includerules&#34;&gt;IncludeRules&lt;/h3&gt;
&lt;p&gt;Include rules from another context or language/file.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;IncludeRules context=&amp;#34;contextlink&amp;#34; [includeAttrib=&amp;#34;true|false&amp;#34;] /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The &lt;strong&gt;context&lt;/strong&gt; attribute defines which context to include.&lt;br /&gt;
If it a simple string it includes all defined rules into the current context, example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;IncludeRules context=&amp;#34;anotherContext&amp;#34; /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If the string begins with &lt;strong&gt;##&lt;/strong&gt; the highlight system will look for another language definition with the given name, example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;IncludeRules context=&amp;#34;##C++&amp;#34; /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If &lt;strong&gt;includeAttrib&lt;/strong&gt; attribute is &lt;em&gt;true&lt;/em&gt;, change the destination attribute to the one of the source. This is required to make for example commenting work, if text matched by the included context is a different highlight than the host context.&lt;/p&gt;
&lt;h3 id=&#34;detectspaces&#34;&gt;DetectSpaces&lt;/h3&gt;
&lt;p&gt;Detect whitespaces.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;DetectSpaces (common attributes) /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This rule has no specific attributes.&lt;br /&gt;
Use this rule if you know that there can several whitespaces ahead, for example in the beginning of indented lines. This rule will skip all whitespace at once, instead of testing multiple rules and skipping one at the time due to no match.&lt;/p&gt;
&lt;h3 id=&#34;detectidentifier&#34;&gt;DetectIdentifier&lt;/h3&gt;
&lt;p&gt;Detect identifier strings (as a regular expression: [a-zA-Z&lt;em&gt;][a-zA-Z0-9&lt;/em&gt;]*).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;DetectIdentifier (common attributes) /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This rule has no specific attributes.&lt;br /&gt;
Use this rule to skip a string of word characters at once, rather than testing with multiple rules and skipping one at the time due to no match.&lt;/p&gt;
&lt;h2 id=&#34;tips-tricks&#34;&gt;Tips &amp;amp; Tricks&lt;/h2&gt;
&lt;p&gt;Once you have understood how the context switching works it will be easy to write highlight definitions. Though you should carefully check what rule you choose in what situation. Regular expressions are very mighty, but they are slow compared to the other rules. So you may consider the following tips.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you only match two characters use &lt;strong&gt;Detect2Chars&lt;/strong&gt; instead of &lt;strong&gt;StringDetect&lt;/strong&gt;. The same applies to &lt;strong&gt;DetectChar&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Regular expressions are easy to use but often there is another much faster way to achieve the same result. Consider you only want to match the character &lt;strong&gt;#&lt;/strong&gt;if it is the first character in the line. A regular expression based solution would look like this:
&lt;RegExpr attribute=&#34;Macro&#34; context=&#34;macro&#34; String=&#34;^\s*#&#34; /&gt;&lt;/p&gt;
&lt;p&gt;You can achieve the same much faster in using:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&amp;lt;DetectChar attribute=&amp;#34;Macro&amp;#34; context=&amp;#34;macro&amp;#34; char=&amp;#34;#&amp;#34; firstNonSpace=&amp;#34;true&amp;#34; /&amp;gt; &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you want to match the regular expression ‘&lt;strong&gt;^#&lt;/strong&gt;’ you can still use &lt;strong&gt;DetectChar&lt;/strong&gt; with the attribute &lt;strong&gt;column=&amp;#8221;0&amp;#8243;&lt;/strong&gt;. The attribute &lt;strong&gt;column&lt;/strong&gt; counts character based, so a tabulator still is only one character.&lt;/li&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You can switch contexts without processing characters. Assume that you want to switch context when you meet the string &lt;strong&gt;&lt;em&gt;/&lt;/em&gt;*, but need to process that string in the next context. The below rule will match, and the lookAhead&lt;/strong&gt;attribute will cause the highlighter to keep the matched string for the next context.
&lt;Detect2Chars attribute=&#34;Comment&#34; context=&#34;#pop&#34; char=&#34;*&#34; char1=&#34;/&#34; lookAhead=&#34;true&#34; /&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use &lt;strong&gt;DetectSpaces&lt;/strong&gt; if you know that many whitespaces occur.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use &lt;strong&gt;DetectIdentifier&lt;/strong&gt; instead of the regular expression ‘&lt;strong&gt;[a-zA-Z_]\w&lt;/strong&gt;*’.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use default styles whenever you can. This way the user will find a familiar environment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Look into other XML-files to see how other people implement tricky rules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can validate every XML file by using the command &lt;strong&gt;&lt;code&gt;xmllint --dtdvalid language.dtd mySyntax.xml&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you repeat complex regular expression very often you can use &lt;em&gt;ENTITIES&lt;/em&gt;. Example:
&amp;lt;?xml version=&amp;ldquo;1.0&amp;rdquo; encoding=&amp;ldquo;UTF-8&amp;rdquo;?&amp;gt; &amp;lt;!DOCTYPE language SYSTEM &amp;ldquo;language.dtd&amp;rdquo; [ &amp;lt;!ENTITY myref &amp;ldquo;[A-Za-z&lt;em&gt;:][\w.:&lt;/em&gt;-]*&amp;ldquo;&amp;gt; ]&amp;gt;&lt;/p&gt;
&lt;p&gt;Now you can use &lt;em&gt;&amp;myref;&lt;/em&gt; instead of the regular expression.&lt;/li&gt; &lt;/ul&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Writing a Kate Plugin</title><link>https://kate-editor.org/2004/01/06/writing-a-kate-plugin/</link><pubDate>Tue, 06 Jan 2004 15:50:59 +0000</pubDate><guid>https://kate-editor.org/2004/01/06/writing-a-kate-plugin/</guid><description>
&lt;h3 id=&#34;introduction&#34;&gt;Introduction&lt;/h3&gt;
&lt;p&gt;First at all, why writing plugins for an editor ? Good question, and I hope I have a good answer: Because we want Kate to be small and all extended features not all users need should go into plugins (like CVS suppport, project managment, coffee cooking ;) Therefore Kate provides a quite full-featured plugin interface and interfaces to all important stuff in the Kate application (the documents, views, windows, sidebar &amp;#8230;).&lt;br /&gt;
&lt;!--break--&gt;&lt;/p&gt;
&lt;p&gt;This tutorial is for people knowing the Qt/KDE libraries and will not describe how to compile, make &amp;#8230; a kde/qt application/library in detail.&lt;/p&gt;
&lt;p&gt;The &amp;#8220;helloworld&amp;#8221; plugin which is here described can be found in the &amp;#8220;kdesdk&amp;#8221; package of kde (located in kdesdk/kate/plugins/helloworld). A detailed description of the Kate API is available &lt;a href=&#34;http://api.kde.org/4.x-api/kdesdk-apidocs/kate/interfaces/kate/html/index.html&#34;&gt;here.&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;coding-example-the-konsole-plugin&#34;&gt;Coding example: The Konsole plugin&lt;/h3&gt;
&lt;p&gt;This is one of standard plugins shipped with Kate which embeds the awesome KonsolePart into it to have a nice terminal emulator around.&lt;/p&gt;
&lt;h3 id=&#34;needed-files-for-a-plugin&#34;&gt;Needed files for a plugin&lt;/h3&gt;
&lt;p&gt;Each plugin consists of at least three files which are needed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a desktop file with some information about the plugin (correct syntax described later &amp;#8211; named like kate&amp;#8221;pluginname&amp;#8221;.desktop&lt;/li&gt;
&lt;li&gt;a XmlGui rc file named ui.rc&lt;/li&gt;
&lt;li&gt;a library containing the plugin (named like kate&amp;#8221;pluginname&amp;#8221;plugin)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;about-the-desktop-file&#34;&gt;About the desktop file&lt;/h4&gt;
&lt;p&gt;The desktop file needs the syntax shown here and must be located in kde services directory with the name kate&amp;#8221;yourpluginname&amp;#8221;.desktop,&lt;/p&gt;
&lt;p&gt;Example: katekonsoleplugin.desktop&lt;/p&gt;
&lt;pre&gt;[Desktop Entry]
Type=Service
ServiceTypes=Kate/Plugin
X-KDE-Library=katekonsoleplugin
X-Kate-Version=2.8
Name=Terminal tool view
Comment=Toolview embedding a terminal widget
X-Kate-MajorProfiles=Kate
X-Kate-MinorProfiles=*
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;The &amp;#8220;X-Kate-Version=2.8&amp;#8221; line is important! Kate for KDE 4 and up won&amp;#8217;t load your plugin unless the property is similar to the version with which you want to use the plugin!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To install this desktop file to KDE&amp;#8217;s services directory, we&amp;#8217;ll later add the following line to the CMakeLists.txt file:&lt;/p&gt;
&lt;pre&gt;install( FILES katekonsoleplugin.desktop  DESTINATION  ${SERVICES_INSTALL_DIR} )
&lt;/pre&gt;
&lt;h4 id=&#34;about-the-xmlgui-rc-file&#34;&gt;About the xmlGUI rc file&lt;/h4&gt;
&lt;p&gt;The xmlgui resource file describes how the menu and toolbar actions appear in the Kate application. For more detailed examples look into other plugins. The ui.rc file for the katekonsoleplugin looks like this:&lt;/p&gt;
&lt;pre&gt;&amp;lt;!DOCTYPE kpartgui&amp;gt;
&amp;lt;gui name=&#34;katekonsole&#34; library=&#34;katekonsoleplugin&#34; version=&#34;3&#34;&amp;gt;
&amp;lt;MenuBar&amp;gt;
&amp;lt;Menu name=&#34;tools&#34;&amp;gt;&amp;lt;text&amp;gt;&amp;amp;Tools&amp;lt;/text&amp;gt;
&amp;lt;Action name=&#34;katekonsole_tools_pipe_to_terminal&#34; group=&#34;tools_operations&#34;/&amp;gt;
&amp;lt;Action name=&#34;katekonsole_tools_sync&#34; group=&#34;tools_operations&#34;/&amp;gt;
&amp;lt;Action name=&#34;katekonsole_tools_toggle_focus&#34; group=&#34;tools_operations&#34;/&amp;gt;
&amp;lt;/Menu&amp;gt;
&amp;lt;/MenuBar&amp;gt;
&amp;lt;/gui&amp;gt;
&lt;/pre&gt;
&lt;p&gt;To automatically install the ui.rc file into the right directory later we add the following line to CMakeLists.txt:&lt;/p&gt;
&lt;pre&gt;install( FILES ui.rc  DESTINATION  ${DATA_INSTALL_DIR}/kate/plugins/katekonsole )&lt;/pre&gt;
&lt;h4 id=&#34;about-plugin-lib&#34;&gt;About plugin lib&lt;/h4&gt;
&lt;p&gt;Each Kate plugin is a library which Kate will dynamically load on demand via KLibLoader. The name of the library is kate&amp;#8221;yourpluginname&amp;#8221;plugin.so and should be installed into KDE&amp;#8217;s plugin directory.&lt;/p&gt;
&lt;p&gt;The complete result for the file CMakeLists.txt looks like this:&lt;/p&gt;
&lt;pre&gt;########### compile and link and install plugin library ###############
set(katekonsoleplugin_PART_SRCS kateconsole.cpp )
kde4_add_plugin(katekonsoleplugin ${katekonsoleplugin_PART_SRCS})
target_link_libraries(katekonsoleplugin  ${KDE4_KDEUI_LIBS} ${KDE4_KPARTS_LIBS} kateinterfaces )
install(TARGETS katekonsoleplugin  DESTINATION ${PLUGIN_INSTALL_DIR} )
########### install support files ###############
install( FILES ui.rc  DESTINATION  ${DATA_INSTALL_DIR}/kate/plugins/katekonsole )
install( FILES katekonsoleplugin.desktop  DESTINATION  ${SERVICES_INSTALL_DIR} )&lt;/pre&gt;
&lt;!--pagebreak--&gt;
&lt;h3 id=&#34;start-the-real-coding&#34;&gt;Start the real coding ;)&lt;/h3&gt;
&lt;p&gt;Now we can start with the real coding, The Konsole plugin consists of 2 files, kateconsole.cpp and .h.&lt;/p&gt;
&lt;h3 id=&#34;the-plugin-header-file-8211-kateconsole-h&#34;&gt;The plugin header file &amp;#8211; kateconsole.h&lt;/h3&gt;
&lt;pre&gt;#ifndef __KATE_CONSOLE_H__
#define __KATE_CONSOLE_H__
#include &amp;lt;kate/plugin.h&amp;gt;
#include &amp;lt;kate/mainwindow.h&amp;gt;
#include &amp;lt;kate/pluginconfigpageinterface.h&amp;gt;
#include &amp;lt;kurl.h&amp;gt;
#include &amp;lt;kxmlguiclient.h&amp;gt;
#include &amp;lt;kvbox.h&amp;gt;
#include &amp;lt;QList&amp;gt;
class QShowEvent;
namespace KParts
{
class ReadOnlyPart;
}
namespace KateMDI
{
}
class KateConsole;
class KateKonsolePluginView;
class KateKonsolePlugin: public Kate::Plugin, public Kate::PluginConfigPageInterface
{
Q_OBJECT
Q_INTERFACES(Kate::PluginConfigPageInterface)
friend class KateKonsolePluginView;
public:
explicit KateKonsolePlugin( QObject* parent = 0, const QList&amp;lt;QVariant&amp;gt;&amp; = QList&amp;lt;QVariant&amp;gt;() );
virtual ~KateKonsolePlugin();
Kate::PluginView *createView (Kate::MainWindow *mainWindow);
// PluginConfigPageInterface
uint configPages() const { return 1; };
Kate::PluginConfigPage *configPage (uint number = 0, QWidget *parent = 0, const char *name = 0);
QString configPageName (uint number = 0) const;
QString configPageFullName (uint number = 0) const;
KIcon configPageIcon (uint number = 0) const;
void readConfig();
QByteArray previousEditorEnv() {return m_previousEditorEnv;}
private:
QList&amp;lt;KateKonsolePluginView*&amp;gt; mViews;
QByteArray m_previousEditorEnv;
};
class KateKonsolePluginView : public Kate::PluginView
{
Q_OBJECT
public:
/**
* Constructor.
*/
KateKonsolePluginView (KateKonsolePlugin* plugin, Kate::MainWindow *mainWindow);
/**
* Virtual destructor.
*/
~KateKonsolePluginView ();
void readConfig();
private:
KateKonsolePlugin *m_plugin;
KateConsole *m_console;
};
/**
* KateConsole
* This class is used for the internal terminal emulator
* It uses internally the konsole part, thx to konsole devs :)
*/
class KateConsole : public KVBox, public Kate::XMLGUIClient
{
Q_OBJECT
public:
/**
* construct us
* @param mw main window
* @param parent toolview
*/
KateConsole (KateKonsolePlugin* plugin, Kate::MainWindow *mw, QWidget* parent);
/**
* destruct us
*/
~KateConsole ();
void readConfig();
/**
* cd to dir
* @param url given dir
*/
void cd (const KUrl &amp;url);
/**
* send given text to console
* @param text commands for console
*/
void sendInput( const QString&amp; text );
Kate::MainWindow *mainWindow()
{
return m_mw;
}
public Q_SLOTS:
/**
* pipe current document to console
*/
void slotPipeToConsole ();
/**
* synchronize the konsole with the current document (cd to the directory)
*/
void slotSync();
/**
* When syncing is done by the user, also show the terminal if it is hidden
*/
void slotManualSync();
private Q_SLOTS:
/**
* the konsole exited ;)
* handle that, hide the dock
*/
void slotDestroyed ();
/**
* construct console if needed
*/
void loadConsoleIfNeeded();
/**
* set or clear focus as appropriate.
*/
void slotToggleFocus();
protected:
/**
* the konsole get shown
* @param ev show event
*/
void showEvent(QShowEvent *ev);
private:
/**
* console part
*/
KParts::ReadOnlyPart *m_part;
/**
* main window of this console
*/
Kate::MainWindow *m_mw;
/**
* toolview for this console
*/
QWidget *m_toolView;
KateKonsolePlugin *m_plugin;
};
class KateKonsoleConfigPage : public Kate::PluginConfigPage {
Q_OBJECT
public:
explicit KateKonsoleConfigPage( QWidget* parent = 0, KateKonsolePlugin *plugin = 0 );
virtual ~KateKonsoleConfigPage()
{}
virtual void apply();
virtual void reset();
virtual void defaults()
{}
private:
class QCheckBox *cbAutoSyncronize;
class QCheckBox *cbSetEditor;
KateKonsolePlugin *mPlugin;
};
#endif
// kate: space-indent on; indent-width 2; replace-tabs on;
&lt;/pre&gt;
&lt;h3 id=&#34;the-plugin-source-file-8211-kateconsole-cpp&#34;&gt;The plugin source file &amp;#8211; kateconsole.cpp&lt;/h3&gt;
&lt;pre&gt;#include &#34;kateconsole.h&#34;
#include &#34;kateconsole.moc&#34;
#include &amp;lt;kicon.h&amp;gt;
#include &amp;lt;kiconloader.h&amp;gt;
#include &amp;lt;ktexteditor/document.h&amp;gt;
#include &amp;lt;ktexteditor/view.h&amp;gt;
#include &amp;lt;kde_terminal_interface.h&amp;gt;
#include &amp;lt;kshell.h&amp;gt;
#include &amp;lt;kparts/part.h&amp;gt;
#include &amp;lt;kaction.h&amp;gt;
#include &amp;lt;kactioncollection.h&amp;gt;
#include &amp;lt;KDialog&amp;gt;
#include &amp;lt;kurl.h&amp;gt;
#include &amp;lt;klibloader.h&amp;gt;
#include &amp;lt;klocale.h&amp;gt;
#include &amp;lt;kdebug.h&amp;gt;
#include &amp;lt;kmessagebox.h&amp;gt;
//Added by qt3to4:
#include &amp;lt;QShowEvent&amp;gt;
#include &amp;lt;QLabel&amp;gt;
#include &amp;lt;QCheckBox&amp;gt;
#include &amp;lt;QVBoxLayout&amp;gt;
#include &amp;lt;kpluginloader.h&amp;gt;
#include &amp;lt;kaboutdata.h&amp;gt;
#include &amp;lt;kpluginfactory.h&amp;gt;
#include &amp;lt;kauthorized.h&amp;gt;
K_PLUGIN_FACTORY(KateKonsoleFactory, registerPlugin&amp;lt;KateKonsolePlugin&amp;gt;();)
K_EXPORT_PLUGIN(KateKonsoleFactory(KAboutData(&#34;katekonsole&#34;,&#34;katekonsoleplugin&#34;,ki18n(&#34;Konsole&#34;), &#34;0.1&#34;, ki18n(&#34;Embedded Konsole&#34;), KAboutData::License_LGPL_V2)) )
KateKonsolePlugin::KateKonsolePlugin( QObject* parent, const QList&amp;lt;QVariant&amp;gt;&amp; ):
Kate::Plugin ( (Kate::Application*)parent )
{
m_previousEditorEnv=qgetenv(&#34;EDITOR&#34;);
if (!KAuthorized::authorizeKAction(&#34;shell_access&#34;))
{
KMessageBox::sorry(0, i18n (&#34;You do not have enough karma to access a shell or terminal emulation&#34;));
}
}
KateKonsolePlugin::~KateKonsolePlugin()
{
::setenv( &#34;EDITOR&#34;, m_previousEditorEnv.data(), 1 );
}
Kate::PluginView *KateKonsolePlugin::createView (Kate::MainWindow *mainWindow)
{
KateKonsolePluginView *view = new KateKonsolePluginView (this, mainWindow);
return view;
}
Kate::PluginConfigPage *KateKonsolePlugin::configPage (uint number, QWidget *parent, const char *name)
{
Q_UNUSED(name)
if (number != 0)
return 0;
return new KateKonsoleConfigPage(parent, this);
}
QString KateKonsolePlugin::configPageName (uint number) const
{
if (number != 0) return QString();
return i18n(&#34;Terminal&#34;);
}
QString KateKonsolePlugin::configPageFullName (uint number) const
{
if (number != 0) return QString();
return i18n(&#34;Terminal Settings&#34;);
}
KIcon KateKonsolePlugin::configPageIcon (uint number) const
{
if (number != 0) return KIcon();
return KIcon(&#34;utilities-terminal&#34;);
}
void KateKonsolePlugin::readConfig()
{
foreach ( KateKonsolePluginView *view, mViews )
view-&amp;gt;readConfig();
}
KateKonsolePluginView::KateKonsolePluginView (KateKonsolePlugin* plugin, Kate::MainWindow *mainWindow)
: Kate::PluginView (mainWindow),m_plugin(plugin)
{
// init console
QWidget *toolview = mainWindow-&amp;gt;createToolView (&#34;kate_private_plugin_katekonsoleplugin&#34;, Kate::MainWindow::Bottom, SmallIcon(&#34;utilities-terminal&#34;), i18n(&#34;Terminal&#34;));
m_console = new KateConsole(m_plugin, mainWindow, toolview);
// register this view
m_plugin-&amp;gt;mViews.append ( this );
}
KateKonsolePluginView::~KateKonsolePluginView ()
{
// unregister this view
m_plugin-&amp;gt;mViews.removeAll (this);
// cleanup, kill toolview + console
QWidget *toolview = m_console-&amp;gt;parentWidget();
delete m_console;
delete toolview;
}
void KateKonsolePluginView::readConfig()
{
m_console-&amp;gt;readConfig();
}
KateConsole::KateConsole (KateKonsolePlugin* plugin, Kate::MainWindow *mw, QWidget *parent)
: KVBox (parent), Kate::XMLGUIClient(KateKonsoleFactory::componentData())
, m_part (0)
, m_mw (mw)
, m_toolView (parent)
, m_plugin(plugin)
{
QAction* a = actionCollection()-&amp;gt;addAction(&#34;katekonsole_tools_pipe_to_terminal&#34;);
a-&amp;gt;setIcon(KIcon(&#34;utilities-terminal&#34;));
a-&amp;gt;setText(i18nc(&#34;@action&#34;, &#34;&amp;Pipe to Terminal&#34;));
connect(a, SIGNAL(triggered()), this, SLOT(slotPipeToConsole()));
a = actionCollection()-&amp;gt;addAction(&#34;katekonsole_tools_sync&#34;);
a-&amp;gt;setText(i18nc(&#34;@action&#34;, &#34;S&amp;ynchronize Terminal with Current Document&#34;));
connect(a, SIGNAL(triggered()), this, SLOT(slotManualSync()));
a = actionCollection()-&amp;gt;addAction(&#34;katekonsole_tools_toggle_focus&#34;);
a-&amp;gt;setIcon(KIcon(&#34;utilities-terminal&#34;));
a-&amp;gt;setText(i18nc(&#34;@action&#34;, &#34;&amp;Focus Terminal&#34;));
connect(a, SIGNAL(triggered()), this, SLOT(slotToggleFocus()));
m_mw-&amp;gt;guiFactory()-&amp;gt;addClient (this);
readConfig();
}
KateConsole::~KateConsole ()
{
m_mw-&amp;gt;guiFactory()-&amp;gt;removeClient (this);
if (m_part)
disconnect ( m_part, SIGNAL(destroyed()), this, SLOT(slotDestroyed()) );
}
void KateConsole::loadConsoleIfNeeded()
{
if (m_part) return;
if (!window() || !parentWidget()) return;
if (!window() || !isVisibleTo(window())) return;
KPluginFactory *factory = KPluginLoader(&#34;libkonsolepart&#34;).factory();
if (!factory) return;
m_part = static_cast&amp;lt;KParts::ReadOnlyPart *&amp;gt;(factory-&amp;gt;create&amp;lt;QObject&amp;gt;(this, this));
if (!m_part) return;
// start the terminal
qobject_cast&amp;lt;TerminalInterface*&amp;gt;(m_part)-&amp;gt;showShellInDir( QString() );
KGlobal::locale()-&amp;gt;insertCatalog(&#34;konsole&#34;);
setFocusProxy(m_part-&amp;gt;widget());
m_part-&amp;gt;widget()-&amp;gt;show();
connect ( m_part, SIGNAL(destroyed()), this, SLOT(slotDestroyed()) );
slotSync();
}
void KateConsole::slotDestroyed ()
{
m_part = 0;
// hide the dockwidget
if (parentWidget())
{
m_mw-&amp;gt;hideToolView (m_toolView);
m_mw-&amp;gt;centralWidget()-&amp;gt;setFocus ();
}
}
void KateConsole::showEvent(QShowEvent *)
{
if (m_part) return;
loadConsoleIfNeeded();
}
void KateConsole::cd (const KUrl &amp;url)
{
sendInput(&#34;cd &#34; + KShell::quoteArg(url.path()) + &#39;\n&#39;);
}
void KateConsole::sendInput( const QString&amp; text )
{
loadConsoleIfNeeded();
if (!m_part) return;
TerminalInterface *t = qobject_cast&amp;lt;TerminalInterface *&amp;gt;(m_part);
if (!t) return;
t-&amp;gt;sendInput (text);
}
void KateConsole::slotPipeToConsole ()
{
if (KMessageBox::warningContinueCancel
(m_mw-&amp;gt;window()
, i18n (&#34;Do you really want to pipe the text to the console? This will execute any contained commands with your user rights.&#34;)
, i18n (&#34;Pipe to Terminal?&#34;)
, KGuiItem(i18n(&#34;Pipe to Terminal&#34;)), KStandardGuiItem::cancel(), &#34;Pipe To Terminal Warning&#34;) != KMessageBox::Continue)
return;
KTextEditor::View *v = m_mw-&amp;gt;activeView();
if (!v)
return;
if (v-&amp;gt;selection())
sendInput (v-&amp;gt;selectionText());
else
sendInput (v-&amp;gt;document()-&amp;gt;text());
}
void KateConsole::slotSync()
{
if (m_mw-&amp;gt;activeView() ) {
if ( m_mw-&amp;gt;activeView()-&amp;gt;document()-&amp;gt;url().isValid()
&amp;&amp; m_mw-&amp;gt;activeView()-&amp;gt;document()-&amp;gt;url().isLocalFile() ) {
cd(KUrl( m_mw-&amp;gt;activeView()-&amp;gt;document()-&amp;gt;url().directory() ));
} else if ( !m_mw-&amp;gt;activeView()-&amp;gt;document()-&amp;gt;url().isEmpty() ) {
sendInput( &#34;### &#34; + i18n(&#34;Sorry, can not cd into &#39;%1&#39;&#34;, m_mw-&amp;gt;activeView()-&amp;gt;document()-&amp;gt;url().directory() ) + &#39;\n&#39; );
}
}
}
void KateConsole::slotManualSync()
{
slotSync();
if ( ! m_part || ! m_part-&amp;gt;widget()-&amp;gt;isVisible() )
m_mw-&amp;gt;showToolView( parentWidget() );
}
void KateConsole::slotToggleFocus()
{
QAction *action = actionCollection()-&amp;gt;action(&#34;katekonsole_tools_toggle_focus&#34;);
if ( ! m_part ) {
m_mw-&amp;gt;showToolView( parentWidget() );
action-&amp;gt;setText( i18n(&#34;Defocus Terminal&#34;) );
return; // this shows and focuses the konsole
}
if ( ! m_part ) return;
if (m_part-&amp;gt;widget()-&amp;gt;hasFocus()) {
if (m_mw-&amp;gt;activeView())
m_mw-&amp;gt;activeView()-&amp;gt;setFocus();
action-&amp;gt;setText( i18n(&#34;Focus Terminal&#34;) );
} else {
// show the view if it is hidden
if (parentWidget()-&amp;gt;isHidden())
m_mw-&amp;gt;showToolView( parentWidget() );
else // should focus the widget too!
m_part-&amp;gt;widget()-&amp;gt;setFocus( Qt::OtherFocusReason );
action-&amp;gt;setText( i18n(&#34;Defocus Terminal&#34;) );
}
}
void KateConsole::readConfig()
{
disconnect( m_mw, SIGNAL(viewChanged()), this, SLOT(slotSync()) );
if ( KConfigGroup(KGlobal::config(), &#34;Konsole&#34;).readEntry(&#34;AutoSyncronize&#34;, false) )
connect( m_mw, SIGNAL(viewChanged()), SLOT(slotSync()) );
if ( KConfigGroup(KGlobal::config(), &#34;Konsole&#34;).readEntry(&#34;SetEditor&#34;, false) )
::setenv( &#34;EDITOR&#34;, &#34;kate -b&#34;,1);
else
::setenv( &#34;EDITOR&#34;, m_plugin-&amp;gt;previousEditorEnv().data(), 1 );
}
KateKonsoleConfigPage::KateKonsoleConfigPage( QWidget* parent, KateKonsolePlugin *plugin )
: Kate::PluginConfigPage( parent )
, mPlugin( plugin )
{
QVBoxLayout *lo = new QVBoxLayout( this );
lo-&amp;gt;setSpacing( KDialog::spacingHint() );
cbAutoSyncronize = new QCheckBox( i18n(&#34;&amp;Automatically synchronize the terminal with the current document when possible&#34;), this );
lo-&amp;gt;addWidget( cbAutoSyncronize );
cbSetEditor = new QCheckBox( i18n(&#34;Set &amp;EDITOR environment variable to &#39;kate -b&#39;&#34;), this );
lo-&amp;gt;addWidget( cbSetEditor );
QLabel *tmp = new QLabel(this);
tmp-&amp;gt;setText(i18n(&#34;Important: The document has to be closed to make the console application continue&#34;));
lo-&amp;gt;addWidget(tmp);
reset();
lo-&amp;gt;addStretch();
connect( cbAutoSyncronize, SIGNAL(stateChanged(int)), SIGNAL(changed()) );
connect( cbSetEditor, SIGNAL(stateChanged(int)), SIGNAL(changed()) );
}
void KateKonsoleConfigPage::apply()
{
KConfigGroup config(KGlobal::config(), &#34;Konsole&#34;);
config.writeEntry(&#34;AutoSyncronize&#34;, cbAutoSyncronize-&amp;gt;isChecked());
config.writeEntry(&#34;SetEditor&#34;, cbSetEditor-&amp;gt;isChecked());
config.sync();
mPlugin-&amp;gt;readConfig();
}
void KateKonsoleConfigPage::reset()
{
KConfigGroup config(KGlobal::config(), &#34;Konsole&#34;);
cbAutoSyncronize-&amp;gt;setChecked(config.readEntry(&#34;AutoSyncronize&#34;, false));
cbSetEditor-&amp;gt;setChecked(config.readEntry(&#34;SetEditor&#34;, false));
}
// kate: space-indent on; indent-width 2; replace-tabs on;&lt;/pre&gt;
&lt;!--pagebreak--&gt;
&lt;h3 id=&#34;how-does-the-plugin-look-work-after-install&#34;&gt;How does the Plugin look &amp;amp; work after install ?&lt;/h3&gt;
&lt;p&gt;You first have to go to the Settings -&amp;gt; Configure Kate -&amp;gt; Kate -&amp;gt; Plugins in Kate and activate the Konsole  plugin.&lt;/p&gt;
&lt;h3 id=&#34;more-information-advanced-plugin-stuff&#34;&gt;More information ? Advanced plugin stuff ?&lt;/h3&gt;
&lt;p&gt;To get more information about the plugin interface and its advanced functions please look at the &lt;a href=&#34;http://api.kde.org/4.x-api/kdesdk-apidocs/kate/interfaces/kate/html/index.html&#34;&gt;Kate API documentation&lt;/a&gt; and the &lt;a href=&#34;http://api.kde.org/4.x-api/kdelibs-apidocs/interfaces/ktexteditor/html/index.html&#34;&gt;KTextEditor API documentation&lt;/a&gt; or contact us on &lt;a href=&#34;https://mail.kde.org/mailman/listinfo/kwrite-devel&#34;&gt;our mailing list&lt;/a&gt;!&lt;/p&gt;</description></item></channel></rss>