ntemacs 導入メモ

長いどー。

ここでの目標

  • ntemacs23 の導入
  • 日本語入力の設定
  • デフォルトのフォントの設定
  • auto-save-buffers-enhanced のインストール
  • apel のインストール
  • session のインストール
  • color-moccur, moccur-edit のインストール
  • emacs-w3m のインストール
  • migemo (cmigemo) のインストール
  • yatex のインストール

(※2010/11/09 (Tue) 18:58 追記)

本体のDLとか

  • 23.1

http://d.hatena.ne.jp/itouhiro/20091027 を見れば全て完了してしまう充実ぶり。
ありがとうございます。
また,23.1系のDLも itouhiro さんが,アップしてくれています。
http://ai11.net/2009/misc/


23.2だと,日本語入力中のフォントがMSゴシックになってしまう。
23.1だと大丈夫。けど,23.1だと日本語入力中に結構落ちる。
なので,auto-save-buffers-enhanced が必須。これについては後述。
23.2で,日本語入力中のフォントをどうやって変更するかを調べる予定。


でも,ボールドになってもずれないのが,非常に素敵!

環境

予備知識: バイトコンパイルの方法

他にも色々あるだろうけど,とりあえず。

  • emacs で dired して,m でマークしてって,B。

複数ファイルを一括でコンパイルできるので,楽。

% /somewhere/emacs-23.1.1/bin/emacs --batch -f batch-byte-compile ./*.el

これでも一括でできるから,楽だね。

最低限の設定とか。

今までの .emacs.emacs.meadow.el に。ntemacs 用には .emacs.ntemacs.el を
使用することにする。
そして,.emacs には,共通と思われる最低限の設定を書いておく。
以下に,.emacs を一部修正して晒しておきます。

;; -*- coding: utf-8-unix; -*-

(setq user-full-name "xxxx")
(setq user-mail-address "xxxx")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; load-path
(add-to-list 'load-path "~/.emacs.d")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; about backup
;; バージョニングをするかどうか
(setq version-control t)
;; バージョニングする数は,3つ
(setq kept-new-versions 3)
;; 古いバージョンを自動的に消去する
(setq delete-old-versions t)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; enabel narrowing
(put 'narrow-to-region 'disabled nil)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq-default null-device "/dev/null")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; kill-ring size
(setq kill-ring-max 512)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; message buffer size
(setq message-log-max 10000)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; set default diff-format to unified
(setq diff-switches "-u")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; display row number and column number
(setq line-number-mode t)
(setq column-number-mode t)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Key bindings
;; set C-h to Backspace delete
(global-set-key "\C-h" 'backward-delete-char)
(global-set-key "\M-h" 'backward-kill-word)

;; enable "\C-h" to do backward-delete-char in isearch-mode
(add-hook 'isearch-mode-hook
          (function (lambda ()
                      (define-key isearch-mode-map "\C-h" 'isearch-delete-char))))

;(global-set-key "\C-m" 'newline)  ;; CR
;(global-set-key "\C-j" 'newline) ;; makes LF CR
(global-set-key "\M-r" 'query-replace)
;(global-set-key [C-/] 'undo)
(global-set-key "\C-xg" 'insert-register)
(global-set-key "\C-ca" 'apropos)
(global-set-key "\M-?" 'help)
(global-set-key "\C-co" 'occur)
(global-set-key "\C-cl" 'lgrep)
(global-set-key "\C-cr" 'rgrep)
;; repeat-complex-command
(global-set-key "\C-c\C-r" 'repeat-complex-command)

;; originally bound to shrink-window-horizontally
(global-set-key "\C-x-" 'shrink-window)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; change beep.
;; 'asterisk, 'exclamation, 'hand, 'question, 'ok
;(set-message-beep 'exlamation)
(setq visible-bell t)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; kill-summary.el
;; M-y で,kill-ring を表示し,選択,yank。使い方は,ソースファイル中にあり。
;; http://mibai.tec.u-ryukyu.ac.jp/~oshiro/Programs/elisp/kill-summary.el
(autoload 'kill-summary "kill-summary" nil t)
(global-set-key "\M-y" 'kill-summary)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Maximum length for histroy lists
(setq history-length 10000)
 	
;; history から重複を消す
;; ref: http://www.bookshelf.jp/soft/meadow_27.html#SEC348
(defun minibuffer-delete-duplicate ()
  (let (list)
    (dolist (elt (symbol-value minibuffer-history-variable))
      (unless (member elt list)
        (push elt list)))
    (set minibuffer-history-variable (nreverse list))))

(add-hook 'minibuffer-setup-hook 'minibuffer-delete-duplicate)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; emacs終了時に確認メッセージを出す。
;; 誤って終了してしまわないようにするため
(setq confirm-kill-emacs 'yes-or-no-p)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; no limit for print-level
(setq eval-expression-print-level nil)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; The length of global-mark-ring
(setq global-mark-ring-max 128)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; no duplicate in the kill-ring
(defadvice kill-new (before my-kill-new-no-duplicates-before-advice)
  (setq kill-ring (delete (ad-get-arg 0) kill-ring)))
(ad-activate 'kill-new)
;;(ad-deactivate 'kill-new)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; M-x occur で,(symbol-at-point) があればそれをデフォルトにする。
;; regexp-history は汚れないはず。
(defadvice occur-read-primary-args (around my-occur-read-primary-args-around-ad)
  (let ((w (symbol-at-point)))
    (when w
      (setq regexp-history (cons (format "%s" w) regexp-history)))
    ad-do-it
;;     (unless (string= w (car ad-return-value))
;;       ;; w で検索しなかった場合
;;       (setq regexp-history (delete (format "%s" w) regexp-history)))
      ))

(ad-activate 'occur-read-primary-args)
;(ad-deactivate 'occur-read-primary-args)
;(ad-remove-advice 'occur-read-primary-args 'around 'my-occur-read-primary-args-around-ad)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; prerequisite settings done.
;; Now, let's load each specific init file.
(cond
 ((featurep 'meadow)
  (load "~/.emacs.meadow.el"))
 ((and (equal system-type 'windows-nt)
       (= 23 emacs-major-version))
   (load "~/.emacs.ntemacs.el")))

それから,ntemacs 用の設定も少し。

;; IME setting
(setq default-input-method "W32-IME")
(setq w32-ime-mode-line-state-indicator-list '("--" "[あ]" "[--]"))
(w32-ime-initialize)

;; フォント設定
(set-default-font "MeiryoKeConConsolas-11")
(set-fontset-font (frame-parameter nil 'font)
                                    'japanese-jisx0208
                                    '("MeiryoKeConConsolas-11" . "unicode-bmp"))

(setq default-frame-alist
      (append (list
               '(top . 40)
               '(left . 80)
               '(height . 52)
               '(width . 210)
               '(cursor-type . box))
              default-frame-alist))

各ライブラリの導入

auto-save-buffers

上述の通り,ガシガシ落ちても,今のところ,編集した部分を失うという状況には,
陥ってません。感謝ですね。
http://svn.coderepos.org/share/lang/elisp/ からDLして,
load-path の通ったところに置いてバイトコンパイル

ワタシの設定は以下。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; http://svn.coderepos.org/share/lang/elisp/
;; http://0xcc.net/misc/auto-save/
(require 'auto-save-buffers-enhanced)
(auto-save-buffers-enhanced t)
(setq auto-save-buffers-enhanced-interval 1)
apel

必要になることがあるので,先に入れておく。
http://www.kanji.zinbun.kyoto-u.ac.jp/~tomo/elisp/APEL/
で書いてあるとおり,CVSリポジトリからチェックアウトしてコンパイル
例えば,以下。
emacs.exe へのパスは,自信の環境に合わせて下さい。

% EMACS=/cygdrive/e/emacs/emacs-23.1.1/bin/emacs.exe make
# ...
% EMACS=/cygdrive/e/emacs/emacs-23.1.1/bin/emacs.exe make install

どうやってインストールしたかは忘れた。
たしか上記の様にしたはず。
付属のREADME.jaを参照。

session

これがなきゃ話にならん。
まだ,Meadowたんと同居しているので,.session ディレクトリを作成して,
session ファイルを分けといた。
http://sourceforge.net/projects/emacs-session/files/ からDLして,
伸張して,バイトコンパイルして,site-lisp/session に置いた。
置く場所については,悩み中。
ワタシの設定は以下です。
tags-table-set-list を保存しているのがポイント。
これについては,そのうちまとめる予定。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; session.el
;; http://emacs-session.sourceforge.net/
(when (require 'session nil t)
  (setq session-save-file-coding-system 'utf-8-unix) ;; 2010/11/10 追記
  (setq session-save-file (expand-file-name "~/.session/.session.ntemacs"))
  (setq session-initialize '(session places))
  (setq session-globals-max-size 1024)
  (setq session-globals-max-string (* 1024 1024))
  (setq session-globals-include '((kill-ring 512)
                                  (session-file-alist 512)
                                  (file-name-history 512)
                                  (tags-table-set-list 128)))
  (add-hook 'after-init-hook 'session-initialize))
elscreen

これもなきゃ話にならん。
ftp://ftp.morishima.net/pub/morishima.net/naoto/ElScreen/
から,ダウンロード。久しぶりにftpコマンド使った。
ワイルドカードで複数ファイルを一括DLするのは,mgetコマンド。
バイトコンパイルして,site-lisp/elscreen 以下へ。

設定は以下。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; elscren
;; ftp://ftp.morishima.net/pub/morishima.net/naoto/ElScreen/
(require 'elscreen)
color-moccur

moccur-edit とか使うためにね。
バイトコンパイルして,site-lisp/color-moccur 以下へ。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; color-moccur
;; http://www.emacswiki.org/emacs/color-moccur.el
;; http://www.emacswiki.org/emacs/moccur-edit.el
(require 'color-moccur)
(require 'moccur-edit)
w3m

ちょっと手間がかかります。最新版でないと,emacs23に対応していません。
下記をキャッシュを参考にしました。
http://webcache.googleusercontent.com/search?q=cache:sbh4nHg5WPQJ:d.hatena.ne.jp/hiloicoli/20080719/1216477744+emacs23+w3m&cd=3&hl=ja&ct=clnk&gl=jp&lr=lang_en|lang_ja&client=firefox-a


ありがとうございます。
キャッシュになっていて,オリジナルはなくなっているみたいなので,
手を加えて,転載させてもらいます。

% cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot login
% cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot co emacs-w3m

% ls 
emacs-w3m

% mkdir emacs-w3m-cvs

% tar zxf emacs-w3m-1.4.4.tar.gz

% ls 
emacs-w3m  emacs-w3m-1.4.4  emacs-w3m-cvs

% cp -r emacs-w3m-1.4.4 emacs-w3m-cvs

% cp emacs-w3m/* emacs-w3m-cvs

% cd emacs-w3m-cvs

% ./configure --with-emacs="/cygdrive/e/emacs/emacs-23.1.1/bin/emacs.exe" \
--with-lispdir="/cygdrive/e/emacs/emacs-23.1.1/site-lisp/w3m"

% make

% make install

bitmap がなくて怒られましたが,基本リファレンスとかしかみないから,
たぶん問題ないんじゃね? と思って,そのままゴーしました。


設定は以下。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; w3m
(require 'w3m-load)
(setq w3m-display-inline-images t)
(setq w3m-use-symbol nil)
migemo
  • cmigemo をビルド

まずは,チェックアウトしましょう。

% svn checkout 'http://cvs.kaoriya.net/svn/CMigemo/trunk' cmigemo

wordbuf.c を編集する。

% svn diff
Index: wordbuf.c
===================================================================
--- wordbuf.c   (revision 176)
+++ wordbuf.c   (working copy)
@@ -8,6 +8,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <limits.h>
 #include <string.h>
 #include "wordbuf.h"

あとは,doc/README_j.txt に書いてあるとおりにする。

% ./configure
% make cyg

configure したかなぁ? おぼえてねーや。
きっとしているはず。

もひとつおまけ。

% cd dict
% make utf-8

で,インストール。

% make cyg-install
  • migemo.el をインストール

https://gist.github.com/457761 からDL。
tomoya さん作みたいです。ありがとうございます。


ほいで,設定。load-library は,必要なのかしら?

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; migemo
;; http://www.kaoriya.net/#CMIGEMO
;; http://d.hatena.ne.jp/samurai20000/20100907/1283791433
;; http://aki.issp.u-tokyo.ac.jp/itoh/PukiWiki/pukiwiki.php?migemo
;; http://d.hatena.ne.jp/jimo1001/20080615/1213511242
;; migemo.el: https://gist.github.com/457761
(require 'migemo)
(setq migemo-command "cmigemo")
(setq migemo-options '("-q" "--emacs"))
(setq migemo-dictionary "/usr/local/share/migemo/utf-8/migemo-dict")
(setq migemo-user-dictionary nil)
(setq migemo-regex-dictionary nil)
(setq migemo-coding-system 'utf-8-unix)
(load-library "migemo")
(migemo-init)
yatex

http://www.yatex.org/ からDLして,伸張してバイトコンパイル
コンパイル方法は,上記を参考にして下さい。

設定は以下。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; settings for yatex-mode
;; http://www.yatex.org/
(require 'yatex)

;; YaTeX-mode
(setq auto-mode-alist
      (cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist))
(autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t)
(setq dvi2-command "dviout"
      tex-command "platex -r --kanji=utf8"
      dviprint-command-format "dvipsk -Ppdf %s"
      YaTeX-kanji-code 3)

まとめ

eshell の完成度って高くない?
オイラびっくりこいただ。
それから,動作もすっきりした気がする。それは,semantic とか,semantic とか
semanticとかをロードしていないからか?
フォントの表示のされ方もMeadowに比べて綺麗になった気がする。
あと,Ctrl-lを連打してばびった。


色もちょっこす変えたので,スクリーンショットも。

モードラインの一番右の 0.22 とかってなんだろう?
徐々に増えていっている・・・。気になる。


そして最後に,作者様方に大変感謝します。ほんとすごいな,
すばらしいな,と思います。ありがとうございます。