~/.emacsへの雑多な設定

HOME > それいけ Emacs > ~/.emacsへの雑多な設定
Last modified: Sat Mar 31 20:47:36 +0900 2012

より新しいバージョンはEmacs実践入門 - おすすめEmacs設定2012 - ククログ(2012-03-20)にあります。

キーバインド

;;; キーバインド
(define-key global-map "\C-h" 'delete-backward-char) ; 削除
(define-key global-map "\M-?" 'help-for-help)        ; ヘルプ
(define-key global-map "\C-z" 'undo)                 ; undo
(define-key global-map "\C-ci" 'indent-region)       ; インデント
(define-key global-map "\C-c\C-i" 'dabbrev-expand)   ; 補完
(define-key global-map "\C-c;" 'comment-region)      ; コメントアウト
(define-key global-map "\C-c:" 'uncomment-region)    ; コメント解除
(define-key global-map "\C-o" 'toggle-input-method)  ; 日本語入力切替
(define-key global-map "\C-\\" nil) ; \C-\の日本語入力の設定を無効にする
(define-key global-map "\C-c " 'other-frame)         ; フレーム移動

フレーム

;;; 初期フレームの設定
(setq initial-frame-alist
      (append
       '((top                 . 22)    ; フレームの Y 位置(ピクセル数)
	 (left                . 600)   ; フレームの X 位置(ピクセル数)
	 (width               . 81)    ; フレーム幅(文字数)
	 (height              . 50))   ; フレーム高(文字数)
       initial-frame-alist))

;;; 新規フレームのデフォルト設定
(setq default-frame-alist
      (append
       '((width               . 81)	; フレーム幅(文字数)
	 (height              . 50))	; フレーム高(文字数)	
       default-frame-alist))

日本語の設定

環境変数LANGをja_JP.UTF-8やja_JP.eucJPなどに設定して おくこと。

;;; Localeに合わせた環境の設定
(set-locale-environment nil)

ホイールマウス

;;; ホイールマウス
(mouse-wheel-mode t)
(setq mouse-wheel-follow-mouse t)

;;; 色を付ける
(global-font-lock-mode t)
(setq font-lock-support-mode 'fast-lock-mode)
(setq font-lock-maximum-decoration t)
(setq fast-lock-cache-directories '("~/.emacs-flc" "."))

括弧

;;; 対応する括弧を光らせる。
(show-paren-mode 1)

ツールバー

;;; ツールバーを消す
(tool-bar-mode 0)

バックアップファイル

;;; バックアップファイルを作らない
(setq backup-inhibited t)

オートセーブファイル

;;; 終了時にオートセーブファイルを消す
(setq delete-auto-save-files t)

補完

;;; 補完時に大文字小文字を区別しない
(setq completion-ignore-case t)

;;; 強力な補完機能を使う
;;; p-bでprint-bufferとか
;;(load "complete")
(partial-completion-mode 1)

;;; 補完可能なものを随時表示
;;; 少しうるさい
(icomplete-mode 1)

カーソル

;;; カーソルの点滅を止める
(blink-cursor-mode 0)

;;; カーソルの位置が何文字目かを表示する
(column-number-mode t)

;;; カーソルの位置が何行目かを表示する
(line-number-mode t)

スクロール

;;; スクロールを一行ずつにする
(setq scroll-step 1)

;;; スクロールバーを右側に表示する
(set-scroll-bar-mode 'right)

;;; 行の先頭でC-kを一回押すだけで行全体を消去する
(setq kill-whole-line t)

;;; バッファの最後でnewlineで新規行を追加するのを禁止する
(setq next-line-add-newlines nil)

;;; 最終行に必ず一行挿入する
(setq require-final-newline t)

;;; 一行が 80 字以上になった時には自動改行する
(setq fill-column 80)
(setq-default auto-fill-mode t)

メニューバー

;;; emacs -nw で起動した時にメニューバーを消す
(if window-system (menu-bar-mode 1) (menu-bar-mode -1))

圧縮ファイル

;;; 圧縮されたファイルも編集できるようにする
(auto-compression-mode t)

emacsclient

;;; emacsclient サーバを起動
(server-start)

タイトルバー

;;; タイトルバーにファイル名を表示する
(setq frame-title-format (format "emacs@%s : %%f" (system-name)))

モードライン

;;; モードラインに時間を表示する
(display-time)

;;; 現在の関数名をモードラインに表示
(which-function-mode 1)

略語

;;; 略語定義ファイルの読み込み
;;; ~/site-lisp/.abbrev_defsが存在していなかったら読み込まない
(let ((file "~/site-lisp/.abbrev_defs"))
  (setq abbrev-file-name file)
  (if (file-exists-p file)
      (quietly-read-abbrev-file file)))

;;; 略語定義が変更されていたら黙って保存
(setq save-abbrevs 'silently)

;;; デフォルトでAbbrevモードにする
(setq default-abbrev-mode t)

タイムスタンプ

;;; 最終更新日の自動挿入
;;;   ファイルの先頭から 8 行以内に Time-stamp: <> または
;;;   Time-stamp: " " と書いてあれば、セーブ時に自動的に日付が挿入される

(require 'time-stamp)

;; 日本語で日付を入れたくないのでlocaleをCにする
(defun time-stamp-with-locale-c ()
  (let ((system-time-locale "C"))
    (time-stamp)
    nil))

(if (not (memq 'time-stamp-with-locale-c write-file-hooks))
    (add-hook 'write-file-hooks 'time-stamp-with-locale-c))

(setq time-stamp-format "%3a %3b %02d %02H:%02M:%02S %Z %:y")

画像

;;; 画像ファイルを表示する
(auto-image-file-mode t)

自動挿入

;;; 自動でファイルを挿入する
(auto-insert-mode t)

セッションを保存

;;; セッションを保存する
;;; 初めは手動でM-x desktop-saveしなければいけない
(desktop-load-default)
(desktop-read)

GC

;;; 次のGCまでに使用可能なバイト数
(setq gc-cons-threshold 4096000)

最近使ったファイル

;;; 最近使ったファイルを保存(M-x recentf-open-filesで開く)
(recentf-mode)