Error: set!: unbound variable: copy-layer
GIMPの自作プラグインを作っている関係で、Script-Fu 青空教室のレイヤー複製スクリプトを「~/gimp-2.5/scripts/duplicate-layer.scm」に保存し、GIMPから呼び出してみると、
実行中にエラーが発生しました: (script-fu-duplicate-layer 1 152) Error: set!: unbound variable: copy-layer
とエラーが返ってきた。
調べてみると、晴れときどきGIMPに、Script-fuのSchemeインタプリタがSIODからTinySchemeへ変わり、未宣言の変数が使えなくなったためだと書いてあった。これを直すには突然!setではなく、letを使わなければいけないらしい。
Script-Fu 青空教室にletの使いかたが載っていたので、これを参考に書き換えてみた。(ついでにメニューバーでの表示位置を「レイヤー」以下に変更している。)
duplicate-layer.scm:
(define (script-fu-duplicate-layer img layer) (let ((copy-layer (car (gimp-layer-copy layer 1)))) (gimp-image-add-layer img copy-layer -1) (gimp-displays-flush) ) ) (script-fu-register "script-fu-duplicate-layer" "<Image>/Layer/Test/Duplicate-layer" "description" "name" "copyright" "date" "RGB*" SF-IMAGE "Image" 0 SF-DRAWABLE "Drawable" 0)
これで問題なく動作した。