Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Collapse code fails in TM2 (Code Folding) #87

Open
alanhogan opened this issue Dec 21, 2011 · 17 comments
Open

Collapse code fails in TM2 (Code Folding) #87

alanhogan opened this issue Dec 21, 2011 · 17 comments

Comments

@alanhogan
Copy link

Clicking the arrow to collapse text is a no-op in TM2 (build 8971).

@dwt
Copy link

dwt commented Mar 14, 2012

I'm suffering from this as well.

Is there an estimate when this can be fixed?

@jrus
Copy link
Contributor

jrus commented Mar 14, 2012

Fix it yourself! It’s not too hard to learn how TM foldings work. For instance, the Python pattern is currently:

{ foldingIndentedBlockStart = '^\s*(class|def|for|while|if|elif|else|with|try|finally|except)\b.*:\s*(#.*)?$'; }

@dwt
Copy link

dwt commented Mar 15, 2012

Well, try as I might, I cannot get it to work. Whenever I have a -> in the regex it just fails to match anything.

It almost feels as if it is canceling out with some other rule from somewhere else. Maybe you can reproduce this and report a bug to TextMate from this - I'm just puzzled.

@alanhogan
Copy link
Author

Reporting as a TM bug would make sense then… After all, the same bundle worked in TM v1, I’m fairly sure.

On Mar 15, 2012, at 1:25 PM, dwt wrote:

Well, try as I might, I cannot get it to work. Whenever I have a -> in the regex it just fails to match anything.

It almost feels as if it is canceling out with some other rule from somewhere else. Maybe you can reproduce this and report a bug to TextMate from this - I'm just puzzled.


Reply to this email directly or view it on GitHub:
#87 (comment)

@jrus
Copy link
Contributor

jrus commented Mar 16, 2012

Edit: Hmm. I’m getting some real weirdness around -> as well. Am asking Allan Odgaard about it. [...]

Unfortunately, I don’t have time today to do more debugging of the CoffeeScript grammar, or to rewrite it to better follow typical TM grammar conventions. I’ll try to follow this up sometime in the next few days though.

@jrus
Copy link
Contributor

jrus commented Mar 18, 2012

Okay, @alanhogan @dwt the issue is that the grammar has foldings embedded (this is the way things were done in TM1). You have to go find the CoffeeScript.tmLanguage file on disk (an XML plist), and remove the foldingStartMarker and foldingStopMarker key-value pairs.

@jrus
Copy link
Contributor

jrus commented Mar 18, 2012

@alanhogan @dwt @jashkenas

Okay, to mostly hit all the cases I’ve seen – and it seems to be working great – I deleted those two keys (i.e. foldingStartMarker and foldingStopMarker) from the language grammar itself and from any settings files, and added the following settings file:

{ foldingIndentedBlockStart = '(?x)
    \b class \b |            # class definition
    [=-]> \s* (\#.*)? $      # line-ending function arrow
    ';
}

Scoped to source.coffee -(source.coffee string). [It’s not clear to me whether it’s desirable to fold inside block comments or not.] This won’t deal with the edge case where the word class occurs inside a string that ends before the end of the line, or inside a comment (false positives), but those edge cases are really hard to catch without either tremendously complicating the rule or else getting false negatives, since arbitrary expressions can go inside the thing that gets assigned to a class, as in, to take an extreme example:

Baz = wrapper class a.b(c..., new (class extends Bar) '#', y: ->)[1] extends Foo

(Though admittedly, the current language grammar doesn’t bother to handle most tricky edge cases, resulting in fairly frequent wrong/missing scopes. Still, we might as well do the best we reasonably can in the folding rule, and we can fix the rest of the grammar some other day.)

@jashkenas
Copy link
Owner

Is this something that would get backported for TM1? Or is it a TM2-specific change?

@jrus
Copy link
Contributor

jrus commented Mar 19, 2012

The indented block foldings are TM2 specific.

@dwt
Copy link

dwt commented Mar 20, 2012

Uhm, but that means that you can't have one bundle that works with tm1 and tm2?

I would consider that a bug, the tm2 settings should override the tm1 settings so they can coexist in one bundle allowing backwards compatibility.

If necessary Allan can add another setting that tells tm2 to override that other key and then deprecate it once tm2 is out and final.

@jrus
Copy link
Contributor

jrus commented Mar 20, 2012

That’s silly. TM1 is on the way out, and all the bundles can trivially be updated. The language grammar system, the scoping rules, and many other aspects of the app have been completely rewritten with new and better features. Once people actually start taking advantage of those, the resulting bundles will not function the same in TM1. The community hasn’t really stepped up to the plate yet to adopt all the neat new features, but it’s only a matter of time.

If you want a legacy TM1 bundle, there’s nothing wrong with keeping that one around separately someplace.

@dwt
Copy link

dwt commented Mar 21, 2012

Well, then how do I install separate bundles for tm1 and 2 again?

@dwt
Copy link

dwt commented Mar 21, 2012

Is there already a branch with the changes outlined above that I can test? I'll be working with coffee script quite a bit today.

@jrus
Copy link
Contributor

jrus commented Mar 22, 2012

@dwt see http://blog.macromates.com/2011/locating-bundles/

As for a branch w/ the changes above, my fork of the bundle does this, and also has improved compile/run commands.

https://github.com/jrus/coffee-script-tmbundle/

Note that I haven’t really been keeping up with jeremy’s fork, planning at some point to just rewrite the language grammar and fix up the commands &c. to be more "textmate-ish"... best laid plans and all that.

@dwt
Copy link

dwt commented Mar 22, 2012

Am 22.03.2012 um 04:03 schrieb Jacob Rus:

@dwt see http://blog.macromates.com/2011/locating-bundles/

Got it, thanks!

Martin

@alexandertrefz
Copy link

@jashkenas Now that TM2 is really moving again, after its OpenSourcing, can we get this in maybe? Or have a separate TM2 branch in this Repo on which this can go in?

@Hoverbear
Copy link

+1, this is still an issue.

infininight pushed a commit to textmate/coffee-script.tmbundle that referenced this issue Feb 22, 2013
infininight pushed a commit to textmate/coffee-script.tmbundle that referenced this issue Mar 20, 2013
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants