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

かわちょでぶろぐ

Visual Basic を……、強いられているんだ! → 強いられなくなった!

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

Git Mac

(★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 入れ直したので設定メモ

Emacs

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 を入れた

Emacs

新しい 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)

.emacs.d 全部を Dropbox 同期させるのをやめて init.el だけにした

Emacs

(ちょっと前の連休に遠出しなかったので、Cocoa Emacs の新しいバージョンを入れ直したり ~/.emacs.d/init.el の整理をした。)

今まで ~/.emacs.d/ 全体を Dropbox で同期させていた。

  • 複数の環境で同じ Emacs の設定を使いたい、同期させたい。
  • ダウンロードしてきた *.el を他の環境でも入れ直すのがめんどうなのでそれも同期させたい。

が、次の理由から、~/.emacs.d/ 全体でなく init.el だけ Dropbox に置いてリンクすることにした。

  • ~/.emacs.d/ には設定ファイル以外に、自動的に作られるファイルが多数あって自動的に同期されると逆に面倒。
    • ~/.emacs.d/auto-save-list
    • ~/.emacs.d/.session
    • などなど
    • これらを環境やバージョンごとにファイル名を変えたり ~.emacs.d の外に保存するよう変数の値を変えたりしてて、逆に管理が面倒になってきてた。
  • package.el や auto-install などのおかげで Emacs Lisp パッケージのインストールは簡単になってきたので、各環境ごとに入れ直すのが手間でなくなってきた。
  • また、各環境の Emacs バージョンの差によって同じパッケージバージョンではエラーになることが発生してきた
    • メジャーバージョンごとにパッケージのインストールフォルダは分けてたりしたけど、
    • cl-lib が必要かどうかとか Emacs 24.3 前後で違うのが出てきたし。

というわけで、Dropbox へのシンボリックリンクを作り直し。

今まで ~/.emacs.d/ 自体がリンクだったのをやめて、

~/.emacs.d/ --> ~/Dropbox/dot.emacs.d/
                            |-- init.el
                            |-- auto-install23/
                            |-- auto-install24/
                            |    :

これからは、~/.emacs.d/ 内の自分のファイルのみリンクに。

~/.emacs.d
   |-- init.el --> ~/Dropbox/dot.emacs.d/init.el
   |-- inits/  --> ~/Dropbox/dot.emacs.d/inits/
   |-- auto-install/
   |-- elpa/
   |     :
  • init.el を分割する場合は、init-loader を使い 1 ディレクトリにまとめて、そこを同期させればいいかな。今は使ってないやつを削りまくったので init.el だけにおさまっているが、Windows, Cocoa Emacs 固有の設定は分けておいた方が更新が楽かも。