Syntax highlight problem about the ruby-mode in emacs


#1

Hi

I edit ruby script in emacs, but sometimes I just cannot get ruby mode
syntax highlight successfully. I had googled this problem and found
that:
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/131654

I suspect that most font-lock problems like this are caused by the
internal use of ruby-mode-hook in ruby-mode.el. Suppose your .emacs
file contains

In my case, I had the following settings in my .emacs file.
(desktop-save-mode 1)
(global-font-lock-mode 1)
(setq font-lock-maximum-decoration t)
(setq font-lock-global-modes '(not text-mode))
(setq font-lock-verbose t)

If there is a opened ruby file the last time I exit the emacs, syntax
highlight will not work as expected.

When C-h v ruby-mode-hook to inspect the value of ruby-mode-hook,
I get the following value:

ruby-mode-hook’s value is shown below.

Not documented as a variable.

Value:
((lambda nil
(inf-ruby-keys))
turn-on-font-lock)

In the opposite, if I start Emacs without an ruby file opened. I will
get the correct ruby-mode-hook value.

(setq font-lock-defaults

'((ruby-font-lock-keywords)
nil nil))
(setq font-lock-keywords ruby-font-lock-keywords)
(setq font-lock-syntax-table ruby-font-lock-syntax-table)
(setq font-lock-syntactic-keywords ruby-font-lock-syntactic-keywords))
(lambda nil
(inf-ruby-keys))
turn-on-font-lock)

I want to know what make the difference.

BTW, if the enabled the rails-mode, the synatx highlight function
failed, too.

Eric


#2

I have the same problem.

I have the following files in my site-lisp folder:

C:\emacs\site-lisp\find-recursive.el
C:\emacs\site-lisp\psvn.el
C:\emacs\site-lisp\snippet.el
C:\emacs\site-lisp\subdirs.el
C:\emacs\site-lisp\emacs-rails\ChangeLog
C:\emacs\site-lisp\emacs-rails\rails-core.el
C:\emacs\site-lisp\emacs-rails\rails-for-controller.el
C:\emacs\site-lisp\emacs-rails\rails-for-layout.el
C:\emacs\site-lisp\emacs-rails\rails-for-rhtml.el
C:\emacs\site-lisp\emacs-rails\rails-lib.el
C:\emacs\site-lisp\emacs-rails\rails-navigation.el
C:\emacs\site-lisp\emacs-rails\rails-ruby.el
C:\emacs\site-lisp\emacs-rails\rails-scripts.el
C:\emacs\site-lisp\emacs-rails\rails-ui.el
C:\emacs\site-lisp\emacs-rails\rails-webrick.el
C:\emacs\site-lisp\emacs-rails\rails.el
C:\emacs\site-lisp\emacs-rails\README
C:\emacs\site-lisp\ruby\inf-ruby.el
C:\emacs\site-lisp\ruby\README
C:\emacs\site-lisp\ruby\ruby-electric.el
C:\emacs\site-lisp\ruby\ruby-mode.el
C:\emacs\site-lisp\ruby\rubydb2x.el
C:\emacs\site-lisp\ruby\rubydb3x.el

And here is my .emacs file:

(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won’t work right.
'(cua-mode t nil (cua-base))
'(debug-on-error t)
'(global-font-lock-mode t nil (font-core))
'(show-paren-mode nil)
'(transient-mark-mode t))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won’t work right.
)

;;(autoload 'ruby-mode “ruby-mode” “Load ruby-mode”)
;;(add-to-list 'auto-mode-alist '("\.rb$" . ruby-mode))
;; uncomment the next line if you want syntax highlighting
;;(add-hook 'ruby-mode-hook 'turn-on-font-lock)

(defun try-complete-abbrev (old)

(if (expand-abbrev) t nil))

(setq hippie-expand-try-functions-list
'(try-complete-abbrev
try-complete-file-name
try-expand-dabbrev))

(require 'rails)