astyleを拡張forに対応させる
(Debianのstatableリポジトリの)astyleが拡張forに対応してないのでsedでどうにかしてみた
sed -e "s/\([:blank:]*for[:blank:]*\)\(.*\):\(.*\)/\1\2;;\3/g" | astyle -j | sed -e "s/\([:blank:]*for[:blank:]*\)\(.*\);;\(.*\)/\1\2:\3/g"
:を;;に置き換えてastyleしたあとに;;をもう一度:に置換する
でもこれだと
;;で無限ループ書く人が使うとえらい目に合う.
そこで,
:
を
;/* dummy for astyle */;
に置き換えて
astyleしたあとに
;/* dummy for astyle */;
をもう一度
:
に置換する
sed -e "s/\([:blank:]*for[:blank:]*\)\(.*\):\(.*\)/\1\2;\/\* dummy for astyle \*\/;\3/g" | astyle -j | sed -e "s/\([:blank:]*for[:blank:]*\)\(.*\);\/\* dummy for astyle \*\/;\(.*\)/\1\2:\3/g"
まさか/* dummy for astyle */などと書くやつはおるまい.
さらにC#とどれにも当てはまらないと全部消えちゃうバグを修正して
sed -e "s/\([:blank:]*for[:blank:]*\)\(.*\):\(.*\)/\1\2;;\3/g" | astyle -j | sed -e "s/\([:blank:]*for[:blank:]*\)\(.*\);;\(.*\)/\1\2:\3/g"
:を;;に置き換えてastyleしたあとに;;をもう一度:に置換する
でもこれだと
;;で無限ループ書く人が使うとえらい目に合う.
そこで,
:
を
;/* dummy for astyle */;
に置き換えて
astyleしたあとに
;/* dummy for astyle */;
をもう一度
:
に置換する
sed -e "s/\([:blank:]*for[:blank:]*\)\(.*\):\(.*\)/\1\2;\/\* dummy for astyle \*\/;\3/g" | astyle -j | sed -e "s/\([:blank:]*for[:blank:]*\)\(.*\);\/\* dummy for astyle \*\/;\(.*\)/\1\2:\3/g"
まさか/* dummy for astyle */などと書くやつはおるまい.
さらにC#とどれにも当てはまらないと全部消えちゃうバグを修正して
#!/bin/sh
case "$GEDIT_CURRENT_DOCUMENT_TYPE" in
"text/x-csrc" )
astyle -c
;;
"text/x-c++src" )
astyle -c
;;
"text/x-csharp" )
astyle -c --brackets=break --indent-namespaces
;;
"text/x-java" )
sed -e "s/\([:blank:]*for[:blank:]*\)\(.*\):\(.*\)/\1\2;\/\* dummy for astyle \*\/;\3/g" | astyle -j | sed -e "s/\([:blank:]*for[:blank:]*\)\(.*\);\/\* dummy for astyle \*\/;\(.*\)/\1\2:\3/g"
;;
"text/x-python" )
;;
"text/x-tex" )
;;
"text/html" )
tidy -utf8 -i --tab-size 2 | unexpand -t 2
;;
* )
cat
;;
esac