Autor: jori.hamalainen Data: A: exim-users Assumpte: Re: [exim] Exim configuration syntax highlighting for joe
> Funny you should find the colorizing feature of joe beneficial.
You can disable it. :) But IMO joe is the best editor out there. And
I've configured exim with non-colored joe for 7 years. But I got
tired of hard to read configuration. And I've been using joe for 14
years at least so I could say it is my favorite editor on unix environments.
I cannot install linux without joe. Naturally I use nano & vi to make
some initial config before joe can be added to the system. :)
> After using joe for ages, I now keep pico, nano, or mined handy because
> colorizing makes text too hard to read (for me).
I've build fairly complex configuration for Exim which is error prone. So
less errors I do with hard-to-interpret-text because of text editor I am
more happier. With this minimalistic coloring (comment, verbs, variables
and .ifdef) my eyes find faster the needed lines/text/structure. I am not
fond of colorizing too much (like plain numbers with blue, filenames with
green or something similar).
I released the jsf-file for other interested in that. And if somebody has
more interest even develop it more even up to a 'IDE level' to recognize
exim config syntax. I'd also be happy to use that. But configuration options
changes as exim evolves so it would mean maintaining the jsf as well.
> There is a method to the use of a leading '$' (or not) w/r variables.
Like said variables would be nice to indentify with something, but as Peter
pointed out $ means more 'expansion' than 'variable following'. After
understanding this concept I accept my defeat that you cannot easily
colorize
all 'variables'.
To have perfect variable coloring you'd need to keep track of variables
found
on manual's "string expansions", then build logics to recognize
"set acl_[cm][0-9_]*", def:* and even $h_*: (and $header_*:). Header is a
bit
different from normal variable as it can contain "-", as acl_[cm]* and
exim's
internal variables cannot....
So for simple state machines it would have been much easier if:
set $acl_m....
def:$acl_m....
def:%Sender (to use % (or some other char) to mean $h_ or $header_)
etc.