Haris,

Thanks for the file.  I'll take a look at it and see if I can see something.

Rather than $$ I've always just used \begin{equation} or equation* if I didn't want equation numbers.  Thats just how I learned it a long time ago, and I've never had cause to do anything different.  From the LaTeX 
help site:

There are four environments that put LaTeX in math mode: math, displaymath, eqnarray, and equation. The math environment is for formulas that appear right in the text. The displaymath and equation environments are for formulas that appear on their own line; they differ only insofar as the latter prints an equation number. LaTeX will not break lines in displaymath or equation environments unless told to do so with a \\ command.
The displaymath environment can be entered by
  \begin{displaymath}
      math equation \\
      second line of math equation
  \end{displaymath}
Because displaymath may be used frequently to display relatively short equations, there are convenient alternative forms:
  \[ displayed math equation \]
or (the following does not seem to be well documented, but appears to work)
  $$ dispalyed math equation $$


I don't think there is any difference between equation* and displaymath but I could be wrong...

I think for purposes of scoping in TextMate we ought to treat them all the same.

Brad

On Nov 6, 2005, at 5:09 PM, Charilaos Skiadas wrote:

Hi Brad,
On Nov 6, 2005, at 4:19 PM, Brad Miller wrote:


On Nov 6, 2005, at 3:54 PM, Charilaos Skiadas wrote:

In other words, the two dollars signs next to each other are matched as the begining and end of a simple math mode, instead of being considered as the beginning of a block math mode. What makes it even weirder is that the following:
$$\int_{C_{t}}e^{g(z,t)}f(z,t)\d z$$ where $g,f$

I pasted your example above into the test.tex document and the text between the $$ .. $$ is scoped as string.other.math.tex  The word 'where' is scoped as text.latex and the g,f is scoped as string.other.math.tex  I believe those are all correct yes?

So, now I'm curious as to whats different between your document and the test.tex document.

So in my case, if I put the cursor between the double dollar signs at the beginning, the scope is string.other.math.tex. 
If I put it anywhere between that set of double dollar signs and the next one (supposed to be closing the math mode, it is not. This is what's wrong in my case.
If I put it between the second set of double dollar signs, it is string.other.math.block.tex.

I'll send you separately my file, see if that helps, but there's not anything weird about it I think.
Is there a a reason to make the block math scope different than the regular math scope?  It seems like it might be better to move the $$ into the TeX syntax file so that the contents of a block math scope got the same treatment as an inline math math.tex scope?

If it is allowed in TeX, and I think it is, then yes it should probably be there. I think historically the difference was, IIRC, that the regular math mode was matched with a "match" regex, while the displaymath with a "begin"-"end" pair, hence they were different. I do believe they should be dealt with the same way if possible.
What happens in this case is that the first double dollar signs are matched with the regex from the TeX bundle:
        {    name = 'string.other.math.tex';
            begin = '\$';
            end = '\$';
            swallow = '\\\$';
            ...

On the other hand, the second double dollar signs are matched as the begin regex from the LaTeX bundle:
        {    name = 'string.other.math.block.latex';
            begin = '\$\$';
            end = '\$\$';
        },

and the parser goes on to search the entire rest of the document for the closing $$
So what confuses me (and this is what I meant when I asked how it was possible) is how only the first of these is matched by the string.other.math.tex regex, and not the second one as well. How can string.other.math.tex not take priority in both cases? Maybe Allan can answer that, but for right now I see the following possible solutions:
1) Make it so that the string.other.math.tex regex needs to match something between the
            begin = '\$';
            end = '\$';
Not sure if this is possible.
2) Move the string.other.math.block.latex in the TeX file,  and place it above the string.other.math.tex pattern, so that it matches first.
3) Even better, mix the two patterns into one.

Brad


Haris

PS: Out of curiosity, what do you use instead of $$, and how did you historically come to do it that way? In the university of Chicago, I think we all do the displaymath mode that way. In fact, I haven't before met anyone not using it. Are there reasons against using it?

______________________________________________________________________
For new threads USE THIS: textmate@lists.macromates.com
(threading gets destroyed and the universe will collapse if you don't)
http://lists.macromates.com/mailman/listinfo/textmate