3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CoffeeScriptの落とし穴(unmatched OUTDENTで悩まされている方へ)

Last updated at Posted at 2015-07-08

CoffeeScript便利ですよね。簡単かつ見やすい。
ただし、"unmatched OUTDENT"お前さえいなければの話だ…

原因

例えば次のようなコードを見てみましょう。

sample.coffee
msg = 'caution'
if msg == 'caution'
  alert msg
  msg2 = 'run away'
  if msg2 == 'run away'
    alert msg2
...

このようにif文が入れ子状に入るコードはよく見かけますよね。
vim-coffee-scriptを使っているので、自動でインデントもつけてくれて、便利便利…

…とこれが落とし穴なのです。
初期設定ではvimのタブスペースは8文字分ですが、それ以上のインデントをvim-coffee-scriptのsyntaxでつけようとすると、タブスペースと空白スペースが混ざってしまいます。その結果、見た目は合っているように見えるのに実際はインデントがずれていると認識されてしまう…というわけです。
実際にコンパイルすると「unmatched OUTDENT」なるエラーが発生します。
見た目が合っているだけあって、意外と気づきにくいミスかもしれません。

対策

CoffeeScriptを使う上では(特に初心者)、次の設定は必須でしょう。

.vimrc
...
set expandtab "タブスペースの代わりに空白スペースを挿入
set tabstop=2 "tabキーを押した時のインデント幅を設定
set shiftwidth=2 "syntaxのインデント幅を設定
...

これでもう心配ありません。快適なCoffeeScript生活をお送りください。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?