Language-tools: Le format lors de l'enregistrement ne fonctionne pas comme prévu

Créé le 24 juin 2020  ·  16Commentaires  ·  Source: sveltejs/language-tools

Décrivez le bogue
Lorsqu'un document .svelte est formaté lors de l'enregistrement, l'indentation ne change pas.

Reproduire

  1. Installez Svelte Beta pour VScode.
  2. Ouvrez n'importe quel fichier .svelte
  3. Enregistrer (assurez-vous que "formater lors de l'enregistrement" est activé dans les paramètres VScode).

Comportement prévisible
Je m'attends à ce que le code soit formaté lors de l'enregistrement.

Captures d'écran
Un exemple de code non formaté ci-dessous.
CleanShot 2020-06-24 at 12 17 15@2x

Système (veuillez compléter les informations suivantes):

  • OS: Mac
  • IDE: VScode
  • Plugin / Paquet: Svelte Beta

Contexte supplémentaire
J'utilise ceci avec .editorconfig .

bug

Commentaire le plus utile

Avez-vous défini la valeur par défaut sur tous les types de fichiers?

Oui je l'ai fait. Je suis assez nouveau dans VSCode .. \
Maintenant, j'utilise les paramètres suivants, qui fonctionnent comme un charme:

  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "[svelte]": {
    "editor.defaultFormatter": "svelte.svelte-vscode"
  },

Merci à tous d'avoir résolu ce problème!

Tous les 16 commentaires

Cela signifie-t-il que si vous effectuez un formatage «à la main» (avec le tri / commande), le code est formaté? Ou n'est-il pas du tout formaté?

J'ai essayé de le déboguer davantage. J'ai essayé d'inclure une configuration .prettierrc et d'installer Prettier et j'ai pu faire fonctionner quelque chose. Depuis la désactivation de Prettier et la suppression de la configuration .prettierrc il n'y a plus de problème et il se formate lors de l'enregistrement. Je suppose que même avant le formatage à la main, cela n'aurait pas fonctionné.

Je devrais désinstaller VScode et essayer à partir de zéro si j'ai le temps.

Je ne connais pas le fonctionnement du formatage, mais je pense aux scénarios suivants:

  • Doit-il formater sans Prettier installé?
  • Doit-il formater sans une configuration .prettierrc ?
  • Doit-il récupérer la configuration de .editorconfig ? Actuellement, la configuration de l'éditeur fonctionne lorsque .prettierrc est présent.
  • Il devrait pouvoir se formater sans que Prettier soit installé
  • Il doit se mettre en forme sans .prettierrc config
  • Il ne récupère actuellement pas la configuration de .editorconfig , mais cela peut être ajouté.

Sous le capot, le formatage fonctionne comme suit:

  1. Essayez de résoudre plus joli. Première recherche dans node_modules de l'utilisateur, retour à sa propre version, si elle n'est pas présente.
  2. Essayez de trouver un fichier de configuration. S'il n'y en a pas, pas de problème, les valeurs par défaut sont utilisées.
  3. Formatez le fichier en utilisant prettier-plugin-svelte .

Si vous essayez de formater mais que cela ne formate rien, pourriez-vous regarder dans Output-> Svelte et voir s'il y a quelque chose de suspect (ou simplement copier le journal ici)?

Merci d'avoir clarifié ces points. Si j'en ai l'occasion, j'essaierai de réinstaller VScode et de reproduire le problème.

J'ai la même erreur. Le code n'est pas modifié lors de l'enregistrement. \
Cela se produit uniquement dans les fichiers .svelte , les autres fichiers seront automatiquement formatés lors de l'enregistrement. \
Ma sortie-> Svelte n'imprime que la ligne Using Svelte v3.24.0 from .... \
Output-> Prettier reste vide sur les fichiers .svelte , mais fonctionne comme prévu et remplit la sortie sur d'autres fichiers (par exemple: js, ts, ..)

Déclenchés via la console prettier --write "**/*.{css,html,js,json,md,scss,svelte,ts,yml}" , les fichiers svelte seront automatiquement formatés - mais pas après l'enregistrement dans vs-code.

Formate-t-il si vous invoquez explicitement la commande "format" ou ne formate-t-il pas du tout?

Formate-t-il si vous invoquez explicitement la commande "format" ou ne formate-t-il pas du tout?

Si je force le format vs-code ( ctr + shift + i ), il formate tous les fichiers à l'exception des fichiers * .svelte.

Il y a un paramètre svelte.format.enable , est-il défini sur true dans vos paramètres?

Vous avez dit qu'à l'intérieur de Output-Svelte, seul Using svelte ... est affiché, ce qui signifie qu'il n'obtient même pas le code de formatage. Si c'est le cas, il devrait également y avoir Using Prettier ... dans la sortie.

Il y a un paramètre svelte.format.enable , est-il défini sur true dans vos paramètres?

Oui, ce paramètre est vrai

Vous avez dit qu'à l'intérieur de Output-Svelte, seul Using svelte ... est affiché, ce qui signifie qu'il n'obtient même pas le code de formatage. Si c'est le cas, il devrait également y avoir Using Prettier ... dans la sortie.

Il me semble que l'IDE et la console ne fonctionnent pas avec les mêmes options / paramètres.

Hier, j'ai ajouté l'option de prétraiter sass, qui fonctionne bien, sans aucun problème (via cli webpack-dev-server --config config/webpack.config.js --progress ), mais l'EDI renvoie une erreur (Output Svelte):

Using Svelte v3.24.0 from /home/user/path/project/node_modules/svelte/compiler
Preprocessing failed
Error: Cannot find any of modules: sass,node-sass
    at Object.importAny (/home/user/path/project/node_modules/svelte-preprocess/dist/modules/importAny.js:29:15) {
  __source: 'Style'
}

Peut-être que c'est lié.

Je pense que c'est une question sans rapport. Vous devez installer soit sass (recommandé) ou node-sass . Voir ici pour plus d'informations .

Je pense que c'est une question sans rapport. Vous devez installer soit sass (recommandé) ou node-sass . Voir ici pour plus d'informations .

Merci pour le lien. Je viens d'ajouter le chemin binaire du nœud dans svelte.language-server.runtime , ce qui résout l'erreur none-sass: zap :.

Les paramètres svelte.language-server.ls-path et svelte.language-server.port sont vides. Tous les autres paramètres tels que svelte.plugin.typescript.enable sont activés.

@ s0me0ther @limitlessloop pouvez-vous vérifier si cela pourrait être la cause de votre problème? https://github.com/sveltejs/prettier-plugin-svelte/issues/74#issuecomment -665831712

@ s0me0ther @limitlessloop pouvez-vous vérifier si cela pourrait être la cause de votre problème? sveltejs / joli-plugin-svelte # 74 (commentaire)

@dummdidumm , cela fonctionne très bien pour les fichiers svelte maintenant, merci! \
Mais, si je change le formateur par défaut de esbenp.prettier-vscode à svelte.svelte-vscode je ne peux formater que des fichiers svelte: /. \
Existe-t-il un moyen d'utiliser différents formateurs sur différents types de fichiers?

Avez-vous défini la valeur par défaut sur tous les types de fichiers?

Avez-vous défini la valeur par défaut sur tous les types de fichiers?

Oui je l'ai fait. Je suis assez nouveau dans VSCode .. \
Maintenant, j'utilise les paramètres suivants, qui fonctionnent comme un charme:

  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "[svelte]": {
    "editor.defaultFormatter": "svelte.svelte-vscode"
  },

Merci à tous d'avoir résolu ce problème!

Cette page vous a été utile?
0 / 5 - 0 notes