<div>Can you send me the updated grammar/bundle when finished? :)</div><div><br></div><div><br></div>Here's the answer: <div>(from: <a href="http://blog.macromates.com/2011/format-strings/">http://blog.macromates.com/2011/format-strings/</a>)</div>

<div><br></div><div><span class="Apple-style-span" style="font-family:'Lucida Grande',Verdana,Helvetica,sans-serif;font-size:12px"><h2>The Case for Replacements</h2><p>Another form of Format Strings allows you to change the case of a variable reference. If you combine that with the fact that scope <code style="margin-top:0px">name</code>elements in TextMate 2's Language Grammars are now Format Strings, this allows for nice dynamic scoping tricks.</p>

<p>For example, say we rework Ruby's "here-document" (heredoc) syntax rule to look something like this (simplified) example:</p><pre style="background-color:rgb(226,226,226);border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(145,150,153);border-right-color:rgb(145,150,153);border-bottom-color:rgb(145,150,153);border-left-color:rgb(145,150,153);padding-top:10px;padding-right:20px;padding-bottom:10px;padding-left:20px;overflow-x:auto;overflow-y:auto">

begin = '<<-?(\w+)';
name  = 'string.unquoted.${1:/downcase}.ruby';
…</pre><p>That would mean that a heredoc definition like this:</p><pre style="background-color:rgb(226,226,226);border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(145,150,153);border-right-color:rgb(145,150,153);border-bottom-color:rgb(145,150,153);border-left-color:rgb(145,150,153);padding-top:10px;padding-right:20px;padding-bottom:10px;padding-left:20px;overflow-x:auto;overflow-y:auto">

<<-CSS
body {
  margin: 10px auto;
}
CSS</pre><p>would be scoped as <code style="margin-top:0px">meta.here-doc.css.ruby</code>. This allows the injection of the CSS Grammar and automations into the scope <code>meta.here-doc.css</code>. That would mean that you get the proper syntax highlighting of these heredocs and you could trigger CSS Bundle commands while editing them.</p>

<p>As I write this, the ruby grammar still has a dozen rules with a dozen different tokens that include a dozen different languages, so the above is a planned simplification that would allow us to avoid having to upgrade the ruby grammar for new potential here-doc tokens.</p>

<p>The supported case transformations are <code style="margin-top:0px">/upcase</code>, <code>/downcase</code>, and<code>/capitalize</code>. There's also a special <code>/asciify</code> transformation that will transliterate things like "æ" and "ø" into "ae" and "o" respectively as well as remove any remaining non-ASCII characters. The latter is particularly useful when deriving an identifier or label, that needs to be accepted by a language parser, from a heading or comment, which is free-form prose. These transformations can be combined.</p>

</span></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br clear="all"><div>Elia</div><div><br></div><div>—<br><span style="background-color:rgb(255,255,255)">☁ <a href="http://twitter.com/elia" target="_blank"><font color="#6666CC">@elia</font></a> </span><font color="#CCCCCC"><span style="background-color:rgb(255,255,255)">(twitter)</span></font><span style="background-color:rgb(255,255,255)"> </span><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse;line-height:15px"><span style="background-color:rgb(255,255,255)">✎ <a href="mailto:elia@schito.me" target="_blank"><font color="#6666CC">elia@schito.me</font></a> </span><font color="#CCCCCC"><span style="background-color:rgb(255,255,255)">(</span></font></span><font color="#CCCCCC"><span style="background-color:rgb(255,255,255)">gtalk)</span></font></div>

<div><span style="background-color:rgb(255,255,255)">☎ <font color="#CCCCCC">(+39)</font><font color="#CC0000"> 348/9051393</font> </span><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse;line-height:15px"><span style="background-color:rgb(255,255,255)"> </span></span><span style="background-color:rgb(255,255,255)"><a href="mailto:perlelia@gmail.com" target="_blank"><font color="#6666CC">perlelia@gmail.com</font></a> </span><font color="#CCCCCC"><span style="background-color:rgb(255,255,255)">(FaceTime)</span></font></div>

<br>
<br><br><div class="gmail_quote">On Wed, May 9, 2012 at 12:08 AM, Tyson Tate <span dir="ltr"><<a href="mailto:tyson@tysontate.com" target="_blank">tyson@tysontate.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

I'm updating my Markdown bundle to better handle GitHub-style fenced code blocks like so:<br>
<br>
        ```ruby<br>
        foo = { bar: true }<br>
        ```<br>
<br>
The grammar is simple enough for one language:<br>
<br>
        ruby_block = {<br>
                begin = '^```ruby.*$';<br>
                end = '^```.*$';<br>
                patterns = ( { include = 'source.ruby'; } );<br>
        };<br>
<br>
However, I'd like to support any language. I tried the following, but it doesn't appear to work (and I'm not sure why):<br>
<br>
        code_block = {<br>
                begin = '^```(\w+).*$';<br>
                end = '^```.*$';<br>
                patterns = ( { include = 'source.\1'; } );<br>
        };<br>
<br>
Is something similar possible / supported?<br>
<br>
Thanks!<br>
<br>
-Tyson<br>
<br>
_______________________________________________<br>
textmate mailing list<br>
<a href="mailto:textmate@lists.macromates.com">textmate@lists.macromates.com</a><br>
<a href="http://lists.macromates.com/listinfo/textmate" target="_blank">http://lists.macromates.com/listinfo/textmate</a><br>
</blockquote></div><br></div>