服部さんのオリジナルを改変したruby-modeです。
リビジョン | 0ca756afe3171a77eb8119285043fe614dd7c872 (tree) |
---|---|
日時 | 2011-01-16 00:09:36 |
作者 | unknown <yukio@.(no...> |
コミッター | unknown |
added ruby-mode.txt
@@ -0,0 +1,235 @@ | ||
1 | +ruby-mode for xyzzy 改変版 100704 | |
2 | + | |
3 | + Yukimi Sake yukimi_sake@mbi.nifty.com | |
4 | + http://homepage3.nifty.com/Yukimi_Sake/ | |
5 | + | |
6 | +服部さんのオリジナルを改変したruby-modeです。 | |
7 | + | |
8 | +最初にお断りしておきますが、この版の責任は全て私、雪見酒にあります。 | |
9 | +不具合等の報告は全て標記のメールアドレスまでお願いします。 | |
10 | +くれぐれも服部さんに直接メールを送ってご迷惑のかかることがないように | |
11 | +ご注意ください。 | |
12 | + | |
13 | +また、あなたがこのソフトウエアを使用したことによって蒙った不利益につ | |
14 | +いて、私も服部さんも、その他誰も、いかなる補償もしくは、損害賠償、そ | |
15 | +の他あらゆる賠償行為の責務を負わないことを表明しておきます。あくまで | |
16 | +も自己責任でご使用ください。 | |
17 | + | |
18 | +さて、堅い話はこれくらいにしておいて、服部さんのを以下のような仕様に | |
19 | +改変してあります。 | |
20 | +(オリジナルのURLはこちら http://www7a.biglobe.ne.jp/~hat/ ) | |
21 | + | |
22 | +ruby-mode.l単体で以下のことができます。 | |
23 | + | |
24 | +1.RDコメントにも対応したキーワードの色つけ、ボールド表示 | |
25 | + | |
26 | + キーワードの色つけだけはxyzzyの組み込み機能をを使用していますが、 | |
27 | + rdや、コメント、文字列などの色つけなどは自前でシンタックスを解析 | |
28 | + しています。で、予約語はボールドにしています。 | |
29 | + この版からヒアドキュメント、%記法に対応しました。つまり | |
30 | + 全てのリテラルと式展開をパースしています。ただし Rubyは動的な言語 | |
31 | + であるため、実行時以外は完全なパースができません。特にローカル変数 | |
32 | + と、レシーバと引数括弧を両方省略したメソッドは、バッファ上では区別 | |
33 | + をつけるのが大変困難です。実用上支障のないレベルまでは作りこんだつ | |
34 | + もりですが、不具合のあるときはエスケープ文字 '\'や () を適宜使用し | |
35 | + てください。 | |
36 | + | |
37 | +2.ESC-]による文括弧の検索 | |
38 | + | |
39 | + 全リテラルをパースできるようになったので、この機能を追加しました。 | |
40 | + ESC-] で class module def if などとそれに対応した end の間をキャレ | |
41 | + ットが往復します。{}も正しく対応します。なお、()[]の検索はxyzzyの | |
42 | + オリジナルをそのまま使用していますので間に挟まれる文によっては正し | |
43 | + く往復しないことがあります。 | |
44 | + 関数は ruby-electric-goto-parenthesis です。 | |
45 | + | |
46 | +3.オートインデント | |
47 | + | |
48 | + これも自前でシンタックスを解析していますので、修飾子や一行中に | |
49 | + 複数のインデント対象構文があっても正しくインデントします。です | |
50 | + ので[TAB]だけでなく[ENTER]でもオートインデントするようにしまし | |
51 | + た。また、前バージョンのようなリテラルによる制限はありません。 | |
52 | + なお、リテラル内は前行のインデントラベルに合わせるシンプルイン | |
53 | + デントにしてあります。一般部はruby-toggle-indent-modeでオート | |
54 | + インデントとシンプルインデントが切り替わります。インデントなし | |
55 | + のモードはありません。 | |
56 | + *ruby-indent-column* は廃止しました。タブ幅は(tab-columns)で計算 | |
57 | + します。つまり、共通設定のタブ幅に追従します。 | |
58 | + タブ文字とスペースの切り替えは*ruby-indent-with-spaces*で設定し | |
59 | + ます。デフォルトはtです。 | |
60 | + | |
61 | +4.F1でHTMLHelp版のRubyリファレンスマニュアルが開くようにした。 | |
62 | + | |
63 | + http://www.ruby-lang.org/ja/documentation/からchm版のを取ってきて、 | |
64 | + rubymanjp.chm とリネームしてxyzzy\etc\に置いてください。 | |
65 | + 原作のスクリプトは、服部さんのlisp用reference.lです。 | |
66 | + | |
67 | +5.スクリプトの実行 | |
68 | + | |
69 | + 服部さんのオリジナルでは別ファイルでしたが、ruby-mode.lに取り | |
70 | + 込みました。 | |
71 | + 即時実行と、引数付の二種類で、実行時の標準出力はRDE同様リアル | |
72 | + タイムにテンポラリバッファ(*cmd*という名前)に表示されます。 | |
73 | + なお、保存したファイルが対象ですので、実行前に保存してくださ | |
74 | + い。テンポラリファイルを使うか、自動保存して実行するかは | |
75 | + グローバル変数 *ruby-save-bufer-before-run* を変更してください。 | |
76 | + デフォルトはtです。 | |
77 | + | |
78 | +6.オートコンプリージョン | |
79 | + | |
80 | + SHIFT+SPCでxyzzy/etc/にあるキーワードファイルRubyに登録されて | |
81 | + いる単語は補完することができます。 | |
82 | + (キーバインド以外は、服部さんのオリジナルのままです) | |
83 | + | |
84 | +7.GATESキーマップの追加 | |
85 | + | |
86 | + Windows標準のキーバインドでなきゃやだ、という向きには | |
87 | + (load-library "Gates") | |
88 | + した場合は実行関係と関数一覧はファンクションキーに割り付けまし | |
89 | + た。(xyzzyの機能が制限されるので、あまりお勧めしませんが) | |
90 | + | |
91 | +8.関数一覧 | |
92 | + | |
93 | + 服部さんのオリジナルのままです。 | |
94 | + | |
95 | +9.ruby-interaction-mode | |
96 | + | |
97 | + irbを利用したインタラクション(対話)マイナーモードです。 | |
98 | + M-x ruby-interaction-mode またはC-c i (GatesではC-F5)でirbが | |
99 | + 起動−トグルします。 | |
100 | + で、C-jでバッファ上のスクリプトをirbに送りつけ、結果を*Result* | |
101 | + バッファに表示します。 | |
102 | + 送り方は、"end"のある行では、トップレベルの定義をそっくり送り | |
103 | + つけようとします。トップレベルの"end"でない場合はその旨メッセ | |
104 | + ージを出して、何もしません。 | |
105 | + "end"でない行では、一行をirbに送り、irbが実行します。 | |
106 | + 高速なキーリピートで、C-jを送りつづけたり、変なスクリプトを送 | |
107 | + れば、irbが死にます。(汗) | |
108 | + この場合は、あわてずに、C-c i (C-F5)を2回押してください。 | |
109 | + | |
110 | +あ、実行系のコマンドやインタラクションモードのためには、予め | |
111 | +ruby.exe へのパスを通しておいてください。 | |
112 | +Windows9XならAUTOEXEC.BATに、NT,2000,XPなら環境変数へ直接ですね。 | |
113 | + | |
114 | +ざっとこんなところですが、肝心の速度はパース量を増やしたことで | |
115 | +さらに遅くなりました。でも、パースする機会を減らす工夫をしてあ | |
116 | +りますので、いまどきのマシンなら3千行くらいまではそれ程ストレス | |
117 | +なく使用できるでしょう。 | |
118 | + | |
119 | +さて、インストール方法ですが、2種類です。 | |
120 | + | |
121 | +1. NetInstallerを使用する。 | |
122 | + | |
123 | + NetInstallerについては | |
124 | + http://xyzzy.s53.xrea.com/wiki/index.php?QuickTour%2Fext%2FNetInstaller | |
125 | + を参照してください。設定まで自動でやってくれますので、 | |
126 | + site-lisp\ruby-hilite.lだけを自分の好みに編集してください。この | |
127 | + ファイルはインストールのたびに上書きされますので、バックアップを | |
128 | + 取っておいた方がよいでしょう。URLは以下です。 | |
129 | + http://homepage3.nifty.com/Yukimi_Sake/ruby/xyzzy/packages.l | |
130 | + | |
131 | + | |
132 | +2. ruby-mode100704.lzhを展開して自分でインストールする。 | |
133 | + | |
134 | + rbmode100704.lzh を展開して、ruby-mode.l、ruby-mode.lc | |
135 | + とruby-hilite.lをxyzzy\site-lisp\に置いてください。 | |
136 | + コンパイル済みのruby-mode.lcを同梱してありますのでソースを変更し | |
137 | + ない限りバイトコンパイルの必要はありません。 | |
138 | + | |
139 | + なお、バイトコンパイルの手順は | |
140 | + [ESC-x] | |
141 | + byte-compile-file [ENTER] | |
142 | + /xyzzy/site-lisp/ruby-mode.l [ENTER] | |
143 | + これでディレクトリにruby-mode.lcができます。 | |
144 | + これをやらないと遅くて到底使い物になりません。 | |
145 | + | |
146 | + ruby-hilite.lは強調表示の設定ファイルですのでバイトコンパイルの | |
147 | + 必要はありません。こちらをいじると文字列や、コメントや、RDなどの | |
148 | + 色使いを変えることができますので、自分の好みに変更してください。 | |
149 | + なお、以前のruby-hilite.lとはボールドの付け方を変えていますので、 | |
150 | + 注意してください。以前のを別名でバックアップしておいて、新しい | |
151 | + ruby-hilite.lの色設定の部分を書き直すようにしてください。 | |
152 | + | |
153 | + キーワードファイル"Ruby"はxyzzy\etc\に置いてください。服部さんの | |
154 | + と違って、必要最低限のキーワードしか作っていませんので、必要に応 | |
155 | + じて追加するか、服部さんのオリジナルを使ってください。 | |
156 | + | |
157 | + あとは.xyzzy かsite-init.lに以下のスクリプトを追加してください。 | |
158 | + なお、オリジナルのruby.lとの共存はできません。先にオリジナルを | |
159 | + インストールしてある場合は該当行をコメントアウトしてください。 | |
160 | + | |
161 | + ==以下サンプル== | |
162 | + | |
163 | + ;(load-library "Gates"); Gates が好きならファイルの先頭に | |
164 | + (load-library "ruby-mode") | |
165 | + (push '("\\.rb$" . ruby-mode) *auto-mode-alist*) | |
166 | + | |
167 | + | |
168 | +謝辞 | |
169 | + | |
170 | +すばらしい、エディタのようなもの(笑)を開発、公開してくださった | |
171 | +亀井哲也さん、ruby-modeはじめ数々のスクリプト公開や、xyzzyの普及 | |
172 | +に貢献してくださっている服部昌司さん、そしてxyzzyコミュニティの | |
173 | +皆さん、どうもありがとうございます。 | |
174 | + | |
175 | + 2010/06/30 雪見酒 | |
176 | + | |
177 | +2010/07/04 [EOF]直前ではパースをサボっていたのを修正。 | |
178 | + Netinstallerに対応。 | |
179 | + | |
180 | +2010/06/25 ヒアドキュメントと%リテラルに対応。4年前(汗)に平岡さん | |
181 | + よりご指摘頂いていた式展開中の表示のバグなども修正。 | |
182 | + 文括弧のジャンプ機能を追加。 | |
183 | + post-buffer-modifyed-hook の処理で、それ以前のマッチデ | |
184 | + ータを壊さないように修正。 | |
185 | + | |
186 | +2004/04/08 replace系コマンドがおかしくなっていたのを修正。 | |
187 | + ruby-refreshコマンドを追加。query-replaeをキャンセル | |
188 | + した場合など、ruby-modeがリフレッシュをサボった場合 | |
189 | + の手動リフレッシュ用。C-c r GatesではS-F12 | |
190 | + | |
191 | +2004/03/23 run-scriptで、"Program Files"のようにスペースを含む | |
192 | + パスにスクリプトファイルがあると、エラーになったのを | |
193 | + 修正。 | |
194 | + | |
195 | +2004/03/08 when 直後の正規表現を認識しなかったのを修正。 | |
196 | + | |
197 | +2004/02/15 変更行で複数のコメント文字があると、その間の色がコメ | |
198 | + ント色にならなかったのを修正。 | |
199 | + run-scriptで、カレントディレクトリをちゃんとセットし | |
200 | + ていなかったのを修正。 | |
201 | + | |
202 | +2004/02/05 シンボルの正規表現がおかしかったのを修正(ruby-hilite) | |
203 | + run-scriptで、VisualuRubyのようにプロセスが長時間走る | |
204 | + 場合、xyzzyがプロセス終了を検出できず、ハングアップ状 | |
205 | + 態になってしまう場合があったのを修正したつもり。 | |
206 | + 同、*cmd*バッファが空の場合、閉じるようにした。 | |
207 | + | |
208 | +2004/01/27 式展開でない"}"が書き込み行で文字列色になっていたのを | |
209 | + 修正 | |
210 | + | |
211 | +2004/01/25 正規表現、?リテラルに対応 | |
212 | + | |
213 | +2004/01/21 rby-interaction-mode で、irbの起動方法を変更 | |
214 | + ActiveScriptRuby以外でも起動するようにした | |
215 | + 同、irbのリザルトにプロンプト"==>"をつけた | |
216 | + | |
217 | +2004/01/12 式展開に対応 | |
218 | + | |
219 | +2004/01/05 オートインデントでエスケープ付のクォーテーション文字 | |
220 | + の扱いをミスっていたのを修正 | |
221 | + | |
222 | +2004/01/04 $' $" $` の判定をミスっていたのを修正 | |
223 | + | |
224 | +2004/01/03 ruby-interaction-mode を追加 | |
225 | + ruby-mode以外でもpost-buffer-modified-hook が実行され | |
226 | + ていたのを修正 | |
227 | + "="の直後のキーワードの認識がおかしかったのを修正 | |
228 | + | |
229 | +2003/12/30 改変版リリース | |
230 | + | |
231 | +残件 | |
232 | + | |
233 | +・高速化。パースチャンスはまだ減らせる。 | |
234 | +・インプットヘルパ。 | |
235 | + |