Execute gofmt no arquivo salvo no IntelliJ

91

Eu uso o IntelliJ com o plugin Golang. É possível configurar o IDE para executar gofmt ao salvar o arquivo?

Myles McDonnell
fonte
3
Eu recomendo usar godoc.org/golang.org/x/tools/cmd/goimports em vez do gofmt padrão. Goimports não apenas executa gofmt, mas também corrige suas importações.
David Brophy

Respostas:

136

Claro que você pode.

  1. instalar o plugin File Watchers
  2. abra "Preferências-> Ferramentas-> Observadores de Arquivos" e adicione um novo observador
  3. definir File Type: Go, Program: o caminho abosolute de gofmt, Arguments:-w $FilePath$
  4. clique OK

insira a descrição da imagem aqui

sim
fonte
4
Isso sempre reformata todos os arquivos em meu repo, até mesmo Godeps / *. Então, em vez disso, codifiquei meu caminho. Existe alguma maneira de usar $ FilePath $ sem formatar recursivamente todos os arquivos no repo todas as vezes? Parece que o FilePath está tendo um efeito dominó para mim.
jayunit100
1
@ jayunit100 Você pode configurar o parâmetro de escopo 1. adicionar um escopo local 2. nomeá-lo e definir o padrão para: arquivo [$ proj]: * / &&! arquivo [$ proj]: Godeps // *! instantâneo
yee
1
Isso não me permite editar meus arquivos. Quando tento adicionar uma nova linha para codificar um pouco mais, o programa me traz de volta à linha anterior e exclui minha nova linha. como faço para parar isso? observação: usando phpstorm
bia.migueis
6
deixa pra lá, eu descobri. "sincronização imediata de arquivos" fará com que fmt seja executado assim que você fizer qualquer alteração. apenas desmarque-o e ele só será executado ao salvar o arquivo (ou a janela
desfocar
1
Atenção, esta resposta está um tanto desatualizada agora: o plug-in File Watchers agora tem um watcher "go fmt" pré-construído que você pode adicionar sem precisar fazer muito trabalho.
Aaron Shaver
61

Gogland EAP 16 descontinuou as ações On Save e as substituiu pelo plugin File Watchers .

Se você configurou anteriormente as ações On Save, o IDE solicitará que você instale o plugin e configure tudo automaticamente. Se você mesmo deseja configurá-lo do zero, verifique se possui o plugin File Watchers e se não o instala.

Habilitar gofmt:

  1. Vá para Settings | Tools | File Watchers.
  2. Clique no +botão e selecione go fmt.
  3. Os valores padrão são bons.
  4. Em Opções Avançadas, selecione:
    • Salve arquivos editados automaticamente para acionar o observador
    • Acione o observador em mudanças externas
  5. Clique OK!

Config

Você pode fazer o mesmo por goimportse gometalinter.

David Miguel
fonte
8
Na verdade, é melhor configurar apenas goimports em vez de go fmt porque também executa fmt, conforme especificado nos documentos goimports: "além de corrigir as importações, goimports também formata seu código no mesmo estilo do gofmt para que possa ser usado como um substituto para o gancho gofmt-on-save do seu editor "
dux2
2
Esta é a resposta correta para Goland em outubro de 2018
George Aristy
54

Se você estiver usando o Gogland, terá uma opção ao salvar em Preferências

insira a descrição da imagem aqui

Arun Gopalpuri
fonte
1
gogland não é o mesmo que o plugin go.
observador de
É quase igual ao plugin python vs pycharm. A única diferença possível é o atraso nas atualizações. Fora isso - fornece exatamente o mesmo conjunto de recursos.
Alex Pavlenko
25
O mecanismo ao salvar está obsoleto e será removido no futuro. Em vez disso, use o plug-in File Watchers
Zangetsu
3
Mas mesmo no último GoLand, não vejo essa opção. Achei que, ao clicar com o botão direito no nome do arquivo, em "Ir", posso fmt o arquivo. mas não vejo a opção de habilitá-lo durante o salvamento automático.
Curioso