diff --git a/Preferences/Indent.tmPreferences b/Preferences/Indent.tmPreferences index c898002..b0245b7 100644 --- a/Preferences/Indent.tmPreferences +++ b/Preferences/Indent.tmPreferences @@ -10,20 +10,20 @@ decreaseIndentPattern (?x)^ \s* (?!//|/\*) - # (nothing | ( string | no parens )+ | (no parens? (nested parens ) no parens?)+ ) Close - ( (?: | ( (?<str> '(\\'|[^'])*+' | "(\\"|[^"])*+" | /(\\/|[^/])*+/) | (?<noR>[^\[\]'"/]++) )++ | (\g<noR>? (?<round> \[ (?: \g<str> | \g<noR> | \g<round> )* \] ) \g<noR>? )++ ) \] - | (?: | ( \g<str> | (?<noS>[^\(\)'"/]++) )++ | (\g<noS>? (?<squar> \( (?: \g<str> | \g<noS> | \g<squar> )* \) ) \g<noS>? )++ ) \) - | (?: | ( \g<str> | (?<noC>[^\{\}'"/]++) )++ | (\g<noC>? (?<curly> \{ (?: \g<str> | \g<noC> | \g<curly> )* \} ) \g<noC>? )++ ) \} + # (nothing |( string | no parens/string )++ | (no parens? (nested parens ) no parens?)+ ) Close + ( (?: |( (?<str> (?<!\\)'(\\'|[^'])*+' | (?<!\\)"(\\"|[^"])*+" | (?<!\\)/(\\/|[^/])*+/) | (?<noS>[^\[\]'"/]++) )++ | (\g<noS>? (?<squar> \[ (?: \g<str> | \g<noS> | \g<squar> )* \] ) \g<noS>? )++ ) \] + | (?: |( \g<str> | (?<noR>[^\(\)'"/]++) )++ | (\g<noR>? (?<round> \( (?: \g<str> | \g<noR> | \g<round> )* \) ) \g<noR>? )++ ) \) + | (?: |( \g<str> | (?<noC>[^\{\}'"/]++) )++ | (\g<noC>? (?<curly> \{ (?: \g<str> | \g<noC> | \g<curly> )* \} ) \g<noC>? )++ ) \} | \b(?:case|default)\b (\g<str> | \g<noC> | \g<noC>? \g<curly> \b<noC>?)++ (?!\}) $ ) increaseIndentPattern (?x)^ \s* (?!//|/\*)([^\s].*)? - # Open (nothing | ( string | no parens )+ | (no parens? (nested parens ) no parens?)+ ) - ( \[ (?: | ( (?<str> '(\\'|[^'])*+' | "(\\"|[^"])*+" | /(\\/|[^/])*+/) | (?<noR>[^\[\]'"/]++) )++ | (\g<noR>? (?<round> \[ (?: \g<str> | \g<noR> | \g<round> )* \] ) \g<noR>? )++ ) - | \( (?: | ( \g<str> | (?<noS>[^\(\)'"/]++) )++ | (\g<noS>? (?<squar> \( (?: \g<str> | \g<noS> | \g<squar> )* \) ) \g<noS>? )++ ) - | \{ (?: | ( \g<str> | (?<noC>[^\{\}'"/]++) )++ | (\g<noC>? (?<curly> \{ (?: \g<str> | \g<noC> | \g<curly> )* \} ) \g<noC>? )++ ) + # Open (nothing |( string | no parens/string )++ | (no parens? (nested parens ) no parens?)+ ) + ( \[ (?: |( (?<str> (?<!\\)'(\\'|[^'])*+' | (?<!\\)"(\\"|[^"])*+" | (?<!\\)/(\\/|[^/])*+/) | (?<noS>[^\[\]'"/]++) )++ | (\g<noS>? (?<squar> \[ (?: \g<str> | \g<noS> | \g<squar> )* \] ) \g<noS>? )++ ) + | \( (?: |( \g<str> | (?<noR>[^\(\)'"/]++) )++ | (\g<noR>? (?<round> \( (?: \g<str> | \g<noR> | \g<round> )* \) ) \g<noR>? )++ ) + | \{ (?: |( \g<str> | (?<noC>[^\{\}'"/]++) )++ | (\g<noC>? (?<curly> \{ (?: \g<str> | \g<noC> | \g<curly> )* \} ) \g<noC>? )++ ) | \b(?:case|default)\b (\g<str> | \g<noC> | \g<noC>? \g<curly> \b<noC>?)++ (?!\}) )$ diff --git a/Syntaxes/JavaScript Basic.tmLanguage b/Syntaxes/JavaScript Basic.tmLanguage index ff69a8c..6ea1386 100644 --- a/Syntaxes/JavaScript Basic.tmLanguage +++ b/Syntaxes/JavaScript Basic.tmLanguage @@ -12,17 +12,17 @@ foldingStartMarker (?x)^ \s* (?!//|/\*)([^\s].*)? - # Open (nothing | ( string | no parens )+ | (no parens? (nested parens ) no parens?)+ ) - ( \[ (?: | ( (?<str> '(\\'|[^'])*+' | "(\\"|[^"])*+" | /(\\/|[^/])*+/) | (?<noR>[^\[\]'"/]++) )++ | (\g<noR>? (?<round> \[ (?: \g<str> | \g<noR> | \g<round> )* \] ) \g<noR>? )++ ) - | \( (?: | ( \g<str> | (?<noS>[^\(\)'"/]++) )++ | (\g<noS>? (?<squar> \( (?: \g<str> | \g<noS> | \g<squar> )* \) ) \g<noS>? )++ ) - | \{ (?: | ( \g<str> | (?<noC>[^\{\}'"/]++) )++ | (\g<noC>? (?<curly> \{ (?: \g<str> | \g<noC> | \g<curly> )* \} ) \g<noC>? )++ ) + # Open (nothing |( string | no parens/string )++ | (no parens? (nested parens ) no parens?)+ ) + ( \[ (?: |( (?<str> (?<!\\)'(\\'|[^'])*+' | (?<!\\)"(\\"|[^"])*+" | (?<!\\)/(\\/|[^/])*+/) | (?<noS>[^\[\]'"/]++) )++ | (\g<noS>? (?<squar> \[ (?: \g<str> | \g<noS> | \g<squar> )* \] ) \g<noS>? )++ ) + | \( (?: |( \g<str> | (?<noR>[^\(\)'"/]++) )++ | (\g<noR>? (?<round> \( (?: \g<str> | \g<noR> | \g<round> )* \) ) \g<noR>? )++ ) + | \{ (?: |( \g<str> | (?<noC>[^\{\}'"/]++) )++ | (\g<noC>? (?<curly> \{ (?: \g<str> | \g<noC> | \g<curly> )* \} ) \g<noC>? )++ ) )$ foldingStopMarker (?x)^ \s* (?!//|/\*) - # (nothing | ( string | no parens )+ | (no parens? (nested parens ) no parens?)+ ) Close - ( (?: | ( (?<str> '(\\'|[^'])*+' | "(\\"|[^"])*+" | /(\\/|[^/])*+/) | (?<noR>[^\[\]'"/]++) )++ | (\g<noR>? (?<round> \[ (?: \g<str> | \g<noR> | \g<round> )* \] ) \g<noR>? )++ ) \] - | (?: | ( \g<str> | (?<noS>[^\(\)'"/]++) )++ | (\g<noS>? (?<squar> \( (?: \g<str> | \g<noS> | \g<squar> )* \) ) \g<noS>? )++ ) \) - | (?: | ( \g<str> | (?<noC>[^\{\}'"/]++) )++ | (\g<noC>? (?<curly> \{ (?: \g<str> | \g<noC> | \g<curly> )* \} ) \g<noC>? )++ ) \} + # (nothing |( string | no parens/string )++ | (no parens? (nested parens ) no parens?)+ ) Close + ( (?: |( (?<str> (?<!\\)'(\\'|[^'])*+' | (?<!\\)"(\\"|[^"])*+" | (?<!\\)/(\\/|[^/])*+/) | (?<noS>[^\[\]'"/]++) )++ | (\g<noS>? (?<squar> \[ (?: \g<str> | \g<noS> | \g<squar> )* \] ) \g<noS>? )++ ) \] + | (?: |( \g<str> | (?<noR>[^\(\)'"/]++) )++ | (\g<noR>? (?<round> \( (?: \g<str> | \g<noR> | \g<round> )* \) ) \g<noR>? )++ ) \) + | (?: |( \g<str> | (?<noC>[^\{\}'"/]++) )++ | (\g<noC>? (?<curly> \{ (?: \g<str> | \g<noC> | \g<curly> )* \} ) \g<noC>? )++ ) \} ) keyEquivalent ^~J diff --git a/Tests/Javascript Folding & Indent.js b/Tests/Javascript Folding & Indent.js index 5de7340..d3bbdc6 100644 --- a/Tests/Javascript Folding & Indent.js +++ b/Tests/Javascript Folding & Indent.js @@ -584,6 +584,120 @@ myFunction(' ) ') myFunction('\' ) ') myFunction(/ \) /) myFunction(/\/\) /) +// No Fold; No Indent +function(){"[ ]"} +function(){"[\"]"} +function(){'[ ]'} +function(){'[\']'} +function(){/[ ]/} +function(){/[\/]/} +function(){"( )"} +function(){"(\")"} +function(){'( )'} +function(){'(\')'} +function(){/( )/} +function(){/(\/)/} +function(){"{ }"} +function(){"{\"}"} +function(){'{ }'} +function(){'{\'}'} +function(){/{ }/} +function(){/{\/}/} +// No Fold; No Indent +myArray = ["[ ]"] +myArray = ["[\"]"] +myArray = ['[ ]'] +myArray = ['[\']'] +myArray = [/[ ]/] +myArray = [/[\/]/] +myArray = ["( )"] +myArray = ["(\")"] +myArray = ['( )'] +myArray = ['(\')'] +myArray = [/( )/] +myArray = [/(\/)/] +myArray = ["{ }"] +myArray = ["{\"}"] +myArray = ['{ }'] +myArray = ['{\'}'] +myArray = [/{ }/] +myArray = [/{\/}/] +// No Fold; No Indent +myFunction("[ ]") +myFunction("[\"]") +myFunction('[ ]') +myFunction('[\']') +myFunction(/[ ]/) +myFunction(/[\/]/) +myFunction("( )") +myFunction("(\")") +myFunction('( )') +myFunction('(\')') +myFunction(/( )/) +myFunction(/(\/)/) +myFunction("{ }") +myFunction("{\"}") +myFunction('{ }') +myFunction('{\'}') +myFunction(/{ }/) +myFunction(/{\/}/) +// No Fold; No Indent +function(){"[ "} +function(){"[\""} +function(){'[ '} +function(){'[\''} +function(){/[ /} +function(){/[\//} +function(){"( "} +function(){"(\""} +function(){'( '} +function(){'(\''} +function(){/( /} +function(){/(\//} +function(){"{ "} +function(){"{\""} +function(){'{ '} +function(){'{\''} +function(){/{ /} +function(){/{\//} +// No Fold; No Indent +myArray = ["[ ]"] +myArray = ["[\"]"] +myArray = ['[ ]'] +myArray = ['[\']'] +myArray = [/[ ]/] +myArray = [/[\/]/] +myArray = ["( )"] +myArray = ["(\")"] +myArray = ['( )'] +myArray = ['(\')'] +myArray = [/( )/] +myArray = [/(\/)/] +myArray = ["{ }"] +myArray = ["{\"}"] +myArray = ['{ }'] +myArray = ['{\'}'] +myArray = [/{ }/] +myArray = [/{\/}/] +// No Fold; No Indent +myFunction("[ ]") +myFunction("[\"]") +myFunction('[ ]') +myFunction('[\']') +myFunction(/[ ]/) +myFunction(/[\/]/) +myFunction("( )") +myFunction("(\")") +myFunction('( )') +myFunction('(\')') +myFunction(/( )/) +myFunction(/(\/)/) +myFunction("{ }") +myFunction("{\"}") +myFunction('{ }') +myFunction('{\'}') +myFunction(/{ }/) +myFunction(/{\/}/) // ============ @@ -618,3 +732,25 @@ function(){ [] {} + + +// More Strings +// ============ +"[\"]" +"(\")" +"{\"}" + +"]\"[" +")\"(" +"}\"{" + +'[\']' +'(\')' +'{\'}' + +']\'[' +')\'(' +'}\'{' + + +