Comments (11)
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.
@ddlsmurf: Out of curiosity, do you consider all of these cases valid or just inconsistent?
from coffeelint.
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.
Bump. Is there a fix planned for this? I noticed it's been quite some time since it was opened....
from coffeelint.
Has any progress been made on this? It's pushing other errors in my Syntastic (Vim) readout out of the first screenful.
from coffeelint.
+1
from coffeelint.
👍 It's confusing when the line # is wrong for indent warnings (re: #248)
from coffeelint.
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.
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.
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.
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)
- `ensure_comprehensions` should warn about comprehensions of or within implicit object literals
- Disallow "not x in y" and "not x of y" HOT 1
- Allow longer lines in multiline strings.
- Option for prefer_english_operator preferring Python operators
- arrow_spacing should allow you to force 0 spaces on each side HOT 1
- Suport JSX (react) notation HOT 1
- CoffeeScript 2.1.0 HOT 1
- DockerFile to run coffeelint through docker HOT 2
- Support computed object keys HOT 1
- Last update broke splats HOT 4
- Erroneous Fat Arrow Warning when fn is attached to an object
- feature_request(config): support YAML configuration format
- no_throwing_strings rule does not trigger when using round brackets
- Homepage appears down HOT 11
- Push access for new maintainers? HOT 2
- Old Dependencies & Maintenance Status, and how it impacts devs HOT 2
- JSON parser croaks on utf-8 BOM HOT 1
- running npm test fails HOT 2
- Trying to get in touch regarding a security issue HOT 1
- Inform deprecation clearly HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from coffeelint.