The rules:
- comments starting with ;;; always have indentation 0
- comments starting with ;; should be aligned with the next line
- comments starting with ; should only appear behind code, so they are simply ignored
- every '(' indents and every ')' unindents
/** kate-scriptThe result:
* name: LISP
* license: LGPL
* author: foo bar
* version: 1
* kate-version: 3.0
* type: indentation
*/
// indent should be called when ; is pressed
triggerCharacters = ";";
function indent(line, indentWidth, ch)
{
// special rules: ;;; -> indent 0
// ;; -> align with next line, if possible
// ; -> usually on the same line as code -> ignore
textLine = document.line(line);
if (textLine.search(/^\s*;;;/) != -1) {
return 0;
} else if (textLine.search(/^\s*;;/) != -1) {
// try to align with the next line
nextLine = document.nextNonEmptyLine(line + 1);
if (nextLine != -1) {
return document.firstVirtualColumn(nextLine);
}
}
cursor = document.anchor(line, 0, '(');
if (cursor) {
return document.toVirtualColumn(cursor.line, cursor.column) + indentWidth;
} else {
return 0;
}
}
;;; fib : number -> numberAs this indenter is scripted, everybody can adapt the style to the own needs.
(define (fib n)
(if (< n 2)
1
(+ (fib (- n 1)) (fib (- n 2)))))
3 comments:
Hey nice work. Its good to have emacs' electric functionality in kate too :)
Wow! Now even hobby hackers can start to add plugins to kate/random part of kde. This seems like a good and nice idea.
One question though, there has been lots about Kross lately in at the planetkde, how come you don't use that instead of writing your own? Not critique in any way, just a question from a user that tries to understand what happens to sweet, sweet KDE=)
Btw, Kate is the best text editor I've used on *nix=)
This is exactly the kind of "Power Feature" I've been arguing for a while that should be provided as scripts. Yours is a perfect example.
I've been using as example the KMail expiry feature: "expire all emails that are 14 days old, except unread emails (30 days), important (never expire) or to-do emails (60 days)".
Can you imagine the UI nightmare that would be a hypothetical dialog configuring indention styles that please every developer under the Sun and their moms?
So, my vision for KDE is that we offer flexible configuration in the UI so that 80-90% can configure to work the way they want, and the rest is scriptable.
Post a Comment