nimpretty: smart tabs support, fixes #9399 [bugfix]

This commit is contained in:
Andreas Rumpf 2019-06-10 10:50:02 +02:00
commit caf93f4355
6 changed files with 159 additions and 59 deletions

View file

@ -50,15 +50,11 @@ proc prettyPrint(infile, outfile: string, opt: PrettyOptions) =
var conf = newConfigRef()
let fileIdx = fileInfoIdx(conf, AbsoluteFile infile)
conf.outFile = RelativeFile outfile
when defined(nimpretty2):
var p: TParsers
p.parser.em.indWidth = opt.indWidth
if setupParsers(p, fileIdx, newIdentCache(), conf):
discard parseAll(p)
closeParsers(p)
else:
let tree = parseFile(fileIdx, newIdentCache(), conf)
renderModule(tree, infile, outfile, {}, fileIdx, conf)
var p: TParsers
p.parser.em.indWidth = opt.indWidth
if setupParsers(p, fileIdx, newIdentCache(), conf):
discard parseAll(p)
closeParsers(p)
proc main =
var infile, outfile: string

View file

@ -1,3 +1,2 @@
--define: nimpretty
--define: nimpretty2
--define: nimOldCaseObjects

View file

@ -396,3 +396,16 @@ proc main() =
discard
main()
type
TCallingConvention* = enum
ccDefault, # proc has no explicit calling convention
ccStdCall, # procedure is stdcall
ccCDecl, # cdecl
ccSafeCall, # safecall
ccSysCall, # system call
ccInline, # proc should be inlined
ccNoInline, # proc should not be inlined
ccFastCall, # fastcall (pass parameters in registers)
ccClosure, # proc has a closure
ccNoConvention # needed for generating proper C procs sometimes

View file

@ -29,10 +29,10 @@ var x = 1
type
GeneralTokenizer* = object of RootObj ## comment here
kind*: TokenClass ## and here
start*, length*: int ## you know how it goes...
kind*: TokenClass ## and here
start*, length*: int ## you know how it goes...
buf: cstring
pos: int # other comment here.
pos: int # other comment here.
state: TokenClass
var x*: string
@ -122,7 +122,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;
@ -406,3 +406,16 @@ proc main() =
discard
main()
type
TCallingConvention* = enum
ccDefault, # proc has no explicit calling convention
ccStdCall, # procedure is stdcall
ccCDecl, # cdecl
ccSafeCall, # safecall
ccSysCall, # system call
ccInline, # proc should be inlined
ccNoInline, # proc should not be inlined
ccFastCall, # fastcall (pass parameters in registers)
ccClosure, # proc has a closure
ccNoConvention # needed for generating proper C procs sometimes