mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-15 09:15:37 +00:00
nimpretty: don't touch formatted multiline comments (#11663)
This commit is contained in:
@@ -300,29 +300,37 @@ proc emitMultilineComment(em: var Emitter, lit: string, col: int) =
|
||||
var i = 0
|
||||
var lastIndent = em.indentStack[^1]
|
||||
var b = 0
|
||||
var dontIndent = false
|
||||
for commentLine in splitLines(lit):
|
||||
let stripped = commentLine.strip()
|
||||
var a = 0
|
||||
while a < commentLine.len and commentLine[a] == ' ': inc a
|
||||
if i == 0:
|
||||
if em.kinds.len > 0 and em.kinds[^1] != ltTab:
|
||||
wr(em, "", ltTab)
|
||||
elif stripped.len == 0:
|
||||
if i == 0 and (commentLine.endsWith("\\") or commentLine.endsWith("[")):
|
||||
dontIndent = true
|
||||
wr em, commentLine, ltComment
|
||||
elif dontIndent:
|
||||
wrNewline em
|
||||
wr em, commentLine, ltComment
|
||||
else:
|
||||
if a > lastIndent:
|
||||
b += em.indWidth
|
||||
lastIndent = a
|
||||
elif a < lastIndent:
|
||||
b -= em.indWidth
|
||||
lastIndent = a
|
||||
wrNewline em
|
||||
#wrSpaces em, col + b
|
||||
if col + b > 0:
|
||||
wr(em, repeat(' ', col+b), ltTab)
|
||||
let stripped = commentLine.strip()
|
||||
var a = 0
|
||||
while a < commentLine.len and commentLine[a] == ' ': inc a
|
||||
if i == 0:
|
||||
if em.kinds.len > 0 and em.kinds[^1] != ltTab:
|
||||
wr(em, "", ltTab)
|
||||
elif stripped.len == 0:
|
||||
wrNewline em
|
||||
else:
|
||||
wr(em, "", ltTab)
|
||||
wr em, stripped, ltComment
|
||||
if a > lastIndent:
|
||||
b += em.indWidth
|
||||
lastIndent = a
|
||||
elif a < lastIndent:
|
||||
b -= em.indWidth
|
||||
lastIndent = a
|
||||
wrNewline em
|
||||
#wrSpaces em, col + b
|
||||
if col + b > 0:
|
||||
wr(em, repeat(' ', col+b), ltTab)
|
||||
else:
|
||||
wr(em, "", ltTab)
|
||||
wr em, stripped, ltComment
|
||||
inc i
|
||||
|
||||
proc lastChar(s: string): char =
|
||||
|
||||
@@ -689,6 +689,34 @@ proc newRecordGen(ctx: Context; typ: TypRef): PNode =
|
||||
typ.recFields.map(newRecFieldGen))))
|
||||
|
||||
|
||||
##[
|
||||
String `interpolation`:idx: / `format`:idx: inspired by
|
||||
Python's ``f``-strings.
|
||||
|
||||
.. code-block:: nim
|
||||
|
||||
import strformat
|
||||
let msg = "hello"
|
||||
doAssert fmt"{msg}\n" == "hello\\n"
|
||||
|
||||
Because the literal is a raw string literal, the ``\n`` is not interpreted as
|
||||
an escape sequence.
|
||||
|
||||
|
||||
================= ====================================================
|
||||
Sign Meaning
|
||||
================= ====================================================
|
||||
``+`` Indicates that a sign should be used for both
|
||||
positive as well as negative numbers.
|
||||
``-`` Indicates that a sign should be used only for
|
||||
negative numbers (this is the default behavior).
|
||||
(space) Indicates that a leading space should be used on
|
||||
positive numbers.
|
||||
================= ====================================================
|
||||
|
||||
]##
|
||||
|
||||
|
||||
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
|
||||
|
||||
@@ -631,10 +631,10 @@ type
|
||||
cmdLongOption, ## A long option such as --option
|
||||
cmdShortOption ## A short option such as -c
|
||||
OptParser* = object of RootObj ## \
|
||||
## Implementation of the command line parser. Here is even more text yad.
|
||||
##
|
||||
## To initialize it, use the
|
||||
## `initOptParser proc<#initOptParser,string,set[char],seq[string]>`_.
|
||||
## Implementation of the command line parser. Here is even more text yad.
|
||||
##
|
||||
## To initialize it, use the
|
||||
## `initOptParser proc<#initOptParser,string,set[char],seq[string]>`_.
|
||||
pos*: int
|
||||
inShortState: bool
|
||||
allowWhitespaceAfterColon: bool
|
||||
@@ -695,6 +695,34 @@ proc newRecordGen(ctx: Context; typ: TypRef): PNode =
|
||||
typ.recFields.map(newRecFieldGen))))
|
||||
|
||||
|
||||
##[
|
||||
String `interpolation`:idx: / `format`:idx: inspired by
|
||||
Python's ``f``-strings.
|
||||
|
||||
.. code-block:: nim
|
||||
|
||||
import strformat
|
||||
let msg = "hello"
|
||||
doAssert fmt"{msg}\n" == "hello\\n"
|
||||
|
||||
Because the literal is a raw string literal, the ``\n`` is not interpreted as
|
||||
an escape sequence.
|
||||
|
||||
|
||||
================= ====================================================
|
||||
Sign Meaning
|
||||
================= ====================================================
|
||||
``+`` Indicates that a sign should be used for both
|
||||
positive as well as negative numbers.
|
||||
``-`` Indicates that a sign should be used only for
|
||||
negative numbers (this is the default behavior).
|
||||
(space) Indicates that a leading space should be used on
|
||||
positive numbers.
|
||||
================= ====================================================
|
||||
|
||||
]##
|
||||
|
||||
|
||||
let
|
||||
lla = 42394219 - 42429849 + 1293293 - 13918391 + 424242 # this here is an okayish comment
|
||||
llb = 42394219 - 42429849 + 1293293 - 13918391 +
|
||||
|
||||
Reference in New Issue
Block a user