diff options
author | Miran <narimiran@disroot.org> | 2019-07-05 09:32:56 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2019-07-05 09:32:56 +0200 |
commit | 96a19ea1b441f5e1682b2f04bac188003ceea6dd (patch) | |
tree | a119e332eb484cee39495cbca9f92f19ad4c3e80 | |
parent | 95f2f2396f868b418996358d6328368395a1f5c6 (diff) | |
download | Nim-96a19ea1b441f5e1682b2f04bac188003ceea6dd.tar.gz |
nimpretty: relax line length rules when dealing with (inline) comments (#11657)
-rw-r--r-- | compiler/layouter.nim | 12 | ||||
-rw-r--r-- | nimpretty/tests/exhaustive.nim | 12 | ||||
-rw-r--r-- | nimpretty/tests/expected/exhaustive.nim | 19 | ||||
-rw-r--r-- | nimpretty/tests/expected/simple3.nim | 3 |
4 files changed, 36 insertions, 10 deletions
diff --git a/compiler/layouter.nim b/compiler/layouter.nim index 724e827cc..d8e1b7b0f 100644 --- a/compiler/layouter.nim +++ b/compiler/layouter.nim @@ -16,7 +16,7 @@ from sequtils import delete const MaxLineLen = 80 - MinLineLen = 10 + MinLineLen = 15 type SplitKind = enum @@ -102,12 +102,14 @@ proc findNewline(em: Emitter; p, lineLen: var int) = inc lineLen, em.tokens[p].len inc p -proc optionalIsGood(em: var Emitter; pos: int): bool = +proc optionalIsGood(em: var Emitter; pos, currentLen: int): bool = let ourIndent = em.tokens[pos].len var p = pos+1 var lineLen = 0 em.findNewline(p, lineLen) - if p+1 < em.tokens.len and em.kinds[p+1] == ltSpaces and + if em.kinds[p-1] == ltComment and currentLen+lineLen < MaxLineLen+MinLineLen: + result = false + elif p+1 < em.tokens.len and em.kinds[p+1] == ltSpaces and em.kinds[p-1] == ltOptionalNewline: if em.tokens[p+1].len == ourIndent: # concatenate lines with the same indententation @@ -163,7 +165,7 @@ proc closeEmitter*(em: var Emitter) = else: # pick the shorter indentation token: var spaces = maxLhs - lineLen - if spaces < em.tokens[i].len or computeRhs(em, i+1)+maxLhs <= MaxLineLen: + if spaces < em.tokens[i].len or computeRhs(em, i+1)+maxLhs <= MaxLineLen+MinLineLen: if spaces <= 0 and content[^1] notin {' ', '\L'}: spaces = 1 for j in 1..spaces: content.add ' ' inc lineLen, spaces @@ -177,7 +179,7 @@ proc closeEmitter*(em: var Emitter) = of ltOptionalNewline: let totalLineLen = lineLen + lenOfNextTokens(em, i) if totalLineLen > MaxLineLen + MinLineLen or - totalLineLen > MaxLineLen and optionalIsGood(em, i): + totalLineLen > MaxLineLen and optionalIsGood(em, i, lineLen): if i-1 >= 0 and em.kinds[i-1] == ltSpaces: let spaces = em.tokens[i-1].len content.setLen(content.len - spaces) diff --git a/nimpretty/tests/exhaustive.nim b/nimpretty/tests/exhaustive.nim index c0d4ac084..933b0de75 100644 --- a/nimpretty/tests/exhaustive.nim +++ b/nimpretty/tests/exhaustive.nim @@ -688,3 +688,15 @@ proc newRecordGen(ctx: Context; typ: TypRef): PNode = nkRecList.t( typ.recFields.map(newRecFieldGen)))) + +let + lla = 42394219 - 42429849 + 1293293 - 13918391 + 424242 # this here is an okayish comment + llb = 42394219 - 42429849 + 1293293 - 13918391 + 424242 # this here is a very long comment which should be split + llc = 42394219 - 42429849 + 1293293 - 13918391 + 424242 - 3429424 + 4239489 - 42399 + lld = 42394219 - 42429849 + 1293293 - 13918391 + 424242 - 342949924 + 423948999 - 42399 + +type + MyLongEnum = enum ## doc comment here + first, ## this is a long comment here, but please align it + secondWithAVeryLongNameMightBreak, ## this is a short one + thirdOne ## it's ok diff --git a/nimpretty/tests/expected/exhaustive.nim b/nimpretty/tests/expected/exhaustive.nim index 4ed056656..c5ef965e6 100644 --- a/nimpretty/tests/expected/exhaustive.nim +++ b/nimpretty/tests/expected/exhaustive.nim @@ -19,8 +19,7 @@ var body = newNimNode(nnkIfExpr).add( ident("kind"))), condition ), - newNimNode(nnkElse).add(newStmtList(newNimNode(nnkReturnStmt).add(ident( - "false")))) + newNimNode(nnkElse).add(newStmtList(newNimNode(nnkReturnStmt).add(ident("false")))) ) # comment @@ -122,7 +121,7 @@ type inquote {.pragmaHereWrongCurlyEnd.}: bool col, lastLineNumber, lineSpan, indentLevel: int content: string - fixedUntil: int # marks where we must not go in the content + fixedUntil: int # marks where we must not go in the content altSplitPos: array[SplitKind, int] # alternative split positions proc openEmitter*[T, S](em: var Emitter; config: ConfigRef; @@ -695,3 +694,17 @@ proc newRecordGen(ctx: Context; typ: TypRef): PNode = nkRecList.t( typ.recFields.map(newRecFieldGen)))) + +let + lla = 42394219 - 42429849 + 1293293 - 13918391 + 424242 # this here is an okayish comment + llb = 42394219 - 42429849 + 1293293 - 13918391 + + 424242 # this here is a very long comment which should be split + llc = 42394219 - 42429849 + 1293293 - 13918391 + 424242 - 3429424 + 4239489 - 42399 + lld = 42394219 - 42429849 + 1293293 - 13918391 + 424242 - 342949924 + + 423948999 - 42399 + +type + MyLongEnum = enum ## doc comment here + first, ## this is a long comment here, but please align it + secondWithAVeryLongNameMightBreak, ## this is a short one + thirdOne ## it's ok diff --git a/nimpretty/tests/expected/simple3.nim b/nimpretty/tests/expected/simple3.nim index b7a02758a..c1c0af449 100644 --- a/nimpretty/tests/expected/simple3.nim +++ b/nimpretty/tests/expected/simple3.nim @@ -9,8 +9,7 @@ proc fun() = echo "ok1" proc fun2(a = "fooo" & "bar" & "bar" & "bar" & "bar" & ("bar" & "bar" & "bar") & - "bar" & "bar" & "bar" & "bar" & "bar" & "bar" & "bar" & "bar" & - "bar"): auto = + "bar" & "bar" & "bar" & "bar" & "bar" & "bar" & "bar" & "bar" & "bar"): auto = discard fun2() |