mieki256's diary



2013/12/20(金) [n年前の日記]

#3 [windows][emacs] NTEmacsを23.4から24.3に変更してみたり

_NTEmacsでshell、eshellの標準入力は出来ない? - kumar8600の日記 という記事を目にして、もしかすると先日 NTEmacs 上で Ruby デバッガが動いてくれなかったのはコレかなと思えてきて。別の NTEmacs でも同じ状態になるのかどうかが気になってきたので、常用してるソレを変えてみようかと。

今まで使っていたのは、NTEmacs 23.4。

_OOTA's page
_GNU emacs windows(x64)バイナリパッケージ : Vector

差し替えるのは、NTEmacs 24.3。

_NTEmacs

環境変数 HOME を指定してある環境なので、~/.emacs を読んでくれたのだけど。色々エラーが出るようで。

とりあえず、~/.emacs 内では、こんな感じに条件分岐を。
(defvar run-unix (or (equal system-type 'gnu/linux) (equal system-type 'usg-unix-v)))
(defvar run-w32 (and (null run-unix) (or (equal system-type 'windows-nt) (equal system-type 'ms-dos))))
(defvar run-ntemacs (equal system-type 'windows-nt))
(defvar run-emacs20 (and (equal emacs-major-version 20) (null (featurep 'xemacs))))
(defvar run-emacs21 (and (equal emacs-major-version 21) (null (featurep 'xemacs))))
(defvar run-emacs22 (and (equal emacs-major-version 22) (null (featurep 'xemacs))))
(defvar run-emacs23 (and (equal emacs-major-version 23) (null (featurep 'xemacs))))
(defvar run-emacs24 (and (equal emacs-major-version 24) (null (featurep 'xemacs))))
(defvar run-meadow (featurep 'meadow))
(defvar run-meadow1 (and run-meadow run-emacs20))
(defvar run-meadow2 (and run-meadow run-emacs21))
(defvar run-meadow3 (and run-meadow run-emacs22))
(defvar run-ntemacs22 (and run-ntemacs run-emacs22))
(defvar run-ntemacs23 (and run-ntemacs run-emacs23))
(defvar run-ntemacs24 (and run-ntemacs run-emacs24))
(defvar run-xemacs (featurep 'xemacs))
(defvar run-xemacs-no-mule (and run-xemacs (not (featurep 'mule))))
(cond
 (run-ntemacs24 (load "~/.ntemacs24"))
 (run-ntemacs23 (load "~/.ntemacs23"))
 (run-ntemacs22 (load "~/.ntemacs22"))
 (run-meadow3 (load "~/.meadow"))
 (run-emacs23 (load "~/.emacs23"))
 (run-emacs22 (load "~/.emacs22"))
 (run-emacs21 (load "~/.emacs21"))
 )

よく分かってないけど、環境変数もちょっと変更。
GNUCLIENTW=-F
GNUDOITW=-F
RUNEMACS=C:\Program Files\GNU\Emacs23\bin\runemacs.exe
RUNEMACS に、使いたい runemacs.exe のパスを指定。おそらく自分の環境は、 _gnuserv を入れてるらしい。たぶん。Meadow を使ってた頃に入れたのではないかと。一般的には emacsclientw.exe を使うのかなと思うのだけどどうなんだろう。

Windows7 のタスクバーに、アイコンが2つ表示されてしまう。 :

runemacs.exe と emacs.exe が別扱いされてしまうのでそうなるらしい。

_NINE GENERATIONS: Emacs (NTEmacs) 23.1 をWindows 7上で少し快適に使う - Part.2
_でらうま倶楽部 : Windows7 (x64) 痒いところに手を届けるカスタマイズ

AppID なるものを弄れば解決できるそうで。

_win7appid - Windows 7 Shortcut Application Id Tool - Google Project Hosting から、Win7AppId1.1.exe をDLさせてもらって、runemacs.exe のショートカットファイル(.lnk)を作成して。DOS窓で、
Win7AppId1.1.exe hoge.lnk GNU.Emacs
を実行。そのショートカットファイルを、タスクバーに表示すればいいらしい。

migemoが働かない。 :

emacs は C-s を叩いて検索する時に日本語入力ができないので、migemoとやらを使ってローマ字入力するだけで検索できるように、と思ったのだけど。これがさっぱり動作せず。

2時間ぐらいアレコレ試して、ようやく動くように…なったかもしれないので今のうちにメモ。

C/Migemo は、 _C/Migemo - KaoriYa から、cmigemo-default-win32-20110227.zip をDLさせてもらったり。解凍して、cmigemo.exe、migemo.dll を、emacs.exe と同じフォルダにコピー。dictフォルダを、~/.emacs.d/ 以下にコピー。

DOS窓上で、cmigemo.exe が動作するか確認する。ヘルプを表示すると、辞書ファイルは -d オプションで指定する、とあるので…。
C:\Prog\emacs24_3\bin>cmigemo.exe --help
cmigemo - C/Migemo Library 1.3 Driver

USAGE: cmigemo.exe [OPTIONS]

OPTIONS:
  -d --dict <dict>      Use a file <dict> for dictionary.
  -s --subdict <dict>   Sub dictionary files. (MAX 8 times)
  -q --quiet            Show no message except results.
  -v --vim              Use vim style regexp.
  -e --emacs            Use emacs style regexp.
  -n --nonewline        Don't use newline match.
  -w --word <word>      Expand a <word> and soon exit.
  -h --help             Show this message.

とりあえず cp932 のほうの辞書を渡してみる。最後が必ず migemo-dict になるはず。フォルダを指定するものかと思い込んで、ずっとハマってた。migemo-dict というファイルを指定しないといかんのね…。
C:\Prog\emacs24_3\bin>cmigemo.exe -d C:\home\mieki256\.emacs.d\dict\cp932\migemo-dict
migemo_open("C:\home\mieki256\.emacs.d\dict\cp932\migemo-dict")=00507B38
clock()=0.101000
QUERY: migi
PATTERN: ([砌汀頻⇒』】)右→>」]|ミギ|ミギ|水際|身綺麗|御教書|みぎ|migi|migi)
QUERY:
^C
とりあえず「migi」と打ち込んで Enter を叩いたら、それらしい文字列が表示されたので、C-c を叩いて強制終了させる。

migemo.el を入手しないといけない。MELPA とやらに登録されてるらしいので、M-x list-packages で一覧を表示。C-s migemo と打てば、migemo が見つかるはず…。「migemo」の上で Enter を押して、「install」を選んだらインストールできたっぽい。

~/.emacs、というか ~/.ntemacs24 に、以下を記述。
;; ----------------------------------------
;; MIGEMO
(when (and (executable-find "cmigemo")
           (require 'migemo nil t))
  (setq migemo-command "cmigemo")
  (setq migemo-options '("-q" "--emacs" "-i" "\g"))
  ;; (setq migemo-options '("-q" "--emacs" "-i" "\a"))
  ;; (setq migemo-options '("-q" "--emacs"))

  ;; migemo-dict のパスを指定
  ;; (setq migemo-dictionary "C~/.emacs.d/migemo-dict/utf-8")
  (setq migemo-dictionary (expand-file-name "~/.emacs.d/dict/utf-8/migemo-dict"))
  (setq migemo-user-dictionary nil)
  (setq migemo-regex-dictionary nil)
  
  ;; 辞書の文字コードを指定.
  (setq migemo-coding-system 'utf-8-unix)
  ;; (setq migemo-coding-system 'euc-jp-unix)
  
  ;; キャッシュ機能を利用する
  (setq migemo-use-pattern-alist t)
  (setq migemo-use-frequent-pattern-alist t)
  (setq migemo-pattern-alist-length 1024)

  (load-library "migemo")
  
  ;; 起動時に初期化も行う
  (migemo-init)

  ;; emacs 24.3 で C-s を働かせるための設定
  (setq search-whitespace-regexp nil)
  
  ;; (eval-after-load "migemo"
  ;;   '(defadvice isearch-search (around migemo-search-ad activate)
  ;; 	 "adviced by migemo."
  ;; 	 (let ((saved-isearch-lax-whitespace isearch-lax-whitespace))
  ;; 	   (when migemo-isearch-enable-p
  ;; 		 (setq migemo-do-isearch t)
  ;; 		 (setq isearch-lax-whitespace nil))
  ;; 	   (unwind-protect
  ;; 		   ad-do-it
  ;; 		 (setq migemo-do-isearch nil)
  ;; 		 (setq isearch-lax-whitespace saved-isearch-lax-whitespace))))
  ;;   )
  
  ;; 起動時に off にする
  ;; (setq migemo-isearch-enable-p nil)
)
  • (executable-find "cmigemo") の部分で、cmigemo.exe が見つかったら設定有効になるようにしてるらしい。
  • (setq migemo-command "cmigemo") で、cmigemo.exe を指定してる。
  • (setq migemo-options '("-q" "--emacs" "-i" "\g")) は、migemo.el の中に記述されてたソレをそのまま真似た。
  • (setq migemo-dictionary (expand-file-name "~/.emacs.d/dict/utf-8/migemo-dict")) で、辞書ファイル migemo-dict の場所を指定。今回は utf-8 の辞書を指定、してるのだと思う。
  • (setq migemo-coding-system 'utf-8-unix) で、文字コードを指定するらしい。

万が一のために、ミニバッファ上で日本語入力できるように設定もしておく。
;; ----------------------------------------
;; ミニバッファで日本語入力可にする
;; NTEmacs 23.3.92以降で有効、らしい

(defun w32-isearch-update ()
  (interactive)
  (isearch-update))
(define-key isearch-mode-map [compend] 'w32-isearch-update)
(define-key isearch-mode-map [kanji] 'isearch-toggle-input-method)

(add-hook 'isearch-mode-hook
          (lambda () (setq w32-ime-composition-window (minibuffer-window))))
(add-hook 'isearch-mode-end-hook
          (lambda () (setq w32-ime-composition-window nil)))

rubydbはやっぱり動かず。 :

M-x rubydb が動くかどうか確認してみたけど、やっぱり入力ができなくて。

M-x eshell も、M-x shell も、動いてるように見えるのだけど…。いや、標準入力とやらが正常に動いてるかどうかの確認方法が思いつかないので、動いてるように見えても一部色々と動いてないのかもしれないけど。

以上です。

過去ログ表示

Prev - 2013/12 - Next
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 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project