iTerm ペースト時のエンマークの文字化けを回避するPatch
iTermでペースト時にエンマークが文字化けする問題を回避するPatchをつくりました。
これで快適にPerlのワンライナーを書ける。
普通に文字を挿入する時と、ペーストするときと、処理が異なっていて、ペースト時に¥(円記号)をコンバートしないようになっていたので、文字を挿入するときのプログラムをコピー。
初めて、Xcodeを触って、Objective-Cもはじめて見る。非常に自信ない。
max = [aString length];
は合っているのだろうか。。
以下Patch
Index: PTYSession.m =================================================================== RCS file: /cvsroot/iterm/iTerm/PTYSession.m,v retrieving revision 1.252 diff --unified=3 -r1.252 PTYSession.m --- PTYSession.m 18 May 2004 06:52:23 -0000 1.252 +++ PTYSession.m 27 Aug 2004 09:15:52 -0000 @@ -824,7 +824,19 @@ if ([aString length] > 0) { - NSData *strdata = [[aString stringReplaceSubstringFrom:@"\n" to:@"\r"] + + NSMutableString *mstring; + int i, max; + + mstring = [NSMutableString stringWithString:aString]; + max = [aString length]; + for(i=0; i<max; i++) { + if ([mstring characterAtIndex:i] == 0xa5) { + [mstring replaceCharactersInRange:NSMakeRange(i, 1) withString:@"\\"]; + } + } + + NSData *strdata = [[mstring stringReplaceSubstringFrom:@"\n" to:@"\r"] dataUsingEncoding:[TERMINAL encoding] allowLossyConversion:YES]; </pre> なぜ、0x5cでもなく0xb4でもなく0x80でもなく、0xa5なのか、よくわからなかったり。 はやくSafariの文字化けをなおしてください to Apple