Emacs でのコンパイル後に自動的にウィンドウを閉じるようにする方法

Emacs 上でコンパイルを行うと window が分割されて、コンパイルログの window が表示されます。 その window からエラー箇所にジャンプできて、とても便利です。
ただし、コンパイルに成功していれば、コンパイルの window は必要がないので閉じます。 これを毎回やっているとちょっとめんどくさいです。

そこで、コンパイルが終わって成功していれば、自動で終わるようにする lisp を書いてみました。
以下のコードを .emacs.el に記述してください。

(require 'compile)

(defvar yel-compile-auto-close t
  "* If non-nil, a window is automatically closed after (\\[compile]).")

(defadvice compile (after compile-aftercheck
                          activate compile)
  "Adds a funcion of windows auto-close."
  (let ((proc (get-buffer-process "*compilation*")))
    (if (and proc yel-compile-auto-close)
        (set-process-sentinel proc 'yel-compile-teardown))))

(defun yel-compile-teardown (proc status)
  "Closes window automatically, if compile succeed."
  (let ((ps (process-status proc)))
    (if (eq ps 'exit)
        (if (eq 0 (process-exit-status proc))
            (progn
              (delete-other-windows)
              (kill-buffer "*compilation*")
              (message "---- Compile Success ----")
              )
          (message "Compile Failer")))
    (if (eq ps 'signal)
        (message "Compile Abnormal end"))))
コンパイルに成功していると "Compile Success" のメッセージがミニバッファに出て、 window が自動的に閉じるようになります。
ただし、コンパイルに成功すると window を閉じるので、 warning がでている場合でも閉じてしまいます。 一時的に window が閉じるのをやめたい場合には M-x set-variable 等で yel-compile-auto-close 変数に nil を設定してください。
 

Dart 用 Emacs モード

前に Dart のインストール方法を紹介しました。 Dart には IDE とも言える Dart Editor があリます。 しかし、"コードの編集はやっぱり Emacs "という人は多いはず。
ということで、今回は Dart ファイルを Emacs で編集するためのモード (dart-mode.el)のインストール方法について説明します。

Dart mode

ダウンロード

以下のサイトに dart-mode.el が公開されています。 ダウンロード方法は以前の記事を参考にして下さい。

インストール

取得した dart-mode.el をパス(load-path)の通ったフォルダーに置いておきます。

~/emacs.d/init.el に設定を記述します。
最小限必要なのは次の記述です。
(add-to-list 'auto-mode-alist '("\\.dart\\'" . dart-mode))
(autoload 'dart-mode "dart-mode" "Major mode for editing Dart files" t)
Dart 用として特に新しくキーが割り当てられているものはありませんが、 C++ や Java と同じ cc-mode を基に作られているので、 だいたい同じ機能が使えます。

コンパイル

エラーメッセージ形式の登録

dart2js のコンパイル時のエラーメッセージは標準的な形式なので、 そのまま M-x compile によるコンパイルができます。

デフォルトコマンドの改良

コンパイル時のコマンドをちょっと改良する方法も紹介します。
以下の記述を init.el に追加して下さい。
(defun dart-mode-init ()
  (make-local-variable 'compile-command)
  (let* ((curfile (file-name-nondirectory (buffer-file-name)))
         (outfile (concat (substring curfile 0 -5) ".js")))
    (setq compile-command (format "dart2js -o%s %s" outfile curfile)))
  ;; (set (make-local-variable 'yel-compile-auto-close) nil)
  )

(add-hook 'dart-mode-hook 'dart-mode-init)
引数にファイルを指定したものがデフォルトになり、値もバッファで独立するようになります。 例えばファイル名が hello.dart の場合、デフォルトは次のコマンドです。
dart2js -ohello.js hello.dart
パスやオプションを変えたい場合は format に渡している文字列を変更して下さい。

出力バッファの自動クローズの停止

以前 コンパイル後に出力バッファを自動的に閉じる方法を記述しました。 しかし、 dart2js が jsx と同様に コンパイルに失敗しても正常終了のステータスを返すので、これが使えません。
利用されている方は、 先ほどの設定コードの dart-mode-init 内のコメントアウトを外して、 自動クローズの機能を OFF にしてください。

 

Haxe のインストールとコンパイル (Windows)

JavaScript に変換して使う Haxe という言語があります。
今回はこの Haxe のインストールと JavaScript への変換(コンパイル) 方法についての記事です。


Haxe は JavaScript だけでなく、 C++ などの他の言語でも生成できる特徴です。
ただし、ここでは JavaScript への変換に絞って説明しています。

インストール

Haxe のインストールは以下のページから Windows 用の 自動インストーラーをダウンロードし、 実行します。 環境変数の設定もインストーラーが行なってくれるので、 そのままパス指定しなくてもコマンドが使用できます。

コンパイル

JavaScript への変換(コンパイル)には haxe.exe を使用します。

まず、適当な Haxe のファイルを作成します。 この時ファイル名は クラス名 + ".hx" にしておきます。
Test.hx :
class Test {
    static function main() {
        trace("Hello World !");
    }
}

コンパイルには次のようなコマンドを実行します。
haxe -main クラス名 -js 出力ファイル [オプション]
> haxe -main Test -js hello.js 
-main オプションの後に指定するのは、 プログラムのメイン関数(エントリーポイント)があるクラスです。

オプション

-help, --help オプションを付けて、起動するとオプションの一覧が表示できます。 よく使う機能は次のようなものだと思います。
オプション 機能
-cp <path> ソースファイル検索パスの追加
-v 詳細情報(verbose)モード
-debug ソースマップの生成
--no-output ファイルを生成しない(コンパイルチェック用)
--no-opt 最適化したコードを生成しない
--dead-code-elimination 使用していないメソッドを取り除く
-debug オプションで生成されるソースマップ(hello.js.map) は JavaScript ファイル上のエラー発生箇所と一緒に Haxe ファイルでの対応箇所も表示するためのものです。

compile.hxml の使用

オプションを compile.hxml に記述し、起動時の引数として渡すこともできます。
  > haxe compile.hxml  
compile.hxml :
-js test.js
-main Test

 
このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
31位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
5位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

08月 | 2023年09月 | 10月
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。