emacs設定の覚え書き書き

windowsのemacsで生きて行こうと思ってたけど、やっぱりLinuxが最高。

helm 導入 & popwin.el & ソースちょっといじる

helm 導入といっても基本的に特別な設定はしていない。

Anythingから比べ高速化しているし大きく悪くなったところは今のところ見当たらないのでこれでいいだろう。

 

1.GitHubからソースをもってくる⇒emacs-helm · GitHub

自分はhelm本体とhelm-descbindsをもってきた。

helm-descbindsはhelpのキーバインド一覧をhelmのインターフェイスで見ることができるもの。あまり多用はしないがあると便利。

 

2.make、ロードパス、設定

ファイルの量が多いのでmakeコマンドでバイトコンパイル。

前書いた記事にあるロードパスを定義する関数があれば指定したディレクトリ内に放り込めばロードパスは通る。

設定という設定ではないが、

(when (require 'helm-config)
(helm-mode t)
(setq helm-idle-delay 0.3)
)

(when (require 'helm-descbinds)
;; describe-bindingsをhelmに置き換える
(helm-descbinds-mode t))

あとキーバインドの登録だがかなり使う量は少ない・・・

(define-key global-map (kbd "C-2") 'helm-for-files)
(define-key global-map (kbd "C-3") 'helm-find-files)
(define-key global-map (kbd "M-y") 'helm-show-kill-ring)
(define-key global-map (kbd "M-x") 'helm-M-x)

この4つぐらいだろう。いろんな人の設定を見ているとhelm-for-fileとかを"C-x C-h"みたいな二段階のキーバインドにしたりしている人が多いかもしれない。

きっとそれはコードの長さだよな・・・。俺は勉強し始めだから・・・。

 

でpopwin.elだがこいつはhelmをポップアップウィンドウ見たく使うために入れる拡張である。

便利便利。

1.GitHubからソースを持ってくる⇒m2ym/popwin-el · GitHub

2.バイトコンパイル

ファイルひとつなんでemacs で M-x byte-compile-file でバイトコンパイルした。

3.設定

(when (require 'popwin)
(setq helm-samewindow nil)
(setq display-buffer-function 'popwin:display-buffer)
(setq popwin:special-display-config '(("*compilatoin*" :noselect t)
("helm" :regexp t :height 0.4)
)))

これで基本的にhelmはポップアップする。

いろいろな書き方があるが、この書き方でなくては自分の環境では*compilation*バッファの:noselect t が読まれなかった。・・・理由はわからん。

 

さらにここで、helmのいくつかのコマンドはpopwinなしでもポップアップするようになっている。helm-show-kill-ringなんかがそうだ。だがなんというかポップアップウィンドウのサイズがなぜか可変サイズである・・・。ということでソースをいじってpopwinで動作してもらうことにする。

 

helm-ring.elの357行目の (with-helm-show-completion (mark t) (point) とそれに対応する360行目の括弧を一つコメントアウトする。これでpopwinで制御可能になる。

恐らくほかのコマンドも with-helm-show-completion の文と対応する括弧をコメントアウトするとpopwinで制御可能になるだろう。

文脈からわかるように、私はソースコードを読んで確信をもってコメントアウトしたのではなく、ほかのコマンドと見比べてどうやらこの文が関係してるらしいっていうことでコメントアウトしてるのでその辺は察してくれ。