On Sun, 27 May 2001, Guillermo S. Romero / Familia Romero wrote:
> I read the elisp rules as inspiration, and here is what I think we
> should do with Scheme scripts, comments / doubts with :
> - use prefixes for your own functions, so you avoid problems. [does
> Gimp's Scheme provide "encapsulation"? if not, this is a must]
Actually, I believe every Gimp-Fu script is encapsulated but I'm not sure.
In any case, using prefixes is a good idea.
> - indent in Emacs style, with spaces instead of tabs. [maybe we should
> provide pointers to indent apps that do it, not everybody has Emacs.
> Also instructions for common editor, like vim]
I use spaces to indent, because that's how I configured my editor (gvim).
However, some other users may use tabs, and I don't see anything wrong
> - put "(" & ")" in the same line that "text", not alone in other
I personally dislike the usual:
(define (myfunc a)
(if (> a 0)
(sqrt (- 0 a))))
style which puts all the ")"'s on the last line. I prefer C-like style
(define (myfunc a)
(if (> a 0)
(sqrt (- 0 a))
I once sent a message to a mailing-list, I'm a member of, asking why the
Scheme style was not indeed so. The reply I received did not convince me
that it was a good idea. You can find it at:
> - cut lines that are longer than 80. [70?]
I normally indent even expressions. For instance, the pythagoras theorem
(* a a)
(* b b)
In any case, if your lines get too long, one should probably out-source
part of the code as a different function. Most Script-Fu scripts are
almost completely linear so it's not a very big concern.
> - write documentation strings, so the PDB can show something. And
> something useful, not "no info yet".
This is a good idea. I believe I followed it for my "Bugs in a square"
Do you want not to accept scripts that do not follow this regulation?
> - for comments use ";" (right), ";;" (code level), ";;;" (left) and
> ";;;;" (left, separate areas of file).
> - first line of files ";;; filename --- one line description".
> - one blank line, and third ";; Copyright (C) the owner" (the script
> owner(s), not the Gimp owner).
> - license, with the blank lines as separation.
> - another blank line, and headers like ";; header: content". See
> for the list. [put here the list]
> - end files with ";;; filename ends here"
> - do not add "Copyright" to the copyright field in the register
> function, it look weird to see "Copyright: Copyright (C) owner".
> - the path, if the script launchs a dialog, must end with "...", if
> automatic action, do not put "...". [people complain about UI, no? so
> start applying this basic concept]
> - data format as yyyy-mm-dd. Fill with "x" if unknown (2001-05-xx),
> but only if applicable (Copyright is yyyy, not yyyy-xx-xx).
> - add "_" before strings, so can they be translated.
> - provide nice ranges for variables, all that will work, not more (it
> could cause errors), not less (just cos the effect looks weird too
> big, does not mean it can not be used as base for other thing).
> - provide sane defaults, at least for normal uses. Take the common
> cases and apply the script. If a script to remove red eyes look poor
> when you try to remove the red of a car, it is fine, but not if the
> input are faces, and all them "fail".
> - use "foo" string for logos. [which string? logo name? "the gimp"?]
I'd rather people each used the string of each choice. It adds to the
scripts' colour. (I really like Bovination's "Fear the Cow")
> - use constant names when you call plugins, not numbers, if they exist
> (DISCARD is better than 1). Look script-fu-constants.c for them.
> [include a list?]
A must I believe, because they may change in future version.
> Make a pointer to elisp doc, so we give credit about inspiration.
> Explain why, so everyone knows it (the draft is too short). Put it in
> CVS and Gimp site (aka this can be one of the test docs for the new
> I am not a Scheme guru at all, so I guess I have put something stupid
> or miss a basic item. I would like to see comments from Scheme people,
> or lisp users in general.
Script-Fu has the advantage of being easier to compile than the other
scripting interfaces. However, for most practical reasons, I believe I
would prefer scripting with perl, because I can do everything perl does in
Gimp-Perl scripts. (files, sockets, CPAN modules and all)
Script-Fu uses SIOD, which is not an R4RS compatible Scheme
implementation. (For instance, "set!" can create a new variable). Does
anybody know what became of the guile bindings?
> Fixes? Changes? Who decides?
> Gimp-developer mailing list
> [EMAIL PROTECTED]
Shlomi Fish [EMAIL PROTECTED]
Home Page: http://t2.technion.ac.il/~shlomif/
Home E-mail: [EMAIL PROTECTED]
A more experienced programmer does not make less bugs. He just realizes
what went wrong more quickly.
Gimp-developer mailing list