[mac][chrome] 「Control + 左クリック」 を 「Command + 左クリック」 にした

Windows では、ブラウザでリンク先を新規タブで開きたいときは、「Control + 左クリック」を使う。
MacbookAir では、Control の代わりに「Command + 左クリック」を使う。
でも、Command を押す方にはどうにも慣れなくて嫌だったので、
KeyRemap4MacBook の private.xml の設定を修正して自分好みの挙動になるように変更した。

<?xml version="1.0"?>
<root>
  <item>
    <name>Control+LeftClick to Command+LeftClick</name>
    <identifier>private.ctrl_lclick_to_cmd_lclick</identifier>
    <autogen>
      --PointingButtonToPointingButton--
      PointingButton::LEFT, ModifierFlag::CONTROL_L,
      PointingButton::LEFT, ModifierFlag::COMMAND_L
    </autogen>
  </item>
</root>

参考

公式の英語解説

private.xml Reference Manual
サンプルからコピペしつつ何度か試してたら動いた。
窓使いの憂鬱の設定を思い出す。やってることも似たような感じ。

トラックパッドの3本指タップで代用させる方法

Macトラックパッドの3本指タップでホイールクリックが出来る BetterTouchTool | 和洋風◎
試してみたけど、3本指タップで新規タブは今一しっくりこなかった。
ついでに設定した3本指左右スワイプをページの戻る進むにする設定はいい感じ。

[emacs][howm] howm-mode で使っている Todo の切り替え関数のバグを取った

僕は普段 howm を使って、以下のような表記で Todo を管理している。

 * { } やること
 * {*} やったこと

そして、自作の関数を使って、上記のような表記がある行では、 C-t を押すたびに { } と {*} が切り替わるようにしている。
このエントリはその自作関数のバグを取ったよ、という話。


以下が修正後の最新版。

;; 汎用的に使える関数
(defun my-delete-insert-char(c)
  "ポイントの文字を1文字消し、代わりに文字 c を挿入する。"
  (interactive)
  (progn (delete-char 1 nil) (insert c) (backward-char 1)))

(defun my-swap-char-at-point(a b)
  "ポイントの文字 a と b を入れ替える。"
  (let ((c (char-to-string (char-after))))
    (cond
     ((string-equal c a) (my-delete-insert-char b))
     ((string-equal c b) (my-delete-insert-char a)))))

;; Todo 切り替え関数
(defun my-toggle-todo-brackets ()
  "現在行の先頭にある Todo 表記の切り替えを行う。"
  (interactive "*")
  (save-excursion
    (beginning-of-line)
    ;; Todo のフォーマット (* { } todo のような形式) にマッチ
    (re-search-forward "^[ ]*[*]+ {\\([ *]\\)}" (point-at-eol) nil)
    (goto-char (match-beginning 1))
    (my-swap-char-at-point " " "*")
    ))

;; howm-mode のキーバインドの設定
(eval-after-load "howm-mode"
  '(progn
     (define-key howm-mode-map "\C-t" 'my-toggle-todo-brackets)
  ))

今回修正したバグについて

re-search-forward に第一引数で渡している正規表現がちょっと間違っていたっぽい…。なので修正した。


あと、ずっと re-search-forward の第三引数を t にして使ってたんだけど、ここも nil に直した。
第三引数は、エラーをミニバッファに出力しないかどうかを決めるもので、

  • t にすると、エラーをミニバッファに出力せずに、関数の結果として nil を返すようになる。
  • nil にすると、エラーをミニバッファに出力する。

エラーしたかどうかを気にしたくなかったので、今まで t にしていてたのだけど、
nil にしておけば、エラーしたときにすぐに気付けるし、エラーを出力するとそれ以降の処理を中断して終わってくれるので安心だ。
しばらく使ってみて完全にエラーの心配がなくなったら t に戻そうと思う。

Macbook Air で refe が使えるようにする

少し迷ったけど、結局のところは以下を参考にしてターミナルから refe を叩けるようになった。
http://d.hatena.ne.jp/ruedap/20110426/vim_ref_plugin_ruby_reference_search_tool_refe2


ディレクトリ構成などもあまり悩まず上記と同じにしておいた。
Windows では chm ばかり使っていたけど、Mac では refe を使っていこうと思う。


そのうち id:rubykitch さんが勧めている方法(anything から引けるようになる)を導入したい。

OSX10.7 に jdk1.7 をインストール

Macbook Air にデフォルトで入っていたのは 1.6 だったのだけど、
所用で 1.7 が必要になったのでそっちを新しく入れてみた。
JavaOSX も全然勝手が分かっていないのでけっこう手こづったので、
とりあえずこれやれば入るよ!という手順を以下に残しておく。

  1. 以下から最新の jdkdmg をダウンロード
  2. dmg を解凍後、jdk を /Library/Java/JavaVirtualMachines/ にコピー
    • JavaVirtualMachines ディレクトリはあるはずだけどなければ作っておく
  3. Spotlight で Java Preference を起動
    • 起動できれば何でもいい。自分はまだよく分かってなくてこの方法しか知らない…。
  4. JRE 6 のチェックをはずして JDK 7 にだけチェックが入った状態にする



以上の手順を踏めば、コンソールで java -version したときに openjdk version 1.7 が表示されるはず。

/Users/gan2% java -version
openjdk version "1.7.0-u4-b13"
OpenJDK Runtime Environment (build 1.7.0-u4-b13-20120224)
OpenJDK 64-Bit Server VM (build 23.0-b16, mixed mode)

その他

OSX では /System 以下はいじらないものらしい

なので、/Library/Java/JavaVirtualMachines/ の頭に /System がついた
/System/Library/Java/JavaVirtualMachines/ ってディレクトリがあるのだけど、
こっちに間違って入れないように注意する。
たぶん Windows でいう system フォルダみたいなものなのだろう。

OSX では最初 root にパスワードが設定されていないので sudo が使えない

/Library/Java/JavaVirtualMachines/ に jdk1.7 入れるときにうまくいかなくて困った。
コピーする前に、sudo passwd root して、パスワードを設定しておけば OK.

OSX では Java ライブラリの jar は /Library/Java/Extensions/ 以下に置く

なんでそういう仕様なのか知らないけど、Java では javac を実行するディレクトリに jar を置いておいても読んでくれない。
Windows だと、環境変数 CLASSPATH にカレントディレクトリのパスを追加することでこの問題に対処できるが、
OSX だと CLASSPATH は使えないらしいので、上記の所定の位置に jar を置くようにするみたい。

[emacs] Carbon Emacs で migemo 使えるようにした

以下のサイトで紹介されていた方法で使えるようになった。ありがたやありがたや。
[移転しました]Carbon Emacsにmigemoインストール[追記あり]: プラスα空間(跡地)


ただし、ruby1.9 を使っていたために configure でこけた。
僕は数日前にとりあえず rbenv で ruby1.9.3 を入れたのだけど、どうやらそれだとうまくいかないらしい。
rbenv global system で、最初から入っていた ruby1.8.7 を使うようにしたらうまく通った。ホッ。


あと、実際に emacs で C-s してみたら、migemo が見つからないという旨のエラーが出てきてなんじゃこりゃ?と思ったけど、
どうやら make install を失敗していたようで、やり直したらうまく動くようになった。


あまりよく分かってない部分もあるのだけど、それについてはまた時間のあるときに取り組むことにする。
とりあえず migemo 動くようになってくれて嬉しい!

[git] 最近電車の中などで WEB+DB PRESS 50 の git の記事を読んでる

WEB+DB PRESS 総集編についてる DVD から、pdf を iPhone に入れて、GoodReader で読んでいる。
全然使いこなせていない GitHub を有効活用できるようになりたくて、
昔サラサラーっとしか読んでいなかったのを今度はじっくり読み返している。


この記事の著者である Hamano さんの「入門 Git」も持っていて、
WEB+DB の記事は、この本の抜粋に近い内容だと知っている。
でも、iPhone で読めるし短くて読みやすいという理由から、pdf の記事を読んでいる。
短いと読める気になれるんだよなー。短いって大事だ。医大だ。違う偉大だ。


本も別にそんなに分厚いという訳ではないのだけど、ちゃんと頭に入れようと思うと、ちょっと気が引けてしまう。
っていうか持っていると思って今部屋の本棚を確認してみたらないじゃない…。
実家にあるのだろうか。おかしいな。今のアパートに持ってきたと思っていたのに…。

MacBookAir から hatena-mode でポスト

すごい久しぶりのポスト。
emacs の設定がとりあえず移せたし hatena-mode でポストもできるようになったので、
また日記書いていこうと思う。


実は Windows7 から何度かポストしようとしたことがあったのだけど、
hatena-mode がうまく動いてくれない現象が再発していて、
直そうとはしたもののすぐには直せそうになかったのでしばらく諦めていた、という経緯があったりする。


これからやりたいこととしては以下のような感じ。

  • emacs の設定の整理
  • 何でもいいので何か作って形にする


はてな記法も忘れまくってるし、
前のように気持ちよく日記が書けるようになるにはちょっと時間がかかるかもしれないけど、
できる範囲のことをできるだけやっていくことにする。