ThinkPad X1 Carbonをカスタマイズする (Emacs編)

インストールと起動

  1. GNU Emacs から、Windows版 をダウンロード。 今回は emacs-25.2-x86_64.zip にした。 zipを展開して、適当な場所に保存。
  2. Windows emacsの実行exeは 「emacs-XX/bin/runemacs.exe」。 これをショートカットにしてクリック起動でも良いが、 Windowsキー → "emacs" → [RET] で起動できるようにしたい。

    f:id:maskaw:20180126214526p:plain:w200

  3. ここ(ITpro) を参考にして、設定を行った。

    1. エクスプローラーを開き、アドレス欄から「 shell:start menu 」を入力。
    2. 表示されたディレクトリに runemacs.exe のショートカット「emacs」 を入れる。

    f:id:maskaw:20180126214532p:plain:w330

設定

はじめに

フォントから パッケージまで、全て 設定ファイルに手書きしても良いが。 (そこまでemacs-lisp に詳しくないので)GUIで出来る部分はGUIでささっと設定する。

[Option] タブから以下、設定した。

  • [Highlight Matching Parentheses] (対応する括弧をハイライト) をONに。
  • [Show/Hid] タブより
    • [Tool-bar] をOFFに。
    • [Time,Load and Mail] をONに。
    • [Column Numbers] をONに。
    • [Set Default Font] でフォントを「IPAゴシック」に設定する。
  • 設定が終わったら [Save Options] で設定を保存。 (好みに合わせて他の設定もいじってみてください)

f:id:maskaw:20180126214537p:plain:w350

IPAゴシックについて

IPAが公開している等幅フォント (https://ipafont.ipa.go.jp)。 org-mode で表を使用するときに、等幅フォントだと全角半角混じりでも 表の体裁が崩れない。

f:id:maskaw:20180126214523p:plain:w150

同じ等幅フォントとして、Myrica (https://myrica.estable.jp/)もある。 縦棒 (|)の表記が個人的に好きでは無かったので、今回はIPAゴシックを選択した。

f:id:maskaw:20180126214609p:plain:w150

有料だが、個人的にはHGゴシックM がおすすめ。 社用PCはこちらにしている。

http://designpocket.jp/dl_font_category/detail.aspx?bid=19951

.emacs

先程設定した情報は、 %USERPROFILE%/AppDara/Roaming (大体 /Users/%USERNAME%/AppData/Roaming) 配下に .emacsファイルとして保存されている。 この .emacsファイルに追加の設定を加えていく。

非パッケージ、一般

;; --- general ---

;; デフォルトエンコードを utf-8にする
(set-default-coding-systems 'utf-8-dos)

;; 起動時の Emacsロゴ等、メッセージを出ないようにする
(setq inhibit-startup-message t) 

;; メッセージ音を出さないようにする
(set-message-beep 'silent)

;; C-x C-k (Ctrl押しながら "xk") で現在のバッファを閉じる
;; 通常は C-x k (Ctrl押しながら "x"、その後 "k"押下)
(defun my-kill-current-buffer () 
  (interactive) 
  (kill-buffer (current-buffer))) 
(define-key global-map (kbd "C-x C-k") 'my-kill-current-buffer) 

;; 行頭で C-k (kill-line) で行ごと削除する
(setq kill-whole-line t) 

;; 左端に行数を表示させる + 色の設定
(global-linum-mode t) 
(set-face-attribute 'linum nil 
                    :foreground "#fe4b4b" 
                    :height 0.9) 

;; C-Return でCUAモード (矩形選択などができる)
(cua-mode t) 
(setq cua-enable-cua-keys nil) 

;; 初期状態の C-hは help起動
;; これを バックスペースにする
(global-unset-key (kbd "C-h")) 
(global-set-key (kbd "C-h") 'delete-backward-char) 

;; 初期状態の C-l は recenter (スクリーンを再描画してカレント行を中央に置く)
;; 個人的に使用しないコマンドなので解除、よく使うコマンドに割り当てる
(global-unset-key (kbd "C-l"))
;; --- 選択範囲の文字置換
(global-set-key (kbd "C-l C-l") 'replace-string)
;; --- 選択範囲の文字置換 (正規表現)
(global-set-key (kbd "C-l C-p") 'replace-regexp)
;; --- マクロ関係
(global-set-key (kbd "C-l C-8") 'kmacro-start-macro) 
(global-set-key (kbd "C-l C-9") 'kmacro-end-macro) 
(global-set-key (kbd "C-l C-,") 'kmacro-end-and-call-macro) 

;; 個人的に入れたパッケージの保存場所を load-pathに追加
;; 参考: http://www.math.s.chiba-u.ac.jp/~matsu/emacs/emacs-aux.html
(setq load-path (cons "c:/Users/MY_USER_NAME/emacs/my_packages/" load-path))

tabbar パッケージ

tabbar パッケージ は開いているバッファをタブで表示してくれる。

f:id:maskaw:20180126214529p:plain:w250

  1. emacswiki: tabbar.el から tabbar.el をダウンロード。 tabbar.el をload-path が通っている c:/Users/MY_USER_NAME/emacs/my_packages/ に移動。 (非パッケージの設定 参照)
  2. 設定を .emacs に追加。 (参考: https://www.yokoweb.net/2017/03/17/emacs-tabbar/)

以下、設定

(require 'tabbar) 
(tabbar-mode)

;; Alt-[ で次のタブ、 Alt-] で前のタブ
(global-set-key "\M-[" 'tabbar-forward)
(global-set-key "\M-]" 'tabbar-backward)

;; タブ上でマウスホイールを使わない 
(tabbar-mwheel-mode nil) 

;; グループを使わない 
(setq tabbar-buffer-groups-function nil) 

;; 左側のボタンを消す 
(dolist (btn '(tabbar-buffer-home-button 
               tabbar-scroll-left-button 
               tabbar-scroll-right-button)) 
  (set btn (cons (cons "" nil) 
                 (cons "" nil)))) 
;; 色設定 
(set-face-attribute ; バー自体の色 
  'tabbar-default nil 
   :height 0.8) 
(set-face-attribute ; アクティブなタブ 
  'tabbar-selected nil 
   :background "#f4a460" 
   :foreground "#000000" 
   :weight 'bold 
   :box nil) 
(set-face-attribute ; 非アクティブなタブ 
  'tabbar-unselected nil 
   :background "#eaeaea" 
   :foreground "#000000" 
   :box nil) 

;; タブの表示設定
(defun my-tabbar-buffer-list () 
  (delq nil 
        (mapcar #'(lambda (b) 
                    (cond 
                     ;; Always include the current buffer. 
                     ((eq (current-buffer) b) b) 
                     ((buffer-file-name b) b) 
                     ((char-equal ?\  (aref (buffer-name b) 0)) nil) 
                     ((equal "*Help*" (buffer-name b)) b) ; *Help*バッファは表示する 
                     ((equal "*shell*" (buffer-name b)) b) ; *shell*バッファは表示する 
                     ((equal "*scratch*" (buffer-name b)) b) ; *scratch*バッファは表示する 
                     ((char-equal ?* (aref (buffer-name b) 0)) nil) ; それ以外の * で始まるバッファは表示しない 
                     ((buffer-live-p b) b))) 
                (buffer-list)))) 
(setq tabbar-buffer-list-function 'my-tabbar-buffer-list)

org-mode

org-mode (https://orgmode.org/ja/index.html)は emacs のモードの1つ。 アウトライン機能やタスク管理機能を持っていて、普段のメモ書きや、 タスク管理、プロジェクトの工数管理など、 なんでもできる

;; 不要な *(アスタリスク)を表示しない
(setq org-hide-leading-stars t)

不具合対処

起動時に半角全角が効かない問題

Emacs 起動時に 半角全角を押しても、IMEが日本語入力にならない現象があった。

https://github.com/chuntaro/NTEmacs64/issues/3#issuecomment-252144335

上記サイトのとおりに設定して、解決した。