From: sheepman Date: 2001-08-05T12:20:31+09:00 Subject: [ruby-list:30850] ruby-mode.el の改善案 This is a multi-part message in MIME format. --Multipart_Sun__5_Aug_2001_12:20:45_+0900_08756300 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit こんにちは。 font-lockでの色付けに関する改善案を思いついたので、ruby-mode.elをちょっと いじってみました。 ひとつめは、正規表現の色付け。 現在は、'/'はすべて正規表現式の開始だと解釈しています。このため、除算の'/'や、 文字列中の'/'まで、正規表現の開始として色付けされてしまっています。これを 「if,while,unless...etcの条件判断か=(,のすぐ後ろにある'/'のみを正規表現式の開始」 と解釈するようにすれば、大抵の場合はほぼ正確に色付けされるはずです。 もうひとつは、文字列。 正規表現式中などに'や"が含まれる場合、以下の行をすべてを文字列として、 色付けしてしまいます。このため、行末に#'とコメントを付け加えているのを 良く見掛けます。 これに対処する方法はすこしトリッキーです。 「font-lockがデフォルトで行なう色付けを、いったん上書きして無効にし、 改めて、自分で定義した色付けを行なう」 です。本当は、font-lock.el自体を何とかするのが筋でしょうが、当方にはその能力がないので。 ruby-mode.el($Date: 2001/06/23 15:14:25 $)へのパッチを添付します。 -- sheepman sheepman@tcn.zaq.ne.jp http://www.tcn.zaq.ne.jp/sheepman/ Key fingerprint = 7975 D321 35FC 18D7 9EE5 D9D0 6BE1 3C6D EDB4 01E6 --Multipart_Sun__5_Aug_2001_12:20:45_+0900_08756300 Content-Type: application/octet-stream; name="ruby-mode.el.patch" Content-Disposition: attachment; filename="ruby-mode.el.patch" Content-Transfer-Encoding: base64 LS0tIHJ1YnktbW9kZS5lbC5iYWsJU2F0IEF1ZyAgNCAyMzozOTo1NCAyMDAxCisrKyBydWJ5LW1v ZGUuZWwJU3VuIEF1ZyAgNSAxMTo1OToyMCAyMDAxCkBAIC03MDcsNiArNzA3LDkgQEAKIAogICAo ZGVmdmFyIHJ1YnktZm9udC1sb2NrLWtleXdvcmRzCiAgICAgKGxpc3QKKyAgICAgOzsgdHJpY2sK KyAgICAgJygiXFxzLSsiIDAgbmlsIHQpCisgICAgICcoIlxcUy0rIiAwIG5pbCB0KQogICAgICAo Y29ucyAoY29uY2F0CiAJICAgICJcXCheXFx8W15fOi5AJF1cXHxcXC5cXC5cXClcXGJcXCgiCiAJ ICAgIChtYXBjb25jYXQKQEAgLTc1MCwxNiArNzUzLDE0IEBACiAJICAgICAiXFx8IikKIAkgICAg IlxcKVxcPlxcKFteX11cXHwkXFwpIikKIAkgICAyKQotICAgICA7OyByZWdleHBzCi0gICAgICco Ii9cXChcXChcXFxcL1xcfFteL1xuXVxcKSpcXCkvXFwoW2lvcF0qXFwpIgotICAgICAgICgxIGZv bnQtbG9jay1zdHJpbmctZmFjZSkKLSAgICAgICAoMyBmb250LWxvY2stY29uc3RhbnQtZmFjZSkp CiAgICAgIDs7IHZhcmlhYmxlcwogICAgICAnKCJcXCheXFx8W15fOi5AJF1cXHxcXC5cXC5cXClc XGJcXChuaWxcXHxzZWxmXFx8dHJ1ZVxcfGZhbHNlXFwpXFxiXFwoW15fXVxcfCRcXCkiCiAgICAg ICAgMiBmb250LWxvY2stdmFyaWFibGUtbmFtZS1mYWNlKQogICAgICA7OyB2YXJpYWJsZXMKLSAg ICAgJygiWyRAXS5cXChcXHdcXHxfXFwpKiIKLSAgICAgICAwIGZvbnQtbG9jay12YXJpYWJsZS1u YW1lLWZhY2UpCisgICAgICcoIlxcKFxcJFxcKFxcV1xcfFswLTldXFwpXFwpXFxXIgorICAgICAg IDEgZm9udC1sb2NrLXZhcmlhYmxlLW5hbWUtZmFjZSB0KSAgICAgCisgICAgICcoIlxcKCRcXHxA XFx8QEBcXClcXChcXHdcXChcXHdcXHxfXFwpKlxcfCN7XFwpIgorICAgICAgIDAgZm9udC1sb2Nr LXZhcmlhYmxlLW5hbWUtZmFjZSB0KQogICAgICA7OyBlbWJlZGRlZCBkb2N1bWVudAogICAgICAn KHJ1YnktZm9udC1sb2NrLWRvY3MKICAgICAgICAwIGZvbnQtbG9jay1jb21tZW50LWZhY2UgdCkK QEAgLTc3Miw4ICs3NzMsMzYgQEAKICAgICAgJygiXlxccyAqZGVmXFxzICtcXChbXiggXStcXCki CiAgICAgICAgMSBmb250LWxvY2stZnVuY3Rpb24tbmFtZS1mYWNlKQogICAgICA7OyBzeW1ib2xz Ci0gICAgICcoIlxcKF5cXHxbXjpdXFwpXFwoOlxcKFstKy8lJnxefmBdXFx8XFwqXFwqP1xcfDxc XCg8XFx8PT4/XFwpP1xcfD5bPj1dP1xcfD09PT9cXHw9flxcfFxcW1xcXVxcfFxcKFxcd1xcfF9c XCkrXFwoWyE/PV1cXHxcXGJcXClcXClcXCkiCi0gICAgICAgMiBmb250LWxvY2stcmVmZXJlbmNl LWZhY2UpKQorICAgICAnKCJcXCheXFx8W146XVxcKVxcKDpcXChbLSsvJSZ8Xn5gXVxcfFxcKlxc Kj9cXHw8XFwoPFxcfD0+P1xcKT9cXHw+Wz49XT9cXHw9PT0/XFx8PX5cXHxcXFtcXF1cXHxcXChc XHdcXHxfXFwpK1xcKFshPz1dXFx8XFxiXFwpXFx8I3tbXn1cblxcXFxdKlxcKFxcXFwuW159XG5c XFxcXSpcXCkqfVxcKVxcKSIKKyAgICAgICAyIGZvbnQtbG9jay1yZWZlcmVuY2UtZmFjZSkKKyAg ICAgOzsgc3RyaW5ncworICAgICA7OyAlUSEgICAhCisgICAgICcoIltbXFxzIDwrKCxdJVtycVFd P1xcKFxcKFteYS16QS1aMC05IFxuXVxcKVteXFwyXG5cXFxcXSpcXChcXFxcLlteXFwyXG5cXFxc XSpcXCkqXFwyXFwpIiAKKyAgICAgICAxIGZvbnQtbG9jay1zdHJpbmctZmFjZSB0KQorICAgICA7 OyAnLi4uJworICAgICAnKCJbW1xccyA8KygsXVxcKCdbXidcblxcXFxdKlxcKFxcXFwuW14nXG5c XFxcXSpcXCkqJ1xcKSIgCisgICAgICAgMSBmb250LWxvY2stc3RyaW5nLWZhY2UgdCkKKyAgICAg OzsgIi4uLiIKKyAgICAgJygiW1tcXHMgPCsoLF1cXChcIlteXCJcblxcXFxdKlxcKFxcXFwuW15c IlxuXFxcXF0qXFwpKlwiXFwpIiAKKyAgICAgICAxIGZvbnQtbG9jay1zdHJpbmctZmFjZSB0KQor ICAgICA7OyBgLi4uYAorICAgICAnKCJbXFxzIDwrKCxdXFwoYFteYFxuXFxcXF0qXFwoXFxcXC5b XmBcblxcXFxdKlxcKSpgXFwpIiAKKyAgICAgICAxIGZvbnQtbG9jay13YXJuaW5nLWZhY2UgdCkK KyAgICAgOzsgJXghLi4uIQorICAgICAnKCJbXFxzIDwrKCxdJXhcXChcXChbXmEtekEtWjAtOSBc bl1cXClbXlxcMlxuXFxdKlxcKFxcXFwuW15cXDJcblxcXSpcXCkqXFwyXFwpIiAKKyAgICAgICAx IGZvbnQtbG9jay13YXJuaW5nLWZhY2UgdCkKKyAgICAgOzsgcmVnZXhwcworICAgICAnKCJcXChe XFx8Wz0oLH4/Ol1cXHxcXCheXFx8XFxzIFxcKVxcKGlmXFx8ZWxzaWZcXHx1bmxlc3NcXHx3aGls ZVxcfHVudGlsXFx8d2hlblxcfGFuZFxcfG9yXFx8JiZcXHx8fFxcKVxcfFxcLmc/c3ViIT9cXClc XHMgKlxcKC9bXi9cblxcXFxdKlxcKFxcXFwuW14vXG5cXFxcXSpcXCkqL1xcKFtpb3BdKlxcKVxc KSIgIAorICAgICAgICg0IGZvbnQtbG9jay1zdHJpbmctZmFjZSB0KQorICAgICAgICg2IGZvbnQt bG9jay1jb25zdGFudC1mYWNlIHQpKQorICAgICAnKCJcXCgvW14vXG5cXFxcXSpcXChcXFxcLlte L1xuXFxcXF0qXFwpKi9cXClcXHMgKls9IV1bPX5dIgorICAgICAgIDEgZm9udC1sb2NrLXN0cmlu Zy1mYWNlIHQpCisgICAgIDs7IGV4cHJlc3Npb24gZXhwYW5zaW9uCisgICAgICcoIiN7W159XG5c XFxcXSpcXChcXFxcLltefVxuXFxcXF0qXFwpKn0iIAorICAgICAgIDAgZm9udC1sb2NrLXZhcmlh YmxlLW5hbWUtZmFjZSB0KQorICAgIDs7IGNvbW1lbnQKKyAgICAgJygiXlxccyAqXFwoW14jXG4n XCIlL11cXHwnW14nXG5cXF0qXFwoXFxcXC5bXidcblxcXSpcXCkqJ1xcfFwiW15cIlxuXFxdKlxc KFxcXFwuW15cIlxuXFxdKlxcKSpcIlxcfCVbcnFReF0/XFwoW15hLXpBLVowLTkgXG5dXFwpW15c XDRcblxcXSpcXChcXFxcLlteXFw0XG5cXF0qXFwpKlxcNFxcfC9bXi9cblxcXSpcXChcXFxcLlte L1xuXFxdXFwpKi9cXHwje1tefVxcXFxdKlxcKFxcXFwuW159XFxcXF0qXFwpKn1cXCkqXFwoI1xc KFtee1xuXS4qXFx8JFxcKVxcKSIKKyAgICAgICA4IGZvbnQtbG9jay1jb21tZW50LWZhY2UgdCkp CiAgICAgIipBZGRpdGlvbmFsIGV4cHJlc3Npb25zIHRvIGhpZ2hsaWdodCBpbiBydWJ5IG1vZGUu IikpCiAKICAoKGZlYXR1cmVwICdoaWxpdDE5KQo= --Multipart_Sun__5_Aug_2001_12:20:45_+0900_08756300--