Coder Social home page Coder Social logo

Comments (11)

clutchski avatar clutchski commented on June 7, 2024

Thanks for reporting this. This is definitely a bug. CoffeeLint doesn't really handle invoking methods on different lines from the object. I actually added a failing test case for it last week. Stay tuned for a fix.

https://github.com/clutchski/coffeelint/blob/master/test/test_indent.coffee#L119

from coffeelint.

clutchski avatar clutchski commented on June 7, 2024

@ddlsmurf: Out of curiosity, do you consider all of these cases valid or just inconsistent?

from coffeelint.

ddlsmurf avatar ddlsmurf commented on June 7, 2024

That's a good question. I wouldnt mind avoiding some formats to avoid indenting-related surprises in the generated js, but I don't really have any suggestions about that...

from coffeelint.

dustinboston avatar dustinboston commented on June 7, 2024

Bump. Is there a fix planned for this? I noticed it's been quite some time since it was opened....

from coffeelint.

ssokolow avatar ssokolow commented on June 7, 2024

Has any progress been made on this? It's pushing other errors in my Syntastic (Vim) readout out of the first screenful.

from coffeelint.

schliffer avatar schliffer commented on June 7, 2024

+1

from coffeelint.

docwhat avatar docwhat commented on June 7, 2024

👍 It's confusing when the line # is wrong for indent warnings (re: #248)

from coffeelint.

AsaAyers avatar AsaAyers commented on June 7, 2024

The only indentation bug left that I know of is related to indention of chained calls. Until someone can really close this issue the solution is to not indent the chain:

doSomething()
.then(somethingElse)
.then ->
  inlineCallback()
  youCanEven()
  .then ->
    chaingThingsInHere()
  .withNoProblem()
.then ->
  secondInlineCallback()

It's not that there's no plan to fix it. Multiple people have attempted, but the root cause seems to live in CoffeeScript and no one has found a workaround. If you'd like to work on this I created http://asaayers.github.io/clfiddle/ for examining the token stream.

I think it would help if anyone has time to write a rule (or modification to the rule) to explicitly forbid these indented chains. @docwhat is right, it is definitely confusing. Using indented chains the false positives always seem to show up on the wrong line.

from coffeelint.

docwhat avatar docwhat commented on June 7, 2024

I have to admit that I am very partial to indenting call chains... Vim indents them automatically. I imagine other indenters do as well.

sigh

from coffeelint.

AsaAyers avatar AsaAyers commented on June 7, 2024

Given that CoffeeScript is a whitespace significant language I think you can argue that you shouldn't indent chains. When you indent the chain CoffeeScript doesn't generate an INDENT token because tokens exist to generate Javascript code. If it's not a new block, there's no reason to generate an INDENT token. If you checkout the generated Javascript, these chains all get crammed onto one line.

That said, CoffeeLint is here to help you write better code, not to enforce subjective opinions.

from coffeelint.

ibrahima avatar ibrahima commented on June 7, 2024

Is this supposed to be flagged? It seems like whether or not the below code is flagged depends on whether the dots appear on even column numbers or odd (odd numbers trigger the error):

$('#some_element').attr('disabled', false)
                  .removeClass('disabled')
                  .val(someValue)

We follow this style of indentation for our Ruby code as well (using Rubocop) and I couldn't figure out if there was a linter option for this or not, but it seems like this style of indentation is sometimes marked as valid and sometimes invalid depending on what column the first dot appears at.

from coffeelint.

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.