GithubHelp home page GithubHelp logo

Comments (17)

dwt avatar dwt commented on May 28, 2024

I'm suffering from this as well.

Is there an estimate when this can be fixed?

from coffee-script-tmbundle.

jrus avatar jrus commented on May 28, 2024

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*(#.*)?$'; }

from coffee-script-tmbundle.

dwt avatar dwt commented on May 28, 2024

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.

from coffee-script-tmbundle.

alanhogan avatar alanhogan commented on May 28, 2024

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)

from coffee-script-tmbundle.

jrus avatar jrus commented on May 28, 2024

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.

from coffee-script-tmbundle.

jrus avatar jrus commented on May 28, 2024

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.

from coffee-script-tmbundle.

jrus avatar jrus commented on May 28, 2024

@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.)

from coffee-script-tmbundle.

jashkenas avatar jashkenas commented on May 28, 2024

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

from coffee-script-tmbundle.

jrus avatar jrus commented on May 28, 2024

The indented block foldings are TM2 specific.

from coffee-script-tmbundle.

dwt avatar dwt commented on May 28, 2024

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.

from coffee-script-tmbundle.

jrus avatar jrus commented on May 28, 2024

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.

from coffee-script-tmbundle.

dwt avatar dwt commented on May 28, 2024

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

from coffee-script-tmbundle.

dwt avatar dwt commented on May 28, 2024

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.

from coffee-script-tmbundle.

jrus avatar jrus commented on May 28, 2024

@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.

from coffee-script-tmbundle.

dwt avatar dwt commented on May 28, 2024

Am 22.03.2012 um 04:03 schrieb Jacob Rus:

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

Got it, thanks!

Martin

from coffee-script-tmbundle.

alexandertrefz avatar alexandertrefz commented on May 28, 2024

@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?

from coffee-script-tmbundle.

Hoverbear avatar Hoverbear commented on May 28, 2024

+1, this is still an issue.

from coffee-script-tmbundle.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.