Emacsの設定 -見た目編-

必要なパッケージのインストール

$ sudo aptitude install auctex

フォントの設定

Emacsのフォント設定は、-nwオプション起動時のことを考慮し、.emacsではなく、.Xresourcesに記述します。

[~/.Xresources]
#define FONT_LIST  -*-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-16
#define A_FONT     -sony-fixed-medium-r-normal--16-120-100-100-c-80-iso8859-1
#define K_FONT     -misc-fixed-medium-r-normal--12-110-75-75-c-120-jisx0208.1983-0
#define BACKGROUND black
#define FOREGROUND snow

## デフォルトフォント
*fontlist:  FONT_LIST
*font:      A_FONT
*boldfont:  A_FONT
*kanafont:  K_FONT
*kanjifont: K_FONT

# emacs
emacs*background:  BACKGROUND
emacs*foreground:  FOREGROUND
emacs*fontSetList: 0,1,2
emacs.Fontset-0:   -*-fixed-medium-r-normal-*-14-*-*-*-*-*-fontset-14,-efont-biwidth-medium-r-normal-*-14-*-*-*-*-*-iso10646-1,-efont-biwidth-medium-r-normal-*-14-*-*-*-*-*-iso10646-1
emacs.Fontset-1:   -*-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-16,-efont-biwidth-medium-r-normal-*-16-*-*-*-*-*-iso10646-1,-efont-biwidth-medium-r-normal-*-16-*-*-*-*-*-iso10646-1
emacs.Fontset-2:   -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24,-efont-biwidth-medium-r-normal-*-24-*-*-*-*-*-iso10646-1,-efont-biwidth-medium-r-normal-*-24-*-*-*-*-*-iso10646-1

基本設定

背景色をコメントアウトしているのは、透過色のターミナルウィンドウ内で-nwオプション起動した場合、Emacsの背景色も透過させるためです。

[~/.emacs]
;; フレームパラメータ初期値の設定
(setq default-frame-alist
      (append (list
               ;;; default color
;;             '(background-color . "black") ; 背景色
               '(foreground-color . "snow")  ; 文字色
               ;;; cursor
               '(cursor-color . "snow") ; カーソル色
               '(cursor-type . box)     ; カーソル形状
               '(cursor-height . 4)     ; カーソルの高さ
               ;;; mouse cursor
               '(mouse-color . "white") ; マウスカーソル色
               ;;; border
               '(border-color . "black") ; 縁の色
               ;;; scroll bar
               '(vertical-scroll-bars . nil) ; スクロールバー
               ;;; size
               '(width . 80)  ; 横幅(桁数)
               '(height . 70) ; 高さ(行数)
               ;;; location
               '(left . 620) ; 左上隅 x 座標
               '(top . 0)    ; 左上隅 y 座標
               )
              default-frame-alist))

タイトルバー・ツールバー・メニューバーの設定

基本的にマウスは使わず、すべてキーボードで操作するため、スクロールバー、メニューバーは非表示にします。

[~/.emacs]
;; title bar にファイル名を表示
(setq frame-title-format "%f")
;; tool bar を表示させない
(tool-bar-mode 0)
;; menu bar を表示させない
(menu-bar-mode -1)

;; 行番号・桁番号を modeline に表示する
(line-number-mode t)   ; 行番号
(column-number-mode t) ; 桁番号

色の設定

M-x list-colors-displayすると、Emacsで利用可能な色の種類が、実際の色と色の名前の対としてバッファに表示されます。特に、リージョンの設定をしておかないと、デフォルトでは範囲指定箇所がハイライトされないことに注意。

[~/.emacs]
;; 色の設定
(global-font-lock-mode t)
(require 'face-list)
;;; region
(transient-mark-mode t)
(set-face-background 'region "cornflower blue")
(set-face-foreground 'region "snow")
;;; modeline
(set-face-background 'modeline "dark slate gray")
(set-face-foreground 'modeline "snow")
(set-face-bold-p 'modeline nil)
;;; comment
(set-face-foreground 'font-lock-comment-face "MediumPurple1")

;;; search している単語を highlight する
(setq search-highlight t)
;;; replace するときに highlight する
(setq query-replace-highlight t)

;;; cursor 位置の face を調べる関数
(defun describe-face-at-point ()
  "Return face used at point."
  (interactive)
  (message "%s" (get-char-property (point) 'face)))

各種モードにおける設定

全モード共通の基本設定
[~/.emacs]
;; tab ではなく space を使う
(setq-default indent-tabs-mode nil)
;; tab 幅を 4 に設定
(setq-default tab-width 4)
;; バッファの最後の行で next-line しても新しい行を作らない
(setq next-line-add-newlines nil)
;; narrowing を禁止
(put 'narrow-to-region 'disabled nil)
textモード
[~/.emacs]
;; text mode
(add-hook 'text-mode-hook
          '(lambda ()
             (progn
               ;;; 76文字幅でオートインデント
               (set-fill-column 76)
               )))
cモード、c++モード
[~/.emacs]
;; c-mode, c++-mode
(add-hook 'c-mode-common-hook
          '(lambda ()
             ;;; K&R のスタイルを使う
             (c-set-style "k&r")
             ;;; インデントには tab を使う
             (setq indent-tabs-mode t)
             ;;; インデント幅
             (setq c-basic-offset 4)
             ))

(setq auto-mode-alist
      ;;; 拡張子とモードの対応
      (append
       '(("\\.c$" . c-mode))
       '(("\\.h$" . c-mode))
       '(("\\.cpp$" . c++-mode))
       auto-mode-alist))
emacs-lispモード
[~/.emacs]
;; emacs-lisp-mode
(setq auto-mode-alist
      ;;; 拡張子とモードの対応
      (append
       '(("/.el" . emacs-lisp-mode))
       '(("/.emacs-*" . emacs-lisp-mode))
       '(("/.wl" . emacs-lisp-mode))
       auto-mode-alist))
matlabモード
[~/.emacs]
;; matlab-mode
(autoload 'matlab-mode "matlab" "Enter Matlab mode." t)
(autoload 'matlab-shell "matlab" "Interactive Matlab mode." t)
(setq auto-mode-alist
      ;;; 拡張子とモードの対応
      (append
       '(("\\.m\\'" . matlab-mode))
       auto-mode-alist))
verilogモード
[~/.emacs]
;; verilog-mode
; (require 'verilog-mode)
(autoload 'verilog-mode "verilog-mode" "Verilog mode" t)
(setq verilog-indent-level             3
      verilog-indent-level-module      3
      verilog-indent-level-declaration 3
      verilog-indent-level-behavioral  3
      verilog-indent-level-directive   1
      verilog-case-indent              2
      verilog-auto-newline             nil
      verilog-auto-indent-on-newline   nil
      verilog-tab-always-indent        t
      verilog-auto-endcomments         t
      verilog-minimum-comment-distance 40
      verilog-indent-begin-after-if    t
      verilog-auto-lineup              '(all))
(setq auto-mode-alist
      ;;; 拡張子とモードの対応
      (append
       '(("\\.v$" . verilog-mode))
       '(("\\.v\\.erb" . verilog-mode))
       '(("\\.v\\.in" . verilog-mode))
       auto-mode-alist))
latexモード
[~/.emacs]
;; auctex: japanese-latex-mode
(require 'tex-site)
(require 'tex-jp)
(setq TeX-dafault-mode 'japanese-latex-mode)
(setq-default japanese-LaTeX-default-style "jarticle")
(setq TeX-view-style
      '(("^a5$" "xdvi-ja %d -paper a5")
        ("^landscape$" "xdvi-ja %d -paper a4r -s 4")
        ("." "xdvi-ja %d")))
(setq auto-mode-alist
      ;;; 拡張子とモードの対応
      (append
       '(("\\.tex$" . japanese-latex-mode))
       auto-mode-alist))
(add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; reftex-mode