Hiki のバージョンアップ
Hikiを動かしていたサーバがもろもろバージョンアップされてHikiが動かなくなった。この機会に他の Wiki clone か Google Apps とかに乗り替えようかと思ったが、いまいち良さげなものがないので、Hikiのバージョンを上げる(よくわからないが2.0.0pre1らしい)ことにした。
- Ubuntuだとパッケージもあるが、バージョンが古いようだったので、GitHubからzipを落としてきてインストール。
- rbenvを使っているので、Apacheから実行する時はPATH上にrubyが無い。Emacs の find-grep-dired で /usr/bin/env ruby が書いてあるファイルを探して、/usr/local/lib/rbenv/versions/2.0.0-p247/bin/ruby に書き換える。(Apacheのユーザにもrbenvの設定をすれば良いのか?)
ついでに hiki-mode.el もインストール。
- SourceForgeからダウンロード。
- Basic認証対応のパッチ hiki-mode.elをbasic認証に対応させた - おもしろwebサービス開発日記 を当てる。
- 文字化けするので、hiki-mode.elの文字コードをutf-8にし、euc-jp-dosを探してutf-8に書き換える。
- さらに init.el にEmacs23 だと hiki-mode.el の hiki-index-edit-page と hiki-index-edit-page-current-line で文字化けが起こる件 - Ghosthacksを追加。
- コメントに書いてあるinit.elの設定に (autoload 'hiki-index "hiki-mode" nil t) が抜けている?ので、追加。
バージョンアップとは関係ないが、Hikiでサポートされていないマークアップを生のHTMLで書く方法がないので不満に思っていたが、プラグインが簡単に作れるので、自分でどんどんプラグインを作ればよいと分かった。参考資料:Hikiプラグインの作り方 第一回 - えすにズムの坩堝
EmacsでURLを開く時、今のデスクトップにSafariのウインドウを開く
Emacsの中でbrowse-url-at-pointなどを使うとSafariでURLを開くことができるが、複数デスクトップを使っていて、他のデスクトップにSafariのウインドウが開いていると、そこで開いてしまう。そうではなくて、今のデスクトップに新しいSafariのウインドウを開かせる方法。
まず、次のAppleScriptのプログラム safari-new-window.scpt を作ってどこか適当なところに置く。
on run argv tell application "Safari" make new document at end of documents with properties {URL:item 1 of argv} activate end tell end run
~/.emacs.d/init.el に次の行を追加。
(eval-after-load "browse-url" '(defun browse-url-default-macosx-browser (url &optional new-window) (interactive (browse-url-interactive-arg "URL: ")) (start-process (concat "open " url) nil "osascript" "/path/to/safari-new-window.scpt" url)))
ただし /path/to は safari-new-window.scpt を置いた場所に書き換える。
Org-mode と Home-mode の衝突解消
一つのファイルで Org-mode と Howm-mode の両方を使っていると、
[[hoge]]
というのがそれぞれリンクとして解釈されるので、挙動がおかしくなる。Howmのwiki風リンクよりもOrgの external link の方が使いでがありそうなので、Howm側のwiki風リンクの機能を消すことにする。
home-mode.el の252行目の ,wiki をコメントアウト。
$ diff -c howm-mode.el~ howm-mode.el *** howm-mode.el~ 2012-06-25 20:01:45.000000000 +0900 --- howm-mode.el 2013-09-03 16:36:26.000000000 +0900 *************** *** 249,255 **** ,explicit ,rev ,@(if ks (list implicit) nil) ! ,wiki ,@(if (howm-menu-p) nil (list date done)) )) ) --- 249,255 ---- ,explicit ,rev ,@(if ks (list implicit) nil) ! ; ,wiki ,@(if (howm-menu-p) nil (list date done)) )) )
MacのOpenOfficeでEmacs風キーバインディング
MacのアプリケーションはEmacs風キーバインディングが使えるはずだが、なぜかOpenOfficeは C-p, C-n, C-a, C-e は使えるのに C-f, C-b が使えなくてイライラする。ググってみたところ、OpenOffice Community Forumに解決法が書いてあった。要するに、OpenOfficeのバグでコントロールキーが認識されない場合があるので、MacOSXのショートカット機能を使って呼び出す。そのためにはメニュー項目である必要があるので、カーソルを動かす機能をメニューに入れておく。
- OpenOfficeの[ツール]→[カスタマイズ]→[メニュー]で、編集メニューに「文字の右」と「文字の左」というメニュー項目を追加する。
- システム環境設定の[キーボード]→[キーボードショートカット]→[アプリケーション]で、新しいショートカットを追加する。アプリケーションはOpenOffice、メニュータイトルは「文字の右」か「文字の左」。
EmacsでRails
list-packagesの中をrailsで検索してみると、helm-railsとrinariがある。helm-railsの方が新しそうだけど、anythingからhelmに乗り換えるのが面倒なのでrinariを入れてみる。
- インストールする時にファイルが見つからないというエラーが出たが、手でバイトコンパイルすると問題ないようなので、気にしない事にする。
- マニュアルにはido-modeと一緒に使えと書いてあるが、anythingと同じようなものだと思われるので、無視する。
init.elの中でglobal-rinrai-modeを実行しておけば、それらしいファイルを編集する時に自動的にrinari-minor-modeがオンになる。ただし、パッケージで入れた場合は、例によって設定のタイミングを遅らせなくてはいけない。
(add-hook 'emacs-startup-hook (function (lambda () (global-rinari-mode))))