ラベル emacs の投稿を表示しています。 すべての投稿を表示
ラベル emacs の投稿を表示しています。 すべての投稿を表示

2007-10-29

.emacs (3)

Emacsでc++のソースを編集すると名前空間がインデント付いてとても嫌なので。あとヘッダファイルは標準ではc-modeなのでこれをc++-modeに加える。

(setq auto-mode-alist
(append '(("\\.h$" . c++-mode))
auto-mode-alist))
(add-hook 'c++-mode-hook
'(lambda ()
(c-set-style "gnu")
(c-set-offset 'innamespace 0)))

ちなみにGNUスタイルは個人的には好きなのでそのまま。ブロックインデント時にカーリーブラケットの有無でインデントが変わるのは視認性が高まって良い。

2007-10-05

.emacs (2)

MacOSXでAquaSKKを使っていると困るのがEmacsのキーバインドとの衝突。^C-jで日本語入力に変わるのですが、アプリケーションにメッセージが渡る前の処理なのでEmacsでキーが捕まえられません。でも他のアプリケーションでは^C-jでの切替は便利なので変えたくありません。

そんな場合に.emacsの設で、(global-set-key key cmd)を使って実行コマンドの割り当てを変更しても良いのですが、もっと根本的で簡単な方法があります。Emacsではkeyboard-translate-tableという変数があるので、これを弄ってやりましょう。

(keyboard-translate ?\C-m ?\C-j)
(keyboard-translate ?\C-j ?\C-m)

ついでにvi(m)バインドに慣れている人はDELも^C-hに割当ててしまいましょう。

(keyboard-translate ?\C-h ?\C-?)
(keyboard-translate ?\C-? ?\C-h)

これでvi(m)とEmacsを使い分ける際の違和感が一つなくなります。

2007-10-04

.emacs (1)

会社の作業環境をターミナル越しのemacsからMeadow 2.10に移行しました。

Windows端末は検証もありますから極力弄らないのが仕事の流儀、だからEmacs lisp内で完結してしまっている環境は大変便利なわけです(本当はEclipseがちっとも好きになれないだけ)。ところでMeadow 2.XXはNetinstallerがあるので拡張の追加が楽でした。SKKを使う人はapelも入れる事をお忘れなく。

現状の.emacsはこんな感じ(memo)です。SKK + Common Lispというありがちな設定の間にPrologなんかを挟んでるのが僕の特徴です(どんだけー)。こういった古い言語の設定もちゃんと今に生きている辺りはEmacsの素晴らしさですねー(?)。

;; Fundamentals
(global-font-lock-mode t)
(show-paren-mode t)
(setq transient-mark-mode t)

;; SKK
(autoload 'skk-mode "skk" nil t)
(global-set-key "\C-x\C-j" 'skk-mode)
(global-set-key "\C-xj" 'skk-auto-fill-mode)
(global-set-key "\C-xt" 'skk-tutorial)
(add-hook 'isearch-mode-hook
(function (lambda ()
(and (boundp 'skk-mode) skk-mode
(skk-isearch-mode-setup)))))
(add-hook 'isearch-mode-end-hook
(function (lambda ()
(and (boundp 'skk-mode) skk-mode
(skk-isearch-mode-cleanup)
(skk-set-cursor-color-properly)))))
(setq skk-large-jisyo "C:/Meadow/packages/etc/skk/SKK-JISYO.L")
(setq skk-tut-file "C:/Meadow/packages/etc/skk/SKK.tut")

;; SWI-Prolog - http://www.swi-prolog.org/ -
(setq auto-mode-alist
(append '(("\\.pl" . prolog-mode))
auto-mode-alist))
(setq prolog-program-name "C:/Program Files/pl/bin/plcon")
(setq prolog-consult-string "[user].\n")

;; CLISP - http://clisp.cons.org/ -
(setq inferior-lisp-program "C:/clisp/clisp")

;; SLIME - http://common-lisp.net/project/slime/ -
(add-to-list 'load-path "C:/Meadow/slime-2.0/")
(require 'slime)
(slime-setup)
(setq slime-net-coding-system 'euc-jp-unix)
(setq common-lisp-hyperspec-root "c:/clisp/doc/HyperSpec/")
(add-hook 'inferior-lisp-mode
(lambda () (inferior-slime-mode t)))
(add-hook 'lisp-mode-hook
(lambda ()
(slime-mode t)
(show-paren-mode)))
(slime-autodoc-mode)


ただもっぱら納品仕事はc++なのでvi(m)で書いています。
c/c++は構文がそもそも行指向なところがありますから、Emacsによるメリットが薄いというのが個人的な印象です。特に対話実行など一切無い世界ですし、<CTRL>や<META>を組み合わせた操作が入らない分、タイピング総数はvi(m)での編集の方が圧倒的に楽かも、と思っています(だったらEclipse使えよという見方もあるけど)。