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