かわちょでぶろぐ

Visual Basic .NET を……、強いられているんだ! → 強いられなくなった! → ふたたび、強いられているんだ! → 転職!

Mac の Git で日本語ファイル名を扱うときは core.precomposeunicode = true にしておく

(★2014年09月時点の情報です。最新の Git では解決しているかもしれない。)

Mac の Git で日本語ファイル名を扱うときは core.precomposeunicode = true にしておく。

  • clone, checkout したら日本語ファイル名のファイルが新規ファイルになってるとか
  • git status で確認したらファイル名が \xxx になってるとか

そんな症状に出くわしたら。

普段仕事だと Windows だし、自分で日本語ファイル名とか作らないし、普段おっかけてるリポジトリにもそんなの無かったので、未設定なのに気付いてなかったわ。Visual Basic なレガシーなプロジェクトを Mac で読もうとして気付いた。

既に clone 済みのローカルのリポジトリでは

$ git config --local core.precomposeunicode true

グローバル設定しとけば、今後 clone するやつはこっちがデフォルトになるのか?

$ git config --local core.precomposeunicode true

migemo 入れ直したので設定メモ

migemo って?

インストール

  • Windows
    • gnupack に全部入っている
  • Mac
    • Emacs 同様に Homebrew で cmigemo をインストールして
    • package.el で migemo.el パッケージをインストールする

Windows で gnupack を使わない場合は、cmigemo を次のサイトからダウンロードして、migemo の el はパッケージをダウンロード&インストールすればいいのかな?

設定

.emacs.d/init.el での設定は次のとおりで、

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; migemo
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; - https://github.com/emacs-jp/migemo
;; - http://0xcc.net/migemo/

(cond
 ((eq system-type 'darwin)
  ;; Mac(Cocoa Emacs)
  ;; 1. brew install cmigemo などで cmigemo をインストール
  ;; 2. package.el などで migemo.el をインストール
  (require 'migemo)
  (setq migemo-command "cmigemo")
  (setq migemo-options '("-q" "--emacs"))
  (setq migemo-dictionary "/usr/local/share/migemo/utf-8/migemo-dict")
  (setq migemo-user-dictionary nil)
  (setq migemo-regex-dictionary nil)
  (setq migemo-coding-system 'utf-8-unix)
  (migemo-init))
 ((eq system-type 'windows-nt)
  ;; Windows
  ;; - gnupack に入ってる
  (setq migemo-command (concat (getenv "INST_DIR") "\\app\\cmigemo\\cmigemo"))
  (setq migemo-options '("-q" "--emacs"))
  (setq migemo-dictionary (concat (getenv "INST_DIR") "\\app\\cmigemo\\dict\\utf-8\\migemo-dict"))
  (setq migemo-user-dictionary nil)
  (setq migemo-regex-dictionary nil)
  (setq migemo-use-pattern-alist t)
  (setq migemo-use-frequent-pattern-alist t)
  (setq migemo-pattern-alist-length 1024)
  (setq migemo-coding-system 'utf-8-unix)
  (load-library "migemo")
  (migemo-init)))

Emacs実践入門 ?思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)

Emacs実践入門 ?思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)

Homebrew で Cocoa Emacs 24.3 を入れた

新しい Windows 環境を作るついでに、Mac の方の Emacs 環境も再構築。

検索してみたら Homebrew の Emacs に、インライン日本語入力などの patch が取り込まれて、コマンド一発で簡単に入れられるようになっとった。

Homebrew

Homebrew 自体のインストール方法や使い方は公式サイトなどを参照。

Homebrew でインストールしたコマンドは /usr/local/bin にシンボリックリンクが作られるので、そこに PATH を通しておく。

Homebrew - Cocoa Emacs

日本語化パッチや distnoted が原因で Emacs が落ちる問題へのパッチなども Homebrew の Emacs には取り込まれているよう。楽ちんだ。

$ brew install --cocoa --japanese --with-gnutls -srgb emacs
$ brew linkapps
  • ↑上のページに書かれているけど、ダイアログが閉じられなくなる問題があるようなので、ダイアログを使わないように設定しておく。
    • 前からダイアログは安定してなかった。
    • ダイアログを使うつもりがなくても、マウスでメニューから何かやったときや、×ボタン押して閉じるときには、プロンプトがミニバッファじゃなくてダイアログで出てくるので注意。
(setq use-dialog-box nil)

Cocoa Emacs 用の設定

その他、Cocoa Emacs 用に特別にやってる設定は、

  (setq default-input-method "MacOSX")

  ;; "Convert yen to backslash for JIS keyboard."
  ;; (mac-translate-from-yen-to-backslash)

  ;; ミニバッファを開いたときに英字にする(閉じてもモードは戻らない)
  (add-hook 'minibuffer-setup-hook 'mac-change-language-to-us)

  ;; Shift キーがシステム・IM に渡るようにする
  (mac-add-key-passed-to-system 'shift)

  ;; 起動したら英字にする
  (add-hook 'after-init-hook 'mac-change-language-to-us)

  ;; Input Source ごとのカスタマイズ
  ;; - 一覧は (mac-get-input-source-list) で取得できる。
  ;; - ATOK はバージョンごとに ID が変わる。年に一回なのでとりあえず手動更新で対応。
  (mac-set-input-method-parameter "com.justsystems.inputmethod.atok27.Japanese" `title "あ")
  (mac-set-input-method-parameter "com.justsystems.inputmethod.atok27.Japanese" `cursor-color "darkred")
  (mac-set-input-method-parameter "com.justsystems.inputmethod.atok27.Roman" `cursor-color "black")
  • mac-translate-from-yen-to-backslash は JIS キーボード用の設定コマンドのようだが、英語キーボードしかないので呼んでない。
  • Command キーを Meta キーにする設定いれた方が打ちやすいかも。
  • ミニバッファを開いたときには英字にしてるけど、これだけだと M-<ESC, < ってやる場合は「<」になってしまうので別途対応が必要そうだなぁ。
;; Mac で GUI から起動しても、シェルの PATH 環境変数を引き継ぐ
;; - http://qiita.com/catatsuy/items/3dda714f4c60c435bb25
(when (memq window-system '(mac ns))
  (exec-path-from-shell-initialize))

あと、フォント設定は次のページを見て前に設定したのをそのまま使い続けている。

Emacs実践入門 ?思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)

Emacs実践入門 ?思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)