LoginSignup
11
10

More than 5 years have passed since last update.

Emacs で始める D言語!

Last updated at Posted at 2013-07-02

アイスクリームが美味しい季節になりましたね.
というわけで,この記事はD言語 Advent Calendar 2012 の17日目です.

D言語始めたいけどどうしたらいいかわからない人のための記事.
この記事を読めば D言語用の環境が簡単に整うよ!

英語版: Start D with Emacs

DMDのインストール

これがないと始まりません.
dlang.org から自分の環境にあったものをインストールしましょう.

Emacs の exec-path の設定

DMD にパスを通していない場合には,以下の行を.emacs に追加してください.
("/path/to/dmd" は DMD をインストールしたパスに置き換えてください).

.emacs
(add-to-list 'exec-path (expand-file-name "/path/to/dmd"))

package.el 用に MELPA リポジトリを追加

d-mode や flycheck 等のパッケージは MELPA に収録されています.
package-install からこれらをインストールできるように,以下を .emacs に追加してください.

.emacs
(require 'package)
(add-to-list 'package-archives
 '("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)

d-mode.el のインストール

d-mode を使うと,D言語のキーワード等を色分けしてくれるので便利です.
M-x package-install d-mode でインストール出来ます.

Flycheck のインストール

Flycheck を使うと,D言語のエラーチェックを自動でやってくれます.
M-x package-install flycheck でインストール出来ます.

flycheck-d-unittest.el のインストール (任意)

flycheck-d-unittest を入れると,ユニットテストを自動実行してくれるので色々はかどります.
M-x package-install flycheck-d-unittest でインストールしたあと、以下を .emacs に追加しましょう.

.emacs
(setup-flycheck-d-unittest)

Flycheck の細かい設定

.emacs に以下を追加しておくと便利です.

.emacs
(add-hook 'd-mode-hook
          (lambda ()
            (local-set-key  (kbd "C-c C-p") 'flycheck-previous-error)
            (local-set-key  (kbd "C-c C-n") 'flycheck-next-error))

出来上がり!!

やったね! これでD言語書き放題だよ!

これで, Emacs で拡張子が d のファイルを開くと,キーワード等をそれらしく色分けしてくれます.
また,エラー部分には波線が引かれるので文法がわからない初心者も安心です.
C-c C-pC-c C-n で,カーソルの一つ前 (or 後) にあるエラーに飛ぶことができます.

また,以下のように unittest ブロック中に実行したいコードを書くと,自動でコードを実行してユニットテストのエラーを検出してくれます.
main 関数なんかいらんかったんや!

sample.d
#!/usr/bin/env rdmd

unittest{
    assert(1+2 == 3);
    auto arr = [1, 2, 3];
    assert(arr.length == 4); // 間違ってるけど Emacs が教えてくれる!
}

version(unittest) {}
else
void main()
{
    import std.stdio;
    writeln("main 関数とか飾り.");
}

D言語の文法は以下のリンクからどうぞ.

11
10
1

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
11
10