emacs syntax highlighting problem

T

Tim Ferrell

Let me first say I am new to emacs ... so this may be something embarrassingly simple :)

I am running emacs 21.4.1 on gentoo linux and I have customized it with some of the tips I have found at ruby garden and a few other places ... All is
working nicely except that I must have somehow managed to break syntax highlighting... even when I enable global font lock I get nothing but "normal" text :-(

I have posted my configs at http://www.mcgeecorp.com/downloads/emacs-configs.tgz if anyone happens to have a few minutes to look them over. Thanks much and
sorry if this is something stupid...

Cheers,
Tim
 
K

Kent Sibilev

Tim Ferrell said:
Some further investigation uncovered the culprit: ruby-electric.el (
http://shylock.uw.hu/Emacs/ruby-electric.el ) ... for some reason when
I "(require 'ruby-electric)" I don't get syntax highlighting.

Anyone else using this successfully? Have I overlooked something?

Cheers,
Tim

I'm using ruby-electric.el and never had any problems with syntax
highlighting. The problem must be somewhere else.

Cheers,
Kent.
 
T

Tim Ferrell

Fixed it ... I was loading ruby-electric before I turned on global-font-lock
and for some reason that killed syntax highlighting in ruby-mode...

Cheers,
Tim
 
J

Jeffrey Moss

I use emacs exclusively. I've found the ruby-mode ebuild to be sufficient
for me. What does ruby-electric offer that this doesn't?

-Jeff

----- Original Message -----
From: "Tim Ferrell" <[email protected]>
To: "ruby-talk ML" <[email protected]>
Sent: Thursday, February 17, 2005 2:06 PM
Subject: Re: emacs syntax highlighting problem
 
T

Tim Ferrell

As I understand (I just got it working today *g*), it offers block completion...

From the extension file:

"When Ruby Electric mode is enabled, an indented 'end' is
heuristically inserted whenever typing a word like 'module',
'class', 'def', 'if', 'unless', 'case', 'until', 'for', 'begin',
'do'. Simple, double and back quotes as well as braces are paired
auto-magically. Expansion does not occur inside comments and
strings."

Cheers,
Tim
 
M

Mike D.

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

(autoload 'ruby-mode "ruby-mode"
"Mode for editing ruby source files" t)
(add-hook 'ruby-mode-hook 'turn-on-font-lock)

Because your hook is added before ruby-mode is actually loaded on
demand, the resulting ruby-mode-hook will be

((lambda nil
(make-local-variable 'font-lock-defaults)
(make-local-variable 'font-lock-keywords)
(make-local-variable 'font-lock-syntax-table)
(make-local-variable 'font-lock-syntactic-keywords)
(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))
turn-on-font-lock)

Suppose instead that your .emacs file contained

(require 'ruby-mode)
(add-hook 'ruby-mode-hook 'turn-on-font-lock)

That seems harmless enough, but now ruby-mode adds its hook before you
add yours, and ruby-mode-hook becomes

(turn-on-font-lock
(lambda nil
(make-local-variable 'font-lock-defaults)
(make-local-variable 'font-lock-keywords)
(make-local-variable 'font-lock-syntax-table)
(make-local-variable 'font-lock-syntactic-keywords)
(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)))

For many people running GNU Emacs, that won't work properly. They'll
need to toggle font-lock off and on again to get the desired behavior.

Here's an excerpt from the GNU Emacs documentation:

31.2.3 Hooks
------------
"With rare exceptions, hooks in Emacs are empty when Emacs starts up,
so the only hook functions in any given hook are the ones you
explicitly put there as customization.
....
It is best to design your hook functions so that the order in which
they are executed does not matter. Any dependence on the order is
'asking for trouble.'"

To avoid this problem in the future, it would be nice if ruby-mode.el
could perform its font-lock initialization without using
ruby-mode-hook.

- Mike
 
C

Caio Tiago Oliveira

Tim Ferrell, 18/2/2005 15:23:
As I understand (I just got it working today *g*), it offers block
completion...

From the extension file:

"When Ruby Electric mode is enabled, an indented 'end' is
heuristically inserted whenever typing a word like 'module',
'class', 'def', 'if', 'unless', 'case', 'until', 'for', 'begin',
'do'. Simple, double and back quotes as well as braces are paired
auto-magically. Expansion does not occur inside comments and
strings."


It turns /#/.matches(foo) in a slash and a comment?
Turns /^bar$/ in /^bat and a global variable?
Turns /:/ in a slash and a symbol while using syntax highlighting and
breakes the indentation in the first case?

If no, no and no may be I'll switch to it.
 
T

Tim Ferrell

I tried all three here and (if I understood you correctly) it is, in fact, no,
no and no :)

Cheers,
Tim
 
D

Dee Zsombor

My intention was for ruby-electric to be a complement for ruby-mode
offering some additional services.

Zsombor
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top