我正在观察从emacs调用的goimports
命令的令人费解的行为。我使用的是svgo go软件包,以及doc导入中的最小程序示例"github.com/ajstarks/svgo
"
代码工作正常。 goimports
命令是一个"工具,用于自动修复(添加,删除)Go导入"。由于需要"github.com/ajstarks/svgo"
,因此我不希望goimports
将其删除。当我从终端呼叫它时它是真的:
$ head gg.go
package main
import (
"os"
"github.com/ajstarks/svgo"
)
func main() {
然后:
$ goimports gg.go | head
package main
import (
"os"
"github.com/ajstarks/svgo"
)
func main() {
正如预期的那样,它只是在"首先是标准库,然后是外部包"之后重新排列导入。现在有趣的是:当我从emacs调用goimports
时,它会删除"github.com/ajstarks/svgo"
行!(并且程序不再编译)。
这是我的.init文件中的相关部分:
(setq exec-path (cons "/usr/local/go/bin" exec-path))
(add-to-list 'exec-path "~/go/bin")
(defun my-go-mode-hook ()
(setq gofmt-command "goimports") ; Use goimports instead of go-fmt
(add-hook 'before-save-hook 'gofmt-before-save))
(add-hook 'go-mode-hook 'my-go-mode-hook)
如果我对(setq gofmt-command "goimports")
行发表评论,则svgo
导入不会被删除。
这怎么可能?