sublimelsp / LSP-gopls

Golang support for Sublime's LSP plugin

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Dot completion not working until a character is typed

fgimian opened this issue · comments

Hey there, hope you're doing well. I have noticed a little issue when using this extension, which I've verified on a fresh install in Windows Sandbox too.

The first time I open Sublime Text and hit . to see available members for a module, I get an incomplete list:

e.g.

image

Hitting backspace and typing dot again sometimes shows a different set of limited results:

image

The workaround appears to be to type a letter after the . and then all completions appear:

image

From that point forward, that particular module will have a full list of completions but others won't until a c haracter is typed for them too;

e.g.

image

image

I've looked through the gopls config and can't seem to see a setting related to this. Any ideas?

My system is as follows:

OS: Windows 11 Pro
Sublime Text Version: Build 4126
LSP & LSP-gopls were just installed and are at the latest version at the time of writing

Debug output included below in case it's useful from within my Windows Sandbox environment:

:: --> gopls initialize(1): {'capabilities': {'window': {'showMessage': {'messageActionItem': {'additionalPropertiesSupport': True}}, 'showDocument': {'support': True}, 'workDoneProgress': True}, 'general': {'markdown': {'parser': 'Python-Markdown', 'version': '3.2.2'}, 'regularExpressions': {'engine': 'ECMAScript'}}, 'textDocument': {'synchronization': {'willSave': True, 'willSaveWaitUntil': True, 'didSave': True, 'dynamicRegistration': True}, 'definition': {'linkSupport': True, 'dynamicRegistration': True}, 'hover': {'contentFormat': ['markdown', 'plaintext'], 'dynamicRegistration': True}, 'codeAction': {'codeActionLiteralSupport': {'codeActionKind': {'valueSet': ['quickfix', 'refactor', 'refactor.extract', 'refactor.inline', 'refactor.rewrite', 'source.organizeImports']}}, 'resolveSupport': {'properties': ['edit']}, 'disabledSupport': True, 'dynamicRegistration': True, 'dataSupport': True}, 'inlayHint': {'resolveSupport': {'properties': ['textEdits', 'label.command']}, 'dynamicRegistration': True}, 'semanticTokens': {'requests': {'full': {'delta': True}, 'range': True}, 'tokenModifiers': ['defaultLibrary', 'definition', 'modification', 'declaration', 'deprecated', 'async', 'abstract', 'static', 'readonly', 'documentation'], 'augmentsSyntaxTokens': True, 'formats': ['relative'], 'multilineTokenSupport': True, 'overlappingTokenSupport': False, 'dynamicRegistration': True, 'tokenTypes': ['event', 'typeParameter', 'macro', 'function', 'parameter', 'keyword', 'string', 'method', 'enumMember', 'type', 'comment', 'operator', 'modifier', 'regexp', 'variable', 'class', 'namespace', 'number', 'property', 'interface', 'decorator', 'struct', 'enum']}, 'signatureHelp': {'contextSupport': True, 'signatureInformation': {'activeParameterSupport': True, 'parameterInformation': {'labelOffsetSupport': True}, 'documentationFormat': ['markdown', 'plaintext']}, 'dynamicRegistration': True}, 'rangeFormatting': {'dynamicRegistration': True}, 'codeLens': {'dynamicRegistration': True}, 'documentSymbol': {'tagSupport': {'valueSet': [1]}, 'hierarchicalDocumentSymbolSupport': True, 'dynamicRegistration': True, 'symbolKind': {'valueSet': [24, 14, 2, 12, 19, 15, 6, 22, 1, 25, 5, 20, 26, 17, 13, 8, 3, 9, 16, 7, 11, 4, 18, 23, 21, 10]}}, 'rename': {'dynamicRegistration': True, 'prepareSupport': True}, 'colorProvider': {'dynamicRegistration': True}, 'references': {'dynamicRegistration': True}, 'documentLink': {'tooltipSupport': True, 'dynamicRegistration': True}, 'publishDiagnostics': {'tagSupport': {'valueSet': [2, 1]}, 'versionSupport': True, 'dataSupport': True, 'relatedInformation': True, 'codeDescriptionSupport': True}, 'completion': {'completionItem': {'resolveSupport': {'properties': ['detail', 'documentation', 'additionalTextEdits']}, 'insertTextModeSupport': {'valueSet': [2]}, 'documentationFormat': ['markdown', 'plaintext'], 'labelDetailsSupport': True, 'tagSupport': {'valueSet': [1]}, 'deprecatedSupport': True, 'snippetSupport': True}, 'completionItemKind': {'valueSet': [23, 19, 1, 3, 18, 14, 2, 20, 12, 17, 24, 5, 9, 6, 7, 4, 10, 8, 21, 15, 11, 16, 22, 13, 25]}, 'insertTextMode': 2, 'dynamicRegistration': True}, 'selectionRange': {'dynamicRegistration': True}, 'formatting': {'dynamicRegistration': True}, 'declaration': {'linkSupport': True, 'dynamicRegistration': True}, 'documentHighlight': {'dynamicRegistration': True}, 'typeDefinition': {'linkSupport': True, 'dynamicRegistration': True}, 'implementation': {'linkSupport': True, 'dynamicRegistration': True}}, 'workspace': {'symbol': {'tagSupport': {'valueSet': [1]}, 'dynamicRegistration': True, 'symbolKind': {'valueSet': [24, 14, 2, 12, 19, 15, 6, 22, 1, 25, 5, 20, 26, 17, 13, 8, 3, 9, 16, 7, 11, 4, 18, 23, 21, 10]}}, 'configuration': True, 'semanticTokens': {'refreshSupport': True}, 'applyEdit': True, 'executeCommand': {}, 'didChangeConfiguration': {'dynamicRegistration': True}, 'workspaceEdit': {'documentChanges': True, 'failureHandling': 'abort'}, 'workspaceFolders': True, 'inlayHint': {'refreshSupport': True}, 'codeLens': {'refreshSupport': True}}}, 'initializationOptions': {}, 'rootUri': 'file:///C:/Users/WDAGUtilityAccount/go-project', 'workspaceFolders': [{'name': 'go-project', 'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project'}], 'processId': 4892, 'clientInfo': {'name': 'Sublime Text LSP', 'version': '1.18.0'}, 'rootPath': 'C:\\Users\\WDAGUtilityAccount\\go-project'}
:: <<< gopls 1: {'serverInfo': {'name': 'gopls', 'version': '{"GoVersion":"go1.19.1","Path":"golang.org/x/tools/gopls","Main":{"Path":"golang.org/x/tools/gopls","Version":"v0.9.5","Sum":"h1:F3TO5th6TUg40FHrpxZfMkMlVaaTmByeEvylgVHGH2A=","Replace":null},"Deps":[{"Path":"github.com/BurntSushi/toml","Version":"v1.2.0","Sum":"h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0=","Replace":null},{"Path":"github.com/google/go-cmp","Version":"v0.5.8","Sum":"h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=","Replace":null},{"Path":"github.com/sergi/go-diff","Version":"v1.1.0","Sum":"h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=","Replace":null},{"Path":"golang.org/x/exp","Version":"v0.0.0-20220722155223-a9213eeb770e","Sum":"h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=","Replace":null},{"Path":"golang.org/x/exp/typeparams","Version":"v0.0.0-20220722155223-a9213eeb770e","Sum":"h1:7Xs2YCOpMlNqSQSmrrnhlzBXIE/bpMecZplbLePTJvE=","Replace":null},{"Path":"golang.org/x/mod","Version":"v0.6.0-dev.0.20220419223038-86c51ed26bb4","Sum":"h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s=","Replace":null},{"Path":"golang.org/x/sync","Version":"v0.0.0-20220722155255-886fb9371eb4","Sum":"h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw=","Replace":null},{"Path":"golang.org/x/sys","Version":"v0.0.0-20220722155257-8c9f86f7a55f","Sum":"h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s=","Replace":null},{"Path":"golang.org/x/text","Version":"v0.3.7","Sum":"h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=","Replace":null},{"Path":"golang.org/x/tools","Version":"v0.1.13-0.20220908144252-ce397412b6a4","Sum":"h1:glzimF7qHZuKVEiMbE7UqBu44MyTjt5u6j3Jz+rfMRM=","Replace":null},{"Path":"golang.org/x/vuln","Version":"v0.0.0-20220901221904-62b0186a1058","Sum":"h1:YnB27EXBD8XxB0JcaOeluuvhF2kS4DrH0k+lpopG2xc=","Replace":null},{"Path":"honnef.co/go/tools","Version":"v0.3.2","Sum":"h1:ytYb4rOqyp1TSa2EPvNVwtPQJctSELKaMyLfqNP4+34=","Replace":null},{"Path":"mvdan.cc/gofumpt","Version":"v0.3.1","Sum":"h1:avhhrOmv0IuvQVK7fvwV91oFSGAk5/6Po8GXTzICeu8=","Replace":null},{"Path":"mvdan.cc/xurls/v2","Version":"v2.4.0","Sum":"h1:tzxjVAj+wSBmDcF6zBB7/myTy3gX9xvi8Tyr28AuQgc=","Replace":null}],"Settings":[{"Key":"-compiler","Value":"gc"},{"Key":"CGO_ENABLED","Value":"1"},{"Key":"CGO_CFLAGS","Value":""},{"Key":"CGO_CPPFLAGS","Value":""},{"Key":"CGO_CXXFLAGS","Value":""},{"Key":"CGO_LDFLAGS","Value":""},{"Key":"GOARCH","Value":"amd64"},{"Key":"GOOS","Value":"windows"},{"Key":"GOAMD64","Value":"v1"}],"Version":"v0.9.5"}'}, 'capabilities': {'implementationProvider': True, 'documentSymbolProvider': True, 'codeActionProvider': {'codeActionKinds': ['quickfix', 'refactor.extract', 'refactor.rewrite', 'source.fixAll', 'source.organizeImports']}, 'foldingRangeProvider': True, 'callHierarchyProvider': True, 'hoverProvider': True, 'completionProvider': {'completionItem': {}, 'triggerCharacters': ['.']}, 'textDocumentSync': {'save': {}, 'didOpen': {}, 'didClose': {}, 'change': {'syncKind': 2}}, 'definitionProvider': True, 'typeDefinitionProvider': True, 'workspaceSymbolProvider': True, 'documentLinkProvider': {}, 'referencesProvider': True, 'documentFormattingProvider': True, 'executeCommandProvider': {'commands': ['gopls.add_dependency', 'gopls.add_import', 'gopls.apply_fix', 'gopls.check_upgrades', 'gopls.edit_go_directive', 'gopls.gc_details', 'gopls.generate', 'gopls.generate_gopls_mod', 'gopls.go_get_package', 'gopls.list_imports', 'gopls.list_known_packages', 'gopls.regenerate_cgo', 'gopls.remove_dependency', 'gopls.run_tests', 'gopls.run_vulncheck_exp', 'gopls.start_debugging', 'gopls.test', 'gopls.tidy', 'gopls.toggle_gc_details', 'gopls.update_go_sum', 'gopls.upgrade_dependency', 'gopls.vendor']}, 'inlayHintProvider': {}, 'codeLensProvider': {}, 'signatureHelpProvider': {'triggerCharacters': ['(', ',']}, 'documentHighlightProvider': True, 'renameProvider': {'prepareProvider': True}, 'documentOnTypeFormattingProvider': {'firstTriggerCharacter': ''}, 'workspace': {'workspaceFolders': {'supported': True, 'changeNotifications': 'workspace/didChangeWorkspaceFolders'}}}}
::  -> gopls initialized: {}
::  -> gopls workspace/didChangeConfiguration: {'settings': {'runTestsInPanel': True, 'closeTestResultsWhenFinished': False, 'gopls': {'env': {}, 'symbolStyle': 'Dynamic', 'annotations': {'bounds': True, 'nil': True, 'escape': True, 'inline': True}, 'codelenses': {'tidy': True, 'regenerate_cgo': True, 'gc_details': False, 'upgrade_dependency': True, 'generate': True, 'vendor': True}, 'experimentalWatchedFileDelay': '0s', 'directoryFilters': ['-node_modules'], 'experimentalWorkspaceModule': False, 'importShortcut': 'Both', 'verboseOutput': False, 'allowModfileModifications': False, 'semanticTokens': False, 'usePlaceholders': False, 'linkTarget': 'pkg.go.dev', 'templateExtensions': [], 'matcher': 'Fuzzy', 'buildFlags': [], 'symbolMatcher': 'FastFuzzy', 'experimentalPackageCacheKey': True, 'hints': {}, 'linksInHover': True, 'hoverKind': 'FullDocumentation', 'local': '', 'staticcheck': False, 'memoryMode': 'Normal', 'diagnosticsDelay': '250ms', 'experimentalUseInvalidMetadata': False, 'allowImplicitNetworkAccess': False, 'noSemanticString': False, 'noSemanticNumber': False, 'gofumpt': False, 'expandWorkspaceToModule': True, 'experimentalPostfixCompletions': True, 'analyses': {}, 'completionBudget': '100ms'}}}
:: <-- gopls window/workDoneProgress/create(1): {'token': '5577006791947779410'}
:: >>> gopls 1: None
::  -> gopls textDocument/didOpen: {'textDocument': {'languageId': 'go', 'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'text': 'package main\n\nimport (\n    "fmt"\n    "time"\n)\n\nfunc main() {\n    fmt.Println("Hello, World!")\n}\n\n', 'version': 0}}
:: --> gopls textDocument/documentLink(2): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: --> gopls textDocument/codeLens(3): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: <-  gopls $/progress: {'value': {'kind': 'begin', 'title': 'Setting up workspace', 'message': 'Loading packages...'}, 'token': '5577006791947779410'}
:: <-- gopls workspace/configuration(2): {'items': [{'section': 'gopls', 'scopeUri': 'file:///C:/Users/WDAGUtilityAccount/go-project'}]}
:: >>> gopls 2: [{'env': {}, 'symbolStyle': 'Dynamic', 'annotations': {'bounds': True, 'nil': True, 'escape': True, 'inline': True}, 'codelenses': {'tidy': True, 'regenerate_cgo': True, 'gc_details': False, 'upgrade_dependency': True, 'generate': True, 'vendor': True}, 'experimentalWatchedFileDelay': '0s', 'directoryFilters': ['-node_modules'], 'experimentalWorkspaceModule': False, 'importShortcut': 'Both', 'verboseOutput': False, 'allowModfileModifications': False, 'semanticTokens': False, 'usePlaceholders': False, 'linkTarget': 'pkg.go.dev', 'templateExtensions': [], 'matcher': 'Fuzzy', 'buildFlags': [], 'symbolMatcher': 'FastFuzzy', 'experimentalPackageCacheKey': True, 'hints': {}, 'linksInHover': True, 'hoverKind': 'FullDocumentation', 'local': '', 'staticcheck': False, 'memoryMode': 'Normal', 'diagnosticsDelay': '250ms', 'experimentalUseInvalidMetadata': False, 'allowImplicitNetworkAccess': False, 'noSemanticString': False, 'noSemanticNumber': False, 'gofumpt': False, 'expandWorkspaceToModule': True, 'experimentalPostfixCompletions': True, 'analyses': {}, 'completionBudget': '100ms'}]
gopls: 2022/09/26 19:31:08 go env for C:\Users\WDAGUtilityAccount\go-project
(root C:\Users\WDAGUtilityAccount\go-project)
(go version go version go1.19.1 windows/amd64)
(valid build configuration = true)
(build flags: [])
GONOPROXY=
GOCACHE=C:\Users\WDAGUtilityAccount\AppData\Local\go-build
GOFLAGS=
GOMODCACHE=C:\Users\WDAGUtilityAccount\go\pkg\mod
GOROOT=C:\Program Files\Go
GOINSECURE=
GO111MODULE=
GOPRIVATE=
GOSUMDB=sum.golang.org
GONOSUMDB=
GOMOD=C:\Users\WDAGUtilityAccount\go-project\go.mod
GOWORK=
GOPATH=C:\Users\WDAGUtilityAccount\go
GOPROXY=https://proxy.golang.org,direct


:: <-  gopls window/logMessage: {'type': 3, 'message': '2022/09/26 19:31:08 go env for C:\\Users\\WDAGUtilityAccount\\go-project\n(root C:\\Users\\WDAGUtilityAccount\\go-project)\n(go version go version go1.19.1 windows/amd64)\n(valid build configuration = true)\n(build flags: [])\nGONOPROXY=\nGOCACHE=C:\\Users\\WDAGUtilityAccount\\AppData\\Local\\go-build\nGOFLAGS=\nGOMODCACHE=C:\\Users\\WDAGUtilityAccount\\go\\pkg\\mod\nGOROOT=C:\\Program Files\\Go\nGOINSECURE=\nGO111MODULE=\nGOPRIVATE=\nGOSUMDB=sum.golang.org\nGONOSUMDB=\nGOMOD=C:\\Users\\WDAGUtilityAccount\\go-project\\go.mod\nGOWORK=\nGOPATH=C:\\Users\\WDAGUtilityAccount\\go\nGOPROXY=https://proxy.golang.org,direct\n\n'}
gopls: 2022/09/26 19:31:08 go/packages.Load #1
	snapshot=0
	directory=C:\Users\WDAGUtilityAccount\go-project
	query=[builtin project/example/...]
	packages=2

:: <-  gopls window/logMessage: {'type': 3, 'message': '2022/09/26 19:31:08 go/packages.Load #1\n\tsnapshot=0\n\tdirectory=C:\\Users\\WDAGUtilityAccount\\go-project\n\tquery=[builtin project/example/...]\n\tpackages=2\n'}
gopls: 2022/09/26 19:31:08 go/packages.Load #1: updating metadata for 42 packages

:: <-  gopls window/logMessage: {'type': 3, 'message': '2022/09/26 19:31:08 go/packages.Load #1: updating metadata for 42 packages\n'}
:: <-  gopls $/progress: {'value': {'kind': 'end', 'message': 'Finished loading packages.'}, 'token': '5577006791947779410'}
:: <-- gopls client/registerCapability(3): {'registrations': [{'method': 'workspace/didChangeConfiguration', 'id': 'workspace/didChangeConfiguration'}]}
:: >>> gopls 3: None
:: <-- gopls workspace/configuration(4): {'items': [{'section': 'gopls'}]}
:: >>> gopls 4: [{'env': {}, 'symbolStyle': 'Dynamic', 'annotations': {'bounds': True, 'nil': True, 'escape': True, 'inline': True}, 'codelenses': {'tidy': True, 'regenerate_cgo': True, 'gc_details': False, 'upgrade_dependency': True, 'generate': True, 'vendor': True}, 'experimentalWatchedFileDelay': '0s', 'directoryFilters': ['-node_modules'], 'experimentalWorkspaceModule': False, 'importShortcut': 'Both', 'verboseOutput': False, 'allowModfileModifications': False, 'semanticTokens': False, 'usePlaceholders': False, 'linkTarget': 'pkg.go.dev', 'templateExtensions': [], 'matcher': 'Fuzzy', 'buildFlags': [], 'symbolMatcher': 'FastFuzzy', 'experimentalPackageCacheKey': True, 'hints': {}, 'linksInHover': True, 'hoverKind': 'FullDocumentation', 'local': '', 'staticcheck': False, 'memoryMode': 'Normal', 'diagnosticsDelay': '250ms', 'experimentalUseInvalidMetadata': False, 'allowImplicitNetworkAccess': False, 'noSemanticString': False, 'noSemanticNumber': False, 'gofumpt': False, 'expandWorkspaceToModule': True, 'experimentalPostfixCompletions': True, 'analyses': {}, 'completionBudget': '100ms'}]
:: <-- gopls workspace/configuration(5): {'items': [{'section': 'gopls', 'scopeUri': 'file:///C:/Users/WDAGUtilityAccount/go-project'}]}
:: >>> gopls 5: [{'env': {}, 'symbolStyle': 'Dynamic', 'annotations': {'bounds': True, 'nil': True, 'escape': True, 'inline': True}, 'codelenses': {'tidy': True, 'regenerate_cgo': True, 'gc_details': False, 'upgrade_dependency': True, 'generate': True, 'vendor': True}, 'experimentalWatchedFileDelay': '0s', 'directoryFilters': ['-node_modules'], 'experimentalWorkspaceModule': False, 'importShortcut': 'Both', 'verboseOutput': False, 'allowModfileModifications': False, 'semanticTokens': False, 'usePlaceholders': False, 'linkTarget': 'pkg.go.dev', 'templateExtensions': [], 'matcher': 'Fuzzy', 'buildFlags': [], 'symbolMatcher': 'FastFuzzy', 'experimentalPackageCacheKey': True, 'hints': {}, 'linksInHover': True, 'hoverKind': 'FullDocumentation', 'local': '', 'staticcheck': False, 'memoryMode': 'Normal', 'diagnosticsDelay': '250ms', 'experimentalUseInvalidMetadata': False, 'allowImplicitNetworkAccess': False, 'noSemanticString': False, 'noSemanticNumber': False, 'gofumpt': False, 'expandWorkspaceToModule': True, 'experimentalPostfixCompletions': True, 'analyses': {}, 'completionBudget': '100ms'}]
:: <<< gopls 2: [{'target': 'https://pkg.go.dev/fmt?utm_source=gopls', 'range': {'start': {'line': 3, 'character': 5}, 'end': {'line': 3, 'character': 8}}}, {'target': 'https://pkg.go.dev/time?utm_source=gopls', 'range': {'start': {'line': 4, 'character': 5}, 'end': {'line': 4, 'character': 9}}}]
:: <<< gopls 3: None
:: <-  gopls textDocument/publishDiagnostics: {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'diagnostics': [{'severity': 1, 'range': {'start': {'line': 4, 'character': 4}, 'end': {'line': 4, 'character': 10}}, 'code': 'UnusedImport', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#UnusedImport'}, 'message': '"time" imported but not used', 'source': 'compiler'}]}
:: --> gopls textDocument/codeAction(4): {'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 0}}, 'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'context': {'diagnostics': []}}
:: <<< gopls 4: [{'kind': 'source.organizeImports', 'title': 'Organize Imports', 'edit': {'documentChanges': [{'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 0}, 'edits': [{'range': {'start': {'line': 3, 'character': 0}, 'end': {'line': 3, 'character': 4}}, 'newText': '\t'}, {'range': {'start': {'line': 3, 'character': 7}, 'end': {'line': 4, 'character': 5}}, 'newText': ''}, {'range': {'start': {'line': 4, 'character': 6}, 'end': {'line': 4, 'character': 9}}, 'newText': ''}]}]}}]
:: --> gopls textDocument/codeLens(5): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: <<< gopls 5: None
:: --> gopls textDocument/documentHighlight(6): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 8, 'character': 32}}
:: --> gopls textDocument/codeAction(7): {'range': {'start': {'line': 8, 'character': 32}, 'end': {'line': 8, 'character': 32}}, 'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'context': {'diagnostics': []}}
:: <<< gopls 6: []
:: <<< gopls 7: [{'kind': 'source.organizeImports', 'title': 'Organize Imports', 'edit': {'documentChanges': [{'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 0}, 'edits': [{'range': {'start': {'line': 3, 'character': 0}, 'end': {'line': 3, 'character': 4}}, 'newText': '\t'}, {'range': {'start': {'line': 3, 'character': 7}, 'end': {'line': 4, 'character': 5}}, 'newText': ''}, {'range': {'start': {'line': 4, 'character': 6}, 'end': {'line': 4, 'character': 9}}, 'newText': ''}]}]}}]
::  -> gopls textDocument/didChange: {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 2}, 'contentChanges': [{'rangeLength': 0, 'range': {'start': {'line': 8, 'character': 32}, 'end': {'line': 8, 'character': 32}}, 'text': '\n'}, {'rangeLength': 0, 'range': {'start': {'line': 9, 'character': 0}, 'end': {'line': 9, 'character': 0}}, 'text': '    '}]}
:: --> gopls textDocument/documentLink(8): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: --> gopls textDocument/documentHighlight(9): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 9, 'character': 4}}
:: --> gopls textDocument/codeLens(10): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: <<< gopls 8: [{'target': 'https://pkg.go.dev/fmt?utm_source=gopls', 'range': {'start': {'line': 3, 'character': 5}, 'end': {'line': 3, 'character': 8}}}, {'target': 'https://pkg.go.dev/time?utm_source=gopls', 'range': {'start': {'line': 4, 'character': 5}, 'end': {'line': 4, 'character': 9}}}]
:: <<< gopls 9: []
:: <<< gopls 10: None
::  -> gopls textDocument/didChange: {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 3}, 'contentChanges': [{'rangeLength': 0, 'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 4}}, 'text': 't'}]}
:: --> gopls textDocument/documentLink(11): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: --> gopls textDocument/completion(12): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 9, 'character': 5}}
:: <<< gopls 11: [{'target': 'https://pkg.go.dev/fmt?utm_source=gopls', 'range': {'start': {'line': 3, 'character': 5}, 'end': {'line': 3, 'character': 8}}}, {'target': 'https://pkg.go.dev/time?utm_source=gopls', 'range': {'start': {'line': 4, 'character': 5}, 'end': {'line': 4, 'character': 9}}}]
:: <-  gopls textDocument/publishDiagnostics: {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'diagnostics': [{'severity': 1, 'range': {'start': {'line': 4, 'character': 4}, 'end': {'line': 4, 'character': 10}}, 'code': 'UnusedImport', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#UnusedImport'}, 'message': '"time" imported but not used', 'source': 'compiler'}, {'severity': 1, 'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 5}}, 'code': 'UndeclaredName', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#UndeclaredName'}, 'message': 'undeclared name: t', 'source': 'compiler'}], 'version': 3}
:: --> gopls textDocument/codeAction(13): {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 5}}, 'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'context': {'diagnostics': [{'severity': 1, 'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 5}}, 'code': 'UndeclaredName', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#UndeclaredName'}, 'message': 'undeclared name: t', 'source': 'compiler'}]}}
:: <<< gopls 12: {'itemDefaults': {'editRange': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 0}}}, 'isIncomplete': True, 'items': [{'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 5}}, 'newText': 'time'}, 'label': 'time', 'labelDetails': {}, 'filterText': 'time', 'detail': '"time"', 'kind': 9, 'insertTextFormat': 2, 'sortText': '00000', 'preselect': True}, {'label': 'type', 'labelDetails': {}, 'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 5}}, 'newText': 'type'}, 'kind': 14, 'insertTextFormat': 2, 'sortText': '00001', 'filterText': 'type'}, {'label': 'true', 'labelDetails': {}, 'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 5}}, 'newText': 'true'}, 'kind': 21, 'insertTextFormat': 2, 'sortText': '00002', 'filterText': 'true'}, {'label': 'template', 'labelDetails': {}, 'additionalTextEdits': [{'range': {'start': {'line': 3, 'character': 0}, 'end': {'line': 3, 'character': 4}}, 'newText': '\t'}, {'range': {'start': {'line': 4, 'character': 0}, 'end': {'line': 4, 'character': 4}}, 'newText': '\t"text/template"\n\t'}], 'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 5}}, 'newText': 'template'}, 'detail': '"text/template"', 'kind': 9, 'insertTextFormat': 2, 'sortText': '00003', 'filterText': 'template'}, {'label': 'tls', 'labelDetails': {}, 'additionalTextEdits': [{'range': {'start': {'line': 3, 'character': 0}, 'end': {'line': 3, 'character': 4}}, 'newText': '\t"crypto/tls"\n\t'}, {'range': {'start': {'line': 4, 'character': 0}, 'end': {'line': 4, 'character': 4}}, 'newText': '\t'}], 'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 5}}, 'newText': 'tls'}, 'detail': '"crypto/tls"', 'kind': 9, 'insertTextFormat': 2, 'sortText': '00004', 'filterText': 'tls'}, {'label': 'token', 'labelDetails': {}, 'additionalTextEdits': [{'range': {'start': {'line': 3, 'character': 0}, 'end': {'line': 3, 'character': 4}}, 'newText': '\t'}, {'range': {'start': {'line': 4, 'character': 0}, 'end': {'line': 4, 'character': 4}}, 'newText': '\t"go/token"\n\t'}], 'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 5}}, 'newText': 'token'}, 'detail': '"go/token"', 'kind': 9, 'insertTextFormat': 2, 'sortText': '00005', 'filterText': 'token'}, {'label': 'trace', 'labelDetails': {}, 'additionalTextEdits': [{'range': {'start': {'line': 3, 'character': 0}, 'end': {'line': 3, 'character': 4}}, 'newText': '\t'}, {'range': {'start': {'line': 4, 'character': 0}, 'end': {'line': 4, 'character': 4}}, 'newText': '\t"runtime/trace"\n\t'}], 'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 5}}, 'newText': 'trace'}, 'detail': '"runtime/trace"', 'kind': 9, 'insertTextFormat': 2, 'sortText': '00006', 'filterText': 'trace'}, {'label': 'testlog', 'labelDetails': {}, 'additionalTextEdits': [{'range': {'start': {'line': 3, 'character': 0}, 'end': {'line': 3, 'character': 4}}, 'newText': '\t'}, {'range': {'start': {'line': 4, 'character': 0}, 'end': {'line': 4, 'character': 4}}, 'newText': '\t"internal/testlog"\n\t'}], 'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 5}}, 'newText': 'testlog'}, 'detail': '"internal/testlog"', 'kind': 9, 'insertTextFormat': 2, 'sortText': '00007', 'filterText': 'testlog'}, {'label': 'time.ANSIC', 'labelDetails': {}, 'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 5}}, 'newText': 'time.ANSIC'}, 'detail': 'string', 'kind': 21, 'insertTextFormat': 2, 'sortText': '00008', 'filterText': 'time.ANSIC'}, {'label': 'time.After', 'labelDetails': {}, 'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 5}}, 'newText': 'time.After(${1:})'}, 'detail': 'func(d time.Duration) <-chan time.Time', 'kind': 3, 'insertTextFormat': 2, 'sortText': '00009', 'filterText': 'time.After'}, {'label': 'time.AfterFunc', 'labelDetails': {}, 'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 5}}, 'newText': 'time.AfterFunc(${1:})'}, 'detail': 'func(d time.Duration, f func()) *time.Timer', 'kind': 3, 'insertTextFormat': 2, 'sortText': '00010', 'filterText': 'time.AfterFunc'}]}
:: <<< gopls 13: [{'kind': 'source.organizeImports', 'title': 'Organize Imports', 'edit': {'documentChanges': [{'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 3}, 'edits': [{'range': {'start': {'line': 3, 'character': 0}, 'end': {'line': 3, 'character': 4}}, 'newText': '\t'}, {'range': {'start': {'line': 3, 'character': 7}, 'end': {'line': 4, 'character': 5}}, 'newText': ''}, {'range': {'start': {'line': 4, 'character': 6}, 'end': {'line': 4, 'character': 9}}, 'newText': ''}]}]}}, {'kind': 'quickfix', 'title': 'undeclared name: t', 'command': {'command': 'gopls.apply_fix', 'title': 'undeclared name: t', 'arguments': [{'Range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 5}}, 'URI': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'Fix': 'undeclared_name'}]}, 'diagnostics': [{'severity': 1, 'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 5}}, 'code': 'UndeclaredName', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#UndeclaredName'}, 'message': 'undeclared name: t', 'source': 'compiler'}], 'edit': {}}]
::  -> gopls textDocument/didChange: {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 7}, 'contentChanges': [{'rangeLength': 0, 'range': {'start': {'line': 9, 'character': 5}, 'end': {'line': 9, 'character': 5}}, 'text': 'i'}, {'rangeLength': 0, 'range': {'start': {'line': 9, 'character': 6}, 'end': {'line': 9, 'character': 6}}, 'text': 'm'}, {'rangeLength': 0, 'range': {'start': {'line': 9, 'character': 7}, 'end': {'line': 9, 'character': 7}}, 'text': 'e'}, {'rangeLength': 0, 'range': {'start': {'line': 9, 'character': 8}, 'end': {'line': 9, 'character': 8}}, 'text': '.'}]}
:: --> gopls textDocument/documentLink(14): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: --> gopls textDocument/documentHighlight(15): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 9, 'character': 9}}
:: --> gopls textDocument/codeLens(16): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: <<< gopls 14: [{'target': 'https://pkg.go.dev/fmt?utm_source=gopls', 'range': {'start': {'line': 3, 'character': 5}, 'end': {'line': 3, 'character': 8}}}, {'target': 'https://pkg.go.dev/time?utm_source=gopls', 'range': {'start': {'line': 4, 'character': 5}, 'end': {'line': 4, 'character': 9}}}]
:: <-  gopls textDocument/publishDiagnostics: {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'diagnostics': [{'severity': 1, 'range': {'start': {'line': 9, 'character': 10}, 'end': {'line': 9, 'character': 10}}, 'source': 'syntax', 'message': "expected selector or type assertion, found '}'"}], 'version': 7}
:: --> gopls textDocument/codeAction(17): {'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 9}}, 'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'context': {'diagnostics': [{'severity': 1, 'range': {'start': {'line': 9, 'character': 10}, 'end': {'line': 9, 'character': 10}}, 'source': 'syntax', 'message': "expected selector or type assertion, found '}'"}]}}
:: <<< gopls 15: [{'kind': 1, 'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 10}}}]
:: <<< gopls 16: None
:: <<< gopls 17: [{'kind': 'source.organizeImports', 'title': 'Organize Imports', 'edit': {'documentChanges': [{'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 7}, 'edits': [{'range': {'start': {'line': 3, 'character': 0}, 'end': {'line': 3, 'character': 4}}, 'newText': '\t'}, {'range': {'start': {'line': 3, 'character': 7}, 'end': {'line': 4, 'character': 5}}, 'newText': ''}, {'range': {'start': {'line': 4, 'character': 6}, 'end': {'line': 4, 'character': 9}}, 'newText': ''}]}]}}]
::  -> gopls textDocument/didChange: {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 8}, 'contentChanges': [{'rangeLength': 1, 'range': {'start': {'line': 9, 'character': 8}, 'end': {'line': 9, 'character': 9}}, 'text': ''}]}
:: --> gopls textDocument/documentLink(18): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: --> gopls textDocument/completion(19): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 9, 'character': 8}}
:: <<< gopls 18: [{'target': 'https://pkg.go.dev/fmt?utm_source=gopls', 'range': {'start': {'line': 3, 'character': 5}, 'end': {'line': 3, 'character': 8}}}, {'target': 'https://pkg.go.dev/time?utm_source=gopls', 'range': {'start': {'line': 4, 'character': 5}, 'end': {'line': 4, 'character': 9}}}]
:: <-  gopls textDocument/publishDiagnostics: {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'diagnostics': [{'severity': 1, 'range': {'start': {'line': 4, 'character': 4}, 'end': {'line': 4, 'character': 10}}, 'code': 'UnusedImport', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#UnusedImport'}, 'message': '"time" imported but not used', 'source': 'compiler'}, {'severity': 1, 'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'code': 'InvalidPkgUse', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#InvalidPkgUse'}, 'message': 'use of package time not in selector', 'source': 'compiler'}], 'version': 8}
:: --> gopls textDocument/codeAction(20): {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'context': {'diagnostics': [{'severity': 1, 'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'code': 'InvalidPkgUse', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#InvalidPkgUse'}, 'message': 'use of package time not in selector', 'source': 'compiler'}]}}
:: <<< gopls 19: {'itemDefaults': {'editRange': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 0}}}, 'isIncomplete': True, 'items': [{'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'newText': 'time'}, 'label': 'time', 'labelDetails': {}, 'filterText': 'time', 'detail': '"time"', 'kind': 9, 'insertTextFormat': 2, 'sortText': '00000', 'preselect': True}, {'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'newText': 'time.Time'}, 'label': 'time.Time', 'labelDetails': {}, 'filterText': 'time.Time', 'detail': 'struct{...}', 'kind': 22, 'insertTextFormat': 2, 'sortText': '00001', 'documentation': "A Time represents an instant in time with nanosecond precision.\n\nPrograms using times should typically store and pass them as values,\nnot pointers. That is, time variables and struct fields should be of\ntype time.Time, not *time.Time.\n\nA Time value can be used by multiple goroutines simultaneously except\nthat the methods GobDecode, UnmarshalBinary, UnmarshalJSON and\nUnmarshalText are not concurrency-safe.\n\nTime instants can be compared using the Before, After, and Equal methods.\nThe Sub method subtracts two instants, producing a Duration.\nThe Add method adds a Time and a Duration, producing a Time.\n\nThe zero value of type Time is January 1, year 1, 00:00:00.000000000 UTC.\nAs this time is unlikely to come up in practice, the IsZero method gives\na simple way of detecting a time that has not been initialized explicitly.\n\nEach Time has associated with it a Location, consulted when computing the\npresentation form of the time, such as in the Format, Hour, and Year methods.\nThe methods Local, UTC, and In return a Time with a specific location.\nChanging the location in this way changes only the presentation; it does not\nchange the instant in time being denoted and therefore does not affect the\ncomputations described in earlier paragraphs.\n\nRepresentations of a Time value saved by the GobEncode, MarshalBinary,\nMarshalJSON, and MarshalText methods store the Time.Location's offset, but not\nthe location name. They therefore lose information about Daylight Saving Time.\n\nIn addition to the required “wall clock” reading, a Time may contain an optional\nreading of the current process's monotonic clock, to provide additional precision\nfor comparison or subtraction.\nSee the “Monotonic Clocks” section in the package documentation for details.\n\nNote that the Go == operator compares not just the time instant but also the\nLocation and the monotonic clock reading. Therefore, Time values should not\nbe used as map or database keys without first guaranteeing that the\nidentical Location has been set for all values, which can be achieved\nthrough use of the UTC or Local method, and that the monotonic clock reading\nhas been stripped by setting t = t.Round(0). In general, prefer t.Equal(u)\nto t == u, since t.Equal uses the most accurate comparison available and\ncorrectly handles the case when only one of its arguments has a monotonic\nclock reading.\n"}, {'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'newText': 'time.Timer'}, 'label': 'time.Timer', 'labelDetails': {}, 'filterText': 'time.Timer', 'detail': 'struct{...}', 'kind': 22, 'insertTextFormat': 2, 'sortText': '00002', 'documentation': 'The Timer type represents a single event.\nWhen the Timer expires, the current time will be sent on C,\nunless the Timer was created by AfterFunc.\nA Timer must be created with NewTimer or AfterFunc.\n'}, {'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'newText': 'time.ANSIC'}, 'label': 'time.ANSIC', 'labelDetails': {}, 'filterText': 'time.ANSIC', 'detail': 'string', 'kind': 21, 'insertTextFormat': 2, 'sortText': '00003', 'documentation': 'These are predefined layouts for use in Time.Format and time.Parse.\nThe reference time used in these layouts is the specific time stamp:\n\n\t01/02 03:04:05PM \'06 -0700\n\n(January 2, 15:04:05, 2006, in time zone seven hours west of GMT).\nThat value is recorded as the constant named Layout, listed below. As a Unix\ntime, this is 1136239445. Since MST is GMT-0700, the reference would be\nprinted by the Unix date command as:\n\n\tMon Jan 2 15:04:05 MST 2006\n\nIt is a regrettable historic error that the date uses the American convention\nof putting the numerical month before the day.\n\nThe example for Time.Format demonstrates the working of the layout string\nin detail and is a good reference.\n\nNote that the RFC822, RFC850, and RFC1123 formats should be applied\nonly to local times. Applying them to UTC times will use "UTC" as the\ntime zone abbreviation, while strictly speaking those RFCs require the\nuse of "GMT" in that case.\nIn general RFC1123Z should be used instead of RFC1123 for servers\nthat insist on that format, and RFC3339 should be preferred for new protocols.\nRFC3339, RFC822, RFC822Z, RFC1123, and RFC1123Z are useful for formatting;\nwhen used with time.Parse they do not accept all the time formats\npermitted by the RFCs and they do accept time formats not formally defined.\nThe RFC3339Nano format removes trailing zeros from the seconds field\nand thus may not sort correctly once formatted.\n\nMost programs can use one of the defined constants as the layout passed to\nFormat or Parse. The rest of this comment can be ignored unless you are\ncreating a custom layout string.\n\nTo define your own format, write down what the reference time would look like\nformatted your way; see the values of constants like ANSIC, StampMicro or\nKitchen for examples. The model is to demonstrate what the reference time\nlooks like so that the Format and Parse methods can apply the same\ntransformation to a general time value.\n\nHere is a summary of the components of a layout string. Each element shows by\nexample the formatting of an element of the reference time. Only these values\nare recognized. Text in the layout string that is not recognized as part of\nthe reference time is echoed verbatim during Format and expected to appear\nverbatim in the input to Parse.\n\n\tYear: "2006" "06"\n\tMonth: "Jan" "January" "01" "1"\n\tDay of the week: "Mon" "Monday"\n\tDay of the month: "2" "_2" "02"\n\tDay of the year: "__2" "002"\n\tHour: "15" "3" "03" (PM or AM)\n\tMinute: "4" "04"\n\tSecond: "5" "05"\n\tAM/PM mark: "PM"\n\nNumeric time zone offsets format as follows:\n\n\t"-0700"     ±hhmm\n\t"-07:00"    ±hh:mm\n\t"-07"       ±hh\n\t"-070000"   ±hhmmss\n\t"-07:00:00" ±hh:mm:ss\n\nReplacing the sign in the format with a Z triggers\nthe ISO 8601 behavior of printing Z instead of an\noffset for the UTC zone. Thus:\n\n\t"Z0700"      Z or ±hhmm\n\t"Z07:00"     Z or ±hh:mm\n\t"Z07"        Z or ±hh\n\t"Z070000"    Z or ±hhmmss\n\t"Z07:00:00"  Z or ±hh:mm:ss\n\nWithin the format string, the underscores in "_2" and "__2" represent spaces\nthat may be replaced by digits if the following number has multiple digits,\nfor compatibility with fixed-width Unix time formats. A leading zero represents\na zero-padded value.\n\nThe formats __2 and 002 are space-padded and zero-padded\nthree-character day of year; there is no unpadded day of year format.\n\nA comma or decimal point followed by one or more zeros represents\na fractional second, printed to the given number of decimal places.\nA comma or decimal point followed by one or more nines represents\na fractional second, printed to the given number of decimal places, with\ntrailing zeros removed.\nFor example "15:04:05,000" or "15:04:05.000" formats or parses with\nmillisecond precision.\n\nSome valid layouts are invalid time values for time.Parse, due to formats\nsuch as _ for space padding and Z for zone information.\n'}]}
:: <<< gopls 20: [{'kind': 'source.organizeImports', 'title': 'Organize Imports', 'edit': {'documentChanges': [{'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 8}, 'edits': [{'range': {'start': {'line': 3, 'character': 0}, 'end': {'line': 3, 'character': 4}}, 'newText': '\t'}, {'range': {'start': {'line': 3, 'character': 7}, 'end': {'line': 4, 'character': 5}}, 'newText': ''}, {'range': {'start': {'line': 4, 'character': 6}, 'end': {'line': 4, 'character': 9}}, 'newText': ''}]}]}}]
:: --> gopls textDocument/documentHighlight(21): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 9, 'character': 8}}
:: --> gopls textDocument/codeLens(22): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: <<< gopls 21: [{'kind': 1, 'range': {'start': {'line': 4, 'character': 4}, 'end': {'line': 4, 'character': 10}}}, {'kind': 1, 'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}}]
:: <<< gopls 22: None
::  -> gopls textDocument/didChange: {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 9}, 'contentChanges': [{'rangeLength': 0, 'range': {'start': {'line': 9, 'character': 8}, 'end': {'line': 9, 'character': 8}}, 'text': '.'}]}
:: --> gopls textDocument/documentLink(23): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: --> gopls textDocument/completion(24): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 9, 'character': 9}}
:: <<< gopls 23: [{'target': 'https://pkg.go.dev/fmt?utm_source=gopls', 'range': {'start': {'line': 3, 'character': 5}, 'end': {'line': 3, 'character': 8}}}, {'target': 'https://pkg.go.dev/time?utm_source=gopls', 'range': {'start': {'line': 4, 'character': 5}, 'end': {'line': 4, 'character': 9}}}]
:: <-  gopls textDocument/publishDiagnostics: {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'diagnostics': [{'severity': 1, 'range': {'start': {'line': 9, 'character': 10}, 'end': {'line': 9, 'character': 10}}, 'source': 'syntax', 'message': "expected selector or type assertion, found '}'"}], 'version': 9}
:: --> gopls textDocument/codeAction(25): {'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 9}}, 'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'context': {'diagnostics': [{'severity': 1, 'range': {'start': {'line': 9, 'character': 10}, 'end': {'line': 9, 'character': 10}}, 'source': 'syntax', 'message': "expected selector or type assertion, found '}'"}]}}
:: <<< gopls 24: <params with 93756 characters>
:: <<< gopls 25: [{'kind': 'source.organizeImports', 'title': 'Organize Imports', 'edit': {'documentChanges': [{'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 9}, 'edits': [{'range': {'start': {'line': 3, 'character': 0}, 'end': {'line': 3, 'character': 4}}, 'newText': '\t'}, {'range': {'start': {'line': 3, 'character': 7}, 'end': {'line': 4, 'character': 5}}, 'newText': ''}, {'range': {'start': {'line': 4, 'character': 6}, 'end': {'line': 4, 'character': 9}}, 'newText': ''}]}]}}]
:: --> gopls textDocument/documentHighlight(26): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 9, 'character': 9}}
:: --> gopls textDocument/codeLens(27): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: <<< gopls 26: [{'kind': 1, 'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 10}}}]
:: <<< gopls 27: None
::  -> gopls textDocument/didChange: {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 10}, 'contentChanges': [{'rangeLength': 1, 'range': {'start': {'line': 9, 'character': 8}, 'end': {'line': 9, 'character': 9}}, 'text': ''}]}
:: --> gopls textDocument/documentLink(28): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: --> gopls textDocument/completion(29): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 9, 'character': 8}}
:: <<< gopls 28: [{'target': 'https://pkg.go.dev/fmt?utm_source=gopls', 'range': {'start': {'line': 3, 'character': 5}, 'end': {'line': 3, 'character': 8}}}, {'target': 'https://pkg.go.dev/time?utm_source=gopls', 'range': {'start': {'line': 4, 'character': 5}, 'end': {'line': 4, 'character': 9}}}]
:: <-  gopls textDocument/publishDiagnostics: {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'diagnostics': [{'severity': 1, 'range': {'start': {'line': 4, 'character': 4}, 'end': {'line': 4, 'character': 10}}, 'code': 'UnusedImport', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#UnusedImport'}, 'message': '"time" imported but not used', 'source': 'compiler'}, {'severity': 1, 'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'code': 'InvalidPkgUse', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#InvalidPkgUse'}, 'message': 'use of package time not in selector', 'source': 'compiler'}], 'version': 10}
:: --> gopls textDocument/codeAction(30): {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'context': {'diagnostics': [{'severity': 1, 'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'code': 'InvalidPkgUse', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#InvalidPkgUse'}, 'message': 'use of package time not in selector', 'source': 'compiler'}]}}
:: <<< gopls 29: {'itemDefaults': {'editRange': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 0}}}, 'isIncomplete': True, 'items': [{'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'newText': 'time'}, 'label': 'time', 'labelDetails': {}, 'filterText': 'time', 'detail': '"time"', 'kind': 9, 'insertTextFormat': 2, 'sortText': '00000', 'preselect': True}, {'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'newText': 'time.Time'}, 'label': 'time.Time', 'labelDetails': {}, 'filterText': 'time.Time', 'detail': 'struct{...}', 'kind': 22, 'insertTextFormat': 2, 'sortText': '00001', 'documentation': "A Time represents an instant in time with nanosecond precision.\n\nPrograms using times should typically store and pass them as values,\nnot pointers. That is, time variables and struct fields should be of\ntype time.Time, not *time.Time.\n\nA Time value can be used by multiple goroutines simultaneously except\nthat the methods GobDecode, UnmarshalBinary, UnmarshalJSON and\nUnmarshalText are not concurrency-safe.\n\nTime instants can be compared using the Before, After, and Equal methods.\nThe Sub method subtracts two instants, producing a Duration.\nThe Add method adds a Time and a Duration, producing a Time.\n\nThe zero value of type Time is January 1, year 1, 00:00:00.000000000 UTC.\nAs this time is unlikely to come up in practice, the IsZero method gives\na simple way of detecting a time that has not been initialized explicitly.\n\nEach Time has associated with it a Location, consulted when computing the\npresentation form of the time, such as in the Format, Hour, and Year methods.\nThe methods Local, UTC, and In return a Time with a specific location.\nChanging the location in this way changes only the presentation; it does not\nchange the instant in time being denoted and therefore does not affect the\ncomputations described in earlier paragraphs.\n\nRepresentations of a Time value saved by the GobEncode, MarshalBinary,\nMarshalJSON, and MarshalText methods store the Time.Location's offset, but not\nthe location name. They therefore lose information about Daylight Saving Time.\n\nIn addition to the required “wall clock” reading, a Time may contain an optional\nreading of the current process's monotonic clock, to provide additional precision\nfor comparison or subtraction.\nSee the “Monotonic Clocks” section in the package documentation for details.\n\nNote that the Go == operator compares not just the time instant but also the\nLocation and the monotonic clock reading. Therefore, Time values should not\nbe used as map or database keys without first guaranteeing that the\nidentical Location has been set for all values, which can be achieved\nthrough use of the UTC or Local method, and that the monotonic clock reading\nhas been stripped by setting t = t.Round(0). In general, prefer t.Equal(u)\nto t == u, since t.Equal uses the most accurate comparison available and\ncorrectly handles the case when only one of its arguments has a monotonic\nclock reading.\n"}, {'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'newText': 'time.Timer'}, 'label': 'time.Timer', 'labelDetails': {}, 'filterText': 'time.Timer', 'detail': 'struct{...}', 'kind': 22, 'insertTextFormat': 2, 'sortText': '00002', 'documentation': 'The Timer type represents a single event.\nWhen the Timer expires, the current time will be sent on C,\nunless the Timer was created by AfterFunc.\nA Timer must be created with NewTimer or AfterFunc.\n'}, {'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'newText': 'time.ANSIC'}, 'label': 'time.ANSIC', 'labelDetails': {}, 'filterText': 'time.ANSIC', 'detail': 'string', 'kind': 21, 'insertTextFormat': 2, 'sortText': '00003', 'documentation': 'These are predefined layouts for use in Time.Format and time.Parse.\nThe reference time used in these layouts is the specific time stamp:\n\n\t01/02 03:04:05PM \'06 -0700\n\n(January 2, 15:04:05, 2006, in time zone seven hours west of GMT).\nThat value is recorded as the constant named Layout, listed below. As a Unix\ntime, this is 1136239445. Since MST is GMT-0700, the reference would be\nprinted by the Unix date command as:\n\n\tMon Jan 2 15:04:05 MST 2006\n\nIt is a regrettable historic error that the date uses the American convention\nof putting the numerical month before the day.\n\nThe example for Time.Format demonstrates the working of the layout string\nin detail and is a good reference.\n\nNote that the RFC822, RFC850, and RFC1123 formats should be applied\nonly to local times. Applying them to UTC times will use "UTC" as the\ntime zone abbreviation, while strictly speaking those RFCs require the\nuse of "GMT" in that case.\nIn general RFC1123Z should be used instead of RFC1123 for servers\nthat insist on that format, and RFC3339 should be preferred for new protocols.\nRFC3339, RFC822, RFC822Z, RFC1123, and RFC1123Z are useful for formatting;\nwhen used with time.Parse they do not accept all the time formats\npermitted by the RFCs and they do accept time formats not formally defined.\nThe RFC3339Nano format removes trailing zeros from the seconds field\nand thus may not sort correctly once formatted.\n\nMost programs can use one of the defined constants as the layout passed to\nFormat or Parse. The rest of this comment can be ignored unless you are\ncreating a custom layout string.\n\nTo define your own format, write down what the reference time would look like\nformatted your way; see the values of constants like ANSIC, StampMicro or\nKitchen for examples. The model is to demonstrate what the reference time\nlooks like so that the Format and Parse methods can apply the same\ntransformation to a general time value.\n\nHere is a summary of the components of a layout string. Each element shows by\nexample the formatting of an element of the reference time. Only these values\nare recognized. Text in the layout string that is not recognized as part of\nthe reference time is echoed verbatim during Format and expected to appear\nverbatim in the input to Parse.\n\n\tYear: "2006" "06"\n\tMonth: "Jan" "January" "01" "1"\n\tDay of the week: "Mon" "Monday"\n\tDay of the month: "2" "_2" "02"\n\tDay of the year: "__2" "002"\n\tHour: "15" "3" "03" (PM or AM)\n\tMinute: "4" "04"\n\tSecond: "5" "05"\n\tAM/PM mark: "PM"\n\nNumeric time zone offsets format as follows:\n\n\t"-0700"     ±hhmm\n\t"-07:00"    ±hh:mm\n\t"-07"       ±hh\n\t"-070000"   ±hhmmss\n\t"-07:00:00" ±hh:mm:ss\n\nReplacing the sign in the format with a Z triggers\nthe ISO 8601 behavior of printing Z instead of an\noffset for the UTC zone. Thus:\n\n\t"Z0700"      Z or ±hhmm\n\t"Z07:00"     Z or ±hh:mm\n\t"Z07"        Z or ±hh\n\t"Z070000"    Z or ±hhmmss\n\t"Z07:00:00"  Z or ±hh:mm:ss\n\nWithin the format string, the underscores in "_2" and "__2" represent spaces\nthat may be replaced by digits if the following number has multiple digits,\nfor compatibility with fixed-width Unix time formats. A leading zero represents\na zero-padded value.\n\nThe formats __2 and 002 are space-padded and zero-padded\nthree-character day of year; there is no unpadded day of year format.\n\nA comma or decimal point followed by one or more zeros represents\na fractional second, printed to the given number of decimal places.\nA comma or decimal point followed by one or more nines represents\na fractional second, printed to the given number of decimal places, with\ntrailing zeros removed.\nFor example "15:04:05,000" or "15:04:05.000" formats or parses with\nmillisecond precision.\n\nSome valid layouts are invalid time values for time.Parse, due to formats\nsuch as _ for space padding and Z for zone information.\n'}]}
:: <<< gopls 30: [{'kind': 'source.organizeImports', 'title': 'Organize Imports', 'edit': {'documentChanges': [{'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 10}, 'edits': [{'range': {'start': {'line': 3, 'character': 0}, 'end': {'line': 3, 'character': 4}}, 'newText': '\t'}, {'range': {'start': {'line': 3, 'character': 7}, 'end': {'line': 4, 'character': 5}}, 'newText': ''}, {'range': {'start': {'line': 4, 'character': 6}, 'end': {'line': 4, 'character': 9}}, 'newText': ''}]}]}}]
:: --> gopls textDocument/documentHighlight(31): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 9, 'character': 8}}
:: --> gopls textDocument/codeLens(32): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: <<< gopls 31: [{'kind': 1, 'range': {'start': {'line': 4, 'character': 4}, 'end': {'line': 4, 'character': 10}}}, {'kind': 1, 'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}}]
:: <<< gopls 32: None
::  -> gopls textDocument/didChange: {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 11}, 'contentChanges': [{'rangeLength': 0, 'range': {'start': {'line': 9, 'character': 8}, 'end': {'line': 9, 'character': 8}}, 'text': '.'}]}
:: --> gopls textDocument/documentLink(33): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: --> gopls textDocument/completion(34): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 9, 'character': 9}}
:: <<< gopls 33: [{'target': 'https://pkg.go.dev/fmt?utm_source=gopls', 'range': {'start': {'line': 3, 'character': 5}, 'end': {'line': 3, 'character': 8}}}, {'target': 'https://pkg.go.dev/time?utm_source=gopls', 'range': {'start': {'line': 4, 'character': 5}, 'end': {'line': 4, 'character': 9}}}]
:: <-  gopls textDocument/publishDiagnostics: {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'diagnostics': [{'severity': 1, 'range': {'start': {'line': 9, 'character': 10}, 'end': {'line': 9, 'character': 10}}, 'source': 'syntax', 'message': "expected selector or type assertion, found '}'"}], 'version': 11}
:: --> gopls textDocument/codeAction(35): {'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 9}}, 'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'context': {'diagnostics': [{'severity': 1, 'range': {'start': {'line': 9, 'character': 10}, 'end': {'line': 9, 'character': 10}}, 'source': 'syntax', 'message': "expected selector or type assertion, found '}'"}]}}
:: <<< gopls 34: <params with 93756 characters>
:: <<< gopls 35: [{'kind': 'source.organizeImports', 'title': 'Organize Imports', 'edit': {'documentChanges': [{'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 11}, 'edits': [{'range': {'start': {'line': 3, 'character': 0}, 'end': {'line': 3, 'character': 4}}, 'newText': '\t'}, {'range': {'start': {'line': 3, 'character': 7}, 'end': {'line': 4, 'character': 5}}, 'newText': ''}, {'range': {'start': {'line': 4, 'character': 6}, 'end': {'line': 4, 'character': 9}}, 'newText': ''}]}]}}]
:: --> gopls textDocument/documentHighlight(36): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 9, 'character': 9}}
:: --> gopls textDocument/codeLens(37): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: <<< gopls 36: [{'kind': 1, 'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 10}}}]
:: <<< gopls 37: None
::  -> gopls textDocument/didChange: {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 12}, 'contentChanges': [{'rangeLength': 1, 'range': {'start': {'line': 9, 'character': 8}, 'end': {'line': 9, 'character': 9}}, 'text': ''}]}
:: --> gopls textDocument/documentLink(38): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: --> gopls textDocument/completion(39): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 9, 'character': 8}}
:: <<< gopls 38: [{'target': 'https://pkg.go.dev/fmt?utm_source=gopls', 'range': {'start': {'line': 3, 'character': 5}, 'end': {'line': 3, 'character': 8}}}, {'target': 'https://pkg.go.dev/time?utm_source=gopls', 'range': {'start': {'line': 4, 'character': 5}, 'end': {'line': 4, 'character': 9}}}]
:: <-  gopls textDocument/publishDiagnostics: {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'diagnostics': [{'severity': 1, 'range': {'start': {'line': 4, 'character': 4}, 'end': {'line': 4, 'character': 10}}, 'code': 'UnusedImport', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#UnusedImport'}, 'message': '"time" imported but not used', 'source': 'compiler'}, {'severity': 1, 'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'code': 'InvalidPkgUse', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#InvalidPkgUse'}, 'message': 'use of package time not in selector', 'source': 'compiler'}], 'version': 12}
:: --> gopls textDocument/codeAction(40): {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'context': {'diagnostics': [{'severity': 1, 'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'code': 'InvalidPkgUse', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#InvalidPkgUse'}, 'message': 'use of package time not in selector', 'source': 'compiler'}]}}
:: <<< gopls 39: {'itemDefaults': {'editRange': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 0}}}, 'isIncomplete': True, 'items': [{'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'newText': 'time'}, 'label': 'time', 'labelDetails': {}, 'filterText': 'time', 'detail': '"time"', 'kind': 9, 'insertTextFormat': 2, 'sortText': '00000', 'preselect': True}, {'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'newText': 'time.Time'}, 'label': 'time.Time', 'labelDetails': {}, 'filterText': 'time.Time', 'detail': 'struct{...}', 'kind': 22, 'insertTextFormat': 2, 'sortText': '00001', 'documentation': "A Time represents an instant in time with nanosecond precision.\n\nPrograms using times should typically store and pass them as values,\nnot pointers. That is, time variables and struct fields should be of\ntype time.Time, not *time.Time.\n\nA Time value can be used by multiple goroutines simultaneously except\nthat the methods GobDecode, UnmarshalBinary, UnmarshalJSON and\nUnmarshalText are not concurrency-safe.\n\nTime instants can be compared using the Before, After, and Equal methods.\nThe Sub method subtracts two instants, producing a Duration.\nThe Add method adds a Time and a Duration, producing a Time.\n\nThe zero value of type Time is January 1, year 1, 00:00:00.000000000 UTC.\nAs this time is unlikely to come up in practice, the IsZero method gives\na simple way of detecting a time that has not been initialized explicitly.\n\nEach Time has associated with it a Location, consulted when computing the\npresentation form of the time, such as in the Format, Hour, and Year methods.\nThe methods Local, UTC, and In return a Time with a specific location.\nChanging the location in this way changes only the presentation; it does not\nchange the instant in time being denoted and therefore does not affect the\ncomputations described in earlier paragraphs.\n\nRepresentations of a Time value saved by the GobEncode, MarshalBinary,\nMarshalJSON, and MarshalText methods store the Time.Location's offset, but not\nthe location name. They therefore lose information about Daylight Saving Time.\n\nIn addition to the required “wall clock” reading, a Time may contain an optional\nreading of the current process's monotonic clock, to provide additional precision\nfor comparison or subtraction.\nSee the “Monotonic Clocks” section in the package documentation for details.\n\nNote that the Go == operator compares not just the time instant but also the\nLocation and the monotonic clock reading. Therefore, Time values should not\nbe used as map or database keys without first guaranteeing that the\nidentical Location has been set for all values, which can be achieved\nthrough use of the UTC or Local method, and that the monotonic clock reading\nhas been stripped by setting t = t.Round(0). In general, prefer t.Equal(u)\nto t == u, since t.Equal uses the most accurate comparison available and\ncorrectly handles the case when only one of its arguments has a monotonic\nclock reading.\n"}, {'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'newText': 'time.Timer'}, 'label': 'time.Timer', 'labelDetails': {}, 'filterText': 'time.Timer', 'detail': 'struct{...}', 'kind': 22, 'insertTextFormat': 2, 'sortText': '00002', 'documentation': 'The Timer type represents a single event.\nWhen the Timer expires, the current time will be sent on C,\nunless the Timer was created by AfterFunc.\nA Timer must be created with NewTimer or AfterFunc.\n'}, {'textEdit': {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'newText': 'time.ANSIC'}, 'label': 'time.ANSIC', 'labelDetails': {}, 'filterText': 'time.ANSIC', 'detail': 'string', 'kind': 21, 'insertTextFormat': 2, 'sortText': '00003', 'documentation': 'These are predefined layouts for use in Time.Format and time.Parse.\nThe reference time used in these layouts is the specific time stamp:\n\n\t01/02 03:04:05PM \'06 -0700\n\n(January 2, 15:04:05, 2006, in time zone seven hours west of GMT).\nThat value is recorded as the constant named Layout, listed below. As a Unix\ntime, this is 1136239445. Since MST is GMT-0700, the reference would be\nprinted by the Unix date command as:\n\n\tMon Jan 2 15:04:05 MST 2006\n\nIt is a regrettable historic error that the date uses the American convention\nof putting the numerical month before the day.\n\nThe example for Time.Format demonstrates the working of the layout string\nin detail and is a good reference.\n\nNote that the RFC822, RFC850, and RFC1123 formats should be applied\nonly to local times. Applying them to UTC times will use "UTC" as the\ntime zone abbreviation, while strictly speaking those RFCs require the\nuse of "GMT" in that case.\nIn general RFC1123Z should be used instead of RFC1123 for servers\nthat insist on that format, and RFC3339 should be preferred for new protocols.\nRFC3339, RFC822, RFC822Z, RFC1123, and RFC1123Z are useful for formatting;\nwhen used with time.Parse they do not accept all the time formats\npermitted by the RFCs and they do accept time formats not formally defined.\nThe RFC3339Nano format removes trailing zeros from the seconds field\nand thus may not sort correctly once formatted.\n\nMost programs can use one of the defined constants as the layout passed to\nFormat or Parse. The rest of this comment can be ignored unless you are\ncreating a custom layout string.\n\nTo define your own format, write down what the reference time would look like\nformatted your way; see the values of constants like ANSIC, StampMicro or\nKitchen for examples. The model is to demonstrate what the reference time\nlooks like so that the Format and Parse methods can apply the same\ntransformation to a general time value.\n\nHere is a summary of the components of a layout string. Each element shows by\nexample the formatting of an element of the reference time. Only these values\nare recognized. Text in the layout string that is not recognized as part of\nthe reference time is echoed verbatim during Format and expected to appear\nverbatim in the input to Parse.\n\n\tYear: "2006" "06"\n\tMonth: "Jan" "January" "01" "1"\n\tDay of the week: "Mon" "Monday"\n\tDay of the month: "2" "_2" "02"\n\tDay of the year: "__2" "002"\n\tHour: "15" "3" "03" (PM or AM)\n\tMinute: "4" "04"\n\tSecond: "5" "05"\n\tAM/PM mark: "PM"\n\nNumeric time zone offsets format as follows:\n\n\t"-0700"     ±hhmm\n\t"-07:00"    ±hh:mm\n\t"-07"       ±hh\n\t"-070000"   ±hhmmss\n\t"-07:00:00" ±hh:mm:ss\n\nReplacing the sign in the format with a Z triggers\nthe ISO 8601 behavior of printing Z instead of an\noffset for the UTC zone. Thus:\n\n\t"Z0700"      Z or ±hhmm\n\t"Z07:00"     Z or ±hh:mm\n\t"Z07"        Z or ±hh\n\t"Z070000"    Z or ±hhmmss\n\t"Z07:00:00"  Z or ±hh:mm:ss\n\nWithin the format string, the underscores in "_2" and "__2" represent spaces\nthat may be replaced by digits if the following number has multiple digits,\nfor compatibility with fixed-width Unix time formats. A leading zero represents\na zero-padded value.\n\nThe formats __2 and 002 are space-padded and zero-padded\nthree-character day of year; there is no unpadded day of year format.\n\nA comma or decimal point followed by one or more zeros represents\na fractional second, printed to the given number of decimal places.\nA comma or decimal point followed by one or more nines represents\na fractional second, printed to the given number of decimal places, with\ntrailing zeros removed.\nFor example "15:04:05,000" or "15:04:05.000" formats or parses with\nmillisecond precision.\n\nSome valid layouts are invalid time values for time.Parse, due to formats\nsuch as _ for space padding and Z for zone information.\n'}]}
:: <<< gopls 40: [{'kind': 'source.organizeImports', 'title': 'Organize Imports', 'edit': {'documentChanges': [{'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 12}, 'edits': [{'range': {'start': {'line': 3, 'character': 0}, 'end': {'line': 3, 'character': 4}}, 'newText': '\t'}, {'range': {'start': {'line': 3, 'character': 7}, 'end': {'line': 4, 'character': 5}}, 'newText': ''}, {'range': {'start': {'line': 4, 'character': 6}, 'end': {'line': 4, 'character': 9}}, 'newText': ''}]}]}}]
:: --> gopls textDocument/documentHighlight(41): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 9, 'character': 8}}
:: --> gopls textDocument/codeLens(42): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: <<< gopls 41: [{'kind': 1, 'range': {'start': {'line': 4, 'character': 4}, 'end': {'line': 4, 'character': 10}}}, {'kind': 1, 'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}}]
:: <<< gopls 42: None
::  -> gopls textDocument/didChange: {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 13}, 'contentChanges': [{'rangeLength': 0, 'range': {'start': {'line': 9, 'character': 8}, 'end': {'line': 9, 'character': 8}}, 'text': '.'}]}
:: --> gopls textDocument/documentLink(43): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: --> gopls textDocument/completion(44): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 9, 'character': 9}}
:: <<< gopls 43: [{'target': 'https://pkg.go.dev/fmt?utm_source=gopls', 'range': {'start': {'line': 3, 'character': 5}, 'end': {'line': 3, 'character': 8}}}, {'target': 'https://pkg.go.dev/time?utm_source=gopls', 'range': {'start': {'line': 4, 'character': 5}, 'end': {'line': 4, 'character': 9}}}]
:: <-  gopls textDocument/publishDiagnostics: {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'diagnostics': [{'severity': 1, 'range': {'start': {'line': 9, 'character': 10}, 'end': {'line': 9, 'character': 10}}, 'source': 'syntax', 'message': "expected selector or type assertion, found '}'"}], 'version': 13}
:: --> gopls textDocument/codeAction(45): {'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 9}}, 'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'context': {'diagnostics': [{'severity': 1, 'range': {'start': {'line': 9, 'character': 10}, 'end': {'line': 9, 'character': 10}}, 'source': 'syntax', 'message': "expected selector or type assertion, found '}'"}]}}
:: <<< gopls 44: <params with 93756 characters>
:: <<< gopls 45: [{'kind': 'source.organizeImports', 'title': 'Organize Imports', 'edit': {'documentChanges': [{'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 13}, 'edits': [{'range': {'start': {'line': 3, 'character': 0}, 'end': {'line': 3, 'character': 4}}, 'newText': '\t'}, {'range': {'start': {'line': 3, 'character': 7}, 'end': {'line': 4, 'character': 5}}, 'newText': ''}, {'range': {'start': {'line': 4, 'character': 6}, 'end': {'line': 4, 'character': 9}}, 'newText': ''}]}]}}]
:: --> gopls textDocument/documentHighlight(46): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 9, 'character': 9}}
:: --> gopls textDocument/codeLens(47): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: <<< gopls 46: [{'kind': 1, 'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 10}}}]
:: <<< gopls 47: None
::  -> gopls textDocument/didChange: {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 14}, 'contentChanges': [{'rangeLength': 0, 'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 9}}, 'text': 'A'}]}
:: --> gopls textDocument/documentLink(48): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: --> gopls textDocument/completion(49): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 9, 'character': 10}}
:: <<< gopls 48: [{'target': 'https://pkg.go.dev/fmt?utm_source=gopls', 'range': {'start': {'line': 3, 'character': 5}, 'end': {'line': 3, 'character': 8}}}, {'target': 'https://pkg.go.dev/time?utm_source=gopls', 'range': {'start': {'line': 4, 'character': 5}, 'end': {'line': 4, 'character': 9}}}]
:: <-  gopls textDocument/publishDiagnostics: {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'diagnostics': [{'severity': 1, 'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 10}}, 'code': 'UndeclaredImportedName', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#UndeclaredImportedName'}, 'message': 'A not declared by package time', 'source': 'compiler'}], 'version': 14}
:: --> gopls textDocument/codeAction(50): {'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 10}}, 'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'context': {'diagnostics': [{'severity': 1, 'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 10}}, 'code': 'UndeclaredImportedName', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#UndeclaredImportedName'}, 'message': 'A not declared by package time', 'source': 'compiler'}]}}
:: <<< gopls 49: {'itemDefaults': {'editRange': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 0}}}, 'isIncomplete': True, 'items': [{'textEdit': {'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 10}}, 'newText': 'ANSIC'}, 'label': 'ANSIC', 'labelDetails': {}, 'filterText': 'ANSIC', 'detail': 'string', 'kind': 21, 'preselect': True, 'insertTextFormat': 2, 'sortText': '00000', 'documentation': 'These are predefined layouts for use in Time.Format and time.Parse.\nThe reference time used in these layouts is the specific time stamp:\n\n\t01/02 03:04:05PM \'06 -0700\n\n(January 2, 15:04:05, 2006, in time zone seven hours west of GMT).\nThat value is recorded as the constant named Layout, listed below. As a Unix\ntime, this is 1136239445. Since MST is GMT-0700, the reference would be\nprinted by the Unix date command as:\n\n\tMon Jan 2 15:04:05 MST 2006\n\nIt is a regrettable historic error that the date uses the American convention\nof putting the numerical month before the day.\n\nThe example for Time.Format demonstrates the working of the layout string\nin detail and is a good reference.\n\nNote that the RFC822, RFC850, and RFC1123 formats should be applied\nonly to local times. Applying them to UTC times will use "UTC" as the\ntime zone abbreviation, while strictly speaking those RFCs require the\nuse of "GMT" in that case.\nIn general RFC1123Z should be used instead of RFC1123 for servers\nthat insist on that format, and RFC3339 should be preferred for new protocols.\nRFC3339, RFC822, RFC822Z, RFC1123, and RFC1123Z are useful for formatting;\nwhen used with time.Parse they do not accept all the time formats\npermitted by the RFCs and they do accept time formats not formally defined.\nThe RFC3339Nano format removes trailing zeros from the seconds field\nand thus may not sort correctly once formatted.\n\nMost programs can use one of the defined constants as the layout passed to\nFormat or Parse. The rest of this comment can be ignored unless you are\ncreating a custom layout string.\n\nTo define your own format, write down what the reference time would look like\nformatted your way; see the values of constants like ANSIC, StampMicro or\nKitchen for examples. The model is to demonstrate what the reference time\nlooks like so that the Format and Parse methods can apply the same\ntransformation to a general time value.\n\nHere is a summary of the components of a layout string. Each element shows by\nexample the formatting of an element of the reference time. Only these values\nare recognized. Text in the layout string that is not recognized as part of\nthe reference time is echoed verbatim during Format and expected to appear\nverbatim in the input to Parse.\n\n\tYear: "2006" "06"\n\tMonth: "Jan" "January" "01" "1"\n\tDay of the week: "Mon" "Monday"\n\tDay of the month: "2" "_2" "02"\n\tDay of the year: "__2" "002"\n\tHour: "15" "3" "03" (PM or AM)\n\tMinute: "4" "04"\n\tSecond: "5" "05"\n\tAM/PM mark: "PM"\n\nNumeric time zone offsets format as follows:\n\n\t"-0700"     ±hhmm\n\t"-07:00"    ±hh:mm\n\t"-07"       ±hh\n\t"-070000"   ±hhmmss\n\t"-07:00:00" ±hh:mm:ss\n\nReplacing the sign in the format with a Z triggers\nthe ISO 8601 behavior of printing Z instead of an\noffset for the UTC zone. Thus:\n\n\t"Z0700"      Z or ±hhmm\n\t"Z07:00"     Z or ±hh:mm\n\t"Z07"        Z or ±hh\n\t"Z070000"    Z or ±hhmmss\n\t"Z07:00:00"  Z or ±hh:mm:ss\n\nWithin the format string, the underscores in "_2" and "__2" represent spaces\nthat may be replaced by digits if the following number has multiple digits,\nfor compatibility with fixed-width Unix time formats. A leading zero represents\na zero-padded value.\n\nThe formats __2 and 002 are space-padded and zero-padded\nthree-character day of year; there is no unpadded day of year format.\n\nA comma or decimal point followed by one or more zeros represents\na fractional second, printed to the given number of decimal places.\nA comma or decimal point followed by one or more nines represents\na fractional second, printed to the given number of decimal places, with\ntrailing zeros removed.\nFor example "15:04:05,000" or "15:04:05.000" formats or parses with\nmillisecond precision.\n\nSome valid layouts are invalid time values for time.Parse, due to formats\nsuch as _ for space padding and Z for zone information.\n'}, {'textEdit': {'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 10}}, 'newText': 'After(${1:})'}, 'label': 'After', 'labelDetails': {}, 'filterText': 'After', 'detail': 'func(d time.Duration) <-chan time.Time', 'kind': 3, 'insertTextFormat': 2, 'sortText': '00001', 'documentation': 'After waits for the duration to elapse and then sends the current time\non the returned channel.\nIt is equivalent to NewTimer(d).C.\nThe underlying Timer is not recovered by the garbage collector\nuntil the timer fires. If efficiency is a concern, use NewTimer\ninstead and call Timer.Stop if the timer is no longer needed.\n'}, {'textEdit': {'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 10}}, 'newText': 'AfterFunc(${1:})'}, 'label': 'AfterFunc', 'labelDetails': {}, 'filterText': 'AfterFunc', 'detail': 'func(d time.Duration, f func()) *time.Timer', 'kind': 3, 'insertTextFormat': 2, 'sortText': '00002', 'documentation': 'AfterFunc waits for the duration to elapse and then calls f\nin its own goroutine. It returns a Timer that can\nbe used to cancel the call using its Stop method.\n'}, {'label': 'April', 'labelDetails': {}, 'textEdit': {'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 10}}, 'newText': 'April'}, 'detail': 'time.Month', 'kind': 21, 'insertTextFormat': 2, 'sortText': '00003', 'filterText': 'April'}, {'label': 'August', 'labelDetails': {}, 'textEdit': {'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 10}}, 'newText': 'August'}, 'detail': 'time.Month', 'kind': 21, 'insertTextFormat': 2, 'sortText': '00004', 'filterText': 'August'}, {'textEdit': {'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 10}}, 'newText': 'April.String()'}, 'label': 'April.String', 'labelDetails': {}, 'filterText': 'April.String', 'detail': 'func() string', 'kind': 2, 'insertTextFormat': 2, 'sortText': '00005', 'documentation': 'String returns the English name of the month ("January", "February", ...).\n'}, {'textEdit': {'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 10}}, 'newText': 'August.String()'}, 'label': 'August.String', 'labelDetails': {}, 'filterText': 'August.String', 'detail': 'func() string', 'kind': 2, 'insertTextFormat': 2, 'sortText': '00006', 'documentation': 'String returns the English name of the month ("January", "February", ...).\n'}, {'textEdit': {'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 10}}, 'newText': 'Hour.Abs()'}, 'label': 'Hour.Abs', 'labelDetails': {}, 'filterText': 'Hour.Abs', 'detail': 'func() time.Duration', 'kind': 2, 'insertTextFormat': 2, 'sortText': '00007', 'documentation': 'Abs returns the absolute value of d.\nAs a special case, math.MinInt64 is converted to math.MaxInt64.\n'}]}
:: <<< gopls 50: [{'kind': 'source.organizeImports', 'title': 'Organize Imports', 'edit': {'documentChanges': [{'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 14}, 'edits': [{'range': {'start': {'line': 3, 'character': 0}, 'end': {'line': 3, 'character': 4}}, 'newText': '\t'}, {'range': {'start': {'line': 4, 'character': 0}, 'end': {'line': 4, 'character': 4}}, 'newText': '\t'}]}]}}]
:: --> gopls textDocument/documentHighlight(51): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 9, 'character': 10}}
:: --> gopls textDocument/codeLens(52): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: <<< gopls 51: [{'kind': 1, 'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 10}}}]
:: <<< gopls 52: None
::  -> gopls textDocument/didChange: {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 16}, 'contentChanges': [{'rangeLength': 1, 'range': {'start': {'line': 9, 'character': 9}, 'end': {'line': 9, 'character': 10}}, 'text': ''}, {'rangeLength': 1, 'range': {'start': {'line': 9, 'character': 8}, 'end': {'line': 9, 'character': 9}}, 'text': ''}]}
:: --> gopls textDocument/documentLink(53): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: --> gopls textDocument/documentHighlight(54): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'position': {'line': 9, 'character': 8}}
:: --> gopls textDocument/codeLens(55): {'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}}
:: <<< gopls 53: [{'target': 'https://pkg.go.dev/fmt?utm_source=gopls', 'range': {'start': {'line': 3, 'character': 5}, 'end': {'line': 3, 'character': 8}}}, {'target': 'https://pkg.go.dev/time?utm_source=gopls', 'range': {'start': {'line': 4, 'character': 5}, 'end': {'line': 4, 'character': 9}}}]
:: <-  gopls textDocument/publishDiagnostics: {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'diagnostics': [{'severity': 1, 'range': {'start': {'line': 4, 'character': 4}, 'end': {'line': 4, 'character': 10}}, 'code': 'UnusedImport', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#UnusedImport'}, 'message': '"time" imported but not used', 'source': 'compiler'}, {'severity': 1, 'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'code': 'InvalidPkgUse', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#InvalidPkgUse'}, 'message': 'use of package time not in selector', 'source': 'compiler'}], 'version': 16}
:: --> gopls textDocument/codeAction(56): {'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go'}, 'context': {'diagnostics': [{'severity': 1, 'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}, 'code': 'InvalidPkgUse', 'codeDescription': {'href': 'https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#InvalidPkgUse'}, 'message': 'use of package time not in selector', 'source': 'compiler'}]}}
:: <<< gopls 54: [{'kind': 1, 'range': {'start': {'line': 4, 'character': 4}, 'end': {'line': 4, 'character': 10}}}, {'kind': 1, 'range': {'start': {'line': 9, 'character': 4}, 'end': {'line': 9, 'character': 8}}}]
:: <<< gopls 55: None
:: <<< gopls 56: [{'kind': 'source.organizeImports', 'title': 'Organize Imports', 'edit': {'documentChanges': [{'textDocument': {'uri': 'file:///C:/Users/WDAGUtilityAccount/go-project/main.go', 'version': 16}, 'edits': [{'range': {'start': {'line': 3, 'character': 0}, 'end': {'line': 3, 'character': 4}}, 'newText': '\t'}, {'range': {'start': {'line': 3, 'character': 7}, 'end': {'line': 4, 'character': 5}}, 'newText': ''}, {'range': {'start': {'line': 4, 'character': 6}, 'end': {'line': 4, 'character': 9}}, 'newText': ''}]}]}}]

Huge thanks
Fotis

Looks like sublimelsp/LSP#1228 and I believe it's fixed in the latest ST (dev) builds.

Looks like sublimelsp/LSP#1228 and I believe it's fixed in the latest ST (dev) builds.

Thanks so much for the reply! I've just confirmed this is working with the latest dev build 4137. Closing 😄