EmacsをHomebrewでインストールしてMac特有の設定をする

# バージョンなど

- macOS Big Sur バージョン 11.0.1 MacBook Air (M1, 2020)
- Emacs 27.1 (Emacs Mac PortのHomebrew版)
- Rosetta2を使用したターミナル環境

# Emacs Mac Port (Homebrew版)
Emacsは公式がMac用のものを配布してるが，昔から日本語変換のときにチラついたり問題があるので，その辺りを色々修正してくれてあるEmacsをインストールする．

[Mitsuharu Yamamoto氏がMac Port用に作成したもの](https://bitbucket.org/mituharu/emacs-mac/src/master/)をrailwaycat氏がHomebrew用に公開している．

インストール方法などもここに書いてある
[homebrew-emacsmacport](https://github.com/railwaycat/homebrew-emacsmacport)


# インストール

上のリンクに書いてあるようにHomebrewでインストールすれば良い．

``` zsh
$ brew tap railwaycat/emacsmacport
$ brew install emacs-mac
```

コンパイルが無事に終わると下記のような表示が出る．

```
==> emacs-mac
This is YAMAMOTO Mitsuharu's "Mac port" addition to
GNU Emacs 27. This provides a native GUI support for Mac OS X
10.6 - 11.0. After installing, see README-mac and NEWS-mac
in /usr/local/opt/emacs-mac for the port details.

Emacs.app was installed to:
  /usr/local/opt/emacs-mac

To link the application to default Homebrew App location:
  ln -s /usr/local/opt/emacs-mac/Emacs.app /Applications
Other ways please refer:
  https://github.com/railwaycat/homebrew-emacsmacport/wiki/Alternative-way-of-place-Emacs.app-to-Applications-directory

For an Emacs.app CLI starter, see:
  https://gist.github.com/4043945
```

上に書いてあるように，`/usr/local/opt/emacs-mac/Emacs.app`にインストールされているので，アプリケーションディレクトリにシンボリックリンクを貼っておくと他のアプリと同様に使える．

``` zsh
ln -s /usr/local/opt/emacs-mac/Emacs.app /Applications
```


# 起動方法
個人的な使い方．

Macでは基本的にGUIのEmacsを使って，基本的には起動しっぱなしにしている．Emacs.appをDockに登録しておき，普通にDockから起動する．

下記設定でGUIで起動するときはサーバーも起動するようにする．

``` lisp
(if window-system (progn
    (require 'server)
    (unless (server-running-p)
         (server-start) )))    ; GUIで起動するときはサーバーも起動
```

サーバーを起動しておけば，以降はターミナルから

``` zsh
$ open -a emacs filename
```
のようにすれば，既に起動してあるEmacsでファイルを開くことができる．


# Mac特有のキーバインド設定
GUI使用の時だけの設定

- サーバー起動しているので`C-x C-c`で終了しないようにする
- optionをmetaに変更する

``` lisp
;; GUI
(if window-system (progn
    (bind-key "C-x C-c" 'kill-this-buffer)    ; C-x C-c で終了させてしまわないように変更
    (when (equal system-type 'darwin)         ; Mac, optionをmeta
      (setq mac-option-modifier 'meta))
))
```

# 日本語関係

- 英語/日本語を切り替えるとカーソルの色も変わるようにする
- ミニバッファ入力時は自動的に英語モードになるようにする

scratchバッファで`(mac-input-source)`と入力して`C-j`を押すと自分の使ってる入力ソースが確認できるので，英語の入力ソースを確認する．

MacBook Air (M1, 2020)では`com.apple.keylayout.ABC`だった．古いMacbookでは`com.apple.inputmethod.Kotoeri.Roman`を使っていた．

英語入力時はデフォルトのカーソルカラーで，日本語入力時は赤色にする．
デフォルトのカーソルカラーはscratchバッファで`(face-attribute 'cursor :background)`を`C-j`で評価するとわかる．

今使っている`atom-one-dark`というテーマのデフォルト色は`#528BFF`だった．

``` lisp
;;; 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.keylayout.ABC" mac-input-source)
            "#528BFF" "Red"))))
  (add-hook 'mac-selected-keyboard-input-source-change-hook
            'my-mac-selected-keyboard-input-source-chage-function))

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

- `com.apple.keylayout.ABC`
- `#528BFF`
- `Red`

の部分を自分に合うように変更する．




# Python関係
## 2022/3/7 追記

ターミナルのPythonの環境が整ったら，elpyの設定をしておく．

[elpyを使ってEmacsのpython環境を構築する](https://qiita.com/TomokiYamashit3/items/f5ffa77592ef9165804c)