Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

x/tools/gopls: changes reverted after saving #32643

Closed
gencer opened this issue Jun 16, 2019 · 15 comments
Closed

x/tools/gopls: changes reverted after saving #32643

gencer opened this issue Jun 16, 2019 · 15 comments
Labels
Milestone

Comments

@gencer
Copy link

@gencer gencer commented Jun 16, 2019

What version of Go are you using (go version)?

$ go version
go version go1.12.5 windows/amd64

Does this issue reproduce with the latest release?

Yes

What operating system and processor architecture are you using (go env)?

Windows 10 1903 x64 uses Ryzen 3 processor.

go env Output
$ go env
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\gence\AppData\Local\go-build
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=D:\Go\
set GOPROXY=
set GORACE=
set GOROOT=C:\Go
set GOTMPDIR=
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-LD:\Go\/src/mingw-4.7.2-64 -lchilkatExt-9.5.0 -lws2_32 -lstdc++
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\gence\AppData\Local\Temp\go-build166751930=/tmp/go-build -gno-record-gcc-switches

What did you do?

Open project and play with it. Just edit and save the document. When saved, all changes will be lost and revert back to first state. Also this happens when I right-click. Probably after loosing focus.

What did you expect to see?

Just want to see suggestions (autocomplete) and keep my changes. But this is not working at all. Worst experience in VSCode.

What did you see instead?

Changes get lost after loosing focus or save, autocomplete barely working.

Focus/Save issue:

1

  • What I do is here press CTRL+Z to get back my line then right-click or save the file.

Autocomplete issue:

2

  • As you can see req barely completes. Above works below not. Most of my code is like this.
@gopherbot gopherbot added this to the Unreleased milestone Jun 16, 2019
@gopherbot gopherbot added the gopls label Jun 16, 2019
@stamblerre

This comment has been minimized.

Copy link
Contributor

@stamblerre stamblerre commented Jun 17, 2019

Can you share a gopls log for this behavior? You can see the logs by going to View: Debug Console -> Output -> Tasks -> gopls.

@stamblerre stamblerre changed the title x/tools/cmd/gopls: No autocomplete, changes reverted after CTRL+S (Save) x/tools/gopls: changes reverted after saving Jun 17, 2019
@gencer

This comment has been minimized.

Copy link
Author

@gencer gencer commented Jun 17, 2019

This is CTRL+S (focus) and auto removal log.

[Trace - 8:04:38 PM] Sending request 'textDocument/hover - (15)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/cli/version.go"},"position":{"line":12,"character":9}}


[Trace - 8:04:38 PM] Received response 'textDocument/hover - (15)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"Printf formats according to a format specifier and writes to standard output.\n```go\nfunc fmt.Printf(format string, a ...interface{}) (n int, err error)\n```"},"range":{"start":{"line":12,"character":5},"end":{"line":12,"character":11}}}


[Trace - 8:04:38 PM] Sending request 'textDocument/documentHighlight - (16)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/cli/version.go"},"position":{"line":11,"character":11}}


[Trace - 8:04:38 PM] Received response 'textDocument/documentHighlight - (16)' in 2ms.
Params: [{"range":{"start":{"line":11,"character":5},"end":{"line":11,"character":16}},"kind":1}]


[Trace - 8:04:38 PM] Sending request 'textDocument/definition - (17)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/cli/version.go"},"position":{"line":12,"character":10}}


[Trace - 8:04:38 PM] Received response 'textDocument/definition - (17)' in 18ms.
Params: [{"uri":"file:///c:/go/src/fmt/print.go","range":{"start":{"line":206,"character":5},"end":{"line":206,"character":11}}}]


[Trace - 8:04:38 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///c%3A/go/src/fmt/print.go","languageId":"go","version":1,"text":"// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage fmt\n\nimport (\n\t\"errors\"\n\t\"internal/fmtsort\"\n\t\"io\"\n\t\"os\"\n\t\"reflect\"\n\t\"sync\"\n\t\"unicode/utf8\"\n)\n\n// Strings for use with buffer.WriteString.\n// This is less overhead than using buffer.Write with byte arrays.\nconst (\n\tcommaSpaceString  = \", \"\n\tnilAngleString    = \"<nil>\"\n\tnilParenString    = \"(nil)\"\n\tnilString         = \"nil\"\n\tmapString         = \"map[\"\n\tpercentBangString = \"%!\"\n\tmissingString     = \"(MISSING)\"\n\tbadIndexString    = \"(BADINDEX)\"\n\tpanicString       = \"(PANIC=\"\n\textraString       = \"%!(EXTRA \"\n\tbadWidthString    = \"%!(BADWIDTH)\"\n\tbadPrecString     = \"%!(BADPREC)\"\n\tnoVerbString      = \"%!(NOVERB)\"\n\tinvReflectString  = \"<invalid reflect.Value>\"\n)\n\n// State represents the printer state passed to custom formatters.\n// It provides access to the io.Writer interface plus information about\n// the flags and options for the operand's format specifier.\ntype State interface {\n\t// Write is the function to call to emit formatted output to be printed.\n\tWrite(b []byte) (n int, err error)\n\t// Width returns the value of the width option and whether it has been set.\n\tWidth() (wid int, ok bool)\n\t// Precision returns the value of the precision option and whether it has been set.\n\tPrecision() (prec int, ok bool)\n\n\t// Flag reports whether the flag c, a character, has been set.\n\tFlag(c int) bool\n}\n\n// Formatter is the interface implemented by values with a custom formatter.\n// The implementation of Format may call Sprint(f) or Fprint(f) etc.\n// to generate its output.\ntype Formatter interface {\n\tFormat(f State, c rune)\n}\n\n// Stringer is implemented by any value that has a String method,\n// which defines the ``native'' format for that value.\n// The String method is used to print values passed as an operand\n// to any format that accepts a string or to an unformatted printer\n// such as Print.\ntype Stringer interface {\n\tString() string\n}\n\n// GoStringer is implemented by any value that has a GoString method,\n// which defines the Go syntax for that value.\n// The GoString method is used to print values passed as an operand\n// to a %#v format.\ntype GoStringer interface {\n\tGoString() string\n}\n\n// Use simple []byte instead of bytes.Buffer to avoid large dependency.\ntype buffer []byte\n\nfunc (b *buffer) Write(p []byte) {\n\t*b = append(*b, p...)\n}\n\nfunc (b *buffer) WriteString(s string) {\n\t*b = append(*b, s...)\n}\n\nfunc (b *buffer) WriteByte(c byte) {\n\t*b = append(*b, c)\n}\n\nfunc (bp *buffer) WriteRune(r rune) {\n\tif r < utf8.RuneSelf {\n\t\t*bp = append(*bp, byte(r))\n\t\treturn\n\t}\n\n\tb := *bp\n\tn := len(b)\n\tfor n+utf8.UTFMax > cap(b) {\n\t\tb = append(b, 0)\n\t}\n\tw := utf8.EncodeRune(b[n:n+utf8.UTFMax], r)\n\t*bp = b[:n+w]\n}\n\n// pp is used to store a printer's state and is reused with sync.Pool to avoid allocations.\ntype pp struct {\n\tbuf buffer\n\n\t// arg holds the current item, as an interface{}.\n\targ interface{}\n\n\t// value is used instead of arg for reflect values.\n\tvalue reflect.Value\n\n\t// fmt is used to format basic items such as integers or strings.\n\tfmt fmt\n\n\t// reordered records whether the format string used argument reordering.\n\treordered bool\n\t// goodArgNum records whether the most recent reordering directive was valid.\n\tgoodArgNum bool\n\t// panicking is set by catchPanic to avoid infinite panic, recover, panic, ... recursion.\n\tpanicking bool\n\t// erroring is set when printing an error string to guard against calling handleMethods.\n\terroring bool\n}\n\nvar ppFree = sync.Pool{\n\tNew: func() interface{} { return new(pp) },\n}\n\n// newPrinter allocates a new pp struct or grabs a cached one.\nfunc newPrinter() *pp {\n\tp := ppFree.Get().(*pp)\n\tp.panicking = false\n\tp.erroring = false\n\tp.fmt.init(&p.buf)\n\treturn p\n}\n\n// free saves used pp structs in ppFree; avoids an allocation per invocation.\nfunc (p *pp) free() {\n\t// Proper usage of a sync.Pool requires each entry to have approximately\n\t// the same memory cost. To obtain this property when the stored type\n\t// contains a variably-sized buffer, we add a hard limit on the maximum buffer\n\t// to place back in the pool.\n\t//\n\t// See https://golang.org/issue/23199\n\tif cap(p.buf) > 64<<10 {\n\t\treturn\n\t}\n\n\tp.buf = p.buf[:0]\n\tp.arg = nil\n\tp.value = reflect.Value{}\n\tppFree.Put(p)\n}\n\nfunc (p *pp) Width() (wid int, ok bool) { return p.fmt.wid, p.fmt.widPresent }\n\nfunc (p *pp) Precision() (prec int, ok bool) { return p.fmt.prec, p.fmt.precPresent }\n\nfunc (p *pp) Flag(b int) bool {\n\tswitch b {\n\tcase '-':\n\t\treturn p.fmt.minus\n\tcase '+':\n\t\treturn p.fmt.plus || p.fmt.plusV\n\tcase '#':\n\t\treturn p.fmt.sharp || p.fmt.sharpV\n\tcase ' ':\n\t\treturn p.fmt.space\n\tcase '0':\n\t\treturn p.fmt.zero\n\t}\n\treturn false\n}\n\n// Implement Write so we can call Fprintf on a pp (through State), for\n// recursive use in custom verbs.\nfunc (p *pp) Write(b []byte) (ret int, err error) {\n\tp.buf.Write(b)\n\treturn len(b), nil\n}\n\n// Implement WriteString so that we can call io.WriteString\n// on a pp (through state), for efficiency.\nfunc (p *pp) WriteString(s string) (ret int, err error) {\n\tp.buf.WriteString(s)\n\treturn len(s), nil\n}\n\n// These routines end in 'f' and take a format string.\n\n// Fprintf formats according to a format specifier and writes to w.\n// It returns the number of bytes written and any write error encountered.\nfunc Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) {\n\tp := newPrinter()\n\tp.doPrintf(format, a)\n\tn, err = w.Write(p.buf)\n\tp.free()\n\treturn\n}\n\n// Printf formats according to a format specifier and writes to standard output.\n// It returns the number of bytes written and any write error encountered.\nfunc Printf(format string, a ...interface{}) (n int, err error) {\n\treturn Fprintf(os.Stdout, format, a...)\n}\n\n// Sprintf formats according to a format specifier and returns the resulting string.\nfunc Sprintf(format string, a ...interface{}) string {\n\tp := newPrinter()\n\tp.doPrintf(format, a)\n\ts := string(p.buf)\n\tp.free()\n\treturn s\n}\n\n// Errorf formats according to a format specifier and returns the string\n// as a value that satisfies error.\nfunc Errorf(format string, a ...interface{}) error {\n\treturn errors.New(Sprintf(format, a...))\n}\n\n// These routines do not take a format string\n\n// Fprint formats using the default formats for its operands and writes to w.\n// Spaces are added between operands when neither is a string.\n// It returns the number of bytes written and any write error encountered.\nfunc Fprint(w io.Writer, a ...interface{}) (n int, err error) {\n\tp := newPrinter()\n\tp.doPrint(a)\n\tn, err = w.Write(p.buf)\n\tp.free()\n\treturn\n}\n\n// Print formats using the default formats for its operands and writes to standard output.\n// Spaces are added between operands when neither is a string.\n// It returns the number of bytes written and any write error encountered.\nfunc Print(a ...interface{}) (n int, err error) {\n\treturn Fprint(os.Stdout, a...)\n}\n\n// Sprint formats using the default formats for its operands and returns the resulting string.\n// Spaces are added between operands when neither is a string.\nfunc Sprint(a ...interface{}) string {\n\tp := newPrinter()\n\tp.doPrint(a)\n\ts := string(p.buf)\n\tp.free()\n\treturn s\n}\n\n// These routines end in 'ln', do not take a format string,\n// always add spaces between operands, and add a newline\n// after the last operand.\n\n// Fprintln formats using the default formats for its operands and writes to w.\n// Spaces are always added between operands and a newline is appended.\n// It returns the number of bytes written and any write error encountered.\nfunc Fprintln(w io.Writer, a ...interface{}) (n int, err error) {\n\tp := newPrinter()\n\tp.doPrintln(a)\n\tn, err = w.Write(p.buf)\n\tp.free()\n\treturn\n}\n\n// Println formats using the default formats for its operands and writes to standard output.\n// Spaces are always added between operands and a newline is appended.\n// It returns the number of bytes written and any write error encountered.\nfunc Println(a ...interface{}) (n int, err error) {\n\treturn Fprintln(os.Stdout, a...)\n}\n\n// Sprintln formats using the default formats for its operands and returns the resulting string.\n// Spaces are always added between operands and a newline is appended.\nfunc Sprintln(a ...interface{}) string {\n\tp := newPrinter()\n\tp.doPrintln(a)\n\ts := string(p.buf)\n\tp.free()\n\treturn s\n}\n\n// getField gets the i'th field of the struct value.\n// If the field is itself is an interface, return a value for\n// the thing inside the interface, not the interface itself.\nfunc getField(v reflect.Value, i int) reflect.Value {\n\tval := v.Field(i)\n\tif val.Kind() == reflect.Interface && !val.IsNil() {\n\t\tval = val.Elem()\n\t}\n\treturn val\n}\n\n// tooLarge reports whether the magnitude of the integer is\n// too large to be used as a formatting width or precision.\nfunc tooLarge(x int) bool {\n\tconst max int = 1e6\n\treturn x > max || x < -max\n}\n\n// parsenum converts ASCII to integer.  num is 0 (and isnum is false) if no number present.\nfunc parsenum(s string, start, end int) (num int, isnum bool, newi int) {\n\tif start >= end {\n\t\treturn 0, false, end\n\t}\n\tfor newi = start; newi < end && '0' <= s[newi] && s[newi] <= '9'; newi++ {\n\t\tif tooLarge(num) {\n\t\t\treturn 0, false, end // Overflow; crazy long number most likely.\n\t\t}\n\t\tnum = num*10 + int(s[newi]-'0')\n\t\tisnum = true\n\t}\n\treturn\n}\n\nfunc (p *pp) unknownType(v reflect.Value) {\n\tif !v.IsValid() {\n\t\tp.buf.WriteString(nilAngleString)\n\t\treturn\n\t}\n\tp.buf.WriteByte('?')\n\tp.buf.WriteString(v.Type().String())\n\tp.buf.WriteByte('?')\n}\n\nfunc (p *pp) badVerb(verb rune) {\n\tp.erroring = true\n\tp.buf.WriteString(percentBangString)\n\tp.buf.WriteRune(verb)\n\tp.buf.WriteByte('(')\n\tswitch {\n\tcase p.arg != nil:\n\t\tp.buf.WriteString(reflect.TypeOf(p.arg).String())\n\t\tp.buf.WriteByte('=')\n\t\tp.printArg(p.arg, 'v')\n\tcase p.value.IsValid():\n\t\tp.buf.WriteString(p.value.Type().String())\n\t\tp.buf.WriteByte('=')\n\t\tp.printValue(p.value, 'v', 0)\n\tdefault:\n\t\tp.buf.WriteString(nilAngleString)\n\t}\n\tp.buf.WriteByte(')')\n\tp.erroring = false\n}\n\nfunc (p *pp) fmtBool(v bool, verb rune) {\n\tswitch verb {\n\tcase 't', 'v':\n\t\tp.fmt.fmtBoolean(v)\n\tdefault:\n\t\tp.badVerb(verb)\n\t}\n}\n\n// fmt0x64 formats a uint64 in hexadecimal and prefixes it with 0x or\n// not, as requested, by temporarily setting the sharp flag.\nfunc (p *pp) fmt0x64(v uint64, leading0x bool) {\n\tsharp := p.fmt.sharp\n\tp.fmt.sharp = leading0x\n\tp.fmt.fmtInteger(v, 16, unsigned, ldigits)\n\tp.fmt.sharp = sharp\n}\n\n// fmtInteger formats a signed or unsigned integer.\nfunc (p *pp) fmtInteger(v uint64, isSigned bool, verb rune) {\n\tswitch verb {\n\tcase 'v':\n\t\tif p.fmt.sharpV && !isSigned {\n\t\t\tp.fmt0x64(v, true)\n\t\t} else {\n\t\t\tp.fmt.fmtInteger(v, 10, isSigned, ldigits)\n\t\t}\n\tcase 'd':\n\t\tp.fmt.fmtInteger(v, 10, isSigned, ldigits)\n\tcase 'b':\n\t\tp.fmt.fmtInteger(v, 2, isSigned, ldigits)\n\tcase 'o':\n\t\tp.fmt.fmtInteger(v, 8, isSigned, ldigits)\n\tcase 'x':\n\t\tp.fmt.fmtInteger(v, 16, isSigned, ldigits)\n\tcase 'X':\n\t\tp.fmt.fmtInteger(v, 16, isSigned, udigits)\n\tcase 'c':\n\t\tp.fmt.fmtC(v)\n\tcase 'q':\n\t\tif v <= utf8.MaxRune {\n\t\t\tp.fmt.fmtQc(v)\n\t\t} else {\n\t\t\tp.badVerb(verb)\n\t\t}\n\tcase 'U':\n\t\tp.fmt.fmtUnicode(v)\n\tdefault:\n\t\tp.badVerb(verb)\n\t}\n}\n\n// fmtFloat formats a float. The default precision for each verb\n// is specified as last argument in the call to fmt_float.\nfunc (p *pp) fmtFloat(v float64, size int, verb rune) {\n\tswitch verb {\n\tcase 'v':\n\t\tp.fmt.fmtFloat(v, size, 'g', -1)\n\tcase 'b', 'g', 'G':\n\t\tp.fmt.fmtFloat(v, size, verb, -1)\n\tcase 'f', 'e', 'E':\n\t\tp.fmt.fmtFloat(v, size, verb, 6)\n\tcase 'F':\n\t\tp.fmt.fmtFloat(v, size, 'f', 6)\n\tdefault:\n\t\tp.badVerb(verb)\n\t}\n}\n\n// fmtComplex formats a complex number v with\n// r = real(v) and j = imag(v) as (r+ji) using\n// fmtFloat for r and j formatting.\nfunc (p *pp) fmtComplex(v complex128, size int, verb rune) {\n\t// Make sure any unsupported verbs are found before the\n\t// calls to fmtFloat to not generate an incorrect error string.\n\tswitch verb {\n\tcase 'v', 'b', 'g', 'G', 'f', 'F', 'e', 'E':\n\t\toldPlus := p.fmt.plus\n\t\tp.buf.WriteByte('(')\n\t\tp.fmtFloat(real(v), size/2, verb)\n\t\t// Imaginary part always has a sign.\n\t\tp.fmt.plus = true\n\t\tp.fmtFloat(imag(v), size/2, verb)\n\t\tp.buf.WriteString(\"i)\")\n\t\tp.fmt.plus = oldPlus\n\tdefault:\n\t\tp.badVerb(verb)\n\t}\n}\n\nfunc (p *pp) fmtString(v string, verb rune) {\n\tswitch verb {\n\tcase 'v':\n\t\tif p.fmt.sharpV {\n\t\t\tp.fmt.fmtQ(v)\n\t\t} else {\n\t\t\tp.fmt.fmtS(v)\n\t\t}\n\tcase 's':\n\t\tp.fmt.fmtS(v)\n\tcase 'x':\n\t\tp.fmt.fmtSx(v, ldigits)\n\tcase 'X':\n\t\tp.fmt.fmtSx(v, udigits)\n\tcase 'q':\n\t\tp.fmt.fmtQ(v)\n\tdefault:\n\t\tp.badVerb(verb)\n\t}\n}\n\nfunc (p *pp) fmtBytes(v []byte, verb rune, typeString string) {\n\tswitch verb {\n\tcase 'v', 'd':\n\t\tif p.fmt.sharpV {\n\t\t\tp.buf.WriteString(typeString)\n\t\t\tif v == nil {\n\t\t\t\tp.buf.WriteString(nilParenString)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tp.buf.WriteByte('{')\n\t\t\tfor i, c := range v {\n\t\t\t\tif i > 0 {\n\t\t\t\t\tp.buf.WriteString(commaSpaceString)\n\t\t\t\t}\n\t\t\t\tp.fmt0x64(uint64(c), true)\n\t\t\t}\n\t\t\tp.buf.WriteByte('}')\n\t\t} else {\n\t\t\tp.buf.WriteByte('[')\n\t\t\tfor i, c := range v {\n\t\t\t\tif i > 0 {\n\t\t\t\t\tp.buf.WriteByte(' ')\n\t\t\t\t}\n\t\t\t\tp.fmt.fmtInteger(uint64(c), 10, unsigned, ldigits)\n\t\t\t}\n\t\t\tp.buf.WriteByte(']')\n\t\t}\n\tcase 's':\n\t\tp.fmt.fmtBs(v)\n\tcase 'x':\n\t\tp.fmt.fmtBx(v, ldigits)\n\tcase 'X':\n\t\tp.fmt.fmtBx(v, udigits)\n\tcase 'q':\n\t\tp.fmt.fmtQ(string(v))\n\tdefault:\n\t\tp.printValue(reflect.ValueOf(v), verb, 0)\n\t}\n}\n\nfunc (p *pp) fmtPointer(value reflect.Value, verb rune) {\n\tvar u uintptr\n\tswitch value.Kind() {\n\tcase reflect.Chan, reflect.Func, reflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer:\n\t\tu = value.Pointer()\n\tdefault:\n\t\tp.badVerb(verb)\n\t\treturn\n\t}\n\n\tswitch verb {\n\tcase 'v':\n\t\tif p.fmt.sharpV {\n\t\t\tp.buf.WriteByte('(')\n\t\t\tp.buf.WriteString(value.Type().String())\n\t\t\tp.buf.WriteString(\")(\")\n\t\t\tif u == 0 {\n\t\t\t\tp.buf.WriteString(nilString)\n\t\t\t} else {\n\t\t\t\tp.fmt0x64(uint64(u), true)\n\t\t\t}\n\t\t\tp.buf.WriteByte(')')\n\t\t} else {\n\t\t\tif u == 0 {\n\t\t\t\tp.fmt.padString(nilAngleString)\n\t\t\t} else {\n\t\t\t\tp.fmt0x64(uint64(u), !p.fmt.sharp)\n\t\t\t}\n\t\t}\n\tcase 'p':\n\t\tp.fmt0x64(uint64(u), !p.fmt.sharp)\n\tcase 'b', 'o', 'd', 'x', 'X':\n\t\tp.fmtInteger(uint64(u), unsigned, verb)\n\tdefault:\n\t\tp.badVerb(verb)\n\t}\n}\n\nfunc (p *pp) catchPanic(arg interface{}, verb rune, method string) {\n\tif err := recover(); err != nil {\n\t\t// If it's a nil pointer, just say \"<nil>\". The likeliest causes are a\n\t\t// Stringer that fails to guard against nil or a nil pointer for a\n\t\t// value receiver, and in either case, \"<nil>\" is a nice result.\n\t\tif v := reflect.ValueOf(arg); v.Kind() == reflect.Ptr && v.IsNil() {\n\t\t\tp.buf.WriteString(nilAngleString)\n\t\t\treturn\n\t\t}\n\t\t// Otherwise print a concise panic message. Most of the time the panic\n\t\t// value will print itself nicely.\n\t\tif p.panicking {\n\t\t\t// Nested panics; the recursion in printArg cannot succeed.\n\t\t\tpanic(err)\n\t\t}\n\n\t\toldFlags := p.fmt.fmtFlags\n\t\t// For this output we want default behavior.\n\t\tp.fmt.clearflags()\n\n\t\tp.buf.WriteString(percentBangString)\n\t\tp.buf.WriteRune(verb)\n\t\tp.buf.WriteString(panicString)\n\t\tp.buf.WriteString(method)\n\t\tp.buf.WriteString(\" method: \")\n\t\tp.panicking = true\n\t\tp.printArg(err, 'v')\n\t\tp.panicking = false\n\t\tp.buf.WriteByte(')')\n\n\t\tp.fmt.fmtFlags = oldFlags\n\t}\n}\n\nfunc (p *pp) handleMethods(verb rune) (handled bool) {\n\tif p.erroring {\n\t\treturn\n\t}\n\t// Is it a Formatter?\n\tif formatter, ok := p.arg.(Formatter); ok {\n\t\thandled = true\n\t\tdefer p.catchPanic(p.arg, verb, \"Format\")\n\t\tformatter.Format(p, verb)\n\t\treturn\n\t}\n\n\t// If we're doing Go syntax and the argument knows how to supply it, take care of it now.\n\tif p.fmt.sharpV {\n\t\tif stringer, ok := p.arg.(GoStringer); ok {\n\t\t\thandled = true\n\t\t\tdefer p.catchPanic(p.arg, verb, \"GoString\")\n\t\t\t// Print the result of GoString unadorned.\n\t\t\tp.fmt.fmtS(stringer.GoString())\n\t\t\treturn\n\t\t}\n\t} else {\n\t\t// If a string is acceptable according to the format, see if\n\t\t// the value satisfies one of the string-valued interfaces.\n\t\t// Println etc. set verb to %v, which is \"stringable\".\n\t\tswitch verb {\n\t\tcase 'v', 's', 'x', 'X', 'q':\n\t\t\t// Is it an error or Stringer?\n\t\t\t// The duplication in the bodies is necessary:\n\t\t\t// setting handled and deferring catchPanic\n\t\t\t// must happen before calling the method.\n\t\t\tswitch v := p.arg.(type) {\n\t\t\tcase error:\n\t\t\t\thandled = true\n\t\t\t\tdefer p.catchPanic(p.arg, verb, \"Error\")\n\t\t\t\tp.fmtString(v.Error(), verb)\n\t\t\t\treturn\n\n\t\t\tcase Stringer:\n\t\t\t\thandled = true\n\t\t\t\tdefer p.catchPanic(p.arg, verb, \"String\")\n\t\t\t\tp.fmtString(v.String(), verb)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (p *pp) printArg(arg interface{}, verb rune) {\n\tp.arg = arg\n\tp.value = reflect.Value{}\n\n\tif arg == nil {\n\t\tswitch verb {\n\t\tcase 'T', 'v':\n\t\t\tp.fmt.padString(nilAngleString)\n\t\tdefault:\n\t\t\tp.badVerb(verb)\n\t\t}\n\t\treturn\n\t}\n\n\t// Special processing considerations.\n\t// %T (the value's type) and %p (its address) are special; we always do them first.\n\tswitch verb {\n\tcase 'T':\n\t\tp.fmt.fmtS(reflect.TypeOf(arg).String())\n\t\treturn\n\tcase 'p':\n\t\tp.fmtPointer(reflect.ValueOf(arg), 'p')\n\t\treturn\n\t}\n\n\t// Some types can be done without reflection.\n\tswitch f := arg.(type) {\n\tcase bool:\n\t\tp.fmtBool(f, verb)\n\tcase float32:\n\t\tp.fmtFloat(float64(f), 32, verb)\n\tcase float64:\n\t\tp.fmtFloat(f, 64, verb)\n\tcase complex64:\n\t\tp.fmtComplex(complex128(f), 64, verb)\n\tcase complex128:\n\t\tp.fmtComplex(f, 128, verb)\n\tcase int:\n\t\tp.fmtInteger(uint64(f), signed, verb)\n\tcase int8:\n\t\tp.fmtInteger(uint64(f), signed, verb)\n\tcase int16:\n\t\tp.fmtInteger(uint64(f), signed, verb)\n\tcase int32:\n\t\tp.fmtInteger(uint64(f), signed, verb)\n\tcase int64:\n\t\tp.fmtInteger(uint64(f), signed, verb)\n\tcase uint:\n\t\tp.fmtInteger(uint64(f), unsigned, verb)\n\tcase uint8:\n\t\tp.fmtInteger(uint64(f), unsigned, verb)\n\tcase uint16:\n\t\tp.fmtInteger(uint64(f), unsigned, verb)\n\tcase uint32:\n\t\tp.fmtInteger(uint64(f), unsigned, verb)\n\tcase uint64:\n\t\tp.fmtInteger(f, unsigned, verb)\n\tcase uintptr:\n\t\tp.fmtInteger(uint64(f), unsigned, verb)\n\tcase string:\n\t\tp.fmtString(f, verb)\n\tcase []byte:\n\t\tp.fmtBytes(f, verb, \"[]byte\")\n\tcase reflect.Value:\n\t\t// Handle extractable values with special methods\n\t\t// since printValue does not handle them at depth 0.\n\t\tif f.IsValid() && f.CanInterface() {\n\t\t\tp.arg = f.Interface()\n\t\t\tif p.handleMethods(verb) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tp.printValue(f, verb, 0)\n\tdefault:\n\t\t// If the type is not simple, it might have methods.\n\t\tif !p.handleMethods(verb) {\n\t\t\t// Need to use reflection, since the type had no\n\t\t\t// interface methods that could be used for formatting.\n\t\t\tp.printValue(reflect.ValueOf(f), verb, 0)\n\t\t}\n\t}\n}\n\n// printValue is similar to printArg but starts with a reflect value, not an interface{} value.\n// It does not handle 'p' and 'T' verbs because these should have been already handled by printArg.\nfunc (p *pp) printValue(value reflect.Value, verb rune, depth int) {\n\t// Handle values with special methods if not already handled by printArg (depth == 0).\n\tif depth > 0 && value.IsValid() && value.CanInterface() {\n\t\tp.arg = value.Interface()\n\t\tif p.handleMethods(verb) {\n\t\t\treturn\n\t\t}\n\t}\n\tp.arg = nil\n\tp.value = value\n\n\tswitch f := value; value.Kind() {\n\tcase reflect.Invalid:\n\t\tif depth == 0 {\n\t\t\tp.buf.WriteString(invReflectString)\n\t\t} else {\n\t\t\tswitch verb {\n\t\t\tcase 'v':\n\t\t\t\tp.buf.WriteString(nilAngleString)\n\t\t\tdefault:\n\t\t\t\tp.badVerb(verb)\n\t\t\t}\n\t\t}\n\tcase reflect.Bool:\n\t\tp.fmtBool(f.Bool(), verb)\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tp.fmtInteger(uint64(f.Int()), signed, verb)\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\tp.fmtInteger(f.Uint(), unsigned, verb)\n\tcase reflect.Float32:\n\t\tp.fmtFloat(f.Float(), 32, verb)\n\tcase reflect.Float64:\n\t\tp.fmtFloat(f.Float(), 64, verb)\n\tcase reflect.Complex64:\n\t\tp.fmtComplex(f.Complex(), 64, verb)\n\tcase reflect.Complex128:\n\t\tp.fmtComplex(f.Complex(), 128, verb)\n\tcase reflect.String:\n\t\tp.fmtString(f.String(), verb)\n\tcase reflect.Map:\n\t\tif p.fmt.sharpV {\n\t\t\tp.buf.WriteString(f.Type().String())\n\t\t\tif f.IsNil() {\n\t\t\t\tp.buf.WriteString(nilParenString)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tp.buf.WriteByte('{')\n\t\t} else {\n\t\t\tp.buf.WriteString(mapString)\n\t\t}\n\t\tsorted := fmtsort.Sort(f)\n\t\tfor i, key := range sorted.Key {\n\t\t\tif i > 0 {\n\t\t\t\tif p.fmt.sharpV {\n\t\t\t\t\tp.buf.WriteString(commaSpaceString)\n\t\t\t\t} else {\n\t\t\t\t\tp.buf.WriteByte(' ')\n\t\t\t\t}\n\t\t\t}\n\t\t\tp.printValue(key, verb, depth+1)\n\t\t\tp.buf.WriteByte(':')\n\t\t\tp.printValue(sorted.Value[i], verb, depth+1)\n\t\t}\n\t\tif p.fmt.sharpV {\n\t\t\tp.buf.WriteByte('}')\n\t\t} else {\n\t\t\tp.buf.WriteByte(']')\n\t\t}\n\tcase reflect.Struct:\n\t\tif p.fmt.sharpV {\n\t\t\tp.buf.WriteString(f.Type().String())\n\t\t}\n\t\tp.buf.WriteByte('{')\n\t\tfor i := 0; i < f.NumField(); i++ {\n\t\t\tif i > 0 {\n\t\t\t\tif p.fmt.sharpV {\n\t\t\t\t\tp.buf.WriteString(commaSpaceString)\n\t\t\t\t} else {\n\t\t\t\t\tp.buf.WriteByte(' ')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif p.fmt.plusV || p.fmt.sharpV {\n\t\t\t\tif name := f.Type().Field(i).Name; name != \"\" {\n\t\t\t\t\tp.buf.WriteString(name)\n\t\t\t\t\tp.buf.WriteByte(':')\n\t\t\t\t}\n\t\t\t}\n\t\t\tp.printValue(getField(f, i), verb, depth+1)\n\t\t}\n\t\tp.buf.WriteByte('}')\n\tcase reflect.Interface:\n\t\tvalue := f.Elem()\n\t\tif !value.IsValid() {\n\t\t\tif p.fmt.sharpV {\n\t\t\t\tp.buf.WriteString(f.Type().String())\n\t\t\t\tp.buf.WriteString(nilParenString)\n\t\t\t} else {\n\t\t\t\tp.buf.WriteString(nilAngleString)\n\t\t\t}\n\t\t} else {\n\t\t\tp.printValue(value, verb, depth+1)\n\t\t}\n\tcase reflect.Array, reflect.Slice:\n\t\tswitch verb {\n\t\tcase 's', 'q', 'x', 'X':\n\t\t\t// Handle byte and uint8 slices and arrays special for the above verbs.\n\t\t\tt := f.Type()\n\t\t\tif t.Elem().Kind() == reflect.Uint8 {\n\t\t\t\tvar bytes []byte\n\t\t\t\tif f.Kind() == reflect.Slice {\n\t\t\t\t\tbytes = f.Bytes()\n\t\t\t\t} else if f.CanAddr() {\n\t\t\t\t\tbytes = f.Slice(0, f.Len()).Bytes()\n\t\t\t\t} else {\n\t\t\t\t\t// We have an array, but we cannot Slice() a non-addressable array,\n\t\t\t\t\t// so we build a slice by hand. This is a rare case but it would be nice\n\t\t\t\t\t// if reflection could help a little more.\n\t\t\t\t\tbytes = make([]byte, f.Len())\n\t\t\t\t\tfor i := range bytes {\n\t\t\t\t\t\tbytes[i] = byte(f.Index(i).Uint())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tp.fmtBytes(bytes, verb, t.String())\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tif p.fmt.sharpV {\n\t\t\tp.buf.WriteString(f.Type().String())\n\t\t\tif f.Kind() == reflect.Slice && f.IsNil() {\n\t\t\t\tp.buf.WriteString(nilParenString)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tp.buf.WriteByte('{')\n\t\t\tfor i := 0; i < f.Len(); i++ {\n\t\t\t\tif i > 0 {\n\t\t\t\t\tp.buf.WriteString(commaSpaceString)\n\t\t\t\t}\n\t\t\t\tp.printValue(f.Index(i), verb, depth+1)\n\t\t\t}\n\t\t\tp.buf.WriteByte('}')\n\t\t} else {\n\t\t\tp.buf.WriteByte('[')\n\t\t\tfor i := 0; i < f.Len(); i++ {\n\t\t\t\tif i > 0 {\n\t\t\t\t\tp.buf.WriteByte(' ')\n\t\t\t\t}\n\t\t\t\tp.printValue(f.Index(i), verb, depth+1)\n\t\t\t}\n\t\t\tp.buf.WriteByte(']')\n\t\t}\n\tcase reflect.Ptr:\n\t\t// pointer to array or slice or struct? ok at top level\n\t\t// but not embedded (avoid loops)\n\t\tif depth == 0 && f.Pointer() != 0 {\n\t\t\tswitch a := f.Elem(); a.Kind() {\n\t\t\tcase reflect.Array, reflect.Slice, reflect.Struct, reflect.Map:\n\t\t\t\tp.buf.WriteByte('&')\n\t\t\t\tp.printValue(a, verb, depth+1)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tfallthrough\n\tcase reflect.Chan, reflect.Func, reflect.UnsafePointer:\n\t\tp.fmtPointer(f, verb)\n\tdefault:\n\t\tp.unknownType(f)\n\t}\n}\n\n// intFromArg gets the argNumth element of a. On return, isInt reports whether the argument has integer type.\nfunc intFromArg(a []interface{}, argNum int) (num int, isInt bool, newArgNum int) {\n\tnewArgNum = argNum\n\tif argNum < len(a) {\n\t\tnum, isInt = a[argNum].(int) // Almost always OK.\n\t\tif !isInt {\n\t\t\t// Work harder.\n\t\t\tswitch v := reflect.ValueOf(a[argNum]); v.Kind() {\n\t\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\t\tn := v.Int()\n\t\t\t\tif int64(int(n)) == n {\n\t\t\t\t\tnum = int(n)\n\t\t\t\t\tisInt = true\n\t\t\t\t}\n\t\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\t\t\tn := v.Uint()\n\t\t\t\tif int64(n) >= 0 && uint64(int(n)) == n {\n\t\t\t\t\tnum = int(n)\n\t\t\t\t\tisInt = true\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\t// Already 0, false.\n\t\t\t}\n\t\t}\n\t\tnewArgNum = argNum + 1\n\t\tif tooLarge(num) {\n\t\t\tnum = 0\n\t\t\tisInt = false\n\t\t}\n\t}\n\treturn\n}\n\n// parseArgNumber returns the value of the bracketed number, minus 1\n// (explicit argument numbers are one-indexed but we want zero-indexed).\n// The opening bracket is known to be present at format[0].\n// The returned values are the index, the number of bytes to consume\n// up to the closing paren, if present, and whether the number parsed\n// ok. The bytes to consume will be 1 if no closing paren is present.\nfunc parseArgNumber(format string) (index int, wid int, ok bool) {\n\t// There must be at least 3 bytes: [n].\n\tif len(format) < 3 {\n\t\treturn 0, 1, false\n\t}\n\n\t// Find closing bracket.\n\tfor i := 1; i < len(format); i++ {\n\t\tif format[i] == ']' {\n\t\t\twidth, ok, newi := parsenum(format, 1, i)\n\t\t\tif !ok || newi != i {\n\t\t\t\treturn 0, i + 1, false\n\t\t\t}\n\t\t\treturn width - 1, i + 1, true // arg numbers are one-indexed and skip paren.\n\t\t}\n\t}\n\treturn 0, 1, false\n}\n\n// argNumber returns the next argument to evaluate, which is either the value of the passed-in\n// argNum or the value of the bracketed integer that begins format[i:]. It also returns\n// the new value of i, that is, the index of the next byte of the format to process.\nfunc (p *pp) argNumber(argNum int, format string, i int, numArgs int) (newArgNum, newi int, found bool) {\n\tif len(format) <= i || format[i] != '[' {\n\t\treturn argNum, i, false\n\t}\n\tp.reordered = true\n\tindex, wid, ok := parseArgNumber(format[i:])\n\tif ok && 0 <= index && index < numArgs {\n\t\treturn index, i + wid, true\n\t}\n\tp.goodArgNum = false\n\treturn argNum, i + wid, ok\n}\n\nfunc (p *pp) badArgNum(verb rune) {\n\tp.buf.WriteString(percentBangString)\n\tp.buf.WriteRune(verb)\n\tp.buf.WriteString(badIndexString)\n}\n\nfunc (p *pp) missingArg(verb rune) {\n\tp.buf.WriteString(percentBangString)\n\tp.buf.WriteRune(verb)\n\tp.buf.WriteString(missingString)\n}\n\nfunc (p *pp) doPrintf(format string, a []interface{}) {\n\tend := len(format)\n\targNum := 0         // we process one argument per non-trivial format\n\tafterIndex := false // previous item in format was an index like [3].\n\tp.reordered = false\nformatLoop:\n\tfor i := 0; i < end; {\n\t\tp.goodArgNum = true\n\t\tlasti := i\n\t\tfor i < end && format[i] != '%' {\n\t\t\ti++\n\t\t}\n\t\tif i > lasti {\n\t\t\tp.buf.WriteString(format[lasti:i])\n\t\t}\n\t\tif i >= end {\n\t\t\t// done processing format string\n\t\t\tbreak\n\t\t}\n\n\t\t// Process one verb\n\t\ti++\n\n\t\t// Do we have flags?\n\t\tp.fmt.clearflags()\n\tsimpleFormat:\n\t\tfor ; i < end; i++ {\n\t\t\tc := format[i]\n\t\t\tswitch c {\n\t\t\tcase '#':\n\t\t\t\tp.fmt.sharp = true\n\t\t\tcase '0':\n\t\t\t\tp.fmt.zero = !p.fmt.minus // Only allow zero padding to the left.\n\t\t\tcase '+':\n\t\t\t\tp.fmt.plus = true\n\t\t\tcase '-':\n\t\t\t\tp.fmt.minus = true\n\t\t\t\tp.fmt.zero = false // Do not pad with zeros to the right.\n\t\t\tcase ' ':\n\t\t\t\tp.fmt.space = true\n\t\t\tdefault:\n\t\t\t\t// Fast path for common case of ascii lower case simple verbs\n\t\t\t\t// without precision or width or argument indices.\n\t\t\t\tif 'a' <= c && c <= 'z' && argNum < len(a) {\n\t\t\t\t\tif c == 'v' {\n\t\t\t\t\t\t// Go syntax\n\t\t\t\t\t\tp.fmt.sharpV = p.fmt.sharp\n\t\t\t\t\t\tp.fmt.sharp = false\n\t\t\t\t\t\t// Struct-field syntax\n\t\t\t\t\t\tp.fmt.plusV = p.fmt.plus\n\t\t\t\t\t\tp.fmt.plus = false\n\t\t\t\t\t}\n\t\t\t\t\tp.printArg(a[argNum], rune(c))\n\t\t\t\t\targNum++\n\t\t\t\t\ti++\n\t\t\t\t\tcontinue formatLoop\n\t\t\t\t}\n\t\t\t\t// Format is more complex than simple flags and a verb or is malformed.\n\t\t\t\tbreak simpleFormat\n\t\t\t}\n\t\t}\n\n\t\t// Do we have an explicit argument index?\n\t\targNum, i, afterIndex = p.argNumber(argNum, format, i, len(a))\n\n\t\t// Do we have width?\n\t\tif i < end && format[i] == '*' {\n\t\t\ti++\n\t\t\tp.fmt.wid, p.fmt.widPresent, argNum = intFromArg(a, argNum)\n\n\t\t\tif !p.fmt.widPresent {\n\t\t\t\tp.buf.WriteString(badWidthString)\n\t\t\t}\n\n\t\t\t// We have a negative width, so take its value and ensure\n\t\t\t// that the minus flag is set\n\t\t\tif p.fmt.wid < 0 {\n\t\t\t\tp.fmt.wid = -p.fmt.wid\n\t\t\t\tp.fmt.minus = true\n\t\t\t\tp.fmt.zero = false // Do not pad with zeros to the right.\n\t\t\t}\n\t\t\tafterIndex = false\n\t\t} else {\n\t\t\tp.fmt.wid, p.fmt.widPresent, i = parsenum(format, i, end)\n\t\t\tif afterIndex && p.fmt.widPresent { // \"%[3]2d\"\n\t\t\t\tp.goodArgNum = false\n\t\t\t}\n\t\t}\n\n\t\t// Do we have precision?\n\t\tif i+1 < end && format[i] == '.' {\n\t\t\ti++\n\t\t\tif afterIndex { // \"%[3].2d\"\n\t\t\t\tp.goodArgNum = false\n\t\t\t}\n\t\t\targNum, i, afterIndex = p.argNumber(argNum, format, i, len(a))\n\t\t\tif i < end && format[i] == '*' {\n\t\t\t\ti++\n\t\t\t\tp.fmt.prec, p.fmt.precPresent, argNum = intFromArg(a, argNum)\n\t\t\t\t// Negative precision arguments don't make sense\n\t\t\t\tif p.fmt.prec < 0 {\n\t\t\t\t\tp.fmt.prec = 0\n\t\t\t\t\tp.fmt.precPresent = false\n\t\t\t\t}\n\t\t\t\tif !p.fmt.precPresent {\n\t\t\t\t\tp.buf.WriteString(badPrecString)\n\t\t\t\t}\n\t\t\t\tafterIndex = false\n\t\t\t} else {\n\t\t\t\tp.fmt.prec, p.fmt.precPresent, i = parsenum(format, i, end)\n\t\t\t\tif !p.fmt.precPresent {\n\t\t\t\t\tp.fmt.prec = 0\n\t\t\t\t\tp.fmt.precPresent = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif !afterIndex {\n\t\t\targNum, i, afterIndex = p.argNumber(argNum, format, i, len(a))\n\t\t}\n\n\t\tif i >= end {\n\t\t\tp.buf.WriteString(noVerbString)\n\t\t\tbreak\n\t\t}\n\n\t\tverb, size := rune(format[i]), 1\n\t\tif verb >= utf8.RuneSelf {\n\t\t\tverb, size = utf8.DecodeRuneInString(format[i:])\n\t\t}\n\t\ti += size\n\n\t\tswitch {\n\t\tcase verb == '%': // Percent does not absorb operands and ignores f.wid and f.prec.\n\t\t\tp.buf.WriteByte('%')\n\t\tcase !p.goodArgNum:\n\t\t\tp.badArgNum(verb)\n\t\tcase argNum >= len(a): // No argument left over to print for the current verb.\n\t\t\tp.missingArg(verb)\n\t\tcase verb == 'v':\n\t\t\t// Go syntax\n\t\t\tp.fmt.sharpV = p.fmt.sharp\n\t\t\tp.fmt.sharp = false\n\t\t\t// Struct-field syntax\n\t\t\tp.fmt.plusV = p.fmt.plus\n\t\t\tp.fmt.plus = false\n\t\t\tfallthrough\n\t\tdefault:\n\t\t\tp.printArg(a[argNum], verb)\n\t\t\targNum++\n\t\t}\n\t}\n\n\t// Check for extra arguments unless the call accessed the arguments\n\t// out of order, in which case it's too expensive to detect if they've all\n\t// been used and arguably OK if they're not.\n\tif !p.reordered && argNum < len(a) {\n\t\tp.fmt.clearflags()\n\t\tp.buf.WriteString(extraString)\n\t\tfor i, arg := range a[argNum:] {\n\t\t\tif i > 0 {\n\t\t\t\tp.buf.WriteString(commaSpaceString)\n\t\t\t}\n\t\t\tif arg == nil {\n\t\t\t\tp.buf.WriteString(nilAngleString)\n\t\t\t} else {\n\t\t\t\tp.buf.WriteString(reflect.TypeOf(arg).String())\n\t\t\t\tp.buf.WriteByte('=')\n\t\t\t\tp.printArg(arg, 'v')\n\t\t\t}\n\t\t}\n\t\tp.buf.WriteByte(')')\n\t}\n}\n\nfunc (p *pp) doPrint(a []interface{}) {\n\tprevString := false\n\tfor argNum, arg := range a {\n\t\tisString := arg != nil && reflect.TypeOf(arg).Kind() == reflect.String\n\t\t// Add a space between two non-string arguments.\n\t\tif argNum > 0 && !isString && !prevString {\n\t\t\tp.buf.WriteByte(' ')\n\t\t}\n\t\tp.printArg(arg, 'v')\n\t\tprevString = isString\n\t}\n}\n\n// doPrintln is like doPrint but always adds a space between arguments\n// and a newline after the last argument.\nfunc (p *pp) doPrintln(a []interface{}) {\n\tfor argNum, arg := range a {\n\t\tif argNum > 0 {\n\t\t\tp.buf.WriteByte(' ')\n\t\t}\n\t\tp.printArg(arg, 'v')\n\t}\n\tp.buf.WriteByte('\\n')\n}\n"}}


[Trace - 8:04:38 PM] Sending notification 'textDocument/didClose'.
Params: {"textDocument":{"uri":"file:///c%3A/go/src/fmt/print.go"}}


[Trace - 8:04:38 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///c:/go/src/fmt/format.go","diagnostics":[]}


[Trace - 8:04:38 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///c:/go/src/fmt/print.go","diagnostics":[]}


[Trace - 8:04:38 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///c:/go/src/fmt/scan.go","diagnostics":[]}


[Trace - 8:04:38 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///c:/go/src/fmt/doc.go","diagnostics":[]}


[Trace - 8:04:38 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///c:/go/src/fmt/doc.go","diagnostics":[]}


[Trace - 8:04:38 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///c:/go/src/fmt/format.go","diagnostics":[]}


[Trace - 8:04:38 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///c:/go/src/fmt/print.go","diagnostics":[{"range":{"start":{"line":85,"character":17},"end":{"line":85,"character":17}},"severity":2,"source":"stdmethods","message":"method WriteByte(c byte) should have signature WriteByte(byte) error"}]}


[Trace - 8:04:38 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///c:/go/src/fmt/scan.go","diagnostics":[]}


[Trace - 8:04:38 PM] Sending request 'textDocument/codeAction - (18)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/cli/version.go"},"range":{"start":{"line":11,"character":11},"end":{"line":11,"character":11}},"context":{"diagnostics":[]}}


[Trace - 8:04:38 PM] Sending request 'textDocument/completion - (19)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/cli/version.go"},"position":{"line":11,"character":11},"context":{"triggerKind":1}}


[Trace - 8:04:39 PM] Received response 'textDocument/codeAction - (18)' in 897ms.
Params: {}


[Trace - 8:04:39 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///d:/Go/src/github.com/nienbo/balya/cmd/balya/cli/version.go:11:11: this is a definition, of func ShowVersion()"}


[Trace - 8:04:39 PM] Received response 'textDocument/completion - (19)' in 897ms.
Params: {"isIncomplete":false,"items":[]}


[Info  - 20:04:39] no completions found for file:///d:/Go/src/github.com/nienbo/balya/cmd/balya/cli/version.go:11:11: this is a definition, of func ShowVersion()
[Trace - 8:04:40 PM] Sending request 'textDocument/hover - (20)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/cli/version.go"},"position":{"line":12,"character":8}}


[Trace - 8:04:40 PM] Received response 'textDocument/hover - (20)' in 2ms.
Params: {"contents":{"kind":"markdown","value":"Printf formats according to a format specifier and writes to standard output.\n```go\nfunc fmt.Printf(format string, a ...interface{}) (n int, err error)\n```"},"range":{"start":{"line":12,"character":5},"end":{"line":12,"character":11}}}


[Trace - 8:04:40 PM] Sending request 'textDocument/hover - (21)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/cli/version.go"},"position":{"line":9,"character":7}}


[Trace - 8:04:40 PM] Received response 'textDocument/hover - (21)' in 8ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar DeployedBy string\n```"},"range":{"start":{"line":9,"character":4},"end":{"line":9,"character":14}}}


[Trace - 8:04:41 PM] Sending request 'textDocument/documentLink - (22)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:41 PM] Sending request 'textDocument/codeAction - (23)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}


[Trace - 8:04:41 PM] Sending request 'textDocument/documentHighlight - (24)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"position":{"line":33,"character":17}}


[Trace - 8:04:41 PM] Received response 'textDocument/documentLink - (22)' in 42ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":10}},"target":"https://godoc.org/chilkat"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":40}},"target":"https://godoc.org/github.com/common-nighthawk/go-figure"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":40}},"target":"https://godoc.org/github.com/nienbo/balya/cmd/balya/cli"}]


[Trace - 8:04:41 PM] Received response 'textDocument/codeAction - (23)' in 43ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///d:/Go/src/github.com/nienbo/balya/cmd/balya/main.go":[{"range":{"start":{"line":5,"character":0},"end":{"line":5,"character":0}},"newText":"\n"}]}}}]


[Trace - 8:04:41 PM] Received response 'textDocument/documentHighlight - (24)' in 43ms.
Params: []


[Trace - 8:04:41 PM] Sending request 'textDocument/documentSymbol - (25)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:41 PM] Sending request 'textDocument/codeAction - (26)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"range":{"start":{"line":33,"character":17},"end":{"line":33,"character":17}},"context":{"diagnostics":[]}}


[Trace - 8:04:41 PM] Received response 'textDocument/documentSymbol - (25)' in 2ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:41 PM] Received response 'textDocument/codeAction - (26)' in 2ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///d:/Go/src/github.com/nienbo/balya/cmd/balya/main.go":[{"range":{"start":{"line":5,"character":0},"end":{"line":5,"character":0}},"newText":"\n"}]}}}]


[Trace - 8:04:41 PM] Sending request 'textDocument/hover - (27)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"position":{"line":29,"character":8}}


[Trace - 8:04:41 PM] Received response 'textDocument/hover - (27)' in 8ms.
Params: {"contents":{"kind":"markdown","value":"```go\nfunc cli.PrepareGreeting()\n```"},"range":{"start":{"line":29,"character":5},"end":{"line":29,"character":20}}}


[Trace - 8:04:43 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":2},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:04:43 PM] Sending request 'textDocument/hover - (28)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"position":{"line":28,"character":22}}


[Trace - 8:04:43 PM] Received response 'textDocument/hover - (28)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\nfunc cli.PrepareGreeting()\n```"},"range":{"start":{"line":29,"character":5},"end":{"line":29,"character":20}}}


[Trace - 8:04:43 PM] Sending request 'textDocument/documentSymbol - (29)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:44 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:04:44 PM] Received response 'textDocument/documentSymbol - (29)' in 4ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:44 PM] Sending request 'textDocument/documentSymbol - (30)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:44 PM] Sending request 'textDocument/codeAction - (31)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"range":{"start":{"line":0,"character":0},"end":{"line":39,"character":0}},"context":{"diagnostics":[]}}


[Trace - 8:04:44 PM] Received response 'textDocument/documentSymbol - (30)' in 12ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:44 PM] Received response 'textDocument/codeAction - (31)' in 11ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///d:/Go/src/github.com/nienbo/balya/cmd/balya/main.go":[{"range":{"start":{"line":5,"character":0},"end":{"line":5,"character":0}},"newText":"\n"}]}}}]


[Trace - 8:04:44 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":3},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:04:44 PM] Sending request 'textDocument/formatting - (32)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"options":{"tabSize":2,"insertSpaces":false}}


[Trace - 8:04:44 PM] Received response 'textDocument/formatting - (32)' in 2ms.
Params: [{"range":{"start":{"line":5,"character":0},"end":{"line":6,"character":0}},"newText":""},{"range":{"start":{"line":29,"character":0},"end":{"line":29,"character":0}},"newText":"\tcli.ParseFlags()\n"}]


[Trace - 8:04:44 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:04:44 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":4},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:04:44 PM] Sending request 'textDocument/documentSymbol - (33)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:44 PM] Sending request 'textDocument/documentLink - (34)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:44 PM] Received response 'textDocument/documentSymbol - (33)' in 2ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:44 PM] Received response 'textDocument/documentLink - (34)' in 3ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":10}},"target":"https://godoc.org/chilkat"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":40}},"target":"https://godoc.org/github.com/common-nighthawk/go-figure"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":40}},"target":"https://godoc.org/github.com/nienbo/balya/cmd/balya/cli"}]


[Trace - 8:04:44 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:04:44 PM] Sending request 'textDocument/documentSymbol - (35)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:44 PM] Received response 'textDocument/documentSymbol - (35)' in 6ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:45 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":5},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:04:45 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:04:45 PM] Sending request 'textDocument/documentSymbol - (36)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:45 PM] Received response 'textDocument/documentSymbol - (36)' in 1ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:45 PM] Sending request 'textDocument/codeAction - (37)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"range":{"start":{"line":0,"character":0},"end":{"line":40,"character":0}},"context":{"diagnostics":[]}}


[Trace - 8:04:45 PM] Received response 'textDocument/codeAction - (37)' in 1ms.
Params: {}


[Trace - 8:04:45 PM] Sending request 'textDocument/formatting - (38)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"options":{"tabSize":2,"insertSpaces":false}}


[Trace - 8:04:45 PM] Received response 'textDocument/formatting - (38)' in 1ms.
Params: [{"range":{"start":{"line":5,"character":0},"end":{"line":6,"character":0}},"newText":""},{"range":{"start":{"line":29,"character":0},"end":{"line":29,"character":0}},"newText":"\tcli.ParseFlags()\n"}]


[Trace - 8:04:45 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":6},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:04:45 PM] Sending request 'textDocument/documentSymbol - (39)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:45 PM] Received response 'textDocument/documentSymbol - (39)' in 2ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:45 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:04:45 PM] Sending request 'textDocument/documentSymbol - (40)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:45 PM] Received response 'textDocument/documentSymbol - (40)' in 2ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:46 PM] Sending request 'textDocument/documentLink - (41)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:46 PM] Received response 'textDocument/documentLink - (41)' in 16ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":10}},"target":"https://godoc.org/chilkat"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":40}},"target":"https://godoc.org/github.com/common-nighthawk/go-figure"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":40}},"target":"https://godoc.org/github.com/nienbo/balya/cmd/balya/cli"}]


[Trace - 8:04:46 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":7},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:04:46 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:04:46 PM] Sending request 'textDocument/codeAction - (42)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"range":{"start":{"line":0,"character":0},"end":{"line":40,"character":0}},"context":{"diagnostics":[]}}


[Trace - 8:04:46 PM] Sending request 'textDocument/documentSymbol - (43)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:46 PM] Received response 'textDocument/codeAction - (42)' in 1ms.
Params: {}


[Trace - 8:04:46 PM] Received response 'textDocument/documentSymbol - (43)' in 3ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:46 PM] Sending request 'textDocument/formatting - (44)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"options":{"tabSize":2,"insertSpaces":false}}


[Trace - 8:04:46 PM] Received response 'textDocument/formatting - (44)' in 1ms.
Params: [{"range":{"start":{"line":5,"character":0},"end":{"line":6,"character":0}},"newText":""},{"range":{"start":{"line":29,"character":0},"end":{"line":29,"character":0}},"newText":"\tcli.ParseFlags()\n"}]


[Trace - 8:04:46 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":8},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:04:46 PM] Sending request 'textDocument/documentSymbol - (45)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:46 PM] Received response 'textDocument/documentSymbol - (45)' in 1ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:46 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:04:46 PM] Sending request 'textDocument/documentSymbol - (46)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:46 PM] Received response 'textDocument/documentSymbol - (46)' in 3ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:47 PM] Sending request 'textDocument/documentSymbol - (47)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:47 PM] Received response 'textDocument/documentSymbol - (47)' in 1ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:47 PM] Sending request 'textDocument/documentLink - (48)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:47 PM] Received response 'textDocument/documentLink - (48)' in 1ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":10}},"target":"https://godoc.org/chilkat"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":40}},"target":"https://godoc.org/github.com/common-nighthawk/go-figure"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":40}},"target":"https://godoc.org/github.com/nienbo/balya/cmd/balya/cli"}]


[Trace - 8:04:47 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":9},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:04:47 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:04:47 PM] Sending request 'textDocument/documentSymbol - (49)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:47 PM] Received response 'textDocument/documentSymbol - (49)' in 1ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:47 PM] Sending request 'textDocument/codeAction - (50)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"range":{"start":{"line":0,"character":0},"end":{"line":40,"character":0}},"context":{"diagnostics":[]}}


[Trace - 8:04:47 PM] Received response 'textDocument/codeAction - (50)' in 1ms.
Params: {}


[Trace - 8:04:47 PM] Sending request 'textDocument/formatting - (51)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"options":{"tabSize":2,"insertSpaces":false}}


[Trace - 8:04:47 PM] Received response 'textDocument/formatting - (51)' in 1ms.
Params: [{"range":{"start":{"line":5,"character":0},"end":{"line":6,"character":0}},"newText":""},{"range":{"start":{"line":29,"character":0},"end":{"line":29,"character":0}},"newText":"\tcli.ParseFlags()\n"}]


[Trace - 8:04:48 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":10},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:04:48 PM] Sending request 'textDocument/documentSymbol - (52)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:48 PM] Received response 'textDocument/documentSymbol - (52)' in 1ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:48 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:04:48 PM] Sending request 'textDocument/documentSymbol - (53)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:48 PM] Received response 'textDocument/documentSymbol - (53)' in 1ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:48 PM] Sending request 'textDocument/documentLink - (54)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:48 PM] Sending request 'textDocument/documentSymbol - (55)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:48 PM] Received response 'textDocument/documentLink - (54)' in 1ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":10}},"target":"https://godoc.org/chilkat"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":40}},"target":"https://godoc.org/github.com/common-nighthawk/go-figure"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":40}},"target":"https://godoc.org/github.com/nienbo/balya/cmd/balya/cli"}]


[Trace - 8:04:48 PM] Received response 'textDocument/documentSymbol - (55)' in 0ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:49 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":11},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:04:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:04:49 PM] Sending request 'textDocument/documentSymbol - (56)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:49 PM] Received response 'textDocument/documentSymbol - (56)' in 1ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:49 PM] Sending request 'textDocument/documentSymbol - (57)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:49 PM] Received response 'textDocument/documentSymbol - (57)' in 1ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:49 PM] Sending request 'textDocument/codeAction - (58)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"range":{"start":{"line":0,"character":0},"end":{"line":40,"character":0}},"context":{"diagnostics":[]}}


[Trace - 8:04:49 PM] Received response 'textDocument/codeAction - (58)' in 2ms.
Params: {}


[Trace - 8:04:49 PM] Sending request 'textDocument/formatting - (59)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"options":{"tabSize":2,"insertSpaces":false}}


[Trace - 8:04:49 PM] Received response 'textDocument/formatting - (59)' in 2ms.
Params: [{"range":{"start":{"line":5,"character":0},"end":{"line":6,"character":0}},"newText":""},{"range":{"start":{"line":29,"character":0},"end":{"line":29,"character":0}},"newText":"\tcli.ParseFlags()\n"}]


[Trace - 8:04:50 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":12},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:04:50 PM] Sending request 'textDocument/documentSymbol - (60)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:50 PM] Sending request 'textDocument/definition - (61)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"position":{"line":31,"character":23}}


[Trace - 8:04:50 PM] Sending request 'textDocument/documentLink - (62)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:50 PM] Sending request 'textDocument/documentSymbol - (63)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:50 PM] Received response 'textDocument/documentSymbol - (60)' in 2ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Error - 8:04:50 PM] send textDocument/definition#61 no identifier found


[Error - 20:04:50] Request textDocument/definition failed.
  Message: no identifier found
  Code: 0 
[Trace - 8:04:50 PM] Received response 'textDocument/documentLink - (62)' in 5ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":10}},"target":"https://godoc.org/chilkat"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":40}},"target":"https://godoc.org/github.com/common-nighthawk/go-figure"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":40}},"target":"https://godoc.org/github.com/nienbo/balya/cmd/balya/cli"}]


[Trace - 8:04:50 PM] Received response 'textDocument/documentSymbol - (63)' in 5ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:50 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:04:50 PM] Sending request 'textDocument/documentSymbol - (64)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:50 PM] Received response 'textDocument/documentSymbol - (64)' in 1ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:50 PM] Sending request 'textDocument/definition - (65)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"position":{"line":33,"character":9}}


[Trace - 8:04:50 PM] Received response 'textDocument/definition - (65)' in 1ms.
Params: [{"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/version.go","range":{"start":{"line":11,"character":5},"end":{"line":11,"character":16}}}]


[Trace - 8:04:50 PM] Sending request 'textDocument/definition - (66)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"position":{"line":31,"character":10}}


[Error - 8:04:50 PM] send textDocument/definition#66 no identifier found


[Error - 20:04:50] Request textDocument/definition failed.
  Message: no identifier found
  Code: 0 
[Trace - 8:04:51 PM] Sending request 'textDocument/hover - (67)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"position":{"line":31,"character":9}}


[Error - 8:04:51 PM] send textDocument/hover#67 no identifier found


[Error - 20:04:51] Request textDocument/hover failed.
  Message: no identifier found
  Code: 0 
[Trace - 8:04:51 PM] Sending request 'textDocument/codeAction - (68)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"range":{"start":{"line":0,"character":0},"end":{"line":40,"character":0}},"context":{"diagnostics":[]}}


[Trace - 8:04:51 PM] Received response 'textDocument/codeAction - (68)' in 2ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///d:/Go/src/github.com/nienbo/balya/cmd/balya/main.go":[{"range":{"start":{"line":5,"character":0},"end":{"line":5,"character":0}},"newText":"\n"}]}}}]


[Trace - 8:04:51 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":13},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:04:51 PM] Sending request 'textDocument/formatting - (69)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"options":{"tabSize":2,"insertSpaces":false}}


[Trace - 8:04:51 PM] Received response 'textDocument/formatting - (69)' in 1ms.
Params: [{"range":{"start":{"line":5,"character":0},"end":{"line":6,"character":0}},"newText":""}]


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:04:51 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":14},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:04:51 PM] Sending request 'textDocument/definition - (70)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"position":{"line":29,"character":12}}


[Trace - 8:04:51 PM] Received response 'textDocument/definition - (70)' in 1ms.
Params: [{"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/greeting.go","range":{"start":{"line":9,"character":5},"end":{"line":9,"character":20}}}]


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:04:51 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/cli/greeting.go","languageId":"go","version":1,"text":"package cli\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n)\n\nvar greeting string\n\nfunc PrepareGreeting() {\n\tgreeting = fmt.Sprintf(`Version: %s, GitCommit: %s, BuildDate: %s, DeployedBy: %s `, VersionName, GitCommit, BuildDate, DeployedBy)\n}\n\nfunc DisplayGreeting(w http.ResponseWriter, r *http.Request) {\n\tw.Write([]byte(greeting))\n}\n"}}


[Trace - 8:04:51 PM] Sending notification 'textDocument/didClose'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/cli/greeting.go"}}


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/composer.go","diagnostics":[]}


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/flags.go","diagnostics":[]}


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/greeting.go","diagnostics":[]}


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/hooks.go","diagnostics":[]}


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/listener.go","diagnostics":[]}


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/log.go","diagnostics":[]}


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/metrics.go","diagnostics":[]}


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/serve.go","diagnostics":[]}


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/version.go","diagnostics":[]}


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/composer.go","diagnostics":[]}


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/flags.go","diagnostics":[]}


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/hooks.go","diagnostics":[]}


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/listener.go","diagnostics":[]}


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/greeting.go","diagnostics":[]}


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/log.go","diagnostics":[]}


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/metrics.go","diagnostics":[]}


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/serve.go","diagnostics":[]}


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/version.go","diagnostics":[]}


[Trace - 8:04:51 PM] Sending request 'textDocument/definition - (71)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"position":{"line":28,"character":12}}


[Trace - 8:04:51 PM] Sending request 'textDocument/hover - (72)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"position":{"line":28,"character":12}}


[Trace - 8:04:51 PM] Sending request 'textDocument/documentSymbol - (73)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:51 PM] Sending notification '$/cancelRequest'.
Params: {"id":72}


[Trace - 8:04:51 PM] Received response 'textDocument/definition - (71)' in 3ms.
Params: [{"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/cli/flags.go","range":{"start":{"line":32,"character":5},"end":{"line":32,"character":15}}}]


[Trace - 8:04:51 PM] Received response 'textDocument/hover - (72)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\nfunc cli.ParseFlags()\n```"},"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}}}


[Trace - 8:04:51 PM] Received response 'textDocument/documentSymbol - (73)' in 2ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:51 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":15},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:04:51 PM] Sending request 'textDocument/documentSymbol - (74)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:51 PM] Received response 'textDocument/documentSymbol - (74)' in 3ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:04:51 PM] Sending request 'textDocument/documentSymbol - (75)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:51 PM] Received response 'textDocument/documentSymbol - (75)' in 2ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:51 PM] Sending request 'textDocument/documentSymbol - (76)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:51 PM] Received response 'textDocument/documentSymbol - (76)' in 1ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:52 PM] Sending request 'textDocument/definition - (77)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"position":{"line":29,"character":13}}


[Error - 8:04:52 PM] send textDocument/definition#77 FromUTF16Column: chr goes beyond the line


[Error - 20:04:52] Request textDocument/definition failed.
  Message: FromUTF16Column: chr goes beyond the line
  Code: 0 
[Trace - 8:04:52 PM] Sending request 'textDocument/documentLink - (78)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:52 PM] Received response 'textDocument/documentLink - (78)' in 1ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":10}},"target":"https://godoc.org/chilkat"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":40}},"target":"https://godoc.org/github.com/common-nighthawk/go-figure"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":40}},"target":"https://godoc.org/github.com/nienbo/balya/cmd/balya/cli"}]


[Trace - 8:04:52 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":16},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:04:52 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:04:52 PM] Sending request 'textDocument/documentSymbol - (79)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:52 PM] Received response 'textDocument/documentSymbol - (79)' in 3ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:52 PM] Sending request 'textDocument/documentSymbol - (80)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:52 PM] Received response 'textDocument/documentSymbol - (80)' in 1ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:52 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":17},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:04:52 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:04:52 PM] Sending request 'textDocument/documentSymbol - (81)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:53 PM] Received response 'textDocument/documentSymbol - (81)' in 57ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:53 PM] Sending request 'textDocument/documentSymbol - (82)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:53 PM] Received response 'textDocument/documentSymbol - (82)' in 2ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:53 PM] Sending request 'textDocument/documentLink - (83)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:53 PM] Received response 'textDocument/documentLink - (83)' in 4ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":10}},"target":"https://godoc.org/chilkat"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":40}},"target":"https://godoc.org/github.com/common-nighthawk/go-figure"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":40}},"target":"https://godoc.org/github.com/nienbo/balya/cmd/balya/cli"}]


[Trace - 8:04:53 PM] Sending request 'textDocument/hover - (84)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"position":{"line":29,"character":12}}


[Error - 8:04:53 PM] send textDocument/hover#84 FromUTF16Column: chr goes beyond the line


[Error - 20:04:53] Request textDocument/hover failed.
  Message: FromUTF16Column: chr goes beyond the line
  Code: 0 
[Trace - 8:04:53 PM] Sending request 'textDocument/codeAction - (85)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"range":{"start":{"line":0,"character":0},"end":{"line":40,"character":0}},"context":{"diagnostics":[]}}


[Trace - 8:04:53 PM] Received response 'textDocument/codeAction - (85)' in 3ms.
Params: {}


[Trace - 8:04:53 PM] Sending request 'textDocument/formatting - (86)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"options":{"tabSize":2,"insertSpaces":false}}


[Trace - 8:04:53 PM] Received response 'textDocument/formatting - (86)' in 12ms.
Params: [{"range":{"start":{"line":5,"character":0},"end":{"line":6,"character":0}},"newText":""},{"range":{"start":{"line":29,"character":0},"end":{"line":29,"character":0}},"newText":"\tcli.ParseFlags()\n"}]


[Trace - 8:04:54 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":18},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:04:54 PM] Sending request 'textDocument/codeAction - (87)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"range":{"start":{"line":28,"character":12},"end":{"line":28,"character":12}},"context":{"diagnostics":[]}}


[Trace - 8:04:54 PM] Sending request 'textDocument/documentSymbol - (88)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:54 PM] Received response 'textDocument/codeAction - (87)' in 1ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///d:/Go/src/github.com/nienbo/balya/cmd/balya/main.go":[{"range":{"start":{"line":5,"character":0},"end":{"line":5,"character":0}},"newText":"\n"}]}}}]


[Trace - 8:04:54 PM] Received response 'textDocument/documentSymbol - (88)' in 2ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:54 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:04:54 PM] Sending request 'textDocument/documentSymbol - (89)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:54 PM] Received response 'textDocument/documentSymbol - (89)' in 6ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:54 PM] Sending request 'textDocument/documentSymbol - (90)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:54 PM] Received response 'textDocument/documentSymbol - (90)' in 0ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:04:54 PM] Sending request 'textDocument/documentLink - (91)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:04:54 PM] Received response 'textDocument/documentLink - (91)' in 1ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":10}},"target":"https://godoc.org/chilkat"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":40}},"target":"https://godoc.org/github.com/common-nighthawk/go-figure"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":40}},"target":"https://godoc.org/github.com/nienbo/balya/cmd/balya/cli"}]

And this is autocomplete record:

[Trace - 8:06:56 PM] Sending request 'textDocument/documentLink - (127)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:06:56 PM] Received response 'textDocument/documentLink - (127)' in 1ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":10}},"target":"https://godoc.org/chilkat"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":40}},"target":"https://godoc.org/github.com/common-nighthawk/go-figure"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":40}},"target":"https://godoc.org/github.com/nienbo/balya/cmd/balya/cli"}]


[Trace - 8:06:57 PM] Sending request 'textDocument/hover - (128)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"position":{"line":29,"character":6}}


[Trace - 8:06:57 PM] Received response 'textDocument/hover - (128)' in 0ms.
Params: {"contents":{"kind":"markdown","value":"```go\nfunc cli.PrepareGreeting()\n```"},"range":{"start":{"line":29,"character":5},"end":{"line":29,"character":20}}}


[Trace - 8:06:58 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":34},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\t\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:06:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:06:58 PM] Sending request 'textDocument/documentSymbol - (129)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:06:58 PM] Received response 'textDocument/documentSymbol - (129)' in 0ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:06:58 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":35},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tc\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:06:58 PM] Sending request 'textDocument/completion - (130)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"position":{"line":28,"character":2},"context":{"triggerKind":1}}


[Trace - 8:06:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:06:58 PM] Received response 'textDocument/completion - (130)' in 1ms.
Params: {"isIncomplete":false,"items":[{"label":"chilkat","kind":9,"detail":"\"chilkat\"","sortText":"00004","filterText":"chilkat","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":1},"end":{"line":28,"character":4}},"newText":"chilkat"}},{"label":"cli","kind":9,"detail":"\"github.com/nienbo/balya/cmd/balya/cli\"","sortText":"00005","filterText":"cli","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":1},"end":{"line":28,"character":4}},"newText":"cli"}},{"label":"cap(v Type)","kind":3,"detail":"int","sortText":"00012","filterText":"cap","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":1},"end":{"line":28,"character":4}},"newText":"cap"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"close(c chan\u003c- Type)","kind":3,"sortText":"00013","filterText":"close","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":1},"end":{"line":28,"character":4}},"newText":"close"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"complex(r float64, i float64)","kind":3,"detail":"complex128","sortText":"00014","filterText":"complex","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":1},"end":{"line":28,"character":4}},"newText":"complex"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"complex128","kind":25,"sortText":"00015","filterText":"complex128","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":1},"end":{"line":28,"character":4}},"newText":"complex128"}},{"label":"complex64","kind":25,"sortText":"00016","filterText":"complex64","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":1},"end":{"line":28,"character":4}},"newText":"complex64"}},{"label":"copy(dst []Type, src []Type)","kind":3,"detail":"int","sortText":"00017","filterText":"copy","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":1},"end":{"line":28,"character":4}},"newText":"copy"},"command":{"title":"","command":"editor.action.triggerParameterHints"}}]}


[Trace - 8:06:59 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":38},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:06:59 PM] Sending request 'textDocument/completion - (131)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"position":{"line":28,"character":5},"context":{"triggerKind":2,"triggerCharacter":"."}}


[Trace - 8:06:59 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:06:59 PM] Received response 'textDocument/completion - (131)' in 2ms.
Params: {"isIncomplete":false,"items":[{"label":"BuildDate","kind":6,"detail":"string","preselect":true,"sortText":"00000","filterText":"BuildDate","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"BuildDate"}},{"label":"Composer","kind":6,"detail":"*balya.StoreComposer","sortText":"00001","filterText":"Composer","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"Composer"}},{"label":"Conn","kind":22,"detail":"struct{...}","sortText":"00002","filterText":"Conn","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"Conn"}},{"label":"CreateComposer()","kind":3,"sortText":"00003","filterText":"CreateComposer","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"CreateComposer"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"DeployedBy","kind":6,"detail":"string","sortText":"00004","filterText":"DeployedBy","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"DeployedBy"}},{"label":"DisplayGreeting(w http.ResponseWriter, r *http.Request)","kind":3,"sortText":"00005","filterText":"DisplayGreeting","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"DisplayGreeting"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"Flags","kind":6,"detail":"struct{...}","sortText":"00006","filterText":"Flags","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"Flags"}},{"label":"GitCommit","kind":6,"detail":"string","sortText":"00007","filterText":"GitCommit","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"GitCommit"}},{"label":"HookPostCreate","kind":21,"detail":"cli.HookType","sortText":"00008","filterText":"HookPostCreate","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"HookPostCreate"}},{"label":"HookPostFinish","kind":21,"detail":"cli.HookType","sortText":"00009","filterText":"HookPostFinish","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"HookPostFinish"}},{"label":"HookPostReceive","kind":21,"detail":"cli.HookType","sortText":"00010","filterText":"HookPostReceive","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"HookPostReceive"}},{"label":"HookPostTerminate","kind":21,"detail":"cli.HookType","sortText":"00011","filterText":"HookPostTerminate","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"HookPostTerminate"}},{"label":"HookPreCreate","kind":21,"detail":"cli.HookType","sortText":"00012","filterText":"HookPreCreate","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"HookPreCreate"}},{"label":"HookType","kind":25,"detail":"string","sortText":"00013","filterText":"HookType","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"HookType"}},{"label":"Listener","kind":22,"detail":"struct{...}","sortText":"00014","filterText":"Listener","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"Listener"}},{"label":"MetricsHookErrorsTotal","kind":6,"detail":"*prometheus.CounterVec","sortText":"00015","filterText":"MetricsHookErrorsTotal","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"MetricsHookErrorsTotal"}},{"label":"MetricsOpenConnections","kind":6,"detail":"prometheus.Gauge","sortText":"00016","filterText":"MetricsOpenConnections","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"MetricsOpenConnections"}},{"label":"NewListener(addr string, readTimeout time.Duration, writeTimeout time.Duration)","kind":3,"detail":"(net.Listener, error)","sortText":"00017","filterText":"NewListener","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"NewListener"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"ParseFlags()","kind":3,"sortText":"00018","filterText":"ParseFlags","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"ParseFlags"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"PrepareGreeting()","kind":3,"sortText":"00019","filterText":"PrepareGreeting","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"PrepareGreeting"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"Serve()","kind":3,"sortText":"00020","filterText":"Serve","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"Serve"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"SetupHookMetrics()","kind":3,"sortText":"00021","filterText":"SetupHookMetrics","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"SetupHookMetrics"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"SetupMetrics(handler *balya.Handler)","kind":3,"sortText":"00022","filterText":"SetupMetrics","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"SetupMetrics"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"SetupPostHooks(handler *balya.Handler)","kind":3,"sortText":"00023","filterText":"SetupPostHooks","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"SetupPostHooks"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"SetupPreHooks(composer *balya.StoreComposer)","kind":3,"sortText":"00024","filterText":"SetupPreHooks","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"SetupPreHooks"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"ShowVersion()","kind":3,"sortText":"00025","filterText":"ShowVersion","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"ShowVersion"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"VersionName","kind":6,"detail":"string","sortText":"00026","filterText":"VersionName","insertTextFormat":2,"textEdit":{"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":15}},"newText":"VersionName"}}]}


[Trace - 8:06:59 PM] Sending request 'textDocument/documentLink - (132)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:06:59 PM] Received response 'textDocument/documentLink - (132)' in 0ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":10}},"target":"https://godoc.org/chilkat"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":40}},"target":"https://godoc.org/github.com/common-nighthawk/go-figure"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":40}},"target":"https://godoc.org/github.com/nienbo/balya/cmd/balya/cli"}]


[Trace - 8:06:59 PM] Sending request 'textDocument/codeAction - (133)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"range":{"start":{"line":28,"character":5},"end":{"line":28,"character":5}},"context":{"diagnostics":[]}}


[Trace - 8:06:59 PM] Received response 'textDocument/codeAction - (133)' in 1ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///d:/Go/src/github.com/nienbo/balya/cmd/balya/main.go":[{"range":{"start":{"line":5,"character":0},"end":{"line":5,"character":0}},"newText":"\n"},{"range":{"start":{"line":29,"character":0},"end":{"line":30,"character":0}},"newText":""},{"range":{"start":{"line":30,"character":0},"end":{"line":30,"character":0}},"newText":"\t\tcli.ParseFlags()\n"}]}}}]


[Trace - 8:06:59 PM] Sending request 'textDocument/documentSymbol - (134)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:06:59 PM] Received response 'textDocument/documentSymbol - (134)' in 0ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:06:59 PM] Sending request 'textDocument/documentSymbol - (135)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:06:59 PM] Received response 'textDocument/documentSymbol - (135)' in 0ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:07:01 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":42},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\t\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:07:01 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:07:01 PM] Sending request 'textDocument/documentSymbol - (136)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:07:01 PM] Received response 'textDocument/documentSymbol - (136)' in 0ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:07:01 PM] Sending request 'textDocument/documentSymbol - (137)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:07:01 PM] Received response 'textDocument/documentSymbol - (137)' in 1ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:07:01 PM] Sending request 'textDocument/documentLink - (138)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:07:01 PM] Received response 'textDocument/documentLink - (138)' in 0ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":10}},"target":"https://godoc.org/chilkat"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":40}},"target":"https://godoc.org/github.com/common-nighthawk/go-figure"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":40}},"target":"https://godoc.org/github.com/nienbo/balya/cmd/balya/cli"}]


[Trace - 8:07:02 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":43},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\t\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\t\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:07:02 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:07:02 PM] Sending request 'textDocument/documentSymbol - (139)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:07:02 PM] Received response 'textDocument/documentSymbol - (139)' in 0ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:07:02 PM] Sending request 'textDocument/documentSymbol - (140)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:07:02 PM] Received response 'textDocument/documentSymbol - (140)' in 1ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:07:03 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":44},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\t\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\tc\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:07:03 PM] Sending request 'textDocument/completion - (141)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"position":{"line":31,"character":2},"context":{"triggerKind":1}}


[Trace - 8:07:03 PM] Received response 'textDocument/completion - (141)' in 1ms.
Params: {"isIncomplete":false,"items":[]}


[Trace - 8:07:03 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:07:03 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":45},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\t\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\tcl\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:07:03 PM] Sending request 'textDocument/documentLink - (142)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:07:03 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:07:03 PM] Received response 'textDocument/documentLink - (142)' in 1ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":10}},"target":"https://godoc.org/chilkat"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":40}},"target":"https://godoc.org/github.com/common-nighthawk/go-figure"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":40}},"target":"https://godoc.org/github.com/nienbo/balya/cmd/balya/cli"}]


[Trace - 8:07:03 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":46},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\t\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\tcli\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:07:03 PM] Sending request 'textDocument/completion - (143)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"position":{"line":31,"character":4},"context":{"triggerKind":1}}


[Trace - 8:07:03 PM] Received response 'textDocument/completion - (143)' in 0ms.
Params: {"isIncomplete":false,"items":[]}


[Trace - 8:07:03 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:07:03 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":47},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\t\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\tcli.\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:07:03 PM] Sending request 'textDocument/completion - (144)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"position":{"line":31,"character":5},"context":{"triggerKind":2,"triggerCharacter":"."}}


[Trace - 8:07:03 PM] Received response 'textDocument/completion - (144)' in 0ms.
Params: {"isIncomplete":false,"items":[]}


[Trace - 8:07:03 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:07:03 PM] Sending request 'textDocument/codeAction - (145)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"range":{"start":{"line":31,"character":5},"end":{"line":31,"character":5}},"context":{"diagnostics":[]}}


[Trace - 8:07:03 PM] Sending request 'textDocument/documentSymbol - (146)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Error - 8:07:03 PM] send textDocument/codeAction#145 D:\Go\src\github.com\nienbo\balya\cmd\balya\main.go:35:2: expected selector or type assertion, found 'if' (and 1 more errors)


[Error - 20:07:03] Request textDocument/codeAction failed.
  Message: D:\Go\src\github.com\nienbo\balya\cmd\balya\main.go:35:2: expected selector or type assertion, found 'if' (and 1 more errors)
  Code: 0 
[Trace - 8:07:03 PM] Received response 'textDocument/documentSymbol - (146)' in 1ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:07:03 PM] Sending request 'textDocument/documentSymbol - (147)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:07:03 PM] Received response 'textDocument/documentSymbol - (147)' in 1ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:07:04 PM] Sending request 'textDocument/documentLink - (148)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:07:04 PM] Received response 'textDocument/documentLink - (148)' in 0ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":10}},"target":"https://godoc.org/chilkat"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":40}},"target":"https://godoc.org/github.com/common-nighthawk/go-figure"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":40}},"target":"https://godoc.org/github.com/nienbo/balya/cmd/balya/cli"}]


[Trace - 8:07:05 PM] Sending request 'textDocument/codeAction - (149)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"range":{"start":{"line":0,"character":0},"end":{"line":42,"character":0}},"context":{"diagnostics":[]}}


[Error - 8:07:05 PM] send textDocument/codeAction#149 line is beyond end of file


[Error - 20:07:05] Request textDocument/codeAction failed.
  Message: line is beyond end of file
  Code: 0 
[Trace - 8:07:05 PM] Sending request 'textDocument/formatting - (150)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"},"options":{"tabSize":2,"insertSpaces":false}}


[Trace - 8:07:05 PM] Received response 'textDocument/formatting - (150)' in 0ms.
Params: [{"range":{"start":{"line":28,"character":0},"end":{"line":29,"character":0}},"newText":""},{"range":{"start":{"line":31,"character":0},"end":{"line":32,"character":0}},"newText":""}]


[Trace - 8:07:06 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go","version":48},"contentChanges":[{"text":"package main\n\nimport (\n\t\"chilkat\"\n\t\"fmt\"\n\t\"github.com/common-nighthawk/go-figure\"\n\t\"github.com/nienbo/balya/cmd/balya/cli\"\n\t// \"github.com/nienbo/balya/uid\"\n)\n\nfunc main() {\n\tlogo := figure.NewFigure(\"balya\", \"\", true)\n\tlogo.Print()\n\tfmt.Println(\"Nienbo's Object Distribution Server\")\n\n\tglob := chilkat.NewGlobal()\n\tsuccess := glob.UnlockBundle(\"GENCER.CB10520_EJnicQu8470W\")\n\tif success != true {\n\t\tfmt.Println(glob.LastErrorText())\n\t}\n\n\tstatus := glob.UnlockStatus()\n\tif status == 2 {\n\t\tfmt.Println(\"Unlocked using purchased unlock code.\")\n\t} else {\n\t\tfmt.Println(\"Unlocked in trial mode.\")\n\t}\n\n\tcli.ParseFlags()\n\tcli.PrepareGreeting()\n\t// Print version and other information and exit if the -version flag has been\n\t// passed else we will start the HTTP server\n\tif cli.Flags.ShowVersion {\n\t\tcli.ShowVersion()\n\t} else {\n\t\tcli.CreateComposer()\n\t\tcli.Serve()\n\t}\n\n}\n"}]}


[Trace - 8:07:06 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///D:/Go/src/github.com/nienbo/balya/cmd/balya/main.go","diagnostics":[]}


[Trace - 8:07:06 PM] Sending request 'textDocument/documentSymbol - (151)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:07:06 PM] Received response 'textDocument/documentSymbol - (151)' in 0ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:07:06 PM] Sending request 'textDocument/documentSymbol - (152)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:07:06 PM] Received response 'textDocument/documentSymbol - (152)' in 1ms.
Params: [{"name":"main","detail":"()","kind":12,"range":{"start":{"line":10,"character":0},"end":{"line":39,"character":1}},"selectionRange":{"start":{"line":10,"character":5},"end":{"line":10,"character":9}}}]


[Trace - 8:07:06 PM] Sending request 'textDocument/documentLink - (153)'.
Params: {"textDocument":{"uri":"file:///d%3A/Go/src/github.com/nienbo/balya/cmd/balya/main.go"}}


[Trace - 8:07:06 PM] Received response 'textDocument/documentLink - (153)' in 1ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":10}},"target":"https://godoc.org/chilkat"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":40}},"target":"https://godoc.org/github.com/common-nighthawk/go-figure"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":40}},"target":"https://godoc.org/github.com/nienbo/balya/cmd/balya/cli"}]
@stamblerre

This comment has been minimized.

Copy link
Contributor

@stamblerre stamblerre commented Jun 17, 2019

@gencer: What is the output of running gopls version? Also, can you confirm that this reproduces with the most recent version of gopls?

@gencer

This comment has been minimized.

Copy link
Author

@gencer gencer commented Jun 17, 2019

gopls version
version v0.1.0-cmd.gopls, built in $GOPATH mode

I've installed via:

$ go get -u golang.org/x/tools/cmd/gopls

Isn't this supposed to install latest version? Am I missing something?

@stamblerre

This comment has been minimized.

Copy link
Contributor

@stamblerre stamblerre commented Jun 17, 2019

Yes, it does. Thanks for confirming - I just wanted to be certain because your logs were missing the version information that gopls prints when it starts up.

@stamblerre

This comment has been minimized.

Copy link
Contributor

@stamblerre stamblerre commented Jun 17, 2019

Do you have both of these settings enabled?

"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
    "source.organizeImports": true
}

Can you disable one at a time? I'd like to see if this a problem coming from formatting or from import organization.

@gencer

This comment has been minimized.

Copy link
Author

@gencer gencer commented Jun 17, 2019

Yes, it does. Thanks for confirming - I just wanted to be certain because your logs were missing the version information that gopls prints when it starts up.

Ah, That's my mistake. I've trimmed them :(. Sorry! I can send whole log again if you want.

Do you have both of these settings enabled?

"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
    "source.organizeImports": true
}

Can you disable one at a time? I'd like to see if this a problem coming from formatting or from import organization.

Yes, This is my whole go-specific settings:

	"go.useLanguageServer": true,
	"go.alternateTools": {
		"go-langserver": "gopls"
	},
	"go.languageServerExperimentalFeatures": {
		"format": true,
		"autoComplete": true
	},
	"[go]": {
		"editor.snippetSuggestions": "none",
		"editor.formatOnSave": true,
		"editor.codeActionsOnSave": {
			"source.organizeImports": true
		},
	},
	// "go.languageServerFlags": [
	// 	"-rpc.trace", // for more detailed debug logging
	// 	"serve",
	// 	"--debug=localhost:6060", // to investigate memory usage, see profiles 
	// ],
	"gopls": {
		"usePlaceholders": true,
		"enhancedHover": true
	},
	"go.toolsEnvVars": {
		"CGO_LDFLAGS": "-LD:/Go/src/mingw-4.7.2-64 -lchilkatExt-9.5.0 -lws2_32 -lstdc++"
	},

Trying now.

@gencer

This comment has been minimized.

Copy link
Author

@gencer gencer commented Jun 17, 2019

Okay. Definitely this one:

"editor.formatOnSave": true,

import didn't changed anything, however disabling this solved.

@stamblerre

This comment has been minimized.

Copy link
Contributor

@stamblerre stamblerre commented Jun 17, 2019

Don't worry about the logs - it totally makes sense to trim them. Thank you for the information. Formatting works on ASTs whereas organizing imports work on a file's contents. It seems like we must be using an old AST when formatting.

I will continue to investigate this, but for now, disabling that setting should be enough to fix the issue (organizing imports also formats the file).

To clarify, the suggested workaround for handling this issue is configuring this setting to be false:

"[go]": {
    "editor.formatOnSave": false
},
@gencer

This comment has been minimized.

Copy link
Author

@gencer gencer commented Jun 17, 2019

Thanks! I've set to false

BTW, should I open a new issue for auto-complete? For example:

This;

1

or this;

2

@stamblerre

This comment has been minimized.

Copy link
Contributor

@stamblerre stamblerre commented Jun 17, 2019

Yes, that'd be easiest. And if you could include fresh logs that would also be great, just so we can separate the two issues.

@gencer

This comment has been minimized.

Copy link
Author

@gencer gencer commented Jun 17, 2019

Done it. #32654

@stamblerre

This comment has been minimized.

Copy link
Contributor

@stamblerre stamblerre commented Jun 28, 2019

@gencer: Can you update to the most recent version of gopls (go get -u golang.org/x/tools/gopls@master) and let me know if this is still an issue for you? We've fixed a few issues in the past week that may have fixed it.

@gencer

This comment has been minimized.

Copy link
Author

@gencer gencer commented Jun 28, 2019

This seems to be fixed in master. No issues so far. Autocomplete still broken. I will post details on that issue.

@stamblerre

This comment has been minimized.

Copy link
Contributor

@stamblerre stamblerre commented Jun 28, 2019

Great thank you. Closing this issue then.

@stamblerre stamblerre closed this Jun 28, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
3 participants
You can’t perform that action at this time.