<HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; "><DIV>On Aug 21, 2006, at 9:28 AM, David Powers wrote:</DIV><DIV><BR></DIV><BLOCKQUOTE type="cite"><DIV>So, punctuation always delimits in some way, but we also want to have some indication of it's real use... at the same time we want to indicate the textual manner in which the punctuation is used.  Maybe splitting the scope's second and thir levels up into syntax.function makes sense - as in:</DIV><DIV><BR></DIV><DIV>* punctuation.section.(quote|paragraph|comment|scope|function|etc)</DIV><DIV>    </DIV><DIV>    The start/end of a structured section of some sort (comment, paragraph, opening and </DIV><DIV>    closing braces in code, etc).  Any potentially large (multi-lined?) section that can </DIV><DIV>    be described as serving a single function.  Could possibly become </DIV><DIV>    punctuation.block.begin.foo and punctuation.block.end.foo, but I’m not sure there is a </DIV><DIV>    real use in such specificity (especially since there is not always a literal end). </DIV><DIV>    </DIV><DIV><BR></DIV><DIV>* punctuation.separator.(valuepair|list|arguments|etc)</DIV><DIV><BR></DIV><DIV>    Any punctuation intended to separate two internal parts of a logical whole.  This </DIV><DIV>    includes key/value pairs in things like HTML/XML/YAML (but not true assignment), as </DIV><DIV>    well as items in a literal list ([1, 2, 3]).</DIV><DIV><BR></DIV><DIV>* punctuation.definition.(string|table|array|token|header|list|etc)</DIV><DIV><BR></DIV><DIV>    Punctuation that is intended to delimit the bounds of a single item, generally </DIV><DIV>    something that will become a real singular object in compiled/interpreted code.  Can </DIV><DIV>    also be used in markup languages for delimiters that define small conceptual units </DIV><DIV>    (headers, list items, etc).</DIV><DIV><BR></DIV><DIV>* punctuation.terminator</DIV><DIV><BR></DIV><DIV>    Punctuation that terminates a statement, rule, line, etc. (the ; in [print "foo\n";])</DIV><DIV><BR></DIV><DIV>* punctuation.other...</DIV><DIV><BR></DIV><DIV>    Every scope needs an other.  There are simply too many languages and too many uses to </DIV><DIV>    be confident that a set second level will capture everything appropriately.  It should, of course</DIV><DIV>    be highly limited in its use.</DIV><DIV>    </DIV><DIV><BR></DIV><DIV>For clarity - I’m including the remainder of the old definitions and where I see them slotting in this system: </DIV><DIV><BR></DIV><DIV> * punctuation.delimiter.comment                     - bit of an outlier (inline vs. block) but can probably be reasonably handled as punctuation.section.comment</DIV><DIV> * punctuation.delimiter.embedded                    - punctuation.section.embedded</DIV><DIV> * punctuation.delimiter.group                       - punctuation.definition.group (punctuation.definition.regexp.group)</DIV><DIV> * punctuation.delimiter.markup.header               - punctuation.definition.header</DIV><DIV> * punctuation.delimiter.markup.item                 - punctuation.definition.list ,item, etc</DIV><DIV> * punctuation.delimiter.markup.table.(column|row)   - punctuation.definition.table.row,col</DIV><DIV> * punctuation.delimiter.section.(rule|function|etc) - punctuation.section</DIV><DIV> * punctuation.delimiter.separator.argument          - punctuation.separator.argument</DIV><DIV> * punctuation.delimiter.separator.relationship      - punctuation.separator.relationship</DIV><DIV> * punctuation.delimiter.string                      - punctuation.definition.string</DIV><DIV> * punctuation.delimiter.tag                         - punctuation.definition.tag</DIV><DIV> * punctuation.delimiter.markup.image                - punctuation.definition.link.image</DIV></BLOCKQUOTE><DIV><BR></DIV><DIV>ok, so for Javascript:</DIV><DIV><BR></DIV><DIV><BR></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.section.comment = /* */</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;"><BR></SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">function funk(param,param){};</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.section.function.parameters          = ( )</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.section.function.parameters.contents = the space between ()</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.separator.parameters                 = ,</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.section.function                     = { }</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.section.function.contents            = the space between {}</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.terminator                           = ;</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;"><BR></SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">funk(arg,arg)</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.section.function.arguments          = ( )</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.section.function.arguments.contents = the space between ()</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.separator.arguments                 = ,</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;"><BR></SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">object                                 = {one: 'one', two: 'two'}</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.section.object             = { }</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.section.object.contents    = the space between {}</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.separator.valuepair.object = :</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.definition.string          = ''</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.separator.object           = ,</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;"><BR></SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">array = ['one','two','three']</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">array[0]</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.section.array          = [ ]</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.section.array.contents = the space between []</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.separator.list         = ,</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;"><BR></SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">string.replace(/regex/, 'string')</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.separator.method = .</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.section.regex    = / /</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;"><BR></SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;"><BR class="khtml-block-placeholder"></SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;"><BR class="khtml-block-placeholder"></SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">What about scoping the actual contents of ( ) and { } and [ ] ?</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.section.contents        = the space between () and {} and [] and stuff</SPAN></FONT></DIV><DIV><FONT class="Apple-style-span" face="Monaco" size="2"><SPAN class="Apple-style-span" style="font-size: 10px;">punctuation.section.string.contents = the space between "" and ''</SPAN></FONT></DIV><DIV><BR></DIV><DIV>It seems to me that the contents should be language specific,</DIV><DIV>just like the contents of strings are "string.quoted.double".</DIV><DIV><BR></DIV><DIV><BR></DIV><DIV>It does seem a bit verbose.</DIV><DIV><BR></DIV><DIV>thomas Aylott—subtleGradient</DIV><DIV><BR></DIV><DIV><BR><BR></DIV><BR><DIV> <SPAN class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><SPAN class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><DIV style="font-size: 14px; "><SPAN class="Apple-style-span" style="font-size: 14px; "><SPAN class="Apple-style-span" style="font-size: 14px; ">thomas Aylott</SPAN></SPAN></DIV><DIV><B style="font-weight: bold; "><SPAN class="Apple-style-span" style="font-weight: bold; "><SPAN class="Apple-style-span" style="font-weight: bold; ">subtleGradient</SPAN></SPAN></B></DIV><SPAN class="Apple-style-span" style="text-decoration: underline;; -khtml-text-decorations-in-effect: underline; "></SPAN></SPAN><BR class="Apple-interchange-newline"></SPAN> </DIV><BR></BODY></HTML>