Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Indentation of case statement in sh-script mode

23 views
Skip to first unread message

NIDE Naoyuki

unread,
Jun 2, 2009, 9:34:45 AM6/2/09
to
新出@奈良女子大学です。
どなたか、sh-scriptモードでcase文を

case word in
pattern) # labelはインデントしない
list;; # 本体は1レベル分インデント
esac

のようにする方法をご教授下さい。

(setq-default sh-indent-for-case-label 0)
(setq-default sh-indent-for-case-alt '+)

というのを試してみたのですが、これは期待の動作にならず

case word in
pattern)
list;; # 全然インデントされない…
esac

のようになってしまいます。
ni...@ics.nara-wu.ac.jp

Katsumi Yamaoka

unread,
Jun 2, 2009, 7:29:25 PM6/2/09
to
>>>>> 新出さん wrote:
> どなたか、sh-scriptモードでcase文を

> case word in
> pattern) # labelはインデントしない
> list;; # 本体は1レベル分インデント
> esac

> のようにする方法をご教授下さい。

> (setq-default sh-indent-for-case-label 0)
> (setq-default sh-indent-for-case-alt '+)

> というのを試してみたのですが、これは期待の動作にならず

> case word in
> pattern)
> list;; # 全然インデントされない…
> esac

> のようになってしまいます。

Emacs 22 以下ではだめのようですね。まだ pretest 中の Emacs 23 を
使いたくなければ、23 に付属している sh-script.el を 22 で使うこ
とはできます。Emacs 21 では、ちょっといじっただけではうまくいき
ませんでした。以下の場所に 23 の sh-script.el を置いておきます。

ftp://ftp.jpl.org/pub/tmp/sh-script-23.0.94.el.gz

これを Emacs 22 で使うには、次のようにコンパイルしてください:

$ gunzip --name sh-script-23.0.94.el.gz
$ emacs -batch -eval '(defmacro characterp (form) (list (quote numberp) form))' -f batch-byte-compile sh-script.el

;; characterp は Emacs 23 から登場した built-in 関数です。
;; 関係無いですが、大昔の egg.el や wnn7egg.el を使うと、そこに
;; ある同名の関数が上書きしてしまいます。
--
山岡

NIDE Naoyuki

unread,
Jun 3, 2009, 5:27:59 AM6/3/09
to
新出@奈良女子大学です。

In article <b4md49m...@jpl.org>, yam...@jpl.org writes:
> Emacs 22 以下ではだめのようですね。まだ pretest 中の Emacs 23 を
> 使いたくなければ、23 に付属している sh-script.el を 22 で使うこ

> とはできます。…

ありがとうございます。あいにく最近すっかり軟弱化して、OSのパッケージで
提供されているものより新しいものにはよほどのことがない限り手を出さなくなっ
てしまったので、身の回りがEmacs 21ばかりの現在ではとりあえず打つ手はなさ
そうです。Emacs 22以上に移る日を楽しみにしておきます。

ni...@ics.nara-wu.ac.jp

0 new messages