読者です 読者をやめる 読者になる 読者になる

計算物理屋の研究備忘録

Linux, Cygwin, Mac, zsh, emacs等の使い方、設定などのメモ

Macに最新バージョンのEmacsをインストール

Mac Emacs

目次

Mac用のEmacs

デフォルトでMac(El Capitan)に入ってるEmacsのバージョンは22.1.1だった。

$ emacs --version
GNU Emacs 22.1.1
Copyright (C) 2007 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.

これはかなり古いバージョンなので、新しいバージョンの24.5をインストールする。

調べてみるとMacEmacsを使うには、YAMAMOTO Mitsuharu版のMac Port用のemacs-macというものが一番使いやすそう。MacのネイティブなGUI環境に対応していて、Macの辞書機能やことえりなど、色々とMacの機能が使える。

railwaycatという方が、このemacs-macをHomebrewから簡単にインストールできるようにしてくれていて、これを使うのが一番手っ取り早い。

参考サイトはここ

qiita.com

YAMAMOTO Mitsuharu版のMac Port用のemacs-mac
http://www.math.s.chiba-u.ac.jp/~mituharu/emacs-mac.git/

railwaycatさんのhomebrew-emacsmacportのgithub。インストールの方法などもここにかいてある github.com

インストール

準備として、Homebrewを使えるようにしておく。(MacでHomebrewを使う - 計算物理屋の研究備忘録

Homebrewでインストール

$ brew tap railwaycat/emacsmacport
$ brew install emacs-mac
$ brew linkapps

これだけ。簡単。GNU Emacs 24.5.1 がインストールされた(2016年4月9日)。/usr/local/bin に新しくemacsやemacsclient(シンボリックリンクで実態は/usr/local/Cellar/emacs-mac/emacs-24.5-z-mac-5.15/binあたりに入っている)があって、デフォルトでパスが通ってるはずなのでこれで使えるようになったはず。brew linkappsまで行えば、Emacs.appが/Applicationsにシンボリックリンクされて、GUIでも使えるようになる。

設定

普段使うパッケージのインストール

package.elを使うだけ。自分がよく使うパッケージまとめ。
Emacsに入れるパッケージまとめ - 計算物理屋の研究備忘録

init-loaderさえ使えるようになればあとはgitで管理している設定ファイルが読み込まれる。
Emacsの共通設定をgitで管理する - 計算物理屋の研究備忘録

auto-completeをインストールしたら、fortran用辞書を追加 auto-completeの辞書にfortranのものを追加する - 計算物理屋の研究備忘録

Mac特有の設定

optionキーをMetaキーに

CUIで起動する場合はiterm2の設定でoptionキーをMetaキーにしている。GUIで起動する場合、optionキーはデフォルトではAltキーとして働くらしい(EmacsではMetaとAltは別物)。MacGUIを使う時のみoptionキーがMetaキーになるように設定しておく。

;;----- MacでGUIの時、optionをmeta
(if window-system (progn
    (when (equal system-type 'darwin)
      (setq mac-option-modifier 'meta))
))

if文のところでGUIかどうか、system-typeのところでMacかどうか判断している。Macだとsystem-typeがdarwinになる。

フォントサイズ

Macは解像度が高いので少し大きめのフォントサイズにした。キーバインディングの設定と同様にMacGUIの時のみフォントをRictyの16ptにする。

(if window-system (progn
    (when (equal system-type 'darwin) ;; Macでは16pt
      (add-to-list 'default-frame-alist '(font . "ricty-16")))
))

日本語入力時にカーソルの色を変える

ここに書いてある設定をパクってきた。

Emacs Lispの汎変数(とその他) - Qiita

  (when (fboundp 'mac-input-source)
    (defun my-mac-selected-keyboard-input-source-chage-function ()
      "英語のときはカーソルの色を黄色に、日本語のときは赤にします."
      (let ((mac-input-source (mac-input-source)))
        (set-cursor-color
          (if (string-match "\\.US$" mac-input-source)
              "Yellow" "Red"))))
    (add-hook 'mac-selected-keyboard-input-source-change-hook
              'my-mac-selected-keyboard-input-source-chage-function))

でもこのままでは常に日本語とみなしてカーソルの色が変わったままになってしまったので、少し修正を加える。自分の環境では"\\.US$"の部分がどうもおかしい。

scratchバッファで(mac-input-source)と打って英語入力モード時にC-jで評価してやると、

"com.apple.inputmethod.Kotoeri.Roman"

日本語入力モード時に同じように評価してやると

"com.apple.inputmethod.Kotoeri.Japanese"

と出てきた。"\\.US$"の部分を"com.apple.inputmethod.Kotoeri.Roman"に書き換えてやるとうまく動く。英語入力モード時はtangotangoカラーテーマと同じ黄色、日本語入力モードの時は赤くなるように設定。

;;----- Macの日本語関係
(when (fboundp 'mac-input-source)
  (defun my-mac-selected-keyboard-input-source-chage-function ()
    (let ((mac-input-source (mac-input-source)))
      (set-cursor-color
        (if (string-match "com.apple.inputmethod.Kotoeri.Roman" mac-input-source)
            "Yellow" "Red"))))
  (add-hook 'mac-selected-keyboard-input-source-change-hook
            'my-mac-selected-keyboard-input-source-chage-function))

Emacsではうまく設定できた。これをiTerm2でできないのか色々探したけど方法が見つからなかった。

ミニバッファ入力時に自動的に英語入力モードに

カーソルの色を変える時に参考にしたサイトに設定があったのでそのままお借りする。

(when (functionp 'mac-auto-ascii-mode)  ;; ミニバッファに入力時、自動的に英語モード
  (mac-auto-ascii-mode 1))

cmigemoのインストール

MacだとHomebrewでインストールできる。普通にインストールしようとすると古いところに繋がるので、--HEADをつけて新しいgithubに繋がるようにする。

$ brew install cmigemo --HEAD  

辞書ファイルがある場所などCygwinと同じだったので設定はCygwinのものをそのまま使う。(CygwinのEmacsでC/Migemoを使う - 計算物理屋の研究備忘録

起動方法、サーバー関係

GUIEmacs.appを最初に起動しておいて、基本的には起動しっぱなしにしておく。Macの場合は簡単であとは

$ open -a emacs hogehoge

でhogehogeというファイルがすでに起動しているEmacs上で開かれる。サーバーを起動しておいてemacsclientを使うようなことをしなくてもGUIをメインに使うのであれば一瞬でファイルを起動できる。

open -a-aはアプリケーションを指定してopenするオプション。open -a emacsとしておけば/ApplicationsにあるEmacs.appが自動的に使われる。

注意点としては例えば、hogehogeというファイルが存在しなければこの方法ではエラーが出る。ファイルがなければhogehogeというアプリケーションを探しに行ってしまう。hogehogeというファイルを新規作成してEmacsで開くときは事前にtouch hogehogeするかemacsclientを使用すればいい。

エイリアス

念のため、emacsclientも使えるようにエイリアスの設定をしておく

alias e='open -a emacs'
alias ec='emacsclient -n'
alias ekill='emacsclient -e "(kill-emacs)"'

emacsclientについてはこの記事を参考のこと(emacsclientを使ってEmacsの起動を速くする - 計算物理屋の研究備忘録

python用にjediをインストール

Jedi.el - Python auto-completion for Emacs — Emacs Jedi 0.2.0alpha2 documentation

ここに書いてあるpython3でjediを使う方法を試したけどなんかエラーが出て無理だった。

デフォルトのpython2にvirtualenvを入れて、emacsが認識するpathがそっちのpython2になるようにしてインストールした。

以前の記事を参考(EmacsのPython環境を構築 - 計算物理屋の研究備忘録