なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

ドザーのためのEmacs設定

仕事でも趣味でもeclipseを使う生活が続き

Emacsなんてだっせーよな! 家に帰ってeclipseやろーぜ!」

状態な私ですが、ようやくHackersを読了してハッカー精神を取り戻したのをきっかけにemacsを久しぶりに設定したくなってきました。ついでに言うとあまりにも長引くコーディング作業に飽きが生じてきまして、気分を変えるためにemacsを使います。いつもeclipse使ってたらつまんない、けどもeclipseぐらい便利じゃないとイヤン。

とりあえず流れ

MinGW/MSYS環境は揃えているものとする

1,NTEmacsをダウンロードしてくる
とりあえずNTEmacsの23.4をダウンロードする。Cドライブ直下だとMinGWからいじりやすい。
(もっと新しいのでもいいかも)
GNU Emacs - GNU Project - Free Software Foundation (FSF)

基本的にソースコードUTF-8で統一することとする。.emacsに以下の設定を追加。
ネットの海で拾ってきた設定ばかりなので誰が元ネタかわからない。

;; どうせ後で必要なので
(require 'cl)

;; ウィンドウサイズの設定
;; 最大化する命令の定義
(defvar w32-window-state nil)

(defun w32-fullscreen-switch-frame ()
  (interactive)
  (setq w32-window-state (not w32-window-state))
  (if w32-window-state
      (w32-fullscreen-restore-frame)
    (w32-fullscreen-maximize-frame)
    ))

(defun w32-fullscreen-maximize-frame ()
  "Maximize the current frame (windows only)"
  (interactive)
  (w32-send-sys-command 61488))

(defun w32-fullscreen-restore-frame ()
  "Restore a minimized/maximized frame (windows only)"
  (interactive)
  (w32-send-sys-command 61728))

(add-hook 'window-setup-hook
          '(lambda () (w32-fullscreen-maximize-frame))
          )


;; フォント設定 osakaの等倍(※フォントは人によって違うと思うので変えよう)
(add-to-list 'default-frame-alist
             '(font . "-outline-Osaka-等幅-normal-normal-normal-mono-16-*-*-*-c-*-iso8859-1"))
;; UTF-8でソースを書くための設定 Setenv
(setenv "LANG" "ja_JP.UTF-8")

;; 言語環境
(set-language-environment "Japanese")

;; 文字コード
(set-language-environment "japanese")
(prefer-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)

;; Shell Mode
;; MSYS の bash を使用します(msys-1.0.16とかになってるけど、普通は1.0だと思う)
(setq explicit-shell-file-name "c:/MinGW/msys-1.0.16/bin/bash.exe")
(setq shell-file-name "c:/MinGW/msys-1.0.16/bin/sh.exe")
;; SHELL で ^M が付く場合は ^M を削除します。
(add-hook 'shell-mode-hook
	  (lambda ()
	    (set-buffer-process-coding-system 'undecided-dos 'sjis-unix)))
;; shell-mode での保管(for drive letter)
(setq shell-file-name-chars "~/A-Za-z0-9_^$!#%&{}@`'.,:()-")

;; Grep
(defadvice grep (around grep-coding-setup activate)
  (let ((coding-system-for-read 'utf-8))
    ad-do-it))

(setq grep-find-command "find . ! -name '*~' -type f -print0 | xargs -0 lgrep -n -Au8 -Ia ")

;; バックアップを残さない
(setq make-backup-files nil)

2,slimeとCLISPを用意する
lispの対話環境とC言語と直結したLispを用意する(これでLispの世界だけじゃなくてC言語の世界にも出られる…Lisp使ってねーけどな!)

slimeは以下からCVS使って~/.emacs.d/以下に落としてくる
SLIME: The Superior Lisp Interaction Mode for Emacs

$ cd /c/Users/hogehoge/AppData/Roaming/.emacs.d/
$ cvs -d :pserver:anonymous:anonymous@common-lisp.net:/project/slime/cvsroot co slime

CLISPはここからダウンロードする
CLISP - an ANSI Common Lisp Implementation

CLISPMinGWでビルドしたいという奇特な方は以下のエントリをご覧ください
CLISP + msys + mintty - なんとな~くしあわせ?の日記

そして以下の設定を.emacsに追加

;; slime
(setq load-path (cons (expand-file-name "~/.emacs.d/slime") load-path))

;; Lisp用にSLIMEの設定
;; lisp-mode
(setq inferior-lisp-program "clisp")    ; clisp用

(require 'slime)
(slime-setup)

3、auto-installを用意する

MSYSから

$ mkdir ~/.emacs.d/auto-install
$ cd ~/.emacs.d/auto-install
$ wget http://www.emacswiki.org/emacs/download/auto-install.el

# .profileに「alias emacs='/c/emacs-23.4/bin/emacs.exe'」とか追加しておく
$ emacs --batch -Q -f batch-byte-compile auto-install.el

=

;; auto-install
(add-to-list 'load-path "~/.emacs.d/auto-install")
(require 'auto-install)
(auto-install-update-emacswiki-package-name t)
(auto-install-compatibility-setup)
(setq ediff-window-setup-function 'ediff-setup-windows-plain)

4,タブ表示・リドゥ設定・カラーテーマ

タブ表示はかなり便利です。eclipseみたい。
参考になりました:うわっ...私のEmacs、使いにくすぎ?だったら...カスタマイズシヤッセー!!ダァダァシエリイェッスッシェーショーヘイヘイ!!! - 三等兵

;; タブを使う
;; http://www.emacswiki.org/emacs/tabbar.el
(require 'tabbar)
(global-set-key [(control shift tab)] 'tabbar-backward)
(global-set-key [(control tab)]       'tabbar-forward)
(tabbar-mode)

;; リドゥー設定
;; redoできるようにする
;; http://www.emacswiki.org/emacs/redo+.el
(when (require 'redo+ nil t)
  (define-key global-map (kbd "C-z") 'redo))

;; Emacsのカラーテーマ
;; http://code.google.com/p/gnuemacscolorthemetest/
(add-to-list 'load-path "~/.emacs.d/color-theme-6.6.0")
(when (and (require 'color-theme nil t) (window-system))
  (color-theme-initialize)
  (color-theme-renegade))

5,ECB

参考になりました:Emacs Code Browser(ECB)を入れてみた。 - てつじんにっき

$ cd ~/.emacs.d
$ wget http://jaist.dl.sourceforge.net/sourceforge/ecb/ecb-2.40.tar.gz
$ wget http://nchc.dl.sourceforge.net/sourceforge/cedet/cedet-1.0.1.tar.gz
# 展開
$ tar xvf ecb-2.40.tar.gz
$ tar xvf cedet-1.0.1.tar.gz
# コンパイル
$ cd cedet-1.0.1
$ make EMACS=/c/emacs-23.4/bin/emacs.exe
$ cd ../ecb-2.32
$ make EMACS=/c/emacs-23.4/bin/emacs.exe CEDET=../cedet-1.0.1

※ この時emacsが元からもっているCEDETのフォルダは削除しなければ競合が起こったと思います(\elisp以下のだったと記憶)

;; CEDET, ECB用の設定
;; ECBをロードするための設定
(add-to-list 'load-path "~/.emacs.d/ecb-2.40")
(load-file "~/.emacs.d/cedet-1.0.1/common/cedet.el")
(require 'ecb)

6,auto-complete

auto-installでちゃっちゃとインストールしちゃいましょう

;; auto-complete
(add-to-list 'load-path "~/.emacs.d/")
(require 'auto-complete-config)
(global-auto-complete-mode t)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")
(ac-config-default)

7、背景半透明

参考になりました:背景を半透明にする - goryugo

;; 背景を半透明にする
(setq default-frame-alist
      (append (list
               '(alpha . (90 85))
               ) default-frame-alist))



完成図
f:id:panzer-jagdironscrap1:20120912002535j:plain