userChrome.js
朝顔日記 – Firefox の拡張機能、userChrome.js の私の使い方 をメモメモ。 Apple Scriptを書いて独自に機能を追加するようなものかな。まぁApple Scriptは触ったこと無いけど。
Caminoにも、そんな風に簡単なスクリプトが追加できればいいなぁと思うけど、CamiScriptがそういいうモノなのかな。
朝顔日記 – Firefox の拡張機能、userChrome.js の私の使い方 をメモメモ。 Apple Scriptを書いて独自に機能を追加するようなものかな。まぁApple Scriptは触ったこと無いけど。
Caminoにも、そんな風に簡単なスクリプトが追加できればいいなぁと思うけど、CamiScriptがそういいうモノなのかな。
というわけで、更新。テキトーだけどバージョン番号も付加した。
前回のは変換候補ウィンドウがとんでもないところに表示されたけど、今回のではそれを修正。具体的には、変換候補ウィンドウの表示位置はfirstRectForCharacterRange:に従うのだけれども、リファレンスによるとこれはスクリーンに対しての座標系を用いるべきなのに、以前のではそれをビューの座標系で返していたのが原因だった。
ほかにもこまごまと。英語が稚拙なのはスルーの方向で。
変換中の文字列をクリックすると変換する部分が移動したりするのは、使ってる人いるのかな?正直実装方法がわからない。 characterIndexAtPoint:が呼び出される気がするけど、どうやらそうでもない。
ことえりでしかテストしてないけど、一応日本語も可能。ATOK欲しいけど余裕無し。
実装したもの、してないもの:
まぁ、未実装なモノのほとんどが今回の件には不要だから、気にしない。 ことえちの変換リストの表示位置だけは必須かな。
あとあとのために、実装する際のメモ:
読んだら分かるように、キモとなるのはinsertText:とsetMarkedText:selectedRange:によるselectedRangeとmarkedRangeの取り扱い。半角英数字のみならmarkedRangeは不要なのかもしれないけど、日本語入力を可能にするためには必須。
ちなみに、このアーカイブに含まれる内容は、煮るなり焼くなり本当に好きにしてもらって構わない(NYSLの文章を添付すべきだったかな)。ってか、むしろより良いモノを作って公開してもらいたい。これは希望
参考にしたのは、Java-Cocoaだけど、みるくCocoaの文字列入力。これだけだと半角英数字しか使えないけど、とっかかりには十分。 あとは、マニュアルと、あとなんだろう?とにかく情報が少なかった気がする。
あとは、まぁ、追々。
そういやCaminoも参考にしたなぁ。nsChildView.mmにNSTextInputが実装されてたから。まぁC++で実装された関数を使ってばかりだし、流れぐらいしかわからなかったけど。今はBug 4586を参考に、候補ウィンドウ(変換パレットだったり、入力リストだったり)の表示位置制御にとりかかってる。
素敵だった。まぁ日本語が通らないけど。その問題は、ドキュメントを読む限り長期的なTODOとしてあるようだった。
で、TextMateを見て、今弄ってる(といっても大学が再開して放置気味)自作エディタに対して萎えたので、それのソースを適当に公開してしまおうかなー。そして日本語入力に取り組んで、TextMateに寄与してみようかなー、とか。入力システムがなかなか複雑なので困ったもんですが。
予想通りというか、TextMateのテキスト編集部分はCocoaを使っていないとのこと。残念。
UTF-8で書いたXML、XSLTをxsltprocにかける際にXSLTのxsl:outputのencodingにShift_JISを指定したら、出力結果のXML宣言のencodingの値がShift_JISになっているだけでなく、実際のエンコーディングもShift_JISになっていた。
Apple、Intel MacでWindowsを動作可能にするツールのパブリック・ベータを公開
10.5ではデュアルブートではなくVirtualPCのようになるといいなぁ。
でもとりあえず余裕が出たらMac miniを買うことにしよう。
ITmediaの記事が詳しい。現在NTFSへの書き込みはサポートされていない模様。Leopard登場時に正式対応したら、魅力的だなぁ。そのとき買うとしよう。Intel Mac向け仮想化ソフトウェアが登場という話もあるし、アグレッシブだなぁ。
べたテキストを扱う前提で。 NSTextViewのawakeFromNibで、
後からタブ幅を変更する際にはNSTextStorageにaddAttributes:range:で全体に適用しなおす必要がある。
タブ幅を文字数で設定するには、NSFontのpointSizeではなく、maximumAdvancementのwidthを文字数倍するのが正しい、っぽい。
NSTextViewの表示範囲の端にきても自動改行しないようにするには、/Developer/Examples/AppKit/TextSizingExampleのReadmeを参考にNSTextViewとNSTextContainerのパラメータを設定する。NSScrollViewに横スクロールバーを表示するよう設定するのを忘れずに。
で、改行する場合に単語単位で改行するか文字単位で改行するかを設定するには、NSMutableParagraphStyleのsetLineBreakMode:を使って設定して、NSTextViewにsetDefaultParagraphStyle:で適用すればいい。
TextSizingExampleでは動的に表示するNSTextViewを切り替えているようだけど、実際には動的にパラメータを設定しなおすだけでも問題ないっぽい。大量にNSTextViewを保持するのはイヤだ。
NSTextView中で改行モード(NSLineBreakByClippingなど)を設定したいなーと思ったら、
しかし、NSTextStorageに属性を設定できるとなるとNSLayoutManagerのsetTemporaryAttributes:forCharacterRange:の類を使う必要がない気がするんだけど、そこらへんどうなんだろう。もしかしたらその影響か、NSScrollViewの横スクロールがうまく同調してないっぽい。
テキスト全体に効かせるにはsetDefaultParagraphStyle:を使えばいいみたいなので、べたテキストの場合にはNSTextStorageをいじる必要はなさそう。あとは、タブ幅の設定。setDefaultTabInterval:はなんか違う予感。