Gedit で外部ツールからスクリプト実行を筆者はよく使う。
今まで ContentType で振り分けしていた。
しかしコレでは gjs, jjs や Python, Python3 で振り分けできない。
考えてみたらシバンで実行すればいいじゃん。
+x パーミッションを付けない状態でもシバンを読取りすればいいのだし。
先頭に #! があればソレで、無いなら今までどおりにすればいいかな。
#!/bin/sh
# シバンがあるならソレで起動、無いなら ContentType 判別
h=`head -n1 $GEDIT_CURRENT_DOCUMENT_PATH`
if [[ $h = \#\!* ]]; then
app=${h#*\!}
echo $app $GEDIT_CURRENT_DOCUMENT_PATH
$app $GEDIT_CURRENT_DOCUMENT_PATH
else
echo @ContentType $GEDIT_CURRENT_DOCUMENT_TYPE
if [[ $GEDIT_CURRENT_DOCUMENT_TYPE = *python ]]; then
python3 $GEDIT_CURRENT_DOCUMENT_PATH
elif [[ $GEDIT_CURRENT_DOCUMENT_TYPE = *javascript ]]; then
gjs $GEDIT_CURRENT_DOCUMENT_PATH
elif [[ $GEDIT_CURRENT_DOCUMENT_TYPE = *shellscript ]]; then
sh $GEDIT_CURRENT_DOCUMENT_PATH
elif [[ $GEDIT_CURRENT_DOCUMENT_TYPE = *vala ]]; then
vala $GEDIT_CURRENT_DOCUMENT_PATH
elif [[ $GEDIT_CURRENT_DOCUMENT_TYPE = *csrc ]]; then
src=`head $GEDIT_CURRENT_DOCUMENT_PATH`
case $src in
*gtk.h*)
echo "Gtk Build"
gcc $GEDIT_CURRENT_DOCUMENT_PATH `pkg-config --cflags --libs gtk+-3.0` ;;
*glib.h*)
echo "GLib Build"
gcc $GEDIT_CURRENT_DOCUMENT_PATH `pkg-config --cflags --libs glib-2.0` ;;
*)
echo "Gcc Build"
gcc $GEDIT_CURRENT_DOCUMENT_PATH ;;
esac
else
echo Non Support File
fi
fi
これでもし他のスクリプト言語に目覚めてもシバンだけで対応できるぞ!
無いと思うけど。
