vim 7.1.241に追従しました。
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim
searchまわりにさらに変更が入ったのでmigemoまわりをあわせて変更(kaoriyaさんにメールで報告済み)しました。
+ruby でbuildできないという件を調べてみたのですが、手元では再現できませんでした。なんでしょう。
MacVimは何やら興味深い更新があったのですが、実際にinstallしてみるとあんまり変わってない印象です。
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FMacVim
2008-01-25
local ports
/opt/local/etc/macports/sources.conf
# To prevent a source from synchronizing when `port sync` is used,
# append [nosync] to the end of the line
# Example: file:///Users/landonf/misc/MacPorts/dports [nosync]
知らなかった。
subversionからcheckoutしててsyncに失敗してたので、毎度コメントアウトしてた。
[nosync]
付けた。
2008-01-19
vim 7.1.235
vim 7.1.235 に追従しました。
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim
cf.sourceforge.jp にログインできない件を対応していただきましたので(感謝)、バイナリも更新しました。
http://sourceforge.jp/forum/forum.php?forum_id=13839
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim
cf.sourceforge.jp にログインできない件を対応していただきましたので(感謝)、バイナリも更新しました。
http://sourceforge.jp/forum/forum.php?forum_id=13839
2008-01-14
vim 7.1.228
vim 7.1.228 に追従。
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim
パッチのラッシュ。落ち着いたかな?
cf.sourceforge.jp の OS X にログインできない問題は放置されっぱなし... なのでバイナリはおあずけです。
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim
パッチのラッシュ。落ち着いたかな?
cf.sourceforge.jp の OS X にログインできない問題は放置されっぱなし... なのでバイナリはおあずけです。
2008-01-09
不思議なこと解決 iTerm編
[ 1867339 ] decode_utf8 always looks the lead byte for getting reqbyte
表示文字列がUTF-8だった場合、文字の先頭バイトを見て、それが何バイト分の文字(「あ」は3byte、「×」は2byteとか)なのか判定するとこがあるのですが、そこが常に文字列の先頭バイトを見てるので、3byte,2byte混在文字列(「○×」とか)においておかしな挙動になるわけですね。
PrivatePortfileもpatchが取込まれるまでの暫定処置として更新しました。
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FiTerm
ターミナルもiTermも option + y でバックスラッシュが入力されるのは何がどうなってるんだろう。
あとLeopardでiTermが落ちる現象は未確認です。Tigerでも急に落ちる時は落ちます...
表示文字列がUTF-8だった場合、文字の先頭バイトを見て、それが何バイト分の文字(「あ」は3byte、「×」は2byteとか)なのか判定するとこがあるのですが、そこが常に文字列の先頭バイトを見てるので、3byte,2byte混在文字列(「○×」とか)においておかしな挙動になるわけですね。
PrivatePortfileもpatchが取込まれるまでの暫定処置として更新しました。
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FiTerm
ターミナルもiTermも option + y でバックスラッシュが入力されるのは何がどうなってるんだろう。
あとLeopardでiTermが落ちる現象は未確認です。Tigerでも急に落ちる時は落ちます...
vim 7.1.211
vim 7.1.211 に追従。
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim
以前のパッチファイルを置き換える 7.1.126ne なんてファイルができてましたが、101-200 patch も出てたのでややこしいことにならなくてよかった。
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim
以前のパッチファイルを置き換える 7.1.126ne なんてファイルができてましたが、101-200 patch も出てたのでややこしいことにならなくてよかった。
2008-01-08
不思議なこと1つ解決
http://homepage.mac.com/nand/macosx/emacs_jis_keyboard.html
ことえりの環境設定で「JISキーボードの¥キーで入力する文字」を「\(バックスラッシュ)」にするのが良さそう。
ことえりじゃない環境であれば、KeyRemap4MacBook で変換するのがよいと思います(要改造ですかね)。
(追記 2008/1/10)
kimurawさんとこにCocoaアプリでの切り替え方法が掲載されてます。
http://kimuraw.txt-nifty.com/d/2008/01/swp_yen_bslash.html
英語キーボードでも option 押しながら入力するとASCII以外が打てることに気づきました。
option + y で簡単に ¥ が打てます。
¥¥¥¥¥¥¥¥
vim 7.1.211 に追従。searchitの引数がかわってkaoriyaパッチあてに失敗するので一時的に対策。
ことえりの環境設定で「JISキーボードの¥キーで入力する文字」を「\(バックスラッシュ)」にするのが良さそう。
ことえりじゃない環境であれば、KeyRemap4MacBook で変換するのがよいと思います(要改造ですかね)。
(追記 2008/1/10)
kimurawさんとこにCocoaアプリでの切り替え方法が掲載されてます。
http://kimuraw.txt-nifty.com/d/2008/01/swp_yen_bslash.html
英語キーボードでも option 押しながら入力するとASCII以外が打てることに気づきました。
option + y で簡単に ¥ が打てます。
¥¥¥¥¥¥¥¥
vim 7.1.211 に追従。searchitの引数がかわってkaoriyaパッチあてに失敗するので一時的に対策。
2008-01-07
不思議なこと
OS Xで日本語キーボードの円マーク(¥マーク)を押すと何が入力されるんでしょうか?
ASCIIコードの範囲なら 0x5C (バックスラッシュ) なんかな。
UTF-8まで広げると 0xC2A5 (¥) か。
うーむ。アプリによったり、なんらかのコンテキストによる? vimならfileencode見てどっちを入力するか決めるとか。
勝手にIME ONになってUTF-8のコードが入力されるという挙動も考えられなくはないか。
そもそもバックスラッシュキーは存在するのか? windows用日本語キーボードでバックスラッシュキーと円マークキーが両方あるのを見たような気がする...
http://pc.watch.impress.co.jp/docs/2006/0519/apple1_28.jpg
なかった...
http://araistudy.g.hatena.ne.jp/czk-htn/20080106/1199575618
の次の行がずれるという挙動でした。
は、ずれませんでした。
でも
は、ずれます。ということは
も、ずれるんじゃないでしょうか。ずれました。
ということで、UTF-8で
などの2byte文字と3byte文字が混じると次の行の表示先頭位置がずれるようです。
ずれるというか、前の行の表示位置を引きずってる感じですね。改行時の表示位置が初期化されないルートがありそう。
ASCIIコードの範囲なら 0x5C (バックスラッシュ) なんかな。
UTF-8まで広げると 0xC2A5 (¥) か。
うーむ。アプリによったり、なんらかのコンテキストによる? vimならfileencode見てどっちを入力するか決めるとか。
勝手にIME ONになってUTF-8のコードが入力されるという挙動も考えられなくはないか。
そもそもバックスラッシュキーは存在するのか? windows用日本語キーボードでバックスラッシュキーと円マークキーが両方あるのを見たような気がする...
http://pc.watch.impress.co.jp/docs/2006/0519/apple1_28.jpg
なかった...
http://araistudy.g.hatena.ne.jp/czk-htn/20080106/1199575618
○×[0x0a]
の次の行がずれるという挙動でした。
×[0x0a]
は、ずれませんでした。
でも
×○[0x0a]
は、ずれます。ということは
〇±
も、ずれるんじゃないでしょうか。ずれました。
ということで、UTF-8で
C2B1 ±
C397 ×
C3B7 ÷
などの2byte文字と3byte文字が混じると次の行の表示先頭位置がずれるようです。
ずれるというか、前の行の表示位置を引きずってる感じですね。改行時の表示位置が初期化されないルートがありそう。
2008-01-05
辞書その4
Leopardの辞書.appはWikipediaも検索できるんですが、ダウンロード済みのものを検索するわけじゃなくて、実際にWikipediaで検索してるみたい。
漁ってみると、
同じようにやればいいんじゃ
と思いながら眺めてみても、どうやらDictionaryの実行ファイル中から決めうちで呼び出してるっぽいので、改造はできても、追加は難しそう。
class-dump(MacPortsにも入ってます)でDictionaryを見てみるとWikipedia用の専用クラスが入ってるのがわかります。
SIMBLで似たような別のクラスを突っ込むという手も取れなくもないかも。
漁ってみると、
/Applications/Dictionary.app/Contents/Resources/Wikipedia.privatedictionary/
にURLやらクエリの出し方、結果の取り出し方、サポート用Javascriptなどが置いてあります。同じようにやればいいんじゃ
と思いながら眺めてみても、どうやらDictionaryの実行ファイル中から決めうちで呼び出してるっぽいので、改造はできても、追加は難しそう。
class-dump(MacPortsにも入ってます)でDictionaryを見てみるとWikipedia用の専用クラスが入ってるのがわかります。
SIMBLで似たような別のクラスを突っ込むという手も取れなくもないかも。
辞書その3
- Problem:
- Some applications do about 90% of what I want.
- Solution:
- Develop my own applications.
- Better Solution:
- Patch the application myself... ← いまココ
RubyInjectは早々にあきらめ、SIMBLを使ってみます。
com.apple.Dictionary をフックするbundleを作ります。右上の検索入力欄はどうみてもNSTextFieldなので、NSTextFieldをposeAsClassでのっとります。NSTextFieldは、ふつうdelegateで変更を通知するはずなので、setDelegateをのっとって検索文字列変更時にどのインスタンスに通知するか覗いてみます。どうやら BrowserWindowController が相手のもよう。のでNSTextFieldインスタンスをもったNSWindowControllerの子クラスを作って、そのインスタンスをNSTextFieldのdelegateに設定してみます。
これで検索文字列決定時にcontrolTextDidEndEditingが呼ばれるようになりました!
#import
@interface MyNSTextField : NSTextField
{
}
@end
@interface MyNSWindowController : NSWindowController
{
id _textField;
}
@end
@implementation MyNSTextField
+ (void)load
{
[self poseAsClass:[NSTextField class]];
NSLog(@"MyNSTextField::load");
}
- (void)setDelegate:(id)anObject
{
if ([@"BrowserWindowController" isEqualToString:[anObject className]]) {
MyNSWindowController *windowController =
[[MyNSWindowController alloc] init];
[windowController set:self];
[super setDelegate:windowController];
}
}
@end
@implementation MyNSWindowController
- (void)set:(id)textField
{
NSLog(@"MyNSWindowController set");
_textField = textField;
}
- (void)controlTextDidEndEditing:(NSNotification *)aNotification
{
NSLog(@"controlTextDidEndEditing");
NSLog([_textField stringValue]);
}
@end
こんな感じですね。setDelegateを奪い取ってる気がしますが、一応動いてます。
あとは検索文字列をオンライン辞書ででも検索して発音音声を返せば念願達成。こっから先はRubyCocoaで繋ぐつもり。
辞書その2
光明が見えた方向に進んでみたが、辿り着いた場所には扉があったものの、それは固く閉ざされていた...
って感じですか。
辞書.appの検索入力をフックできればいいんとちゃいますか。
いくつか方法があると思いますが、まずは、気になっていたRubyInjectで。
machレベルで関数上書きすると。最近はtext segmentが書き込み禁止にされてしまって寂しいですが、それはそれとしてインストールしてみます。
でもって、Dictionary.app起動してpsとかでプロセスIDを調べて
とすると irb が起動して、いろいろできます。
辞書.appの右上のNSTextFieldっぽいところの文字列を引っこ抜ければよいと思うので探してみます。
環境設定ウィンドウの文字列と同じものを見つけたので、setStringValue したら書き換えることができました!
しかし、右上のNSTextFieldらしきのにはどうも辿り着けない。うーん。
って感じですか。
辞書.appの検索入力をフックできればいいんとちゃいますか。
いくつか方法があると思いますが、まずは、気になっていたRubyInjectで。
machレベルで関数上書きすると。最近はtext segmentが書き込み禁止にされてしまって寂しいですが、それはそれとしてインストールしてみます。
$ xcodebuild SYMROOT=/tmp
$ cp -r /tmp/Release/RubyInject.framework /Library/Frameworks
でもって、Dictionary.app起動してpsとかでプロセスIDを調べて
sudo ruby inject.rb プロセスID
とすると irb が起動して、いろいろできます。
辞書.appの右上のNSTextFieldっぽいところの文字列を引っこ抜ければよいと思うので探してみます。
require 'osx/cocoa'
include OSX
def walk(d)
instance = d[1]
NSLog d[0]
NSLog instance.class.to_s
begin
NSLog instance.stringValue.to_s
rescue
end
NSLog " "
begin
instance.subviews.count.times do |i|
walk [d[0] + ".subviews[#{i}]", instance.subviews[i]]
end
rescue
end
end
NSApp.windows.count.times do |i|
walk ["NSApp.windows[#{i}].contentView", NSApp.windows[i].contentView]
end
環境設定ウィンドウの文字列と同じものを見つけたので、setStringValue したら書き換えることができました!
しかし、右上のNSTextFieldらしきのにはどうも辿り着けない。うーん。
辞書
Leopardの辞書.app
インクリメンタル検索できるし、内容も充実。
ただ欲を言えば発音音声が欲しい。
ということで、発音音声付き辞書アプリケーションを得るべく、自分でアプリケーションを作ってみる方向で、辞書を検索する方法を探してみました。
http://numata.designed.jp/?plugin=numa_diary&file=Diary&title=日記&date=20071029
によればDictionary ServicesというAPI群があるらしい。何故かCarbon API。
さっそくこのAPIを使ってObjective-Cで辞書.appもどきを作ってみました。
http://prdownloads.sourceforge.jp/splhack/28808/EDict_test.tbz2
Leopard以降用です。ソースコードのみ。Xcodeでビルドできます。
作ってみて気づいたこと。
うーん。
インクリメンタル検索できるし、内容も充実。
ただ欲を言えば発音音声が欲しい。
ということで、発音音声付き辞書アプリケーションを得るべく、自分でアプリケーションを作ってみる方向で、辞書を検索する方法を探してみました。
http://numata.designed.jp/?plugin=numa_diary&file=Diary&title=日記&date=20071029
によればDictionary ServicesというAPI群があるらしい。何故かCarbon API。
さっそくこのAPIを使ってObjective-Cで辞書.appもどきを作ってみました。
http://prdownloads.sourceforge.jp/splhack/28808/EDict_test.tbz2
Leopard以降用です。ソースコードのみ。Xcodeでビルドできます。
作ってみて気づいたこと。
- インクリメンタル検索ができない。
- 取得できるデータがプレーンテキスト(リッチテキストじゃない)
- リッチテキストで表示できるAPI(HIDictionaryWindowShow)もあるけど、これは辞書.appが起動して表示することになる
うーん。
2008-01-03
vim 7.1.189
しばらく更新がなかったvimですが、年明け早々たくさんpatchが出てたので追従。
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim
更新後再度見に行ったら7.1.190が出てるくらい活発。win32用のパッチなので影響なしですが。
cf.sourceforge.jpのOS Xにログインできない状況が続いている(サポートには問い合わせ済み)のでバイナリはまた今度。
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim
更新後再度見に行ったら7.1.190が出てるくらい活発。win32用のパッチなので影響なしですが。
cf.sourceforge.jpのOS Xにログインできない状況が続いている(サポートには問い合わせ済み)のでバイナリはまた今度。
PrivatePortfile/CMigemo
PrivatePortfileのcmigemoがインストールできないのを調べてみました。
なぜかbuild時に $(CC) が O2 に展開されて、command not foundになってました。
port configure +utf8 後、worksrcpathでmakeすると平気。何故 CC に cc 以外が設定されるのか追求してませんが、CC=ccで対策して更新。
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FCMigemo
make時の環境変数設定方法が変わったのか、Leopardのせいなのか。
なぜかbuild時に $(CC) が O2 に展開されて、command not foundになってました。
sudo port -v build +utf8
で確認(verboseオプション)。port configure +utf8 後、worksrcpathでmakeすると平気。何故 CC に cc 以外が設定されるのか追求してませんが、CC=ccで対策して更新。
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FCMigemo
make時の環境変数設定方法が変わったのか、Leopardのせいなのか。
登録:
投稿 (Atom)