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: formatting adds terminal newlines #35312

Closed
myitcv opened this issue Nov 1, 2019 · 4 comments
Closed

x/tools/gopls: formatting adds terminal newlines #35312

myitcv opened this issue Nov 1, 2019 · 4 comments
Labels
FrozenDueToAge gopls Issues related to the Go language server, gopls. NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. Tools This label describes issues relating to any tools in the x/tools repository.
Milestone

Comments

@myitcv
Copy link
Member

myitcv commented Nov 1, 2019

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

$ go version
go version devel +03bb3e9ad1 Wed Oct 16 06:29:51 2019 +0000 linux/amd64
$ go list -m golang.org/x/tools
golang.org/x/tools v0.0.0-20191101175824-a860bcda08c7
$ go list -m golang.org/x/tools/gopls
golang.org/x/tools/gopls v0.1.8-0.20191101175824-a860bcda08c7

Does this issue reproduce with the latest release?

Yes

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

go env Output
$ go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/myitcv/.cache/go-build"
GOENV="/home/myitcv/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/myitcv/gostuff"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/home/myitcv/gos"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/home/myitcv/gos/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/home/myitcv/gostuff/src/github.com/myitcv/govim/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build529515694=/tmp/go-build -gno-record-gcc-switches"

What did you do?

With the following input:

package main

func main() {
	println("Hello, world!")
}



  
  

and calling Formatting.

What did you expect to see?

Edits that result in:

package main

func main() {
	println("Hello, world!")
}

consistent with the results from gofmt

What did you see instead?

Edits that result in:

package main

func main() {
	println("Hello, world!")
}
  

This is because the following response was received:

gopls.Formatting() return; err: <nil>; res:
[]protocol.TextEdit{
    {
        Range: protocol.Range{
            Start: protocol.Position{Line:5, Character:0},
            End:   protocol.Position{Line:10, Character:0},
        },
        NewText: "",
    },
}

i.e. the start position is wrong. It should be: protocol.Position{Line:4, Character:1}


cc @stamblerre @ianthehat

@myitcv myitcv added NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. gopls Issues related to the Go language server, gopls. labels Nov 1, 2019
@gopherbot gopherbot added this to the Unreleased milestone Nov 1, 2019
@gopherbot gopherbot added the Tools This label describes issues relating to any tools in the x/tools repository. label Nov 1, 2019
@stamblerre
Copy link
Contributor

@ianthehat: Do we always add a terminal newline to files? I thought that gofmt always did this but it seems it doesn't.

@stamblerre stamblerre changed the title x/tools/gopls: Formatting is off-by-one at EOF x/tools/gopls: formatting adds terminal newlines Nov 1, 2019
@ianthehat
Copy link

gofmt would add the terminal newline
is this with go-diff or not?
the return looks correct to me, it is removing all the trailing lines, starting with the beginning of the first unwanted line and going to beyond the end of the file.

@myitcv
Copy link
Member Author

myitcv commented Nov 1, 2019

Thanks very much.

This is with go-diff (recently enabled by default).

Hmm it does look like something is wrong with either my understanding/govim here. Let me dig further (apologies @stamblerre, I was wrong on Slack too!)

@stamblerre
Copy link
Contributor

Closing as working as intended.

@golang golang locked and limited conversation to collaborators Oct 31, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
FrozenDueToAge gopls Issues related to the Go language server, gopls. NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. Tools This label describes issues relating to any tools in the x/tools repository.
Projects
None yet
Development

No branches or pull requests

4 participants