[ESS] Syntax Highlighting

Oliver Jones ojones at wiwi.uni-bielefeld.de
Thu Jan 31 17:57:27 CET 2013


Am 31.01.2013 15:30, schrieb Vitalie Spinu:
>    >>  Oliver Jones<ojones at wiwi.uni-bielefeld.de>
>    >>  on Thu, 31 Jan 2013 15:09:02 +0100 wrote:
>    >  Looking in too ess-sta-l.el I couldn't figure out where the symbols for
>    >  indicating comments are defined. Neither could I figure out where I can modify
>    >  the variable STA-syntax-table (M-x
>    >  customize-variable RET STA-syntax-table RET give NO MATCH) or where I should include
>    >  (modify-syntax-entry ?* "<" STA-syntax-table)
>    >  Do I have to copy that line in my ~/.emacs.d/init.el ?
> Yes, this is what Rodney meant. But it will not quite work because "<"
> defines a start of a block comment and not a fence comment (which I
> assume is what you need).
> What is exactly the use of * in STATA? Are you sure it is a comment
> symbol? How does the multiplication work then?

Comments may be added to programs in three ways:

- begin the line with *;
- begin the comment with //; or
- place the comment between /* and */ delimiters.

(From: http://www.stata.com/help.cgi?comments)

Regarding Multiplication I guess something like this is meant:
(The following is some Stata code with explanation of the comments)

drop _all
set obs 10
* comment this line
* Asterisk just works if it is at the beginning of the line
gen x = 1 // comment the rest of the line with //

/* A Block comment
span multipli
and ends with */

* /* even though this line should be a comment out Stata still
recognizes the beginning of a block comment.
(But even Stata's own dofile editor doesn't get the syntax highlighting right
in these cases, because they are really rare in practice I guess.)
They work like parenthesis, i.e. after opening another one by /* we
have to close two of them. That's way the
next line is not evaluated even if we close one block now by */
gen y = 2
now let's close the first opening block comment.
As with opening the block comment you can close it on a line
* that is commented out by an asterisk */

gen z = 3


This code produces the variables x and z, containing just ones and threes.

I think all that's needed is the functionality to comment lines out by an
asterisk, because starting a block comment on a line that is commented out
is not a useful functionality.
Or can you think of situations when you want to stuff like that?

> There are two comments in stata that ESS currently supports // for fence
> comment (aka one line) and /* ... */ for block comments.  And I don't
> see an easy way to implement * as a fence comment without screwing
> multiplication or standard /* ... */ comment (at least not with
> syntactic tables).
>      Vitalie

Universität Bielefeld
Fakultät für Wirtschaftswissenschaften
Lehrstuhl für Ökonometrie und Statistik
Raum / room:  V9-108
Tel / phone:  +49 (0)521 106 4895

More information about the ESS-help mailing list