2009-12-25

MacVim-KaoriYa 20091225 のvimproc

MacVim-KaoriYa 20091225版に含まれる vimproc 20091217版の vimproc.vim にはバグがあるようですので、vimshellなどvimprocを使用しているpluginを使用している方は、

vimproc downloads

からv2.02をダウンロードし、MacVim.app/Contents/Resources/vim/runtime/autoload/vimproc.vim を入れ替えてご使用くださいませ。

MacVim-KaoriYa 20091225

http://code.google.com/p/macvim-kaoriya/

20091225版をテストリリースしました。



お試しくださいませ。 メリークリスマス

2009-11-24

MacVim-KaoriYa 20091124

http://code.google.com/p/macvim-kaoriya/

20091124版をテストリリースしました。Vim 7.2.303、MacVim snapshot 51ベースになっています。

今回からATSUIレンダラに代わりCore Textレンダラが入りました。

「MacVim」メニュー「環境設定」「詳細」「実験的レンダラを使用する」を選択状態にすると使用できます。すでに選択状態になっていた場合は、一旦解除して再度選択状態にする必要があります。標準レンダラに比べてフォント表示などに問題があると思いますが。

(2009/11/24 17:30 追記)「インラインインプットメソッドを使用する」も選択しないと入力中の文字が表示されません。つまり現状ことえりしかまともに使えないことになりそうです。

お試しくださいませ。

http://twitter.com/splhack

2009-11-13

MacVim-KaoriYa 20091113

http://code.google.com/p/macvim-kaoriya/

20091113版をテストリリースしました。



お試しくださいませ。

2009-10-27

MacVim-KaoriYa 20091027

http://code.google.com/p/macvim-kaoriya/

20091027版をテストリリースしました。

半角カタカナの濁点半濁点があると直前の文字を含めて1文字扱いになってしまい表示が崩れる不具合を対策しました。

半角カタカナにお悩みの方はぜひお試しくださいませ。

2009-10-24

MacVim と MacVim-KaoriYa の違い

> 今気付いたが本家MacVim日本語対応してるね

してます。ほぼ問題なく使用できるはずです。IM制御コードなど主要な部分のpatchはすでに取り込まれています。

ただ些細な問題とか説明が難しいというか面倒というか、インラインIMでのカーソル位置とか、インラインIMのGUIでの設定とかはpatch送ってません。

あとは、http://code.google.com/p/macvim-kaoriya/に書いてある通りです。


香り屋版
日本語を扱う上で便利な設定やスクリプトが追加されています。ローマ字のまま日本語をインクリメンタル検索できるmigemo機能が統合されています。詳しくはこちら(http://d.hatena.ne.jp/thinca/20090619/1245338963)をご覧ください。

MacVim-KaoriYa
MacVimに対して、香り屋パッチの統合、ローカライズ、MacVim固有の設定、日本語文字コード自動判別、必要なshared library、Perl/Python/Rubyのdynamic loading、Objective-C対応ctags、などを追加しています。インストールしてすぐ使えるのが目標です。


結構違いますですよ → http://repo.or.cz/w/MacVim/KaoriYa.git

2009-10-20

MacVim-KaoriYa 20091020

http://code.google.com/p/macvim-kaoriya/

20091020版をアップしました。MacVimの構造上ATOKとAquaSKKでの問題を(現時点では)回避するのが難しいので、デフォルトではインラインIM入力をdisableにしました。

環境設定の詳細パネルでインラインIM入力をenableにすることができます。



ことえりでは今のところ問題ありません。ATOKでも入力方法によっては問題ないようです。

IMまわりの不具合のため20090802版を使っていらっしゃる方は是非お試しくださいませ。

2009-10-16

MacVim-KaoriYa 20091016

http://code.google.com/p/macvim-kaoriya/

MacVim-KaoriYa 20091016版をアップしました。まだSparkleが効かないのでテストリリースとしておきます。


  • MacVim snapshot 50 に追従。
  • vim 7.2.267 ベースになっています。


お試しくださいませ。

2009-10-02

MacVim-KaoriYa と autocomplpop 2.8.1

MacVim-KaoriYaでautocomplpop使うとえらいことになるのでパッチを作ってみました。

http://gist.github.com/199457


でも、ことえりから1byte文字入力したら破綻する気がしますが...


neocomplcacheをおすすめしておきます。

MacVim-KaoriYa 20091002

http://code.google.com/p/macvim-kaoriya/

20091002版をテストリリースしました。


  • MacVimが64bit化
  • 半透明機能復活


Leopard intel/ppc, Snow Leopard で動作するはずです。お試しくださいませ。

2009-09-28

MacVim KaoriYa 20090928

http://code.google.com/p/macvim-kaoriya/

今回もテストリリースです。

Snow Leopard、Leopard intel環境などの MacVim i386 + Vim x86_64 の組み合わせで起きていたスクロールバーが表示されない不具合が修正されました。

お試しくださいませ。

2009-09-23

MacVim KaoriYa 20090923

http://code.google.com/p/macvim-kaoriya/

今回もまだまだまだテストリリースです。


  • +pythonでimport socketのようなdylibを読むようなscriptを実行させると_PyExc_IOErrorシンボルが解決できずエラーになる件を今度こそ修正しました。たぶん。


20090922版の変更点も合わせてご覧くださいませ。

是非是非お試しくださいませ。

2009-09-22

MacVim KaoriYa 20090922

http://code.google.com/p/macvim-kaoriya/

今回もまだまだテストリリースです(MacVimがちゃんとSnow Leopard対応するまでテストリリースです。半透明にならない、スクロールバーが出ない、など不具合ありますので)。20090922版です。


  • 香り屋パッチを20090919版に更新しました (正確には、20090321版と20090919版のパッチを比較してMacVim-KaoriYaにもれがないことを確認しました)。
  • +pythonでimport socketのようなdylibを読むようなscriptを実行させると_PyExc_IOErrorシンボルが解決できずエラーになる件を修正しました。


是非お試しくださいませ。

2009-09-11

MacVim KaoriYa 20090911

http://code.google.com/p/macvim-kaoriya/

今回もまだテストリリースです。20090911版です。


残念ながらMac OS X 10.4 Tiger非対応になりました。
Snow Leopardでの使い勝手を優先させていただきました。すみません。が、あくまでバイナリリリースが非対応になっただけですので、ソースコードからのビルドも実行も問題なくできると思います。問題があれば教えてくださいませ。

perl 5.10、python 2.6(2.5ともバイナリ互換)に変更
http://blogger.splhack.org/2009/09/macvim-kaoriya-20090902-2.html
Snow Leopardでは自動的にOS標準のものを使うので、設定は必要ありません。
Leopard intelの場合、64bitでアプリケーションが動く環境では、i386ではなくx86_64のdylib(i386+x86_64のuniversalでももちろん可)を必要とします。rubyとpythonはLeopard標準のものでそのまま動作します。

IM変換時のカーソル位置を対策
2重アンダーライン表示はできていません。

ATOK 部分確定時の確定文字列消失を対策
部分確定後アンダーライン位置がずれる場合があるようですが。

vimproc v1.22に更新
vimshellでつかいます。


是非動作確認をお願いいたします。

2009-09-06

MacVim KaoriYa

Snow Leopardでperl5.8.9を使ってbuildするように変更することで、perl5.8.8とのbinary compatibilityを確保(したつもり)。

(20090907 追記) 5.8.8 と 5.8.9 はbinary compatibleじゃないことが発覚。MacPortsのdefaultは5.8.9で、Snow Leopardも5.8.9を標準搭載しているので、5.8.9にしておきます。と思ったんですが、5.8.9だとif_perl.xsがbuildできないので5.10になりました...

ただしSnow Leopardでの使い勝手を優先したことで、次の配布バイナリから、残念ながら 10.4 Tiger intel で動作しなくなりそうです(x86_64で起動しようとして、objcのlibがx86_64がなくて起動しないと思われます)。ppcでは動きそうですが。20090802版を使用していただくか、自力でbuildしていただく必要があると思います。すみません。


http://www.serendip.ws/archives/2951

動作確認ありがとうございます。変換中のカーソル位置は対応してみました。候補選択中のアンダーラインも戻したかったのですが、FEAT_XIM内をどう変更するといいか検討中です。

部分確定はどういう動作をするかNSLog入れて見ていただける人がいれば...

2009-09-04

Leopardとx86_64 binary

Snow Leopardで普通に作ったx86_64 binaryは、Leopardでは動作しない。

printfしかしないようなbinaryの場合、

Leopard用は

/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 103.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 123.0.0)


Snow Leopard用は

/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 123.0.0)


と依存しているdylibが違いますし、あとdyldあたりのinterfaceが変わっているような雰囲気です。


Snow LeopardでLeopardでも動くbinaryを作るには、

$ MACOSX_DEPLOYMENT_TARGET=10.5 gcc a.c


とか、

$ MACOSX_DEPLOYMENT_TARGET=10.4 gcc -arch x86_64 -arch i386 -arch ppc a.c


とか。


そもそもUNIXな範囲でx86_64なbinaryがSnow Leopard上で常に有利なの? という話もありますが、それはさておき、

Snow Leopard: 10.6 x86_64
Tiger/Leopard: 10.4 i386/ppc


なuniversal binaryを作ってみたい。


Xcodeだと、MACOSX_DEPLOYMENT_TARGET_x86_64てな感じの設定があるので、

$ MACOSX_DEPLOYMENT_TARGET=10.5 MACOSX_DEPLOYMENT_TARGET_x86_64=10.6 gcc -o a.out -arch i386 -arch x86_64 a.c


もいけるのかと思いきや、gccには通用しません。


ということで、lipoを使います。とりあえずi386 10.5とx86_64 10.6のuniversal binaryを作ってみます。

$ MACOSX_DEPLOYMENT_TARGET=10.5 gcc -o a.out.i386.10.5 -arch i386 a.c

$ MACOSX_DEPLOYMENT_TARGET=10.6 gcc -o a.out.x86_64.10.6 -arch x86_64 a.c

$ lipo -create a.out.i386.10.5 a.out.x86_64.10.6 -output a.out


できました。

$ otool -arch all -L a.out
a.out (architecture i386):
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 103.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 123.0.0)
a.out (architecture x86_64):
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 123.0.0)


それっぽくlinkされています。


てことで喜び勇んでLeopardで動かしてみると、

dyld: unknown required load command 0x80000022


...

ということで、Leopardではx86_64を動かせちゃうので10.6なx86_64を動かしてしまう訳ですね。


ついでにだめもとで試してみると

$ lipo -create a.out.x86_64.10.5 a.out.x86_64.10.6 -output a.out.2
lipo: a.out.x86_64.10.5 and a.out.x86_64.10.6 have the same architectures (x86_64) and can't be in the same fat output file


やはりだめですね。


よって、i386はLeopardで、x86_64はSnow Leopardで、てなことはできなさそうです。

2009-09-03

MacVim KaoriYa 20090903

http://code.google.com/p/macvim-kaoriya/

20090903版をリリースしました。是非動作確認をお願いいたします。

Mac OS X 10.5 Leopard intel で動作しない不具合を修正しました。

結局i386/ppc universal binaryになっています。

http://blogger.splhack.org/2009/09/macvim-kaoriya-20090902.html
http://blogger.splhack.org/2009/09/macvim-kaoriya-20090902-2.html

MacVim-KaoriYa 20090902 その2

http://code.google.com/p/macvim-kaoriya/

20090902版ですが、重要な変更点を書き忘れました。perl/pythonのbinary compatibleなバージョンを変更しています。
Mac OS X 10.6 Snow Leopardを標準としていますので、

perl 5.8 → perl 5.10
python 2.5 → python 2.6


となりました。rubyは1.8.6 → 1.8.7になっただけで1.8系はbinary compatibleです。


10.6 Snow Leopard で使う場合は、OS標準のものを自動的に使用しますが、
10.4 Tiger, 10.5 Leopard で使う場合、またMacPortsのperl,python,rubyを使用する場合は、.vimrcで、

let $PERL_DLL = "/opt/local/lib/perl5/5.10.0/darwin-2level/CORE/libperl.dylib"
let $PYTHON_DLL = "/opt/local/lib/libpython2.6.dylib"
let $RUBY_DLL = "/opt/local/lib/libruby.1.8.7.dylib"

のように使用するshared libraryを指定してくださいませ。


それ以外のバージョンを使用する場合は自力でbuildする必要があります。Vim自体にもpatchが必要となる場合があります。

2009-09-02

MacVim KaoriYa 20090902

http://code.google.com/p/macvim-kaoriya/

20090902版をアップしました。今回もSparkleフィードはあえて更新していません。

10.4 Tiger/10.5 Leopard: i386/ppc 32bit Vim, 32bit MacVim
10.6 Snow Leopard: x86_64 64bit Vim, 32bit MacVim

というuniversalアプリになっています。

是非動作確認をお願いいたします。

いまのところSnow Leopard上では


  • スクロールバーが表示されない
  • ATSUIレンダラが正常動作しない


といった不具合があります。あとはATOKで部分確定すると確定部分が消える問題もあるようです。


(9/3 10:30 追記)

10.5 Leopard intel で動作しませんでした。

  • PSMTabBarControlが10.6向けになっている(?)
  • Leopard intelでもx86_64を動作させようとしているが、x86_64は10.6向けのため動かない(?)

のようです。

10.4 Tiger ppc/i386, 10.5 Leopard ppc での動作確認をお待ちしております。

2009-09-01

MacVim-KaoriYa と 半角カナ

http://keireki.jp/ak/81620929012052521::18365121723600177760
Mac使いにはMacVim香り屋版がおすすめです。 http://code.google.com/p/macvim-kaoriya/


ご紹介ありがとうございます!

香り屋版ですらMacだと半角カナが正常に扱えない。。。orz


ぜひ具体例を教えてくださいませ。


文字コードの認識がおかしい場合は、
「ファイル」「エンコード指定...」「開く...」か「再読込...」でコードを指定するか、
:e ++enc=sjis
などでコードを指定してくださいませ。


なおASCII + CP932 半角カナ だけだと EUC-JP に認識されてしまう件は、Gauche由来のguessコードを改造してみました。次のリリースから適用されます。

2009-08-29

Snow Leopard と MacVim-KaoriYa

Mac OS X 10.6 Snow Leopard と MacVim-KaoriYa ですが、いまのところ気づいた不具合は以下の2点です。


ATSUIレンダラを使用するとスクロール時に描画不具合が発生(http://code.google.com/p/macvim/issues/detail?id=196)
現時点での対策: デフォルトではATSUIレンダラを使用しませんので問題ありません。MacVimメニュー「環境設定」「詳細」「ATSUIレンダラを使用する」チェックボックスをオフにしましょう。

「Edit in MacVim ...」メニューが表示されない。
現時点での対策: SIMBLと同じ理由で、64bitモードで起動しているアプリケーションでは外部エディタ連携が使用できません。使用したいアプリケーションを32bitモードで起動する必要があります。



なお、Snow Leopardに限らず、Leopardもですが、MacVim/MacVim-KaoriYa の次のリリースからTISを使ってIM制御するようになってますので、OS Xの環境設定「言語とテキスト」「入力ソースのオプション」「書類ごとに異なるものを使用」にするとMacVim/MacVim-KaoriYaのウインドウごとにIM制御が可能になります。

2009-08-25

MacVim-KaoriYa へのリンク

■WEB+DB PRESS Vol.52 Vimの流儀 http://www.amazon.co.jp/dp/4774139300

必読です!

発売とともにMacVim-KaoriYaのダウンロード数が増えました。ありがたいことです。


■【レポート】Snow Leopardを快適にする - どれがいい? 自分にベストなMacのテキストエディタ(1) http://journal.mycom.co.jp/articles/2009/08/25/texteditor/index.html

伝統指向 エディタとしてリンクされています。

Smultronが載ってないと思ったら、開発終了してたんですね...


http://fifnel.com/2009/08/24/2912/

MacVim-KaoriYa 20090823版が特に問題なく動いているようで何よりです。もうちょっと様子を見てSparkle feedを更新します。


Mac OS X 10.6 snow leopard では ATSUI レンダーがちゃんと動かないらしいのでインストール後調べるつもりです。

2009-08-23

MacVim KaoriYa 20090823

http://code.google.com/p/macvim-kaoriya/

MacVim-KaoriYa を更新しました。MacVim snapshot 49ベースです。

今回キー入力まわりがかなり変わり、キーバインドが効かなくなっているなどの不具合が想定されるため、
あえてSparkleのfeedは更新していません。

しかしIMインライン入力とIM制御が改善されているので使い勝手は向上しています。

試していただいて、問題があってもなくても連絡(blogのコメントでも、mailでも、twitterでも)をいただけるとうれしいです。

2009-08-04

MacVim 保存ダイアログ

「コマンド(⌘) + w」で編集中のウインドウを閉じるとき、



てなダイアログが出ますが、単に破棄したいときに、いちいち「保存しない」ボタンをクリックしないといけません。

面倒ですね。


「コマンド(⌘) + d」で「保存しない」を選択できます。

便利ですね。

ちょっと前の tekzilla で知りました。


あと「ESC」で「キャンセル」を選択できます。「return」で「保存」ですね。

あ、MacVimだけの話じゃなく、OS Xアプリケーション全般で有効です。

2009-08-03

vim-cocoa 0.3

http://groups.google.com/group/vim_mac/browse_thread/thread/7b46cd5ff6624603

いつのまにか、repo.or.czからgithubに移ってたんですね。

rendering speedが一番速いはずですが、体感だとMacVim ATSUI renderingと比べて同等もしくは若干vim-cocoaの方が速いかも?しれない?くらいのような感じ。何か見落としがあるかもしれませんが。MacVim ATSUI rendering offに比べれば1.25倍くらい速そうです。

いずれにせよMacVimにmergeして欲しい!

2009-08-02

MacVim KaoriYa 20090802

MacVim-KaoriYaを更新しました。

http://code.google.com/p/macvim-kaoriya/

20090802版

■vim7.2.245、MacVim snapshot 47 ベースです。

■Cyberduckの外部エディタとして使用できるようになりました。

■自動IM onを禁止できるようになりました(http://blogger.splhack.org/2009/08/macvim-kaoriya-im-on.html)

2009-08-01

MacVim-KaoriYa 自動IM on禁止

inoremap <ESC> <ESC>:set iminsert=0<CR>


でいけると思ったのですが、うまくいかない場合がありそうですので、確実にできるようにoptionを追加してしまいました。

http://twitter.com/splhack/statuses/3069704793

MacVim-KaoriYa imdisableactivate を追加 http://bit.ly/7eGza


:set imdisableactivate


もしくは

:set imda


でIMをonにしなくなります。


リリースはMacVimの更新待ちです。

2009-07-21

MacVim etc

http://twitter.com/hamaco/status/1144051421
TerminalとかMacVimでC-jで日本語入力がしたい。


:inoremap <C-j> <C-^>


でいけるんじゃないかと思います。


http://twitter.com/nekoya/status/2647362030
MacVim-kaoriyaで単純なペーストがエラーで止まった。


ぜひとも .vimrc, .gvimrc, .vim を提供してくださいませ。


http://twitter.com/nekoya/status/2683243397
もしかして、MacVimのIM制御ってターミナルからだと効かない?


MacVim-KaoriYaだと、効きます。というと語弊がありますが、香り屋パッチの機能のひとつであるUIM対応により、コンソール版はUIMを制御することが可能です。

MacUIM http://code.google.com/p/macuim/ をインストールして

LANG=ja_JP.UTF-8 /Library/Frameworks/UIM.framework/Versions/Current/bin/uim-fep -u anthy-utf8 -e /Applications/MacVim.app/Contents/MacOS/Vim


など。uim Anthy vi協調モード でぐぐるとより良い設定もできると思います。


これを応用して、uim-mactsm http://slashdot.jp/~ek/journal/346651 が使えれば、コンソールからことえりを制御することも可能なはずですが、いまのところLeopardでは成功していません。

2009-07-17

Android OpenWnn

http://android.git.kernel.org/?p=platform/packages/inputmethods/OpenWnn.git;a=summary

OpenWnnが復活してますね。

$ git clone git://android.git.kernel.org/platform/packages/inputmethods/OpenWnn.git
$ cd OpenWnn
$ git log -p
fatal: bad default revision 'HEAD'


HEADがない

$ git branch -a
remotes/origin/cupcake


masterがないからみたいですね。

$ git checkout -b cupcake remotes/origin/cupcake
warning: You appear to be on a branch yet to be born.
warning: Forcing checkout of remotes/origin/cupcake.
Checking out files: 100% (285/285), done.
Branch cupcake set up to track remote branch cupcake from origin.
Switched to a new branch 'cupcake'



Android.mk
AndroidManifest.xml
MODULE_LICENSE_APACHE2
NOTICE
README.txt
libs
res
src


さて、iWnnとOpenWnnの違いや如何に。

MacVim-KaoriYa 20090711 の不具合

MacVim-KaoriYa 20090711版ですが、
http://code.google.com/p/macvim-kaoriya/
2つ不具合が判明しています。修正され次第リリースする予定です。


■ vim_mac ML: MacVim.app Snapshot 47
http://groups.google.com/group/vim_mac/browse_thread/thread/e08d96e654222a65

新規ウインドウでテキストを入力後、⌘(コマンド)-w で出てくるダイアログで「保存」を選択。ファイルネームを入力して「保存」するとSIGSEGVでMacVim-KaoriYaが終了してしまいます。
:wqやZZなどvi的な保存終了方法であれば問題ありません。


■ vim_dev ML: Crash with vimgrep
http://groups.google.com/group/vim_dev/browse_thread/thread/8799d86ddd2ee08d

vimgrep でSIGBUSでMacVim-KaoriYaが終了してしまいます。

2009-07-16

MacVim-KaoriYa チュートリアル



MacVim-KaoriYa チュートリアルです。

http://code.google.com/p/macvim-kaoriya/wiki/Tutorial_0


このあと rogue を起動して h j k l に慣れよう編が始まるわけですが、OS X には標準で rogue が入ってません。残念ですね。

Android gdbclient

http://gist.github.com/147523

pidは毎回変わるけど引数3番目なので使いやすくしてみました。
cupcakeだと/system/binにgdbserverいますよね。source build/envsetup.shしといて、
gdbclient 888
とかで該当pidに接続できます。

http://blogger.splhack.org/2009/01/android-dev-phone-1-12.html のほぼ自動化。

diff --git a/envsetup.sh b/envsetup.sh
index f8f20ab..c54c1d5 100644
--- a/envsetup.sh
+++ b/envsetup.sh
@@ -704,26 +704,26 @@ function gdbclient()
local OUT_EXE_SYMBOLS=$(get_abs_build_var TARGET_OUT_EXECUTABLES_UNSTRIPPED)
local PREBUILTS=$(get_abs_build_var ANDROID_PREBUILTS)
if [ "$OUT_ROOT" -a "$PREBUILTS" ]; then
- local EXE="$1"
+ local EXE="$2"
if [ "$EXE" ] ; then
- EXE=$1
+ EXE=$2
else
EXE="app_process"
fi

- local PORT="$2"
+ local PORT="$3"
if [ "$PORT" ] ; then
- PORT=$2
+ PORT=$3
else
PORT=":5039"
fi

local PID
- local PROG="$3"
+ local PROG="$1"
if [ "$PROG" ] ; then
- PID=`pid $3`
+ PID=$1
adb forward "tcp$PORT" "tcp$PORT"
- adb shell gdbserver $PORT --attach $PID &
+ adb shell su -c gdbserver $PORT --attach $PID &
sleep 2
else
echo ""

MacVim フォント設定



http://twitter.com/splhack/status/2651318201
http://twitpic.com/afjn7 - set guifont=Andale\ Mono:h14 set guifontwide=ヒラギノ角ゴ\ StdN\ W8:h14


http://twitter.com/splhack/status/2651369722
guifontとguifontwideで別のフォントにするとメリハリがでていいかも。編集のフォントパネルから変更するとguifontしか変わらないので変になりますが、:set guifont? で値の確認に使えます。



メニューから「編集」「フォント」「フォントパネルを表示」を選択するとフォントが選択できます。ヒラギノなどを選択すると文字間が広がって変な感じになりますが、とりあえず気にしません。

使いたいフォントを選択したら、

:set guifont?


と打ちます。表示されたものを .gvimrc に書きましょう。スペースが含まれている場合はスペースの前にバックスラッシュを入れる必要があります(例: set guifontwide=ヒラギノ角ゴ\ StdN\ W8:h14)。

もしくは

:mkvimrc vimrc_font


と打てば、vimrc_fontファイルに現在の設定が書き出されます。guifont部分を抜き出しましょう。

set guifont=Osaka:h14


など等幅でないフォントを指定すると文字間が大変なことになりますが、

set guifont=Andale\ Mono:h14
set guifontwide=ヒラギノ角ゴ\ StdN\ W8:h14


などguifontに等幅のフォントを指定しておけばそれっぽく見えると思います。


フォントサイズを変えるのもフォントパネルからできますし、または⌘ (コマンドキー)を押しながら「=」か「-」を押せばさくさく変更できます。set guifont?やmkvimrcなどで .gvimrc に書いておきましょう。

(7/16 追記)

メニュー「MacVim」「環境設定」「詳細」「ATSUIレンダラを使用する」をチェックしていると、たとえばヒラギノ角ゴ StdN W8のウエイトが効いてないような状態になります。チェックせずにご使用くださいませ。

またOsaka-Mono(標準設定)だと ⌘ =, - が効かないようです。

2009-07-14

android gdbserver gdbclient clewn

build/envsetup.sh を書き換えて、source build/envsetup.sh

http://gist.github.com/146948

adb shell setprop debug.db.uid 32767 して、

止まったら、adb logcatのpid見て(たとえば888)、android source directory(repo syncしてるとこ)で、

gdbclient app_process :5039 888

するとclewn越しのarm-eabi-gdbと、clewnにつながったMacVimが起動します。



こんな感じ。起動時に時間がかかるのがなんとかなれば!

2009-07-13

clewnの使い方

gdbでa.outをデバッグする場合、

__NETBEANS_HOST=localhost __NETBEANS_SOCKET=3219 /Applications/MacVim.app/Contents/MacOS/clewn -vc /Applications/MacVim.app/Contents/MacOS/Vim -va '-g -nb -c "run clewn.vim"' -ga a.out


とすればいけます。aliasなりscriptなりを用意しとくと便利です。


androidでは、build/envsetup.sh の arm-eabi-gdb 呼び出しているところを書き換えたりするといいのではないかと。

2009-07-11

MacVim KaoriYa 20090711


http://code.google.com/p/macvim-kaoriya/

更新しました。

feed://macvim-kaoriya.googlecode.com/svn/wiki/latest.xml

MacVim snapshot 46ベース、vimproc同梱、clewn同梱 です。


+netbeans_intgなのにnetbeansの外部エディタとしては(私の知る限り)使えないものの、eclim で eclipse から +netbeans_intg 経由でMacVimを使えるようです。が、-nb:localhost:port がちゃんとわたってないのか、ちょっと工夫が必要です。あと現状外部ウィンドウになります。clewnも含めていろいろと改善の余地ありです。


vimprocは、vimshell用です。

http://github.com/Shougo/vimshell/
http://github.com/Shougo/vimshell/blob/master/presen/vimshell.txt

vimshell同梱のautoload/proc.vimはインストール不要です(proc.vimがあるディレクトリにproc.soがあることを期待してますので、vimshellのproc.vimをいれるとエラーが発生します)。

お楽しみくださいませ。

2009-07-03

MacVim, MacVim-KaoriYa の不具合


http://cooldaemon.tumblr.com/post/127823725/macvim-kaoriya-tiger-10-4
何故か、MacVim だと動く rails.vim が動かなくなった。


MacVimとMacVim-KaoriYaとで、vim scriptの実行で違いがあるとすれば、日本語化関係か、香り屋パッチ由来のvim scriptでしょうか。
http://code.google.com/p/macvim-kaoriya/wiki/Readme#香り屋版の情報 で問題を切り分けられるかもしれません。


http://twitter.com/hagino_3000/statuses/2165316831
現状ではmacvimで NERD_tree.vim, fuzzyfinder.vim がまったく使いものにならない、うーん


MacVim stable 1.2か snapshot 45でしょうか。MacVim-KaoriYaでは、ちょっと試した限りでは使えているのですが(http://blogger.splhack.org/2009/05/macvim-kaoriya-snipmatevim-fuzzyfinder.html)、使いものにならないというのはどういう状態なのか知りたいです。


http://twitter.com/kei_s/status/2207985546
MacVim が落ちるのをどうにかしたい。

http://twitter.com/toshipon/status/2405311523
MacVimがクラッシュしまくってMacBookのファンが大回転してる。なんですかこれ


こちらもMacVim stable 1.2(vim 7.2.0)かsnapshot 45(vim 7.2.148)でしょうか。patchにより修正された不具合かもしれませんし、それ以外の未知の不具合かもしれません。再現方法がわかりましたら是非教えてくださいませ。


http://twitter.com/lainl/status/2295979428
MacVim設定ファイルが全くないので初めから書かなきゃいけない

メニューの「編集」から、いろいろと好みの設定に変更したら、

:mkvimrc ~/.vimrc

と入力すれば設定ファイルを作成できます。

インストール後、MacVimを起動して、:mkvimrc ~/vimrc0、いろいろメニューから設定を変えて、:mkvimrc ~/vimrc1。でもって、

:edit ~/vimrc0
:diffsplit ~/vimrc1

とすれば、変えたとこだけわかりますから、それだけ ~/.vimrc に保存するとかですね。

もしくはXcode付属のFileMergeもオススメです。

Android shared library

Androidのlinkerは/system/libか/libしか探してくれません。LD_LIBRARY_PATHを見てほしい。けどセキュリティ的な話か。

http://android.git.kernel.org/?p=platform/bionic.git;a=blob;f=linker/linker.c;hb=HEAD open_library関数参照。

でも絶対パスが使えちゃいます。

build/tools/soslim
external/elfcopy
external/elfutils

あたりも要チェック。


あ、dlopenなら、読めるところならばどこにあってもどうとでもなります。

2009-07-01

Mac OS X 用 Vim のいろいろ

まとめてみました。

http://code.google.com/p/macvim-kaoriya/wiki/Difference


MacVim-KaoriYa ですが、

http://code.google.com/p/macvim-kaoriya/

香り屋パッチの機能は必要ない、日本語化もされてなくていい、GUIは不要 コンソールで使う、といった方でも、日本語文字コード自動判別、必要なshared library、Perl/Python/Rubyのdynamic loading、Objective-C対応ctags同梱、などの利点がありますのでオススメです。
もちろんソースコードからもビルドできますから安心。http://code.google.com/p/macvim-kaoriya/wiki/Building


以下のVimを使うなら、MacVim-KaoriYaをオススメします。

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim72
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FMacVim
http://sourceforge.jp/projects/splhack/releases?package_id=6373

もうほとんどメンテナンスしてないですしね...

2009-06-26

MacVim +netbeans_intg

MacVim に +netbeans_intg を実装しました。

http://bit.ly/qMb8o

注意してpatch作ったんですが(とくにwhitespace)、突っ込まれました。注意不足。てへ。

http://clewn.sourceforge.net/

clewnが使えるようになります。



vimgdbでもほぼ同じですが、clewn自体をremoteで動かしたり、crossで使ったり、他のnetbeans protocol使うものも使えたりします。

MacVim-KaoriYaにはclewnを同梱するつもりです。

2009-06-20

MacVim KaoriYa 20090620

http://code.google.com/p/macvim-kaoriya/

更新しました。

久々に更新されたMacVimに追従しました。Vim 7.2.209です。あとTigerでもちゃんと起動するはずです。

2009-06-03

vim-ruby-debugger + MacVim

vim-ruby-debugger
http://github.com/astashov/vim-ruby-debugger/tree/master

いまのところ Mac OS X 上で +clientserver できるのは MacVim だけ (MacVim-KaoriYa も。X11使ったやつもいけるかも?)。


こんな感じでRailsアプリやrubyスクリプトをデバッグできます。




gemでruby-debug-ideを入れときます。

sudo gem install ruby-debug-ide


vim-ruby-debuggerを持ってきます。

git clone git://github.com/astashov/vim-ruby-debugger.git


debuggerのportなどを取得するためのlsofの引数あたりを、ちょっと変える必要があります(feedback予定)。

http://gist.github.com/122977
(2009/6/15 追記: 取り込まれました)

~/.vimに入れます。

~/.vim/bin/ruby_debugger.rb
~/.vim/doc/ruby_debugger.txt
~/.vim/plugin/ruby_debugger.vim


実行します。

:Rdebugger a.rb


とかスクリプトを指定することもできます。指定しないとRails前提です。

\b で breakpoint 設定とかですね。

2009-06-02

MacVim KaoriYa on Tiger (Mac OS X 10.4) 解決編

http://creazy.net/2009/05/macbook_setup5_development.html

ということで、Tiger (Mac OS X 10.4) でMacVim KaoriYaを使用される場合は、

http://blogger.splhack.org/2009/06/macvim-kaoriya-on-tiger-mac-os-x-104.html

http://macvim-kaoriya.googlecode.com/files/libintl.zip
を展開して、/Applications/MacVim.app/Contents/Frameworks/libintl.dylib を入れ替えてご利用くださいませ。

次のリリースからちゃんとTiger, Leopard, universalになります。

MacVim KaoriYa on Tiger (Mac OS X 10.4)

http://code.google.com/p/macvim-kaoriya/

ですが、Tiger, Leopard, Universal をうたっておきながら実はTigerで起動しないという体たらく。

このままLeopard専用ってことで、CoreText導入とか新IMフレームワークとか使っちゃえばいいとか思いましたが、とりあえず置いておいて。

MacVim部分はTigerでもいけるんですが、Vimで使ってるlibintl.dylibがTigerで動きませんでした。

LeopardのlibSystem.B.dylibに含まれるpthreadの新APIをlinkしちゃうとTigerのlibSystem.B.dylibでlinkできないわけです。

もしTigerお持ちの方がいらっしゃいましたら、

http://macvim-kaoriya.googlecode.com/files/libintl.zip

を展開して、/Applications/MacVim.app/Contents/Frameworks/libintl.dylib を入れ替えて起動するか試していただけると大変うれしいです。


Vimのpatchたくさん更新されてますが、MacVim自体が更新されてないのでこちらも更新してません。

2009-05-29

Android Native Development Kit (NDK)

http://android.git.kernel.org/?p=platform/development.git;a=blob_plain;f=pdk/ndk/Android_NDK_README.html;hb=HEAD

Android NDKですが、JNI shared libraryをbuildできるようにするために、Android SDKの様に、必要なツールとかMakefileとかを抜き出してまとめたものなわけですね。repoで全部sourceひっぱらなくてもNDKだけあればbuildできるようになったと。


JNI shared libraryを新しく入れるにはrootになれないといけない

というのは間違いで、platform別にshared libraryをapkに入れられる仕組みが元々あって

http://android.git.kernel.org/?p=platform/development.git;a=blob;f=pdk/ndk/samples/samplejni/Makefile;h=18e97df4e00729ac448af2cca8d1fbdbf434fd89;hb=HEAD

というようにshared libraryをapkに突っ込めます。普通にapkインストールするだけで自前のshared libraryをJNIで使えます。

NDKよりsourceひっぱってきてAndroid.mk使う方がMakefile書かなくて良い分楽だと思いますけども(http://blogger.splhack.org/2009/05/android-jni-shared-library.html)。

http://code.google.com/p/android-ruby/source/browse/trunk/irbapp/Android.mk
http://code.google.com/p/android-ruby/source/browse/trunk/lib/Android.mk
とか。


scummvm-android http://sites.google.com/site/scummvmandroid/ も興味深いことをやってます。
http://sourceforge.net/tracker/index.php?func=detail&aid=2603856&group_id=37116&atid=418822

2009-05-21

sudo MacVim

Mac Vim 再び
http://pc11.2ch.net/test/read.cgi/mac/1133534694/276
MacVimからだとsudo使って開いても読込専用で編集できない
ファイルがあるんですが(apacheの設定ファイルとか)最初からあるvimだと編集できます。
どうすればMacVimで編集できるでしょうか?



sudo open -a MacVim


だとsudoで得た権限が引き継がれないようですね。


sudo /Applications/MacVim.app/Content/MacOS/Vim -g /opt/local/apache2/conf/httpd.conf


であれば編集できそうです。

MacVimが起動していなかった場合、以降の新ウインドウはすべてroot。

MacVimが起動していた場合、そのウインドウだけroot。

みたいです。MacVimを起動した状態でVim -gするのが安全ですね。


ps auxww|grep -i vimで確認できます。

2009-05-18

MacVim KaoriYa snipMate.vim, Fuzzyfinder, 最大化

http://twitter.com/mickey24/status/1781868117
MacVimでsnipMate.vimが動作しない,FuzzyfinderのMRUがきかない,起動時に最大化できない,などなど.原因がよく分からない.



snipMate.vim

http://www.vim.org/scripts/script.php?script_id=2540 snipMate.zip 0.81 を$HOME/.vimに展開して、a.cファイルを開いて、「forタブ」を入力したところ。

:FuzzyFinderMruCmd

http://www.vim.org/scripts/script.php?script_id=1984 vim-fuzzyfinder.zip 2.21.0 を$HOME/.vimに展開して、:FuzzyFinderMruCmdしたところ。

起動時に最大化
$HOME/.gvimrcに
autocmd BufEnter * macaction performZoom:

でどうでしょうか。


MacVim-KaoriYa 20090511 では以上のように使えているのですが、他に情報ありましたら教えてくださいませ。その他の不具合情報なども歓迎しております。

2009-05-12

Android JNI shared library

http://android.git.kernel.org/?p=platform/packages/inputmethods/LatinIME.git;a=blob;f=Android.mk;hb=HEAD

LOCAL_JNI_SHARED_LIBRARIES := libjni_latinime


とすると、shared libraryがapkに入った上、/data/data/foo/lib に配置されるようです。


http://code.google.com/p/android-ruby/

で使ってみましたが、普通のcupcake G1に入れられるのかどうかまではわかりません。

2009-05-11

MacVim KaoriYa 20090511

http://code.google.com/p/macvim-kaoriya/

更新しました。

:helpで固まる不具合対策と、ctags-objc-ja http://wiki.github.com/splhack/ctags-objc-ja 同梱です。




taglist.vim http://www.vim.org/scripts/script.php?script_id=273



let tlist_objc_settings='objc;P:protocols;i:interfaces;I:implementations;M:instance methods;C:implementation methods;Z:protocol methods'


で、Objective-Cも楽々。

MacVim KaoriYa helpで固まる件

$HOME/.vim/doc/tags-ja などに

!_TAG_FILE_ENCODING utf-8


が含まれている場合、

:help !


とかやると帰ってこなくなります。CTRL-Cで中断できますが。

http://code.google.com/p/macvim-kaoriya/issues/detail?id=9

の添付パッチで回避できますが、これはMacVim-KaoriYaのせいなのか、originalからなのか...

/Applications/MacVim.app/Contents/Resources/vim/runtime/doc/tags-ja

にも含まれてるんですけどね。や、むしろ含まれているからこそ、か?


MacVimの更新を待ってたんですが、ctags-objc-jaとこれでバイナリ更新するつもりです。

2009-05-08

ctags objc 日本語対応版

http://github.com/splhack/ctags-objc-ja/

Objective-C 対応 Exuberant Ctags の日本語対応版です。



を元に


  • configure オプション—enable-japanese-support 追加 (デフォルトで日本語対応機能OFF)
  • gauche_guess (http://yukihiro.nakadaira.googlepages.com/#chardet) による文字コード自動判別機能追加 (デフォルトで自動判別—jcode=auto)


を追加しました。

http://wiki.github.com/splhack/ctags-objc-ja


日本語対応版だとCP932で


// ソ
void func() {}


なんてのも平気になるわけですね。しかもgauche_guess効果でファイルの文字コード気にせずにctags実行できるかと。


.vimrcに

http://github.com/jad/home/blob/e4edeae019b702209d738d38df9c5c0e515177d0/.vimrc

let tlist_objc_settings='objc;P:protocols;i:interfaces;I:implementations;M:instance methods;C:implementation methods;Z:protocol methods'


って書けば、taglist.vimでObjective-Cを楽しめます。


MacVim KaoriYaは次のリリースでctagsバイナリを更新します。本家MacVimの更新はいつだろう。

2009-05-07

ctags

そういえば taglist.vim で Objective-C が表示されないのでぐぐってみたら

http://github.com/jad/home/blob/e4edeae019b702209d738d38df9c5c0e515177d0/.vimrc

objc対応ctagsがありました。

http://gitweb.aeruder.net/?p=ctags-objc.git;a=summary

てことで、

http://hp.vector.co.jp/authors/VA025040/ctags/

から日本語対応部分をもってきて

http://github.com/splhack/ctags-objc-ja/tree/master

を作ってみました。


まだcompileしてないんですけども。

MacVim-KaoriYa同梱のctagsはこれに入れ替える予定です。

2009-05-04

Android cupcake emulator

$TOP/out/host/linux-x86/bin/emulator -sysdir $TOP/out/target/product/generic -data $TOP/out/target/product/generic/userdata.img -kernel $TOP/prebuilt/android-arm/kernel/kernel-qemu


ってやればavd関係なくemulatorを起動できると。avd使いたければmake sdkすると。


■Ubuntuでのqemu build error対策
http://groups.google.com/group/android-porting/browse_thread/thread/8432b5f2accb718a/dd7e91571cb243c7


■official ADP1 cupcake image
http://www.htc.com/www/support/android/adp.html

account登録とかがskipできるようになったんですね。emulatorでこのsystem.img使えばmarketも使えるかも(google accout入力しなかったので未確認)。

2009-05-01

Android MigemizeSoftKeyboard

http://code.google.com/p/android-migemo-ime/

続きまして、migemoを使ったAndroid用IMEです。SKK辞書Mで、ちゃんと変換できるようになって帰ってきましたw

http://www.youtube.com/watch?v=T93Py8bco_o
(前とったムービー)

adb install MigemizeSoftKeyboard.apk でインストールできます。

詳しくは http://www.adamrocker.com/blog/253/simeji-for-android-sdk-15.html を参照していただくと良いと思います。





SKK辞書Sでもいいんじゃないかと思ってます。

使用頻度による候補表示順とかあるといいですね。iPhoneみたいな「かな」パレットとか。

android-ruby for cupcake



http://code.google.com/p/android-ruby/


Android用ruby-1.9.1をcupcakeに対応させて、

かつapkにshared libraryをつっこんでみました(Android.mk)。

ADP1やemulatorは当然ながら、普通のG1でもインストールできるのかもしれませんしできないのかもしれません。

(jailbreakしてないG1なんて持ってませんし)

/sdcardに付属のruby.tarを展開すると、ほぼフル機能になります。

(20090502 追記 インストールスクリプト追加しました。rootになれるならruby native commandもインストールできます。スクリプト参照)

jrubyじゃないですよ。crubyです。

2009-04-27

MacVim KaoriYa 20090427

http://code.google.com/p/macvim-kaoriya/

更新しました。日刊MacVim-KaoriYaですね。

vim 7.2.160ベースになりました。

2009-04-26

MacVim KaoriYa 20090426

http://code.google.com/p/macvim-kaoriya/

更新しました。


http://www.serendip.ws/archives/1854
nmap ,s :call GoshRunAll()<cr>
がきちんと設定できなくなっていた。


http://twitter.com/fifnel/statuses/1611503407
なにやらプラグインのキーマップがいろいろ効かない。何だろう。



MLで指摘されてた件を修正したら、この件も直ったようです。お試しくださいませ。

2009-04-25

MacVim KaoriYa 20090425

http://code.google.com/p/macvim-kaoriya/

更新しました。


  • IM 状態取得を実装。IM 自動ON/OFF が動作します。
  • ctags 5.7J1 を同梱


要望の大きかった(twitterで2人も!!) IMコントロールを、ちゃんと動くように実装しました。


  1. insertモード開始
  2. 手動でIMオン
  3. 日本語を入力開始(iminsert: 0→2)
  4. ESC
  5. 自動でIMオフ
  6. insertモード開始
  7. 自動でIMオン(iminsert=2なので)


これでCarbon/Cocoa Vim.appに劣ってるところはなくなったんではないかと思います。

後ほどMLにpatch送っときますので採用されればMacVimでも使えるようになるはずです。


なおCursorIMが効きますが、⌘+スペース がMacVimに届かないので、手動でIM切り替えてもCursorIMが即座に反映されません。イベントが来ればどうにかなりますが、pollingするのもねぇ...


autocomplpop.vim が変更せずに使えるようになったようです (私は neocomplcache.vim を使ってます)。


む、⌘の文字幅がASCII分しかない。JIS X 0213もだけど(◉とか)。
(⌘も◉もNですね。むしろOsakaが?)

2009-04-23

MacVim KaoriYa 20090423

http://code.google.com/p/macvim-kaoriya/

更新しました。


http://code.google.com/p/macvim-kaoriya/wiki/Readme#文字コード判別

fencs(fileencodings)を設定してると自動判別が動きませんのでご注意を。

.vimrc の fencs または fileencodings を設定している行を削除するのが良いです。

MacVim KaoriYa 文字コード判別

Shift_JISの「あああ」だけ書いたファイルを何故かeuc-jpと判別し、その後utf16などにたらい回しにされてたので、

http://yukihiro.nakadaira.googlepages.com/#chardet

から、gauche_guess(新BSDライセンス)を導入してみました。

http://repo.or.cz/w/MacVim/KaoriYa.git?a=commitdiff;h=e107a09ef830699a729f42c9a89eac9116fbbf3b;hp=1616b12553c8e6f0c3af883a40ad694335c89008

良好です。bom付きでも平気でした。

2009-04-21

MacVim DYNAMIC_PERL

http://twitter.com/poppen/statuses/1573366230
$PERL_DLLを設定しても、MacPortで入れたperlを読んでいないような


perl5.8 @5.8.9_3+shared


let $PERL_DLL = "/opt/local/lib/perl5/5.8.9/darwin-2level/CORE/libperl.dylib"


で試してみました。


symbol 解決できず読み込めなくて、10.5標準の5.8.8にfallbackしてました。

perl 5.8.8 と perl 5.8.9 はバイナリ互換ではないということですね... 5.10だと完全無理。

簡単に解決できそうな話ではなさそうなので、+perlを必要とされている場合は自力でbuildしていただいた方が良さそうです。if_*自体がshared libraryになるとかに期待。

2009-04-19

文字コード識別

MacVim-KaoriYaでCP932のファイルを識別できていないような気がしたのですが、
http://pc11.2ch.net/test/read.cgi/mac/1133534694/271
という書き込みもありますし、気のせいではないようです。

MACOS_CONVERTなどが生きていたりしますし。


http://yukihiro.nakadaira.googlepages.com/#chardet
のgauche版がコードサイズ(Firefox版は大きい...)、実行結果(↑のが識別できた+日本語だけで十分)、ライセンス(new BSD license)的に良さそうです。

2009-04-17

MacVim KaoriYa 20090417

http://code.google.com/p/macvim-kaoriya/

更新しました。migemo, iconvが効かないのが直りました。これで一段落。


PATCH: dynamically load Python on Solaris
http://groups.google.com/group/vim_dev/browse_thread/thread/b81d8196605b1dc5

いまごろ気づきましたが、たしかにif_*からdllになってればpythonに限らずversion問題解決ですね。どんな状況なんでしょうか。

MacVim KaoriYa Sparkle feed エラー 続き

code.googleに同一ファイル名でファイルをアップすると、人によって違うバージョンのファイルをダウンロードすることになるらしい。

という理由で旧Sparkle feedを削除しました。今回は手動アップデートしてくださいませ。


-migemoの理由も判明。Portfileで、configure.cppflags-appendじゃなくて、configure.cppflagsにしてしまってたので、migemo用のCPPFLAGSが上書きされちゃってました。またバイナリ更新します。

2009-04-16

MacVim KaoriYa 20090416

http://code.google.com/p/macvim-kaoriya/

20090417追記: iconv,migemoなど香り屋版として重要な機能が使えない状態でしたので20090417版を準備中です

更新しました。Sparkleのfeedのcacheがなくなってたので旧URLにもおいときました。自動アップデートできるはずです。

+perl +python +ruby になりました(+rubyは前からですが)。

ドキュメントはこちら: http://code.google.com/p/macvim-kaoriya/wiki/Readme#+perl_/_+python_/_+ruby

詳細: http://blogger.splhack.org/2009/04/macvim-kaoriya-dynamicperlpythonruby.html

そのかわり何故か -migemo になっています。調査中です。


ソースからビルドするためのMacPortsは、

http://code.google.com/p/macvim-kaoriya/wiki/Building

にも書きましたが、

http://git.sourceforge.jp/view?p=splhack/MacPorts.git;a=tree;f=editors/macvim;hb=HEAD

のsnapshotリンクからダウンロードしてくださいませ。

cmigemo, ctags とかもあったりします。

MacVim KaoriYa DYNAMIC_PERL/PYTHON/RUBY

http://repo.or.cz/w/MacVim/KaoriYa.git?a=commitdiff;h=ba172e2f988398a336d54ab8f0b941719734fa4f;hp=98096baaae14970fdefbce38ba146b507b36c4c0

より汎用的にしました。これでバイナリリリースします。Sparkle feedもなおります。

いままでは+rubyだけでしたが、次から+perl/dyn +python/dyn +ruby/dynになります。

10.5なら特に設定しなくても:perl :python :rubyが使えるようになります。

MacPortsとか自前buildのが使いたい場合は .vimrc で $PERL_DLL, $PYTHON_DLL, $RUBY_DLL を設定すればいいです。
が、dylibのversionが合わないと使えません。perl 5.8.8, python 2.5, ruby 1.8 互換なら使えると思います。
python25, ruby18は動作確認ずみです。

2009-04-15

MacVim DYNAMIC_PERL/PYTHON/RUBY

http://repo.or.cz/w/MacVim/KaoriYa.git?a=commitdiff;h=d57ab5a093de9dca9606684648ca74338f9b6f16

こんなふうにしてみました。

Leopard標準python2.5と、MacPortsのpython25

Leopard標準ruby1.8.6と、MacPortsのruby1.8.7

で、一応動くことは確認しました。.vimrcで

let $PYTHON_DLL = "/opt/local/lib/libpython2.5.dylib"
let $RUBY_DLL = "/opt/local/lib/libruby.dylib"


とか指定します。指定しないとLeopard標準パスから読みます。

rubyは1.8系列はバイナリ互換でしょうけども、python2.6とか2.3が読めるかどうか不明です。

perlはよくわからんです。ソースレベルで5.8と5.10が違うのはわかるんですが...

あ、10.5 intel buildでした。10.4 universalだと変わるかも。


どうせならMacRuby使いたいですが、if_ruby経由じゃなくて、MacVimのPlugIn経由の方でいいかも。

MacVim KaoriYa Sparkle feed エラー

http://code.google.com/p/macvim-kaoriya/ にも注意書きを追加しましたが、

code.googleのdownloadにSparkle用のlatest.xml置いておいたんですが、実は同一ファイル名で中身変更できないということに気付きました。いままで出来ちゃってたんですが...

自動更新しようとするとエラーになるようにlatest.xmlは削除しました。


ということで、20090414への自動更新は残念ながらできません。

次の更新でSparkle用のURLを変更します。

次の次の更新から自動更新できるようになります。


subversionにcommitするようにしてみました。



defaults write org.vim.MacVim.KaoriYa SUFeedURL http://macvim-kaoriya.googlecode.com/svn/wiki/latest.xml ってするとできたりしますが。
defaults delete org.vim.MacVim.KaoriYa SUFeedURL で消せます。

2009-04-14

DYNAMIC_PERL/PYTHON/RUBY

香り屋さんパッチに含まれている動的DLL読み込み。Win32APIのLoadLibraryExですが、dlopenなどに単純に置き換えられそうなので試してみました。


+#if defined(DYNAMIC_PERL) && defined(MACOS_X_UNIX)
+typedef void * HANDLE;
+typedef void * FARPROC;
+# include <dlfcn.h>
+# define LoadLibraryEx(a0,a1,a2) dlopen(a0,RTLD_NOW|RTLD_LOCAL)
+# define FreeLibrary(a) dlclose(a)
+# define GetProcAddress dlsym
+# define DYNAMIC_PERL_DLL "/System/Library/Perl/lib/5.8/libperl.dylib"
+#endif


と、あとちょっと書き換えて、:perl VIM::Msg("hello world") が動くとこまでは確認しました。if_perlサンプルのカーソル移動とか。

苦労した点は、perlをまーーったく覚えてなかったことです。うーん。port2pkgってperlで書いたような気が。10年前だけど :-)

さて10.4 universalバイナリで動くかな?

MacVim KaoriYa 20090414

http://code.google.com/p/macvim-kaoriya/

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FMacVim

更新しました。snapshot-45ベースで、gvimrcでset ambiwidth=doubleしときました。


ドキュメントも地味に更新中です。

http://code.google.com/p/macvim-kaoriya/wiki/Readme

これ、Safariから「Edit in MacVim…」で編集してます。もちろん、このbloggerも。

Vim profiling

Vimの起動時間を正確に調べる方法。要 +huge。


vim --cmd ":prof start /tmp/prof.txt" --cmd ":prof! file *" -c ":quit" ~/.vimrc


を実行すると、 /tmp/prof.txt に


SCRIPT ~/.vimrc
Sourced 1 time
Total time: 0.034885
Self time: 0.005636
...

SCRIPT /Applications/MacVim.app/Contents/Resources/vim/runtime/filetype.vim
Sourced 1 time
Total time: 0.027747
Self time: 0.027747
...

FUNCTIONS SORTED ON TOTAL TIME
count total (s) self (s) function
1 0.033967 0.000050 2_StarSetf()
1 0.031982 0.000425 6_SynSet()
1 0.004336 0.000069 23_VerifyEncoding()


とか書き出されます。


SolarisやFreeBSD、Leopardだと、http://blogs.sun.com/brendan/entry/dtracing_vim_latencyも便利ですね。

procsystime、dtrussを知らなかったので、似たようなことするのにdtraceのscript書いてました。

というか man -k dtrace すると、いちいちdtraceのscript書かなくてもいいくらいたくさんscriptが入ってますね...

2009-04-13

MacVim-KaoriYa と autocomplpop.vim

MacVim-KaoriYa 好評のようで何よりです。ありがとうございます。本家MLでも取り上げられまして。どうなることやら。


http://pc11.2ch.net/test/read.cgi/mac/1133534694/264

autocomplpop.vim ですが、windows版ではhas('multi_byte_ime')で、日本語入力中は候補を出さなくしているような気がします。MacVimでもmulti_byte_imeたてちゃえばいい気もしますが、こんな感じでどうでしょうか。backspaceで文字を削ったときにも確定されてしまうので、asciiを1文字入力 or 削ったときに発動するようにしてみました。


--- autocomplpop.vim.orig
+++ autocomplpop.vim
@@ -458,7 +458,10 @@
let prev_pos = (exists('self.last_pos') ? self.last_pos : [-1, -1, -1, -1])
let self.last_pos = getpos('.')

- if has('multi_byte_ime')
+ if has('gui_macvim')
+ return (prev_pos[2] + 1 == self.last_pos[2] ||
+ \ prev_pos[2] - 1 == self.last_pos[2])
+ elseif has('multi_byte_ime')
return (prev_pos[1] != self.last_pos[1] || prev_pos[2] + 1 == self.last_pos[2] ||
\ prev_pos[2] > self.last_pos[2])
else



私的な本命は neocomplcache.vim ですが、昨日かおとといのバージョンから起動がとても遅くなってしまったので調べたいところ。

2009-04-10

MacVim KaoriYa 20090410

http://code.google.com/p/macvim-kaoriya/

バイナリ更新しました。


  • gettextによる日本語化を修正。
  • IM自動ON機能のみ無効化(ESC押下時のIM自動OFFは有効)。
  • 言語環境に従うように変更。


fを3回押すだけでIMがonになるという謎の挙動をねじ伏せてみました。
どうでしょうか?

本当はMacVim側でIMの状態をことあるごとに監視して、Vim側に通知しておく必要があると思いますが...

また、ちゃんとvim.moを読み込めるようになったので、ほぼすべて日本語化されたと思います。

Finderから情報で言語の日本語のチェックを外すと英語/LANG=Cで起動します。Info.plistでLANG=ja_JP.UTF-8してたのをやめて、使っている言語環境でLANG設定するように変更しました。

MacVim/masterは、やはりなんかおかしいので20090408-branchつくって対処。


あとCarbon/Cocoa Vim.appに負けている部分に気づいたら教えてくださいませ。

コメントでも、メールでも、http://twitter.com/splhackでも。

MacVim IMの挙動が変

http://www.serendip.ws/archives/1687

> :set noimdisable で ESC キーで IME を off に出来るようにしても
> Dock icon は跳ねなくなっていたけれど、
> f キーの移動や r キーでの置換の際に IME が on になってしまったり、
> 挿入モード時に tab キーで IME が on になったりしてしまう。


iminsertの更新が変だと思ってましたが、imsearchなども意図せずに更新されるようですね。


ESC押したらIM offになるだけ、って機能だけがあればいい気がしますので調べてみます。


それはそれとしてMacVimのtrunkが新規ウインドウが開いてるのに表示されないとかおかしなことになっているような?

2009-04-08

MacVim KaoriYa ドキュメント

http://code.google.com/p/macvim-kaoriya/wiki/Readme

めずらしくドキュメント書きました :-)


アイコン跳ね問題のpatchも取り込んでもらえそうです。


if_ruby.c 1.9.1用パッチあてて、ちょっとヘッダいじってMacRuby 0.4をlinkしてみました(-fobjc-gc必須)が、すぐさま落ちました。gui_macvim.mをgc対応させないとだめかも?

MacVim KaoriYa 20090408

http://code.google.com/p/macvim-kaoriya/

Sparkleでお届けされていると良いですが、:set noimdisableでDockのアイコンが跳ね続ける件を直してバイナリアップしました。

vim_mac MLにも送信済みです。

ただ、まだ問題がありまして。iminsertが更新されるわけですが、どうもIM onでしか記憶してくれないので、暫定的にgvimrc
inoremap <silent> <ESC> <ESC>:set iminsert=0<CR>

してあります。これでどうなるかと言いますと、


  1. 挿入モードに移行
  2. IM on
  3. 日本語入力
  4. ESC押下 → 自動的にIM off
  5. 挿入モードに移行しても自動的にはIM onにはならない


となります。これはこれで望まれた挙動のような気がしないでもないですが(私は自分でIM offにしちゃうので...)。

MacVim Dockアイコン跳ね続け問題解決

http://fifnel.com/2009/04/07/2300/
> 最初はMacVimなどを使っていたのですが、他のはiminsert=0が使えませんでした。


MacVimで :set noimdisable すると、Dockでアイコンがはね続けちゃいますからね...


MacVimから呼び出される方のVimでCarbonのKeyScriptを呼び出しているのが原因なのですが、CarbonのAPIを呼び出したくせにGUI的なイベントをハンドルしてないから、とかでしょうか。


#include <Carbon/Carbon.h>
int main() {KeyScript(smKeySysScript); for(;;){sleep(1);} return 0;}


gcc a.c -framework Carbon

./a.out とかやってもアイコン跳ねたりしませんが、./a.outをapplication bundleに突っ込んでダブルクリックしたら、見事に跳ね続けました。


ということで、MacVim側でKeyScriptを実行するようにしてみました。アイコン跳ねません!

MacVim-Kaoriyaのソース、バイナリは後ほど更新します。MacVim MLにもパッチ送っておきます。


KeyScriptとか10.5でdeprecatedですけどね。


diff --git a/src/MacVim/MMVimController.m b/src/MacVim/MMVimController.m
index 2e3738f..f2b40db 100644
--- a/src/MacVim/MMVimController.m
+++ b/src/MacVim/MMVimController.m
@@ -981,6 +981,10 @@ static BOOL isUnsafeMessage(int msgid);
showWithText:[dict objectForKey:@"text"]
flags:[[dict objectForKey:@"flags"] intValue]];
}
+ } else if (ActivateKeyScriptID == msgid) {
+ KeyScript(smKeySysScript);
+ } else if (DeactivateKeyScriptID == msgid) {
+ KeyScript(smKeyRoman);
// IMPORTANT: When adding a new message, make sure to update
// isUnsafeMessage() if necessary!
} else {
diff --git a/src/MacVim/MacVim.h b/src/MacVim/MacVim.h
index 2f52306..de68bf1 100644
--- a/src/MacVim/MacVim.h
+++ b/src/MacVim/MacVim.h
@@ -177,6 +177,8 @@ enum {
SetFullscreenColorMsgID,
ShowFindReplaceDialogMsgID,
FindReplaceMsgID,
+ ActivateKeyScriptID,
+ DeactivateKeyScriptID,
};


diff --git a/src/MacVim/MacVim.m b/src/MacVim/MacVim.m
index d94c825..17f4e01 100644
--- a/src/MacVim/MacVim.m
+++ b/src/MacVim/MacVim.m
@@ -84,6 +84,8 @@ char *MessageStrings[] =
"SetFullscreenColorMsgID",
"ShowFindReplaceDialogMsgID",
"FindReplaceMsgID",
+ "ActivateKeyScriptID",
+ "DeactivateKeyScriptID",
};


diff --git a/src/MacVim/gui_macvim.m b/src/MacVim/gui_macvim.m
index 2e53a92..e0f5d9d 100644
--- a/src/MacVim/gui_macvim.m
+++ b/src/MacVim/gui_macvim.m
@@ -1270,7 +1270,8 @@ im_set_active(int active)
SInt32 systemScript = GetScriptManagerVariable(smSysScript);

if (!p_imdisable && smRoman != systemScript)
- KeyScript(active ? smKeySysScript : smKeyRoman);
+ [[MMBackend sharedInstance] queueMessage:
+ (active ? ActivateKeyScriptID : DeactivateKeyScriptID) data:nil];
}

2009-04-06

MacVim KaoriYa 20090406

http://code.google.com/p/macvim-kaoriya/



KaoriYaさんのパッチを適用して、なるべく日本語化したMacVimです。

ひととおり日本語化できたので、バイナリをアップしました。10.4/10.5 universalバイナリです。

KaoriYaさんのvimrc、gvimrc、vimスクリプトをなるべく活かしてますので、インストールするだけで日本語の編集ができたり、migemo検索できたりします。

ドキュメント準備中です。


Vimにすでに日本語メニューが入っていますが、MacVimでは非対応としてcomment outされていました。が、特に問題なくそのまま使えました。ちょっとだけOS Xぽく変更してます($VIMRUNTIME/menu/lang/menu_ja_jp.utf-8.macvim.vim)。

OS X固有の検索ダイアログなどは、CocoaのLocalizationの仕組みで日本語リソースを追加しています。nibファイルは日本語リソースを追加し、ソースコード中に埋まっている日本語化可能なところはNSLocalizedStringを使用しています。

Sparkleの更新チェックもMacVim KaoriYaに向けてます。

+rubyです。+pythonも入れたかったんですが、10.4 universalでbuildできなかったので外してます。

既知の問題として、imdisableでDock跳ね続け、IM半角文字幅、gettext部分が動いてない?、などがありますが、Vim.app carbon、cocoaより使えるんじゃないでしょうか。

2009-04-03

tips?

repo.or.czのsnapshotはtgzだとダウンロードの度に変化する。zipだと変化しない。

http://xcatsan.blogspot.com/search/label/ローカライズ

.DS_Storeを生成するためのPerlスクリプト。
https://wiki.mozilla.org/DS_Store_File_Format
http://cpan.uwinnipeg.ca/dist/Mac-Finder-DSStore

SetFile -a V file で不可視属性。Finderから見えなくなる。GetFileInfoで確認。

2009-04-02

MacVim + KaoriYaパッチ お試し版バイナリ



http://code.google.com/p/macvim-kaoriya/

とりあえず動くものを作りました。今回はintel mac専用です。見ての通り、中途半端に日本語化されてたりします。

vim:7.2.148 macvim:snapshot-44 kaoriya:20090321 がベースです。

詳しくはこちら http://repo.or.cz/w/MacVim/KaoriYa.git

2009-04-01

MacVim + KaoriYaパッチ 続き


■Gitリポジトリ (MacVimからのfork)
http://repo.or.cz/w/MacVim/KaoriYa.git

■バイナリ配布予定地
http://code.google.com/p/macvim-kaoriya/

■MacPorts
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FMacVim


MacVim + 香り屋さんのパッチ + なるべく日本語化 = 香り屋さんのWindows版の使い勝手に近いMacVim を勝手に目指します。

vimgdbなどの拡張はPrivatePortfile側で追加

code.googleでバイナリ配布


前sourceforge.jpの自分projectでやってたのを、よりopenなところでやってみました。

本家MacPortsベースのvim(not vim-app)を使ってましたが、このMacVimに乗り換え。


MacVim Core Text branch待ち。わくわく。inlineはvim-cocoa Core Textから持ってきて欲しい。

2009-03-31

Android release-1.0

hardware/msm7k のcupcakeがいつのまにやら進んでるので、release-1.0目的でcupcakeを指定してもcompileできなくなってます。


<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remove-project name="kernel/common"/>
<project path="kernel" name="kernel/msm" revision="refs/heads/android-msm-htc-2.6.25"/>
<project path="vendor/htc/dream" name="platform/vendor/htc/dream" revision="e3868b58332ab687e3d7225a04db4022572762e8"/>
<project path="hardware/msm7k" name="platform/hardware/msm7k" revision="040da078eb98745efe4b3f05ad72e61c66ba70b5"/>
</manifest>


念のためvendor/htc/dreamもrevision指定してみました。

2009-03-30

MacVim + KaoriYaパッチ

http://repo.or.cz/w/MacVim/KaoriYa.git

てのを作ってみました。MacVimからforkして、http://www.kaoriya.net/#VIM72をあててKaoriYa branchを作成し、それからmaster branchを作ってPrivatePortfileでのパッチを当ててみました。これで追いかけやすくなります。

migemoなどを活かすのにconfigureのoptionや環境変数が必要なので、↑にMacPortsを追加する予定です。

メニューの日本語化も実験中。ibtoolでnib更新してみたものの、起動後に上書きされてたのを確認。vim-appと同じ仕組み?

2009-03-27

Vim 7.2 続々

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim72

guifontwide設定しただけでCarbon版もよくなったみたいです。

まだ終了確認ダイアログとかファイルダイアログのメッセージが文字化けしてます。gettext関連? メニューはちゃんと表示されているのですが。


ちなみに http://git.sourceforge.jp/view?p=splhack/MacPorts.git にもcommitしてます。

2009-03-26

Vim 7.2 続き

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim72

いろいろ直しました。

いままでkaoriyaさんpatchのruntimeを入れてなかったことに気づいちゃいまして、反省してちゃんとインストールするようにしました。だいぶwindows版に近づいたんじゃないかと思います。

コマンド+OでOpen、とかのメニューは、vim-appでは既存のメニューの入れ替えでやってましたが、翻訳済みのメニューに対してどうすべきかよくわからなかったため、とりあえず追加しときました。

これで+cocoaは、そこそこまともに動くようになったんですが、+aqua, Carbonの方はなんか変です。前はCarbon版の方が安定してたんですが。パッチのあたり方がおかしいのかもしれません。

次はMacVim?

2009-03-25

vim 7.2

kaoriyaさんのパッチが更新されていたことに、ようやっと気づきましたのでPrivatePortfileも更新しました。

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim72

vim-appベース。buildはできたもののほとんど使ってませんのでちゃんと動くかどうかわかりませんですが。

vim-cocoaはcoretext対応版しか更新されてないっぽいですので、+cocoaはLeopard専用になっちゃいました。Portfileでversionチェックしてないのでbuild時にエラーになると思います。あと透過値設定が0〜100で、さらに逆? だったので、kaoriyaさん版にあわせてみました。

+gdb とか追加してたりして。

2009-03-16

iTerm r1716

vimのsyntaxとかで色付き部分の背景色が反転してた...
r1716では治ったかな。

2009-03-14

iTerm

subversion trunk r1708 の変更から、input methodからの文字列挿入時に背景が半分しか更新されなくなってしまいました。


文字描画時はdouble width characterを調べてるのに、背景描画時は調べてなさげなのでパッチ作ってみました。
http://sourceforge.net/tracker2/?func=detail&aid=2686877&group_id=67789&atid=518973


あとtrackerに入れてないんですが、どうも表示位置がずれるので、行高を1.25倍してみました。ascii fontとnon-ascii fontでサイズ違うからかも?(Osaka-mono 14とOsaka-mono 12)


↑込みのMacPorts
http://git.sourceforge.jp/view?p=splhack/MacPorts.git

2009-03-10

official ADP1 image

http://android-developers.blogspot.com/2009/03/software-update-available-for-android.html

http://www.htc.com/www/support/android/adp.html

これで安心して書き換えられますね。ブートローダ以外。

MENU+Call+EndCall でfastboot抜けられると。
fastbootコマンドが効かない状態のときはバッテリー抜いてました。fastbootコマンド効かないならボタンも効かないか。


android-1.1とかrelease-1.1とかtag打たないのは何故なのだろう。

2009-03-09

G1

ADP1じゃなくてG1です。
SIMで通信できないとどうにもならなそうでしたが、RC29にして、google account入力画面に
adbd

って入れたら、adbでつなげることができました。以下略

(3/11 追記)

SIMはあれども電波がない。Wifiあれども設定できない。

SIMがあれば、google account入力画面までは行けるので、
そこで、入力された文字列を実行してしまう、というRC29の最大のバグを利用して
デフォルトで起動していないadbdを実行してしまえばこっちのもの。

2009-03-04

BeagleBoard

BeagleBoard下調べ

http://beagleboard.org/project

http://code.google.com/p/beagleboard/wiki/HowToGetAngstromRunning

http://code.google.com/p/beagleboard/wiki/HowtoUseSGXunderAngstrom

http://labs.embinux.org/index.php/Android_Porting_Guide_to_Beagle_Board


diff --git a/opengl/libGLES_CM/gl_wrapper.cpp b/opengl/libGLES_CM/gl_wrapper.cpp
+#if 0 && __OPTIMIZE__ && defined(__arm__) && !defined(__thumb__) && !USE_SLOW_BINDING && !GL_LOGGER


あれ、まだGLES hardware accelerationつながってない?

2009-02-20

cupcake on Android Dev Phone 1

masterを特にいじらなくてもcupcakeがそこそこまともに動くようなので試してみました。

http://blog.makezine.com/archive/2009/01/taking_android_cupcake_for_a_spin.html

repo syncして、makeしただけ。fastboot -w flashallしても無事起動しました。


SIMないと相変わらず画面がロックされてますが、

# echo "keyguard.no_require_sim=1" > /data/local.prop
# sync
# reboot

でok。


init.svc.dhcpcdが起動してないですけど、これはWifiの設定間違ってるかも。


実験版IME http://blogger.splhack.org/2009/02/android-ime.html も動いてます。「あ〜お」しか変換できないですけど。ちゃんと変換できるように辞書とか調整したいところ。

Note pad


連絡先


↑ADP1につないだddmsでとったscreen capture

日本語ロケール。ロケールのテキスト入力設定で、インストールしてあるIMEを選択できるんですね。iPhoneぽく入力中に切り替えられるのかな? 絵文字入力パッドとか。

vsprops

プロパティ シート vsprops

vcprojでConfigurationごとにちまちま設定していたなんて...

Configuration InheritedPropertySheets="hoge.vsprops"

SCons, swtoolkit などでvcprojを生成するのもまた一興。


しかし、何故、私は積極的にrake(もしくは近代的なAnt,Jam,SCons,etc,etc)を使わないのだろう。疑問。


IDEでちまちま設定したくない、とか (そーいやXcode使うのは抵抗ないなぁ)。


MYDIR:= $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))

(3.81だとこんなの要らないですけど)とか、

OBJS=$(addprefix $(OBJDIR)/,$(CSRCS:.c=.o) $(CXXSRCS:.cpp=.o))

とかを書きたくてたまらない、とか。

複雑怪奇なターゲットの連鎖を簡潔に書けちゃったりすると気持ちいい、とか。


いずれも正しいとしても、GNU make(もしくはBSD系make)を使い続けなければならない決定的な理由がない、はず。

makeしか動かない環境なんてなく、しかも、makeで足らなくて bash,sed,awk,grep,... とか駆使することになるわけで。


yamlできれいに設定できちゃったりすると気持ちいいに違いない。


(iTerm + zsh / bindkey -v + vim が主環境な人)

2009-02-18

Androidでファイルコピー

busyboxとかを入れずにファイルをコピーする方法。
cat /data/local/tmp/libhoge.so > /system/lib/libhoge.so

↑ はrootでかつrwでmountされてないとできないですけど。

adbで何故かpushできなくて、一旦/data/local/tmpとか書けそうなところにpushしたのはいいものの、cpがなくてコピーできずにbusybox拾ってきてcross compileしてpushしてcpしたりした人向け。


lsがなくてecho *した、とか思い出しますね。

2009-02-14

vim / iTerm

vim @7.2.093_1+cscope+gdb+huge+ruby MacPortsに追従
iTerm @0.9.6_20090209 svnを使うように変更
http://git.sourceforge.jp/view?p=splhack/MacPorts.git

iTermのrepositoryがcvs2svnでsubversionに変換されてますね。
http://iterm.svn.sourceforge.net/viewvc/iterm/trunk/

2009-02-09

Android Dev Phone 1 バックアップ方法

http://antonmelser.org/open-source/backup-install-restore-adp1.html から抜粋。


  1. http://www.gotontheinter.net/content/new-images-jf から JFv1.31_ADP1.zip を取得して展開。
  2. format済みのSDカードをADP1に刺す。
  3. カメラボタンを押しながら、電源ボタン押下でADP1起動。バックボタンを押してFASTBOOTにする。
  4. JFv1.31_ADP1 のリカバリイメージで起動
    fastboot boot data/recovery.img

    (fastbootはAndroidソースをmakeすればできます。OS Xならout/host/darwin-x86/bin/fastboot)

  5. 画面のメッセージ通り、ALTを押しながらB押下でバックアップ開始。
    (Performing backup.....  Backup complete!)

  6. SDカードの nandroid ディレクトリにバックアップができているのでPCに移動させる



JFv1.31はnandroidのスクリプトが入ってて、キー押すだけで起動されるわけです。便利。感謝。

2009-02-04

Android 実験版 IME

http://www.youtube.com/watch?v=T93Py8bco_o

てな感じで。どうでしょうか。


http://code.google.com/p/android-migemo-ime/

adb install -r SoftKeyboard.apk

でインストールできるはずです。cupcakeで入ったInputMethodの仕組みを使ってますんで当然ながらcupcake以降用です。


仕組み

cupcakeのsoftware keyboardは、development/samples/SoftKeyboard のようで。

入力文字列を元に候補を表示して選択、なんていう機能が最初から実装されてました。CandidateViewとか。

ので、入力されたアルファベット文字列から日本語候補を作れば、とりあえずIMEとして使えるようになります。

JNIでnativeのlibraryでも呼ぼうかと思いましたが、ふとmigemoを思い出したところ、Java実装を見つけました(J/Migemo)。

入力文字列を喰わせて、返ってきた文字列候補をCandidateViewに入れてみた次第。動いてます。




res/rawからのリソース読み込み。1MBくらいしか読めないようで。元のmigemo-dictはもっと大きいので、とりあえず「お」の後でぶったぎってあります。ということで、「か」以降は変換できませんので注意 :-) (ひらがな、カタカナにはなります)

分割したり、逐次読み込みとか、いくらでも工夫のしがいはありますけども。




Java版POBox移植するのがいいかも。

2009-02-03

Android Dev Phone 1 その13

SHIFT + MENU で /sdcard/bugreports にバグレポート生成。


でたらめにキー叩いてたら、突然振動したので何かと思いました。

バグレポート生成開始時に1回振動、終了時に2回振動、でした。


いったい誰がこんなことをやってるかと調べてみると

frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java

が、ACTION_BUG_REPORT intentをブロードキャストすると。えーと、受ける人は?


LockScreen.java とかでSIMありなりチェックしてたりするわけですね。

2009-02-02

Ruby for Android その8

http://code.google.com/p/android-ruby/

system/core/rootdir を参考に rb files もインストールするようにしてみました。

Android.mk diff


http://code.google.com/p/android-ruby/downloads/list

バイナリも更新。インストールでbusyboxに頼ったりしてますけど、これはなんとかしたいところ。

release-1.0(G1,ADP1)、cupcake(いまのmasterくらい)でも多分きっと動きます。

2009-01-25

Ruby for Android その7

http://code.google.com/p/android-ruby/source/browse/#svn/trunk

http://android-ruby.googlecode.com/svn/trunk/lib/Android.mk

enc, ext など全部shared libraryにできました。


/data/ruby/lib/ruby/1.9.1/arm-linux/nkf.so

において、require 'nkf'、NKF.guess, NKF.nkfなど動作確認ずみ。


master HEADでbuildしたものはrelease-1.0で動作せず。libc.soその他更新されてますしね。release-1.0とtrunk用バイナリ2種類用意しないと。


sourceforge.jpのgit更新に失敗した(ローカルでbranchリネームとかするとややっこしいことになりますね)ので、code.google.comのsubversionに移動させました。

2009-01-23

Android donut

cupcake の次は donut

cupcake branch が release サイクルに入った?

次は。eclair はフランス語か。


http://twitter.com/splhack

RSS流してみてます。

2009-01-22

Ruby for Android その6

ruby-1.9.1-rc2 ベースに変更中。

shared libraryもbuildできるようにconfigureに渡す環境変数などをいじってみました。

config.sh

so群とrubyがbuildできてます。動かしてないですけども。

これを元にAndroid.mk変更開始。

2009-01-21

Ruby for Android その5

release-1.0で作業中。

/data/ruby に.rbを置くようにconfigure変更。
Encoding::ASCII_8BIT がuninitialized constantとか言われるのはdefineが足りてないっぽい。


rjbはわりとあっさりbuildできまして、なんとなく使えてる感じです。まとめ中。


それはそれとして、master HEADで試したところbuild失敗? 要調査。

stdlib.h などが変わってますね。
/* make STLPort happy */
なんて書いてあります。

frameworks/base/include/utils/List.h などにSTLもどきが入ってますが、STLportそのものも入ってくるんでしょうか。

2009-01-20

Ruby for Android その4



てな感じの構成になっています。


ARM用バイナリもアップしてみました。

http://code.google.com/p/android-ruby/downloads/list

emulatorは、

adb remount
adb push libruby.so /system/lib
adb push libruby_jni.so /system/lib
adb install -r package.apk

で、いけると思います。

G1(ADP1)では、adb remountが効かなかったと思うので、adb shellで

su
mount -o rw,remount /dev/block/mtdblock3 /system

しときます。またadb pushだと/system/libに新規ファイルを作成できないので、echo > /system/lib/libruby.so とかしておきます(busyboxでcpしたので未確認)。

そのうちwikiにまとめます。

http://code.google.com/p/android-ruby/


あと、追求してないんですが、rb_string_eval_protectでローカル変数が引き継がれないみたいです。グローバル変数($a)とかdefは使えます。bionic関連?

ライブラリ(.rb)群もちゃんとインストールすれば使えるはずです。.soもdl系関数使えそうな気が。

http://rjb.rubyforge.org/もbuildできれば、アプリの大半をRubyで書くこともできそうです。

2009-01-19

Ruby for Android その3

思いあまって http://code.google.com/p/android-ruby/ とか作ってみました。



バイナリ準備中。

Android Dev Phone 1 その12

Debugging native library crashes
http://groups.google.com/group/android-platform/browse_thread/thread/1227418641c53473


JNIライブラリで例外が発生した、などの状況をgdbで調べる方法。

adb shell setprop debug.db.uid 32767

としておく。/data/local.propに debug.db.uid = 32767 って書いといてもいけるかも。

すると例外発生時にdebuggerdが拾ってくれます。

adb logcat とかでログを見ると


I/DEBUG ( 21): ********************************************************
I/DEBUG ( 21): * process 513 crashed. debuggerd waiting for gdbserver
I/DEBUG ( 21): *
I/DEBUG ( 21): * adb shell gdbserver :port --attach 513 &
I/DEBUG ( 21): *
I/DEBUG ( 21): * and press the HOME key.
I/DEBUG ( 21): ********************************************************


などと出ているので、

adb shell /data/gdbserver :8888 --attach 513 &

とか。gdbserverはprebuiltに入っているので、/dataなどにadb pushしておく。また、adb forward tcp:8888 tcp:8888などでport転送を設定しておく。

これでgdbで接続できます。

$TOP/prebuilt/darwin-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-gdb $TOP/out/target/product/dream/obj/SHARED_LIBRARIES/libruby_intermediates/LINKED/libruby.so
target remote localhost:8888

など。

2009-01-18

Ruby for Android その2

gccとかldとかのoptionが足らないのが原因だと思いますが、追求しません。

configureしてmakeした経過そのものが目的だったのでした。


ということで make |& tee log した結果から、Android.mk を作ってみます。

Rubyをビルドするための Android.mk

bionicでのinclude内容(unistd.hがincludeされてない状況とか)を修正したり、同一ファイル名をrenameしたり、
強引にextconf.hをまとめてみたり、などの変更を施してます

なんとなく libruby.so ができています。


libruby.so をつかって main.c で実行ファイルを作ってみると、emulatorで動きました!


Terminalアプリとかから使うのもいいですが、どうせならJavaから使ってみたい。


ので、rb_eval_string_protect をJNI経由で呼べるようなライブラリと、それを使うアプリ(いんちきげなirb)を作ってみました。




http://git.sourceforge.jp/view?p=splhack/AndroidRuby.git

Ruby for Android

ruby-1.9.1-rc1 を Android でビルドしてみます。

codesourcery の toolchain で static link すれば動くと思いますが、ここはやはりbionic(Androidのlibc)を使ってビルドしてみましょう。


試行錯誤した結果 ↓


#!/bin/sh
TOP=${HOME}/android
PRODUCT=dream
HOST=linux-x86
GCCHOST=i686-linux
ARCH=arch-arm
GCCARCH=arm-eabi
GCCVER=4.2.1
RUBYARCH=arm-android-linux
TOOLCHAIN_PATH=${TOP}/prebuilt/${HOST}/toolchain/${GCCARCH}-${GCCVER}
TOOLCHAIN_PREFIX=${TOOLCHAIN_PATH}/bin/${GCCARCH}-
LPATH=${TOP}/out/target/product/${PRODUCT}/obj/lib

export CC=${TOOLCHAIN_PREFIX}gcc
export LD=${TOOLCHAIN_PREFIX}ld
export AR=${TOOLCHAIN_PREFIX}ar
export RANLIB=${TOOLCHAIN_PREFIX}ranlib
export CPPFLAGS="-nostdinc -I${TOP}/external/zlib -I${TOP}/external/openssl/include -I${TOP}/bionic/libc/include -I${TOP}/bionic/libc/${ARCH}/include -I${TOP}/bionic/libc/kernel/common -I${TOP}/bionic/libc/kernel/${ARCH} -I${TOP}/bionic/libc/kernel/common/linux -I${TOP}/bionic/libm/include -I${TOOLCHAIN_PATH}/lib/gcc/${GCCARCH}/${GCCVER}/include -Dptrdiff_t=__ptrdiff_t -include stdio.h -include unistd.h -include fcntl.h -include sys/mman.h -DHAVE_GETCWD"
export LIBS="-nostdlib -L${LPATH} ${LPATH}/crtbegin_dynamic.o -lstdc++ -lc -lm -ldl ${LPATH}/crtend_android.o -Wl,-dynamic-linker,/system/bin/linker,-rpath,/system/lib"

export ac_cv_func_getpgrp_void=yes
export ac_cv_func_setpgrp_void=yes
export ac_cv_prog_cc_g=no
export ac_cv_prog_cxx_g=no
export ac_cv_func_vsnprintf=yes
export ac_cv_func_isinf=yes
export ac_cv_header_langinfo_h=no

./configure --build=${RUBYARCH} --target=${RUBYARCH} --host=${GCCHOST} --with-static-linked-ext --enable-wide-getaddrinfo

(config.sh)


あといくつかソースとかMakefileまわりをいじったらビルドできました。

emulator上に持ってっても動かなかったですけども。

2009-01-13

Android Dev Phone 1 その11

ubuntu8.10上で make sdk に失敗。javadocらしきところ。

> Generate SDK from Source?
http://groups.google.com/group/android-platform/browse_thread/thread/de555a2f3029ab1a

ubuntuなら、

# apt-get install sun-java5-jdk
# update-alternatives --config javadoc


でいけました。


release-1.0 branch だと、

development/build/sdk.atree:122: couldn't locate source file: development/emulator/prebuilt/android-arm/kernel-qemu
http://review.source.android.com/789

にもひっかかるので、development/build/sdk.atree を書き換え。

http://review.source.android.com/789/patch/1/z064d469caa731f1e6ec52ad47e94703da3111909

2009-01-10

Android Dev Phone 1 その10

Heads Up: Adding a library to Android
http://groups.google.com/group/android-platform/browse_thread/thread/618971d3f7608f4c/2e15c8be7abca1e4


development/samples/PlatformLibrary ですが、

adb install $MYDROID/out/target/product/dream/data/app/PlatformLibraryClient.apk

しても、INSTALL_FAILED_MISSING_SHARED_LIBRARY って出てインストールできません。

out/target/product/dream/system/framework/com.example.android.platform_library.jar を他のjarファイルと同様に /system/framework に置いてみても、やはり同じエラー。


そもそもこのエラー誰がどうやって出してるのかと探ってみれば
frameworks/base/services/java/com/android/server/PackageManagerService.java line 1639

/etc/permissions.xml に書いてあるjarしか許可しないようになってるわけでした。


frameworks/base/data/etc/permissions.xml に


<library name="com.example.android.platform_library"
file="/data/app/com.example.android.platform_library.jar"/>


とか追加して/system/etcに置いて、jarを/data/app/com.example.android.platform_library.jar に置いて再起動すればインストールできました。


out/target/product/dream/obj/SHARED_LIBRARIES/libplatform_library_jni_intermediates/LINKED/libplatform_library_jni.so は、/system/lib に置きます。

/init.rc で LD_LIBRARY_PATH 指定してますが、/を書き換えるにはfastbootで焼かないといけないような気がするので、/system/libに置かざるを得ないかなと。

/systemいじるには
mount -o rw,remount /dev/block/mtdblock3 /system
で。

直接adb pushできないところへは、busybox使ってcpするとかします。

Android Dev Phone 1 その9

repoのworking dirの外でbuild

$HOME/android に repo init してたとしたら

source $HOME/android/build/envsetup.sh

とかで環境設定しといて、Android.mkのあるところで、

TOP=$HOME/android mm

とかすればok。


cupcakeに入ってるPlatformLibraryだったら

git clone git://android.git.kernel.org/platform/development.git
cd development/samples/PlatformLibrary
TOP=$HOME/android mm


build結果は、$HOME/android/outですけど。

Android Dev Phone 1 その8

現在のrepoで、Android Dev Phone 1 (HTC dream)に元から入ってるバージョンのAndroidをbuildするにはどうすれば。

release-1.0 revisionを指定すればいけるはず。

んが、http://android.git.kernel.org/をながめてみると、肝心のplatform/vendor/htc/dream.gitplatform/hardware/msm7k.gitがrelease-1.0 branchを持ってなさげ。


しかし履歴を見てみると、cupcake branchが入ってきたときの状態がちょうどrelease-1.0らしき気配。

ということで

repo init -u git://android.git.kernel.org/platform/manifest.git -b release-1.0


してrelease-1.0を持ってくるようにして、htc dream固有のものを取ってくるための .repo/local_manifest.xml は


<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remove-project name="kernel/common"/>
<project path="kernel" name="kernel/msm" revision="refs/heads/android-msm-htc-2.6.25"/>
<project path="vendor/htc/dream" name="platform/vendor/htc/dream" revision="cupcake"/>
<project path="hardware/msm7k" name="platform/hardware/msm7k" revision="cupcake"/>
</manifest>


のようにkernelはhtc dream用の2.6.25を、他はcupcakeを指定。で repo sync。


Ubuntu8.10、というかgcc-4.3だとstdlib.h、string.hなどをincludeしまくらないとbuildできないので
http://groups.google.co.jp/group/android-porting/browse_thread/thread/66862bdb52dac936
gcc-4.2を使う。ので TOPディレクトリの buildspec.mk は、

TARGET_PRODUCT:=htc_dream
CC=gcc-4.2
CXX=g++-4.2


としておく。


libaudioがbuildできないのは、include pathが解決できないせいなので
http://groups.google.com/group/android-platform/msg/dac64d13ff2303b0
シンボリックリンクを貼ってしまう。
cd hardware/msm7k/libaudio
ln -s ../../../kernel/include/linux .



あと system/wlan/ti/wpa_supplicant_lib/Android.mk の STA_DK_ROOT を
STA_DK_ROOT = $(LOCAL_PATH)/../sta_dk_4_0_4_32

しとけば、buildできました。


動作確認してないので、ADP1出荷時と同じような状態のイメージができてるかどうかよくわかりませんけども。

(2009/03/31 追記)