The below notes is what was decided at the development sprint in Darmstadt on April 11-13, 2008
Short term goals
- Scripting, part level QtScript
- API for indentation scripts
- Sessions handling
- make text completion work!
- VI-Modes (GSoC-project)
Long term goals
- Scripting at application level (Kate): Kross
- Combination of highlightings & indentations
Table of Contents
- Scripting
- Indentation
- Kate Sessions
- Extending the highlighting system (Highlighting combination)
- Collaborative editing
- Text input modes (vi mode)
- Minor topics: Search & Replace, text completion
- Interface Review
- Simplifying KWrite
Scripting
- Use cases
- indentation
- helper scripts + assign shortcut
- useful for vi-mode scripting
- right now: kjs (barely documented, future uncertain)
- choices: Kross, QtScript
- Kross: language independent, depends on available bindings/plugins at runtime
- QtScript, Kross: simply wrap QObjects (signals/slots, Q_SCRIPTABLE automatically exported)
Kate Part: QtScript
- flexible integration possible
- make it fast for specific use cases (e.g. indentation)
- script header
- meta information: key/value pairs (type, name, mimetype, wildcard, …)
- contact i18n people: how to do translation
- translation possible outside KDE?
Kate App
Indentation
- allow multiple indenters for documents with mixed languages (e.g. php and html)
- document variables: e.g. indent-mode [ ];
- document variables: allow different settings (indent-width, …)
- remove option “Default Indenter”, it does not make sense (really?)
- the script header should state which hl-modes it can indent (instead of mimetype/wildcard in the header)
Auto-completion:
- build word completion plugin into kate part by default
- fix implementation to actually complete stuff
- simplfy the popupmenu (!), just as in KDE3
- 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
Kate Sessions (profiles)
- data stored:
- application plugin config
- file list (opened files)
- window configuration
- editor component config
- ktexteditor plugin config (maybe kpluginselector problems)
- session level configuration / document variables
- kill default.katesession file, always use katerc
- do not show the session chooser at startup, instead, make a good default (katerc)
- clone session: “save as” opens a small dialog with line edit and options like window config, file list
- remove option “restore view config” -> simply always do it
- make sure kate part plugins can save data to sessions: fork kpluginselector, if necessary :)
Highlighting
- extend highlighting system to allow combined highlighting
- add e.g. “entercontext” rules
- separate highlighting loader from hightlight class
Explanation: The purpose of this is to combine template languages such as PHP, EmbPerl, Mason etc with any other syntax highlighting on the fly, 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.
Highlighting / Modes
- 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
- “Fonts & Colors” > Highlight Text Styles
- “Open/Save” > Modes & Filetypes
- -> implement in kate part internally: simply track an active view (the last that got focus)
Collaborative Editing
- example: gobby
- as KTextEditor plugin?
- probably not completely possible right now, missing internal access
- Decibel (realtime communication protocol)
- move communication framework into separate process and use dbus interfaces
- implementation postponed
Input modes (vi mode)
- background: yzis
- rewrite from scratch
- idea of abstracting away “everything” to be flexible (e.g. to support different front ends)
- development stalled 2 years ago
- right now in kate part
- command line already similar to vim’s “input mode”
- keep this mode + extend, if needed
- idea: integrate into kate part: extend/refactor kate to support input modes
- make code reusable (in other modes)
- extend KTE::Commands to support ranges (e.g. <1,10>)
- add “normal mode”
Search & Replace
- bar has big minimum width, works bad in split view
- make it possible to embed widgets in the host application (KTE extension?)
- search & replace over multiple buffers
Interfaces
- 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
Annotation Interfaces
- derive AnnotationViewInterface from AnnotationInterface
- —> allow for KTE::Document and KTE::View
- merge header files into one
Spellchecking Interface / Viewport Interface
- both aim to support Kile doing spellcheck
- conclusions
- spellcheck should be first integrated in katepart
- on-the-fly spellcheck support
- highlighting should feed info which parts are able to be spellchecked (extend highlighting system)
- after this is done, an interface can be invented to help Kile to enrich the spellcheck with meta-info like languages, additional spellcheckable ranges, …
Message Interface
- implement a way to show messages in a non-intrusive way in the view bar
- avoid message boxes by using it, this won’t influence the workflow!
- allow quering the user (buttons like OK, Yes, No, i.e. KMessageBox-like)
- multiple messages should be queued (or stacked?)
- allow both implementation in the part for messages per view and a fallback provided by the application for messages when no view is available
Load/Save Filter Interfaces
- preprocessing/postprocessing of text streamed from/to file
- checking of input/output, warning, error, …
- allow lazy loading, using .desktop files to describe mime-type + wildcards
- allow to trigger usage of the plugins via document vars or mode config
- default: not allow any plugin, user must allow them (!)
KWrite: should be more simple
- extend the kate part to allow blacklist/whitelist highlightings/plugins
- remove some advanced actions from ui file, provide simple mode, dummy mode
- remove hl
- remove folding option
- remove bookmarks (menu, settings)
- remove modus
- remove almost all of extras
- all in all: strip down to make it usable for the average user
Comments
Would be nice too, a multiple selection
Would be nice too, a multiple selection like as in TextMate and jEdit…
Guys, when will we see in-line spelling?
This is my most wanted feature. I don’t know if KDE 4.1’s spelling framework would be included in the next release of Kate.
vi mode!
It’s a very nice idea! :))))
vi mode finally :)
I’m waiting for this since kvimpart died a couple of years ago. Great news! :)
So glad that inline spell-check is in discussion!
Really hope you guys could fix this thing, soon. Thanks!!!
On-the-fly spell check (again!)
Hi,
I am much suprised that on-the-fly spell check is not the top priority in this development schedule. This project is great but CANNOT be competitive if it does include this very important feature for most of the users. It’s like you buy a beautiful car with a lot of gadgets & options and you discover that you can’t drive it because there is no rear-view mirror…
Regards,
Yves
Macro system
Hey!
I’m using Kate and it is great. Anyway I think some fetures should be added. The one thing I miss the most is a macro system. I used to use Textpad, which has great macro system. It helps you with writing code and it speeds up your work. If you would find some way to include macros, Kate would become the very best text editor out there.
thanks
Auto Spellchecker
What happened to the autospell checker? I am curious to know if it is going to be implemented or not. Thanks
My wished feature
Ok, I’ll try to speak english .)
I think kate would reach the absolute perfection if you add a project management feature, for me sometimes is hard to work with many files at a time, so this would be really nice for many people, I guess :-)
I hope to have spoken well.
Session saving
It would be nice if the user were prompted to save sessions which had changed on shutdown/session switches.
Vi Mode
Please, please, get a vi mode to work in Kate.
I have been using vi{m} for over 20 years and am now totally habituated to it. I have tried many other editors and without fail they all make me cuss at them.
While vi is absolutely horrible to learn, it’s actually quite good to use, and most important of all, it’s completely impossible to un-learn.
If there’s time it would be nice to have the ability to switch between a truly genuine vi mode and that of the johnny-come-lately vim mode. They are subtly different.
Looking great!
Nice to see that the sprint turned out great!
Just a note, which has crossed my mind while having done php development for some years now (and envying mac people for their textpad or what was it); could you make it a practice to start documenting the progress with kate more frequently?
I have many times wished I had been able to learn more “where kate is going” or possibly lend a hand with something like janitor jobs.. Not that I do have much time in my hands but some simple document with a table of available, unimplemented, boring parts of the project you main developers do not want to do might sparkle up ideas and a helping hand from the (interested) community.
Lets see what we can do
A bit of help sounds nice! Please join our mailing list, while waiting for the list of jobs on this page to be updated! Also visit #kate at the freenode irc network, for live discussions wiht us :)
... and we are already at it :-)
Of course the work many on these items already started during the sprint, amongst those scripting, a simple interface for KWrite, annotation interfaces (that was already written by Andreas Pakulat, so only few adjustments was needed), session handling, auto-completion. Much more will follow shortly :-)
Post new comment