As you may know, Kate supports the concept of document variables, also known as modelines. 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’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.
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.
To improve this for the next KDE release (v4.8?), Kate gained a variable / modeline editor this week:
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 “Modes & Filetypes” config page. However, the idea is to support it in the context menu over a Kate modeline in the text editor area as well.
The new code folding is taking shape. Actually it is implemented. 🙂
The next step will be testing it (and debugging, if necessary) and implementing some new features.
Also there are some keyboard shortcuts that didn’t worked so well on the previous version and they need to be fixed too.
If you want to help us with the testing, you can download my clone 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.
Now that the next version of the KDE platform is branched, it’s time to have a look at all the changes in Kate in KDE 4.7.
Current State of Kate
- In KDE 4.6, we replaced the document list by the new File Tree. We got relatively few critical reports, meaning that the file tree seems to work pretty well for the majority.
- Kate has two GSoC projects at the moment: Rewrite of the code folding, and Improving Kate’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.
- About 6 Kate developers are present at the annual KDE conference.
- A year ago, the Kate homepage was redesigned. Looking back the last year, we can say that this has been a success.
Just in case you missed it: you can read about Kate’s state 6 months ago here.
I bring good news about Kate’s folding today. The algorithm was implemented and tested successfully. 😉
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 my Kate clone, “tree_alg” folder.
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.
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.
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.
I think that in ten days at most we will have a new code folding for c style languages. 🙂
All the best,