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で制御可能になるだろう。
文脈からわかるように、私はソースコードを読んで確信をもってコメントアウトしたのではなく、ほかのコマンドと見比べてどうやらこの文が関係してるらしいっていうことでコメントアウトしてるのでその辺は察してくれ。
emacs基本設定
ちょっと長くなるが基本設定をだらだら書いていこう。
;; スタートアップメッセージを非表示
(setq inhibit-startup-screen t)
;; Emacsからの質問をy/nで回答する
(fset 'yes-or-no-p 'y-or-n-p)
;; show-paren-mode:対応する括弧を強調して表示する
(show-paren-mode t)
(setq show-paren-delay 0) ;表示までの秒数。初期値は0.125
(setq show-paren-style 'expression) ;括弧内も強調
;; ミニバッファの履歴を保存する
(savehist-mode t)
(setq history-length 10000) ;履歴数
;; バックアップファイルを作らない
(setq make-backup-files nil)
;; オートセーブファイルを作らない
(setq auto-save-default nil)
;; 選択範囲に色をつける
(transient-mark-mode t
(set-face-background 'region "DeepSkyBlue") ;選択範囲の色
;; コメントアウトのスタイル
(setq comment-style 'box)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; フレーム関連
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 起動時のフレーム設定
(setq initial-frame-alist
(append (list
;; 表示位置
'(top . 0)
'(left . 0)
;; サイズ
'(width . 190) ;横
'(height . 41)) ;縦
initial-frame-alist)))
(setq default-frame-alist initial-frame-alist)
;; 起動時に分割
(setq w (selected-window))
(setq w2 (split-window w nil t))
(setq w3 (split-window w2 nil))
;; フレームに何文字目かも表示
(column-number-mode t)
;; タイトルバーにファイルのフルパスを表示
(setq frame-title-format "%f")
;; ツールバー非表示
(tool-bar-mode 0)
;; メニューバー非表示
(menu-bar-mode 0)
;; スクロールバー非表示
(scroll-bar-mode 0)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; フォント設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;フォント設定
(set-face-attribute 'default nil
:family "VL ゴシック"
:height 100)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;日本語フォント設定 ;;
;; (set-fontset-font ;;
;; nil ;;
;; 'japanese-jisx0208 ;;
;; (font-spec :family "メイリオ" :size 14)) ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;文字サイズ調節ゾーン
;;数字|数字|数字|数字|数字|数字|数字|数字|
;;1234|1234|1234|1234|1234|1234|1234|1234|
説明がいるとこはまず選択範囲の色のとこかな、デフォの黄色がちょっと嫌だったので変更。
M-x list-colors-displayで使える色名が出るのでそれを参考に。
起動時のフレームサイズを決めるときは *scratch* バッファで
(frame-width)
(frame-height)
をそれぞれC-jでトグルすると現在の横と縦の値がわかる。
分割については、リファレンスマニュアルに詳しいことが書いてるのでそっちを参照するべきだろう。
⇒GNU Emacs Lispリファレンスマニュアル: ウィンドウ
フォント設定は好きなフォントでどうぞ。heightでサイズ設定。
VL ゴッシクでは全角フォント、半角フォントが2:1なのだが、違うフォントを使う場合、日本語フォント設定のとこのコメントアウトを外してsizeを変更して2:1にする。
フォントサイズを変えずに横幅のみを変えて2:1に持っていくやり方もあるが、自分の環境ではemacsがまともに使えないほど重くなってしまったのでこの方法をとった。
文字調節ゾーンの様なものを書いとくと便利。ブログでは残念ながらそろってない。VL ゴシックはマイナーだからね・・・
emacs初期設定
基本的に init-loader を使って設定ファイルを分割管理する。
なので init.el にはロードパスの定義と init-loader の設定のみ記述する。
init-loader.el -- /lang/elisp/init-loader/init-loader.el – CodeRepos::Share – Trac
;; load-pathを追加する関数
(defun add-to-load-path (&rest paths)
(let (path)
(dolist (path paths paths)
(let ((default-directory
(expand-file-name (concat user-emacs-directory path))))
(add-to-list 'load-path default-directory)
(if (fboundp 'normal-top-level-add-subdirs-to-load-path)
(normal-top-level-add-subdirs-to-load-path))))))
;;追加するディレクトリ
(add-to-load-path "elisp" "config")
;;init-loader設定
(require 'init-loader)
(init-loader-load "~/.emacs.d/config")
関数の方は書籍からの丸パクリなのであまり補足はできない。
追加するディレクトリに記述したディレクトリとそのすべてのサブディレクトリがロードパスに追加される。結構便利。
ロードパスを定義した elisp に拡張機能を config に分割した設定をいれてゆく。
mingw & cygwin & emacs でwindows7 64bit用環境構築
最終編集日 2013/8/21
mingwのgccとcygwinのgccを共存させた環境を作る。
1.mingw-w64 のインストール
Mingw-buildsのインストーラーをダウンロード。
Version は最新のものを、Architecture はx64を、Threads はwin32
Exception はC++の例外処理らしいが、まだC++は触ったことがないので適当に。
インストールフォルダがかなり奥まっているのでmingw64をCドライブ直下に持ってくる。
ここは好みだろう。
2.cygwin のインストール
64bit用インストーラーダウンロード。
デフォルトのパッケージに追加で以下を入れた
zsh
gcc-core
make
3.emacs for gnupack のインストール
好きなバージョンをダウンロード。
Cドライブ直下に解凍。
フォルダ名がちょい長いので、後ろのコンパイル日を消去。
4.環境変数の設定 -- PATH,HOME,SHELL追加
ユーザー環境設定に追加させるのが楽なのでそっちに足す。
PATHに C:\mingw64\bin と C:\cygwin64\bin を追加。
mingwの方を優先させたいので、必ず C:\mingw64\bin の方を前に記入。
HOMEにemacsの設定ディレクトリ、シェルの設定ファイルを置くためのディレクトリを設定。
自分はC:\emacs-24.2\home とした。
SHELLはemacsのログインシェルにしたいプログラムを設定。
もちろんzshを設定。C:\cygwin64\bin\zsh.exe
追記:2013/8/21
makefileを使うためにPATHにC:\emacs-24.2\binを追加する
かなり雑に書いたので不足があるかもしれないので、気付いたらどんどん加筆してゆく。