Hatena::ブログ(Diary)

C++でゲームプログラミング

2012-09-04

[][]久々に Emacs を使ってみて

特に Emacs を強いられているわけではないのですが、最近 Emacs の機能とかプラグイン(helm とか)が気になってきたのである程度、Emacs 動作できる環境を作っておこうかなーって事で0から再セットアップしてみました。

一応、EmacsVim と移り変わったりした過去があったり。

あ、記事内で Emacs への不満とか書いている箇所がありますが、別に

Emacs が○○○だから Vim を使いましょう』

みたいな主旨ではないのであしからず。


[Emacs の起動時間]

Emacs の起動時間が遅いって?うちの Vim よりも起動時間が早いぞ!!/


ってことで、特に設定していない Emacs の起動時間が早すぎてビビりました。

いや、まじで。

昔使っていた Emacscygwin + medoww)は結構遅かったんだけどなぁ…。

余計な elisp とかを読み込んでいないのかしら。


[.emacs.d/init.el]

最近?は init.el に設定を書くのが主流らしいので、わたしも init.el に設定を書いていたんですが、なぜか init.el が読み込まれないというよくわからない自体に…。

原因は .emacs ファイルが存在していたことみたいで、.emacs ファイルを削除すれば init.el が読み込まれるようになりました。

なぜ、こんな設定になっているのか…。


[package.el]

プラグインEmacs だとパッケージという方が正しいのかな?)の管理には package.el を使ってみました。

M-x package-list-packages がなかなかいい感じですね。

思ったよりも質が高くて驚きました。

Emacs 上からインストールした場合は特に init.el に追記しなくても autoload されるみたいで、かなり使い勝手がいい印象でした。

こういうのは初心者にはありがたい機能ですね。

neobundle もこんな感じで Vimプラグイン一覧が出てきてその中からインストールするプラグインを選ぶような仕組みがあれば嬉しいんですけども難しいんだろうなぁ…(というか多分 Vimプラグイン管理上無理そう。


あ、あとパッケージ管理には el-get っていうのもあるみたいですね。

こっちは github とかから導入する時に使用するのかしら…?


参考

[閉じ括弧を打った場合に対応する括弧にカーソルが一時的に移動する]

Vimデフォルトだとそんな挙動だった気がするんですが、Emacs でも同じような挙動でした。

こんなクソみたいな機能はデフォルトで有効にして欲しくないんだけどなぁ。

ハイライトぐらいなら嬉しいんだけども…。

Vim にしても Emcas にしてもこういう余計なおせっかいを一括で切る方法は欲しいと思うところ。

まぁ何を切るかの判断も難しいんですけどねぇ(´・ω・`)


[EmacsVim の操作]

Evil というプラグインを使用すれば EmacsVim の操作をエミュレートできるらしいので入れてみました。

思ったよりも Vim ライクに使用することが出来てかなりいい感じですね。

これならある程度 Emacsエディタとして使うことが出来そう。


[所感]

と、言う感じですがさっくりと設定してみました。

2回目の Emacs 入門だったんですが、Vimエディタのセットアップとかは慣れているせいか、最初に使った時よりもサクサク設定できましたね。

当時はパッケージ管理という概念がなくてそこら辺も苦労した記憶があります。

今は Vim の設定をそのまま Emacs で実現するだけなので目的ははっきりしている分、設定方法を調べるだけになっていますね。

ここら辺の目的は VimEmacs で違いといったものはないかなぁ。


あと Vim もそうなのですが、ネット上で情報を調べている場合に、情報があちこちに散らばっていて、どれを参考にすればいいのかが分からないというような事がありますね。

わたしの場合は、なるべく更新日の新しいものを参考にするようにしていますが。

なんというか、

『こうする場合、最近の主流派これだよ!』

みたいなまとめが欲しいですねぇ。


しかし、相変わらず elisp の書き方は慣れないなぁ。

あ、ちなみに init.el はほとんど Vim で書いていました^q^

とりあえず、あとはファイラを入れればある程度は使えるようになりそうな感じ。

とっとと helm とか auto-complete-clang-async.el と試したい。


[参照]

http://blog.supermomonga.com/articles/emacs/emacs-and-vi.html

http://www.nobidome.org/pubdoc/EmacsAndViRef.html

2010-12-03

[][]新規ファイル作成時に使用するテンプレートファイルを指定して作成

auto-insert では、ファイル名(拡張子等)以外で使用するテンプレートファイルの切り替えが出来なかったので、ちょっと改造してみました。


元となった elisp はこちらです。

http://www.02.246.ne.jp/~torutk/cxx/emacs/mode_extension.html


[before]

;; 〜〜〜〜〜〜〜〜〜〜

(setq auto-insert-alist
      (append '(
               ("\\.cpp$" . ["template.cpp" my-template])
               ("\\.h$" . ["template.h" my-template])
              ) auto-insert-alist))
(add-hook 'find-file-hooks 'auto-insert)

;; 〜〜〜〜〜〜〜〜〜〜

[after]

;; 〜〜〜〜〜〜〜〜〜〜

(setq auto-insert-alist
      (append '(
               ("\\.cpp$" . [read-template-file my-template])
               ("\\.h$" . [read-template-file my-template])
               ("\\.hpp$" . [read-template-file my-template])
              ) auto-insert-alist))
(add-hook 'find-file-hooks 'auto-insert)

;; 新規ファイル作成時に使用するテンプレートファイルを設定するように追加
(defun read-template-file ()
  (setq template-file (read-from-minibuffer "template-file :"))
  (insert-file-contents 
     (concat my-template-file-directory
        (concat "/" template-file))))

;; 〜〜〜〜〜〜〜〜〜〜

新規ファイル作成時に使用するテンプレートファイル名を指定して、バッファにコピーするように処理を追加しました。

これで、同じ cpp ファイルでも使用するテンプレートファイルを切り替えることが出来ます。

elisp 的にこれで合っているのか分かりませんが、とりあえず満足。

2010-12-02

[][]新規ファイルのテンプレート

VisualStudio で新規ファイルのテンプレートをつくろうと思ったのですが VC には作成する機能が無いみたいです。

(正確にいえばエクスポートが出来ないみたい)


しょうがないので、VisualStudio の外部ツールで Emacs を呼び出して、autoinsert の機能を使いファイルを生成することに。

う〜ん、なんか二度手間な気がするが……しかし、相変わらず、Emacs の拡張性は素晴らしい。

elisp を使いこなすことが出来ればもっと楽しいことができそうですね。


[参照]

http://www.02.246.ne.jp/~torutk/cxx/emacs/mode_extension.html

http://www.math.s.chiba-u.ac.jp/~matsu/emacs/emacs21/autoinsert.html