Help us understand the problem. What is going on with this article?

Emacs で始める D言語!

More than 5 years have passed since last update.

アイスクリームが美味しい季節になりましたね.
というわけで,この記事は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言語の文法は以下のリンクからどうぞ.

tm_tn
Emacs とか D とかで遊ぶのが趣味です.
https://tom-tan.hatenablog.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした