Emacsの設定

パッケージ管理

package.elではなく,caskかEl-docというので管理するのが主流らしい. caskを使ってみる.

インストール

$ curl -fsSkL https://raw.github.com/cask/cask/master/go | python # ubuntu
$ brew install cask # OSX
$ export PATH="/home/nobunaga/.cask/bin:$PATH"

初期設定と使い方

$cd .emacs.d
$ cask init    # 初期化時に一度だけ実行.Caskというファイルが生成される.
$ cask install # Caskの指定にしたがって必要なパッケージをインストール.
$ cask update  # updateがあれば更新する.

Caskの書き方

  • (depends-on "package-name") でpackage-nameのパッケージが.emacs.d/.cask以下に保存される

init.elの設定

  • 下記を記入しておくと,Caskに書いたファイルを自動でrequireしてくれる.
(require 'cask "~/.cask/cask.el") ; Ubuntu
(require 'cask)                   ; OSX
(cask-initialize)
  • Caskでinit.elも大分すっきりする.個別で書かないと行けないけど忘れる部分だけ整理しておく.
;; load-path
(setq load-path
      (append (list 
        (expand-file-name "~/.emacs.d/site-lisp")
       load-path))

;; font
(add-to-list 'default-frame-alist '(font . "ricty-10"))

;; keybinds
(define-key global-map "\C-h" 'delete-backward-char)
(define-key global-map "\C-z" 'undo)
(global-set-key [C-tab] 'next-multiframe-window)
(global-set-key [C-S-iso-lefttab] 'previous-multiframe-window)

;; preference
(column-number-mode t)
(line-number-mode t)

補間関係

  • 補間がauto-completeよりもcompanyの例を見るのでそっちにする.特に,C/C++ようにirony-modeも入れておく.Pythonにはcompany-jediを入れておく(jediは入れない).
  • Caskでcompany, company-ironyを指定しておく.
  • 初回起動時にはirony-install-server(c/c++), jedi:install-server(Python)を実行する.(この時にlibClangが無いとエラーになるので,libClang-devを入れておく.Macだとllvm --with-clangで入っている。Cmakeも必要なので注意。)
(global-company-mode 1)
;; c/c++
(add-hook 'c-mode-hook 'irony-mode)
(add-hook 'c++-mode-hook 'irony-mode)
(add-hook 'irony-mode-hook 'irony-cdb-autosetup-comile-options)
(add-to-list 'company-backends 'company-irony)
;; python
(require 'jedi-core)
(setq jedi:complete-on-dot t)
(setq jedi:use-shortcuts t)
(add-hook 'python-mode-hook 'jedi:setup)
(add-to-list 'company-backends 'company-jedi)
;; general
(setq comany-idle-delay 0)
(setq comany-minimum-prefix-length 2)
(setq comany-selection-wrap-around t)
;; (setq company-idle-delay nil) ; 自動補完をしない
(global-set-key (kbd "C-M-i") 'company-complete)
(define-key company-active-map (kbd "C-n") 'company-select-next)
(define-key company-active-map (kbd "C-p") 'company-select-previous)
(define-key company-search-map (kbd "C-n") 'company-select-next)
(define-key company-search-map (kbd "C-p") 'company-select-previous)
(define-key company-active-map (kbd "<tab>") 'company-complete-selection)