Emacs Lispをぼちぼちな感じでリハビリ中…

うまく復帰できたら何かパッケージ開発をまたやってみたいなと思っています。

Emacs 27.1をWindows10にインストール

2020年10月1日 Emacs 27.1に改訂

EmacsのWindowsへのインストールに関してなにか問題がありましたら気軽に私宛にメール(yuji@minejima.jp)していただくか、このブログエントリにコメントを付けていただければわかる範囲でお手伝いさせていただきます。

キーを押しても、IMEの入力モードが切り替わらないときは、マウスでEmacsウィンドウの端をクリック(横幅を変えるときにドラッグする部分)するとうまくいくようです。

まずEmacsはコントロールキーを多用するので、押しやすいCapsLockをControlに変えてしまう、Ctrl2capドライバをインストールしておきます(2019/07/04日本語サイトからダウンロードできなくなったようで、英語サイトにリンクしました)。

ctrl2capの具体的なインストール方法はググるとでてきます。(管理者権限でコマンドラインを立ち上げて、ctrl2capのディレクトリで”ctrl2cap /install”を実行)

もしくは、

というやり方もあります。


FSF本家でIME関係の対応をしたようなので、GNU公式FTPサイト(http://ftp.gnu.org/pub/gnu/emacs/windows/ )からインストーラをダウンロードしてきます。(32bitバージョンはi686, 64bitバージョンはx86_64)

(バージョン27からインストーラが付いたようです。)


つぎに環境変数HOMEにホームディレクトリを設定します。
スタートボタン横の検索窓に”環境変数”と入れたらうまくいきました。


さっき環境変数HOMEに指定したディレクトリ(フォルダ)の中に”.emacs.d”ディレクトリを作り(runemacs.exeを一度起動すると自動的に作られます)、さらにその中に”init.el”ファイルを作成します。
私は環境変数HOME=”G:\home”にしてあるので、”G:\home\.emacs.d\init.el”ファイルを作りました。

このinit.elファイルはEmacs Lispで各種設定を記述し、emacsが起動するときに自動的に読み込まれ設定が反映されます。

テンプレート的なinit.elを置いておきます。


日本語環境と好みの文字コードを指定するコードはinit.elに次のようにしています。

(set-language-environment "Japanese")
(set-default-coding-systems 'utf-8)
(prefer-coding-system 'utf-8)

フォントの設定はinit.elに次のようにしています。
“Yu Gothic UI”フォントは最新のWindows10に標準でついてくるようです。
“MyricaM M”は、フリーで配布されています

;; 固定等幅フォント
(set-face-attribute 'fixed-pitch    nil :family "MyricaM M")
;; 可変幅フォント
(set-face-attribute 'variable-pitch nil :family "Yu Gothic UI")

;; "MyricaM M-13"の13が文字の大きさなので好みの値にする
(add-to-list 'default-frame-alist '(font . "MyricaM M-13"))
(set-face-font 'font-lock-comment-face       "MyricaM M-13")
(set-face-font 'font-lock-string-face        "MyricaM M-13")
(set-face-font 'font-lock-keyword-face       "MyricaM M-13")
(set-face-font 'font-lock-builtin-face       "MyricaM M-13")
(set-face-font 'font-lock-function-name-face "MyricaM M-13")
(set-face-font 'font-lock-variable-name-face "MyricaM M-13")
(set-face-font 'font-lock-type-face          "MyricaM M-13")
(set-face-font 'font-lock-constant-face      "MyricaM M-13")
(set-face-font 'font-lock-warning-face       "MyricaM M-13")

自分のWindows環境でどんなフォントが使えるか見るには次のようにするとリストが表示されます。

C-b *scratch*  
;; *scratch* バッファに移動します。
;; Emacs内の落書き帳みたいなバッファです。

(w32-select-font) C-j
;; C-jで直前の(w32-select-font)を評価(eval)します。

C-b や C-j は、コントロールキーを押したまま、bやjを押します


Emacsのフレーム(Windowsでいうウィンドウ)の初期表示位置や大きさは以下のコードをいじってinit.elに入れとくと良いです。

;;; Frame size & position
(setq default-frame-alist
      (append (list
               ;;'(foreground-color . "black")
               ;;'(background-color . "LemonChiffon")
               ;;'(background-color . "gray")
               ;;'(border-color . "black")
               ;;'(mouse-color . "white")
               ;;'(cursor-color . "black")
               '(width . 100) ;; Emacsの横幅(文字単位)
               '(height . 61) ;; Emacsの縦幅(文字単位)
               '(top . 0)     ;; Emacsの上端表示位置(ドット単位)
               '(left . 500) ;; Emacsの左端表示位置(ドット単位)
               )
              default-frame-alist))

msys2などをインストールされている方は、Info形式のマニュアルがあるディレクトリを追加しておくと、`C-h i’したときにメニューが統合されます。

(setq Info-default-directory-list (cons "c:/msys64/usr/share/info" Info-default-directory-list))

最後にrunemacs.exeのショートカットをスタートメニューに登録し、起動後の作業ディレクトリが先ほど指定したホームディレクトリになるようにして、おつかれさまでした。 (バージョン27からスタートメニューに起動用アイコンが自動で登録されるようです)

補足として、Emacsの終了は、C-x C-c です。コントロールキーを押したままxキーを押したあと、コントロールキーを押したままcキーを押します。

Emacs 25.1.1をWindows10にインストール

2018年6月現在Emacs新バージョン26.1が出ています。

まずEmacsはコントロール・キーを多用するので、押しやすいCapsLockをControlに変えてしまう、Ctrl2capドライバをインストールしておきます。

つぎに、日本語IMEのインライン変換の不都合をなくすためのパッチがあたったNTEmacsをダウンロードします。

展開して、emacsディレクトリをProgram Filesにでも放り込んでおいてrunemacs.exeのショートカットをスタートメニューにでも作っておけばOK。仰々しいインストール作業はありません。

で、あとは設定ファイル~/.emacs.d/init.elに(環境変数HOMEにてホームディレクトリを指定)、

(global-set-key [kanji] 'toggle-input-method)

を書いておくとESCの下にある漢字キーで日本語IMEがトグル動作するようになります(Windowsでの通常動作。Emacs的にはC-\がデフォルト)。

Emacsのフレーム(ウィンドウ)の初期表示位置や大きさは以下のコードをいじってこれまたinit.elに入れとくと良いです。

;;; Frame size & position
(setq default-frame-alist
(append (list
;;'(foreground-color . "black")
;;'(background-color . "LemonChiffon")
;;'(background-color . "gray")
;;'(border-color . "black")
;;'(mouse-color . "white")
;;'(cursor-color . "black")
'(width . 100)
'(height . 61)
'(top . 0)
'(left . 500)
)
default-frame-alist))

私はフォントはあまりこだわらないほうなのですが、いろいろと設定すると好みにあったようにできるようです。

 


mcomplete.el にmcomplete-history.elをうまく取り込むには

mcomplete.elを使ってくれている人はakihisaさん作のmcomplete-history.elも一緒に

使っているという人が多いことがGoogleで調べてわかった。

mcomplete-history.elは使ったことがなかったので初めてインストールしてみた。

まだ詳しくは分からないが、mcomplete.elの補完ターゲットとなる集合をヒストリ

からもってくるというアイデアだと思う。

mcomplete-history.elを使っている人はM-xすなわちexecute-extended-command

でのキー入力が短縮できるのが気に入っているみたいだ。

mcomplete-history.elは、ターゲットをヒストリから本来の集合にもどすのに

マッチングメソッドの切り替えで行っているみたいだけど、マッチングメソッドの

切り替えとターゲット集合の切り替えはお互いに直交する行為なのでターゲット集合を

切り替える独自のキーバインディングたとえばC-M-Pでターゲット集合の切り替えを

行うのはどうだろうと考えた。標準バインディングがM-Pでヒストリから1つ文字列を

もってくるので分かりやすい気がするからだ。で、ミニバッファを使うコマンドごとに

最初にどの集合をターゲットにするのかカスタマイズできるようにすれば、M-X用の

設定を書いておけばmcomplete-history.elの機能をきれいに吸収できる気がする。

                          history set

                                 ^

                                 |

prefix-matching <—–+——>substring matching

                                 |

                                v

                         completions set

とはいうものの、なんとかGNU Emacs23からの内部関数名変更に由来するバグを

やっとつぶしたばかりなので、まずはelispマニュアルのminibufferの項目をよく読んで

頭の内部の状態ができあがるまでコードに手を加えるのは控えたい。elispも大分

忘れているし。




mcomplete.elのバグ発見

*Completions*バッファ中でのアイテム選択がサブストリングマッチだと失敗するというバグ。

GNU Emacs24.1 Windows7で確認

mcompleteモードが有効な状態で、M-x でミニバッファに行って、substringマッチモードにする。conと入力したあと?で*Completions*バッファを表示させる。*Completions*バッファの中のiconifty-frameをマウスクリックすると、coniconifty-frameコマンドはないというエラーがでる。

今日、一日中このバグをつぶそうとがんばったが失敗。




mcomplete.elはいまでも使われているのか?

2ch プログラム技術板 Emacs Lisp 3スレッド より

948 :デフォルトの名無しさん:2012/07/26(木) 02:25:27.85
elispパッケージのパッケージの話題はここでいいのかな。
mcomplete.elというパッケージの作者です。
しばらくelispから離れていたんですが、昨日あたりからemacs24.1をWindows7にインストールして復帰をもくろんでいます。

mcomplete.elは以前は多少は使ってくれている人がいたんですが、最近の様子はどうなんでしょう。
すでに機能的にobsoleteなpackageになってしまったのか他のpackageがとって替わったとか、
そこらへんの状況を教えていただけないでしょうか。

もし需要があるようならelispのリハビリもかねて何かアップデートしようかなと思っています。

http://homepage1.nifty.com/bmonkey/emacs/index.html

949 :デフォルトの名無しさん:2012/07/26(木) 09:15:05.59
23あたりで補完絡みが色々かわってて、
completion-styles に自分で使いたい補完の種類をいれるみたいになったみたい。
completion-styles-alist に設定出来るスタイルを説明付きでいれるんだけど、
partial-completion-mode みたいなのはここで設定するようになったってのと、
lch ->> list-command-history なんて補完も出来るようになったのが違いか。

kogikuはここらへんの変更についていけなくなってて追加された機能を一部殺さないと使えなくなった。
mcompleteも更新するんであればここら辺の仕様に則って更新してくれると嬉しいなぁ

950 :デフォルトの名無しさん:2012/07/26(木) 13:33:31.21
>>949 レスありがとうございます。とりあえずEmacsのcompletion周りの変更を勉強してみます。
gnu.emacs.helpにも似たような質問を投稿したんですが、Emacs24にバンドルされているidoが
mcompleteと機能的にかぶっているということと。helm、iciclesっていう補完パッケージがあるってことが
分かりました。いまのところあっちではいまでもmcomplete使っているって人はいませんでした。

951 :デフォルトの名無しさん:2012/07/26(木) 13:35:28.26
helmことanythingはmcompleteとは趣が結構ことなるものだよね
個人的にはiciclesとかmcompleteみたいなemacsの元々の性質生かしてるようなのが好きだなあ




GNU Emacs 24.1をWindows7へインストール

8月1日に全面的に書き直し。

CapsLockキーがControlになるようにする。Windows7ではマイクロソフトが配布しているCtrl2Capでできる。

GNUのオフィシャルページで配布しているWindows用バイナリが入ったZipは、日本語IMEに対応していないのでWindowsで使っているIMEでは日本語のインライン入力ができない。このため、日本語IMEに対応するパッチのあたったEmacsのバイナリを配布しているGNUPACKからダウンロードしてくる。

展開でほぼインストール終了。bin/addpm.exeでスタートメニューに登録。bin/runemacs.exe実行ですでに使える状態でEmacsが立ち上がる。

Windowsでは、.emacsファイルが~/.emacs.d/init.elになったとのこと。

2chソフトウェア板のNTEmacsスレより以下のコードをゲット。

.emacs.d/init.el —————————————————

(set-language-environment "Japanese")
(set-default-coding-systems ‘utf-8)
(set-keyboard-coding-system ‘japanese-cp932) ;; おまじないかも

;;; IME の設定
(setq default-input-method "W32-IME")
(setq-default w32-ime-mode-line-state-indicator "[–]") ;; おこのみで
(setq w32-ime-mode-line-state-indicator-list ‘("[–]" "[あ]" "[–]")) ;; おこのみで
(w32-ime-initialize)

;;; IME ON/OFF 時にカーソル色を変える。
(setq ime-activate-cursor-color "#00a000")
(setq ime-inactivate-cursor-color "#000000")
(set-cursor-color ime-inactivate-cursor-color)
;; ※input-method-activate-hook, input-method-inactivate-hook じゃない方がいい感じになる。
(add-hook ‘w32-ime-on-hook
          (function (lambda ()
                      (set-cursor-color ime-activate-cursor-color))))
(add-hook ‘w32-ime-off-hook
          (function (lambda ()
                      (set-cursor-color ime-inactivate-cursor-color))))
—————————————————————–

GNUのNEWSによるといろいろ24.1で機能が強化されたみたいであとで調べる必要あり。

個人的にはCompletionまわりが気になるところ。substringマッチがCompletionに加わったらしい。iswitchb.elの機能が一部取り込まれたようで、switch-to-bufferコマンドがデフォルトでsubstringマッチを使う。

あとgtk3.0に対応とか書いてあったけど、どんな対応の仕方をしたのか気になる。

総じてずいぶんWindowsでもインストールと設定が簡単になったなという印象。




Emacsのリハビリ

を少しずつ進めている。いまはC-hから始まる一連のヘルプ機構を思い出してるところ。
ハッシュが導入されたなぁと思っていたころにelispから離れたので、そこらへんをチェックしときたい。
mcomplete.elも致命的なバグの報告はいただいてないながらも、修正しておきたい事項を1つ2つウェブ上で見つけたのでelispの勘がもどったらバージョンアップしたい。
screen-lines.elはmeadow3では行末移動と行頭移動がうまく動いてなかった。



Emacsと玩物喪志

goo辞書引用———
玩物喪志 意味
無用なものを過度に愛玩して、本来の志を見失ってしまう意で、枝葉末節なことにこだわり、真に学ぶべきことや学問の本質を見失うこと。また、自分の好みで、珍しいものなどを過度に愛好して正しい心を失うこと。▽「玩」はもてあそぶ、むさぼる意。「喪」は失う意。「物ものを玩もてあそべば志こころざしを喪うしなう」と訓読する。
—-goo辞書引用ここまで
Emacsはエディタという体裁をとりながら、現在もっとも手軽に手に入るLispの優秀な統合開発環境となっているため、ハッカー気質の人が何か目的があってエディタとしてEmacsを使いはじめたはずがいつのまにかEmacsをいじること(elispを書くこと)自体が目的化していたといったことが起こりやすい。