VScode에서 gopls를 사용하면 import이 자동으로 삭제됩니다.

이번 질문은 제가 처음부터 잘 사용하던 import이었으면 좋겠는데 한번 써보고 Ctrl+S를 먼저 누르는 습관이 있어서 이런 기사를 썼습니다.

컨디션

  • Windows10
  • go version go1.15.2 windows/amd64
  • vscode-go를 통해 gopls
  • 가져오기
  • 로컬formatTool:gofmt
  • VScode의 Gopls 설정 섹션은 다음 설명서에 따라 설정됩니다.
    https://github.com/golang/tools/blob/master/gopls/doc/vscode.md

    문제.


    저장할 때 임의로 import을 정리합니다
    이후 설치된 부분이 삭제되어 매우 번거롭다

    원인을 구분하다


    여러모로 조사한 결과 Language 서버를 사용할 때 이러한 문제가 발생할 수 있음을 알 수 있었습니다.
    그래서 범인은 아마 gopls...?이런 결론을 얻었다

    Issue


    역시 같은 문제를 안고 있는 사람이 있어요.
    https://github.com/microsoft/vscode-go/issues/2498
    However, when using gopls the following behavior happens:
  • Files are always formatted on save
  • Imports are reordered
  • 해결하다


    이러한 Issue의 해결 방법에는 "source.organizeImports": false이 있습니다.
    설정의 해당 부분을 가짜로 설정하면 의도적인 동작이 됩니다.
    결국 내 세팅스는다음은 json
    {
        "go.formatTool": "gofmt",
        "go.lintOnSave": "off",
        "go.lintTool": "golangci-lint",
        "go.useLanguageServer": true,
        "[go]": {
            "editor.formatOnSave": false,
            "editor.codeActionsOnSave": {
                "source.organizeImports": false
            },
            // Optional: Disable snippets, as they conflict with completion ranking.
            "editor.snippetSuggestions": "none"
        },
        "[go.mod]": {
            "editor.formatOnSave": false,
            "editor.codeActionsOnSave": {
                "source.organizeImports": true
            }
        },
        "go.languageServerExperimentalFeatures": {
            "format": false,
            "autoComplete": true
        },
        "gopls": {
            // Add parameter placeholders when completing a function.
            "usePlaceholders": true,
    
            // If true, enable additional analyses with staticcheck.
            // Warning: This will significantly increase memory usage.
            "staticcheck": false
        }
    }
    
    이상

    좋은 웹페이지 즐겨찾기