Zenn
🌈

org-modeのコードブロックのシンタックスハイライトについて

2025/03/24に公開

Emacsのorg-modeは非常に強力なドキュメント作成ツールですが、コードブロック内のシンタックスハイライトに関して少し戸惑うことがあります。デフォルトで色がつく言語もあれば、そうでない言語もあります。
この記事では、org-modeでのコードブロックのシンタックスハイライトの仕組みと、任意の言語を簡単に記述する方法について解説します。

コードブロックのハイライトの仕組み

org-modeでコードブロックを書く際には、以下のような構文を使います:

#+BEGIN_SRC <LANG>
コードをここに書く
#+END_SRC

org-modeのコードブロックはこの <LANG> 部分に言語を指定することで、その言語に応じたシンタックスハイライトが適用されますが、シンタックスハイライトは<LANG>に対応するメジャーモードが存在する場合にのみ適用されます。

https://orgmode.org/manual/Editing-Source-Code.html#index-org_002dsrc_002dlang_002dmodes

つまり、Terraformのコードをハイライトするには:

  1. terraform-mode をインストールする
  2. コードブロックで#+BEGIN_SRC terraformと指定する

こうすることで、Terraformのコードブロックにシンタックスハイライトが適用されるようになります。

短い言語識別子の設定方法

#+BEGIN_SRC terraform でTerraformのハイライトが効くようになりましたが、毎回コードを書くたびにterraformと9文字も打ってられません。ZennやGitHubではtfでTerraform(正確にはHCL)のシンタックスハイライトが効くようになっています。

```tf
resource "aws_security_group" "example" {
...
}
```

org-modeでも同様に短い識別子を使うことができます。そのためには、org-src-lang-modes に言語とモードの組みを追加します:

(add-to-list 'org-src-lang-modes (cons "tf" 'terraform))

こうすることでtfでもTerraformのシンタックスハイライトが適用されます 🎉

Discussion

ログインするとコメントできます