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