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から持ってきて欲しい。