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

Comments

@myitcv
Copy link
Member

@myitcv 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

@gopherbot gopherbot added this to the Unreleased milestone Nov 1, 2019
@gopherbot gopherbot added the Tools label Nov 1, 2019
@stamblerre

This comment has been minimized.

Copy link
Contributor

@stamblerre stamblerre commented Nov 1, 2019

@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

This comment has been minimized.

Copy link

@ianthehat ianthehat commented Nov 1, 2019

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

This comment has been minimized.

Copy link
Member Author

@myitcv 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

This comment has been minimized.

Copy link
Contributor

@stamblerre stamblerre commented Nov 1, 2019

Closing as working as intended.

@stamblerre stamblerre closed this Nov 1, 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
4 participants
You can’t perform that action at this time.