Exécuter gofmt lors de l'enregistrement de fichiers dans IntelliJ

89

J'utilise IntelliJ avec le plugin Golang. Est-il possible de configurer l'EDI pour exécuter gofmt lors de la sauvegarde du fichier?

Myles McDonnell
la source
3
Je recommanderais d'utiliser godoc.org/golang.org/x/tools/cmd/goimports au lieu du gofmt standard. Goimports exécute non seulement gofmt, mais corrige également vos importations.
David Brophy

Réponses:

133

Bien sûr vous pouvez.

  1. installer le plugin File Watchers
  2. ouvrez "Préférences-> Outils-> File Watchers" et ajoutez un nouvel observateur
  3. définir File Type: Go, Program: le chemin d'abosolute de gofmt, Arguments:-w $FilePath$
  4. Cliquez sur OK

entrez la description de l'image ici

oui
la source
4
Cela reformate toujours tous les fichiers de mon dépôt, même Godeps / *. J'ai donc codé en dur mon chemin à la place. Un moyen d'utiliser $ FilePath $ sans formater récursivement chaque fichier du dépôt à chaque fois? On dirait que FilePath a un effet domino pour moi.
jayunit100
1
@ jayunit100 Vous pouvez configurer le paramètre Scope 1. ajoutez une portée locale 2. nommez-la et définissez Pattern sur: fichier [$ proj]: * / &&! fichier [$ proj]: Godeps // *! instantané
yee
1
Cela ne me permet pas de modifier mes fichiers. Lorsque j'essaye d'ajouter une nouvelle ligne pour coder un peu plus, le programme me ramène à la ligne précédente et supprime ma nouvelle ligne. comment puis-je arrêter ça? note: en utilisant phpstorm
bia.migueis
6
peu importe, je l'ai compris. "synchronisation de fichier immédiate" fera que fmt s'exécutera dès que vous apporterez des modifications. il suffit de le désélectionner et il ne fonctionnera que lors de la sauvegarde du fichier (ou de la fenêtre floue)
bia.migueis
1
Attention, cette réponse est quelque peu dépassée maintenant: le plugin File Watchers a maintenant un observateur "go fmt" pré-construit que vous pouvez ajouter sans avoir besoin de faire beaucoup de travail.
Aaron Shaver
61

Gogland EAP 16 a déprécié les actions On Save et les a remplacées par le plugin File Watchers .

Si vous avez précédemment configuré des actions Lors de l'enregistrement, l'EDI vous invitera à installer le plugin et à tout configurer automatiquement. Si vous souhaitez le configurer vous-même à partir de zéro, vérifiez si vous disposez du plugin File Watchers et sinon installez-le.

Activer gofmt:

  1. Allez à Settings | Tools | File Watchers.
  2. Cliquez sur le +bouton et sélectionnez go fmt.
  3. Les valeurs par défaut sont bonnes.
  4. Dans Options avancées, sélectionnez:
    • Sauvegarde automatique des fichiers modifiés pour déclencher l'observateur
    • Déclenchez l'observateur sur les changements externes
  5. Cliquez sur OK!

Config

Vous pouvez faire de même pour goimportset gometalinter.

David Miguel
la source
8
En fait, il est préférable de configurer uniquement goimports au lieu de go fmt car il exécute également fmt, comme spécifié dans la documentation goimports: "en plus de corriger les importations, goimports formate également votre code dans le même style que gofmt afin qu'il puisse être utilisé en remplacement pour le crochet gofmt-on-save de votre éditeur "
dux2
2
C'est la bonne réponse pour Goland en octobre 2018
George Aristy
54

Si vous utilisez Gogland, vous avez une option Sur Enregistrer sous Préférences

entrez la description de l'image ici

Arun Gopalpuri
la source
1
gogland n'est pas le même que le plugin go.
spotter
C'est presque la même chose que le plugin python vs pycharm. La seule différence possible est le retard des mises à jour. Sinon, il vous offre exactement le même ensemble de fonctionnalités.
Alex Pavlenko
24
Le mécanisme Lors de l'enregistrement est obsolète et sera supprimé à l'avenir. Utilisez plutôt le plugin File Watchers
Zangetsu
3
Mais même dans le dernier GoLand, je ne vois pas cette option. Je pense que lorsque le clic droit sur le nom du fichier, sous "Go", je peux fmt fichier. mais je ne vois pas l'option pour l'activer pendant la sauvegarde automatique.
curiousengineer