まつもと ゆきひろです

In message "[ruby-list:12210] Re: ruby-mode + font-lock-mode"
    on 99/02/22, SONODA Yoshihide (園田 吉英) <ysonoda / dontaku.csce.kyushu-u.ac.jp> writes:

|こんにちは、園田@九大です。

|matz> が文字列のおしりを見付けられなくなりますし,正規表現にいたっ
|matz> てはマッチできるパターンを定義できなくてfont-lock的にはなん
|matz> の対応もしていません.すいません.アイディア歓迎.

|現状では、我慢するor気にしない(^^; しか方法がないようですね。
|とりあえず我慢することにします。

いやいや,話題にはしてみるもんです.週末ごそごそして「ちょっ
とマシ化」が行われました.以下のパッチ(って当たるのかな)で改
善されると思います.完全ではありませんが.

# ついでにバグが1こ取れてます.

--- ruby-mode.el	1999/01/20 04:59:36	1.1.1.1
+++ ruby-mode.el	1999/02/22 08:41:30
@@ -90,5 +90,5 @@
   (modify-syntax-entry ?\n ">" ruby-mode-syntax-table)
   (modify-syntax-entry ?\\ "\\" ruby-mode-syntax-table)
-  (modify-syntax-entry ?$ "/" ruby-mode-syntax-table)
+  (modify-syntax-entry ?$ "." ruby-mode-syntax-table)
   (modify-syntax-entry ?? "_" ruby-mode-syntax-table)
   (modify-syntax-entry ?_ "_" ruby-mode-syntax-table)
@@ -251,9 +251,8 @@
 	       ((looking-at "/")
 		(cond
-		 ((and (not (eobp)) (ruby-expr-beg))
-		  (if (re-search-forward "[^\\]/" indent-point t)
-		      nil
-		    (setq in-string (point))
-		    (goto-char indent-point)))
+		 ((and (not (eobp)) (ruby-expr-beg)
+		       (re-search-forward "[^\\]/" indent-point t))
+		  (setq in-string (point))
+		  (goto-char indent-point))
 		 (t
 		  (goto-char pnt))))
@@ -690,7 +689,11 @@
        'ruby-mode-hook
        (lambda ()
+        (make-local-variable 'font-lock-syntactic-keywords)
+	(setq font-lock-syntactic-keywords
+	      '(("\\$\\([#\"'$\\]\\)" 1 (1 . nil))
+                ("\\(#\\)[{$@]" 1 (1 . nil))))
         (make-local-variable 'font-lock-defaults)
         (setq font-lock-defaults 
-              '((ruby-font-lock-keywords) nil nil ((?\_ . "w"))))))
+              '((ruby-font-lock-keywords) nil nil ((?\_ . "w") (?$ . "/"))))))
     (add-hook 'ruby-mode-hook
              (lambda ()