Setting for GNU Emacs

Setting for GNU Emacs

このページでは,GNU Emacs の設定について紹介しています.

Contents

スケジュール管理

org-mode

Org-Mode は,スケ ジュール管理向けの機能が充実したアウトラインモードです.予定や TODO を 箇条書きにしておけば,それを整形して様々な形式で表示することができるの で,非常に効率的にスケジュール管理が行えます,

img/org_0.gif

Org-Mode を初めて使う人は,まず チュートリアル に目を 通すのがおすすめです.Org-Mode は非常に多くの機能が備わっていますが,こ のチュートリアルで紹介されている機能を使うだけでも十分活用できます.

マニュアルは こちら にあります.

Org-Mode の設定は下記のように行います.コピペする場合は, (setq my-todo-file "~/doc/Schedule/todo.org") の行だけ適宜書き換えてください.

(require 'org)
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
(define-key global-map "\C-ca" 'org-agenda)
; 最初はツリーを開いた状態にする
(setq org-startup-folded nil)
; TODO -> WAIT -> DONE の状態遷移
(setq org-todo-keywords '("TODO" "WAIT" "DONE")
      org-todo-interpretation 'sequence)
; DONE 状態になった時の時刻を記録
(setq org-log-done t)
; アーカイブのファイル名には .archive を追加
(setq org-archive-location "%s.archive::")
; 末尾以外の * を表示しない
(setq org-hide-leading-stars t)
; * の数は奇数個にする
(setq org-odd-levels-only t)
; アジェンダモードで記述元と同期して表示
(setq org-agenda-start-with-follow-mode t)

(setq my-todo-file "~/doc/Schedule/todo.org")
(setq org-agenda-files (list my-todo-file))
; C-x T で todo.org を開く
(defun todo () (interactive) (find-file my-todo-file))
(define-key ctl-x-map "T" 'todo)

キーバインド

編集画面

TAB ツリーの折りたたみ状態の変更
C-u TAB バッファ全体の折りたたみ状態の変更
C-a 全てを表示
C-c C-f 同一階層の次の見出しに移動
C-c C-b 同一階層の前の見出しに移動
M-<RET> 同一階層の見出しを作成
M-<left> 階層を一段上げる
M-<right> 階層を一段下げる
C-c ^ 一つ下の階層の見出しをソート
C-c $ 見出しをアーカイブに移動
C-c / 検索
C-| 選択した範囲を表に変換
C-c C-t TODO の状態を遷移
C-c , TODO に優先順位をつける
C-c C-c チェックボックスのトグル
C-c C-d 期限を設定
C-c C-s 予定を設定
C-c . 現在の日付を挿入
Cu C-c . 現在の日時を挿入
C-c C-x C-i 時間計測を開始
C-c C-x C-o 時間計測を終了

作表モード

行頭が「|」で始まると,作表モードになります.

M-x turn-on-orgtbl とすることで,他のメジャーモードと組み合わせて使用 することもできます.

TAB 次のセルにカーソルを移動
S-TAB 前のセルにカーソルを移動
RET 次の行にカーソルを移動
C-c - 下の行に区切り線を挿入
C-c C-c 表を整形

アジェンダモード

C-c a t TODO の一覧を表示
C-c a a カレンダーの表示
C-c L タイムラインの表示
w 一日ビューに切り替え
d 週間ビューに切り替え

プログラミング

文法チェック

Flymake を使うと,ファイルの保存時 等に自動的に文法チェックを行えます.文法違反している箇所は下記のように ハイライトされます(この例では printf と書こうとして, prinf になっ てしまっている).

img/flymake_0.png

文法チェックは,バックグラウンドで make などのビルドプログラムを走ら せ,その出力を解析することで実現されています.

Flymake の設定は下記のように行います.

(require 'flymake)
; C/C++ 言語の場合に実行するコマンドの定義
; ex. a.cpp を編集している場合,「make a.o」を実行
(defun flymake-get-make-cmdline (source base-dir)
  (list "make"
        (list "-s"
              "-C"
              base-dir
              (concat (file-name-sans-extension source) ".o"))))

; GNUmakefile にも対応させる
(defun flymake-simple-gmake-init ()
  (flymake-simple-make-init-impl 'flymake-create-temp-inplace t t "GNUmakefile"
                                 'flymake-get-c-make-cmdline))
(push '("\\.cpp\\'" flymake-simple-gmake-init) flymake-allowed-file-name-masks)
(push '("\\.c\\'" flymake-simple-gmake-init) flymake-allowed-file-name-masks)

; C/C++ ファイルを開いた場合には自動的に flymake-mode を有効にする
(add-hook 'c-mode-common-hook '(lambda () (flymake-mode)))