Sunday, March 22, 2009

emacs で全バッファもしくはサブディレクトリ以下の全バッファを再読み込みする

最近Androidアプリを作るためにしかたなくEclipseのIDEを使っているのですが、Emacsを併用して使いたくなります。そこで困るのがファイルの同期をどう取るかです。Eclipseは外部でファイルが編集されると、警告メッセージと共に再読み込みをしてくれるのでEmacsでの変更をEclipseのバッファに反映するのには困りません。しかし、Emacsにはデフォルトではそういう機能がないので簡単なマクロを作ってみました(どちらとも警告なしで再読み込みを行うので注意(:-()。

現在開いている全てのバッファを再読み込み(revert-buffer)するマクロ
revert-all-buffers

;; revert (reload) all buffer which is opened
;; I got this macro from here
;; http://q.hatena.ne.jp/1134532052
(defun revert-all-buffers ()
(interactive)
(let ((cbuf (current-buffer)))
(dolist (buf (buffer-list))
(if (not (buffer-file-name buf)) ;only the file which visit on path
nil
(switch-to-buffer buf)
(revert-buffer t t)))
(switch-to-buffer cbuf)
))


さらにサブディレクトリ以下のファイルを全て再読み込みするマクロ(ただし、diredモード下でカレントディレクトリをうまく取得する方法がわからないのでディレクトリを開いているときには使えない(:-( )

revert-all-subdir-buffers

;; revert all buffers which is subdirectory of current buffer
(defun revert-all-subdir-buffers ()
(interactive)
(let ((cbuf (current-buffer)) (current-dir-name (file-name-directory (buffer-file-name))))
(dolist (buf (buffer-list))
(if (and (buffer-file-name buf) ;only the file which visit on path
(eq 0 (string-match current-dir-name (buffer-file-name buf)))) ;;only match with subdirectory
(progn
(switch-to-buffer buf)
(revert-buffer t t))
nil))
(switch-to-buffer cbuf)
))


問題点としては
・再読み込み前に警告(できれば一括で)を出すようにする。
・revert-all-subdir-buffers が dired モードからでも動作するようにする。

の2点
がんばらねば。

Friday, March 20, 2009

Android の Java ライブラリを展開する

Android-api のダウンロードと展開の方法

Android-api のダウンロード
次のサイトからのコピペ
http://androidforums.com/android-developers/1045-source-code-android-jar.html

以下のようなシェルスクリプトを作成し実効する。
すると git リポジトリから最新の Android のJavaライブラリがandroid-api以下に取得できる。

最新でなくてもよい場合は android-sdk の中に android.jar というファイルがあるのでそれを使う。


#!/bin/sh

git-clone git://git.source.android.com/platform/frameworks/base android-api
cd android-api
git checkout android-1.0
jar cvf ../android-src.jar -C core/java .
jar uvf ../android-src.jar -C graphics/java .
jar uvf ../android-src.jar -C location/java .
jar uvf ../android-src.jar -C media/java .
jar uvf ../android-src.jar -C opengl/java .
jar uvf ../android-src.jar -C sax/java .
jar uvf ../android-src.jar -C services/java .
jar uvf ../android-src.jar -C telephony/java .
jar uvf ../android-src.jar -C wifi/java .
cd ..


なお、.jar ファイルの中に何にあるファイル全てを知りたいときは以下のようにすると.jarファイルに含まれているコンテンツ一覧が表示される。
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/tooldocs/solaris/jar.html

$ jar tvf android-src.jar