開発で使っているUbuntu12.04のパッケージのemacsのバージョンが23ということもあり、23を使っていたのですが、先日遅ればせながら24にアップデートしてパッケージ周りを見直しました。便利なパッケージや設定を紹介します。
パッケージ管理
24からpackage.elが標準でバンドルされていて、melpla、marmaladeという非公式なリポジトリも利用可能です。
1 2 3 4 |
(require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/")) (package-initialize) |
フォント設定
いままでVLゴシックを使っていましたが、Ricty Diminishedに移行しました。
ttfファイルを~/.fontsにコピーしてフォントキャッシュを再作成して~/.emacs.d/init.elに以下を追加すればOKです。
フォントキャッシュの再作成
1 |
$ fc-cache -vf |
1 2 3 4 5 6 7 8 9 10 11 12 |
(set-face-attribute 'default nil :family "Ricty Diminished Discord" :height 110) (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 (cons "Ricty Diminished Discord" "iso10646-1")) (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0212 (cons "Ricty Diminished Discord" "iso10646-1")) (set-fontset-font (frame-parameter nil 'font) 'katakana-jisx0201 (cons "Ricty Diminished Discord" "iso10646-1")) |
helm
anythingの後継で、関連パッケージの開発も活発に行われています。キーバインドに違和感があるのでキーバインドを変更しています。
1 2 3 4 5 6 7 8 9 10 |
(require 'helm-config) (global-set-key (kbd "C-c h") 'helm-mini) (helm-mode 1) (custom-set-variables '(helm-ff-auto-update-initial-value nil)) (define-key helm-c-read-file-map (kbd "TAB") 'helm-execute-persistent-action) (define-key helm-c-read-file-map (kbd "<C-backspace>") 'backward-kill-word) (require 'helm-descbinds) (helm-descbinds-mode) (require 'helm-ls-git) (require 'helm-ag) |
icicles
1 2 3 4 |
(require 'icicles) (icy-mode) (setq icicle-sort-function nil) (setq icicle-sort-functions-alist nil) |
multi-term
複数のターミナルを開くことができます。24.3からは文字色の指定方法が変更されています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
(require 'multi-term) (add-hook 'term-mode-hook '(lambda () (setq show-trailing-whitespace nil))) (global-set-key (kbd "C-c t") '(lambda () (interactive) (multi-term))) (global-set-key (kbd "C-c n") 'multi-term-next) (global-set-key (kbd "C-c p") 'multi-term-prev) (setq multi-term-program shell-file-name ansi-term-color-vector [term term-color-black term-color-green term-color-yellow term-color-blue term-color-magenta term-color-cyan term-color-white]) |
migemo
ローマ字入力で日本語検索ができます。ruby版を使っていましたが、C版に移行しました。Ubuntu12.04にはcmigemoのパッケージも用意されていますが、辞書ファイルの文字コードがUTF-8ではないので、ソースから入れました。
1 2 3 4 5 6 7 8 |
(setq migemo-dictionary "/usr/local/share/migemo/utf-8/migemo-dict") (setq migemo-command "cmigemo") (setq migemo-options '("-q" "-e")) (setq migemo-user-dictionary nil) (setq migemo-regex-dictionary nil) (setq migemo-coding-system 'utf-8) (load-library "migemo") (migemo-init) |
magit, git-gutter
バージョン管理システムgit関連。magitは従来から使っていたのですが、git-gutterを新たに追加しました。コミットからの変更箇所が一目で分かります。
1 2 3 |
(require 'magit) (require 'git-gutter) (global-git-gutter-mode +1) |
flycheck
構文チェックにはflymakeを使っていましたが、flycheckに移行しました。flymakeは言語ごとにパッケージをインストールする必要がありましたが、flycheckではそれ自身で多くの言語に対応していて簡単に導入できます。
1 2 |
(require 'flycheck) (add-hook 'after-init-hook #'global-flycheck-mode) |
web-mode
htmlの編集にはhtml-helper-modeを使っていましたが、インデントに不満がありました。web-modeでインデントの問題が解消されました。
1 2 3 4 |
(require 'web-mode) (add-to-list 'auto-mode-alist '("\\.html\\'" . web-mode)) (add-to-list 'auto-mode-alist '("\\.tpl\\'" . web-mode)) (add-to-list 'auto-mode-alist '("\\.php\\'" . web-mode)) |
elscreen
emacs上でscreenライクなインターフェイスを実現できます。パッケージからインストールした新しいバージョンでは、以下の1行を書くだけで利用できます。最近はtabbarというパッケージもあるようです。
1 |
(elscreen-start) |
sdic
英辞郎の検索に使っています。
1 2 3 4 5 6 7 8 9 10 |
(autoload 'sdic-describe-word "sdic" "英単語の意味を調べるW" t nil) (autoload 'sdic-describe-word-at-point "sdic" "カーソルの位置の英単語の意味を調べる" t nil) (global-set-key "\C-cw" 'sdic-describe-word) (global-set-key "\C-cW" 'sdic-describe-word-at-point) (setq sdic-eiwa-dictionary-list '((sdicf-client "/usr/share/dict/eijiro112.sdic"))) (setq sdic-waei-dictionary-list '((sdicf-client "/usr/share/dict/waeiji112.sdic" (add-keys-to-headword t)))) (setq sdic-default-coding-system 'utf-8-unix) |
mozc
emacsで日本語入力にmozcが使えます。
1 2 3 |
(require 'mozc) (setq default-input-method "japanese-mozc") (define-key global-map "\C-o" 'toggle-input-method) |
w3m
emacsでw3mが使えます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
(setq w3m-profile-directory "`/.w3m") (setq w3m-language "Japanese") (setq w3m-use-japanese-menu t) (require 'w3m) (require 'w3m-session) (add-hook 'w3m-mode-hook '(lambda () (define-key w3m-mode-map "W" 'w3m-session-save) (define-key w3m-mode-map "L" 'w3m-session-load) (define-key w3m-mode-map "\C-c\C-k" 'copy-region-as-kill) (define-key w3m-mode-map "\C-t" 'other-window-or-split) (setq show-trailing-whitespace nil))) (setq newsticker-html-renderer 'w3m-region browse-url-browser-function 'w3m-browse-url) |
sequential-command
コマンドを連続入力した場合に動作を変えることができます。ちょっとしたツールですが便利です。
1 2 3 |
(require 'sequential-command-config) (global-set-key "\C-a" 'seq-home) (global-set-key "\C-e" 'seq-end) |
各種言語モード
php-mode, js2-mode, less-css-mode, ruby-mode, lua-modeなどの言語モードを使っています。
他にもいくつか使ってるモードもありますが、主なものをざっと並べてみました。