Language-tools: 保存时的格式无法正常工作

创建于 2020-06-24  ·  16评论  ·  资料来源: sveltejs/language-tools

描述错误
在保存时格式化.svelte文档时,缩进不会更改。

重现

  1. 安装Svelte Beta for VScode。
  2. 打开任何.svelte文件
  3. 保存(确保在VScode设置中启用了“保存时格式化”)。

预期行为
我希望代码可以在保存时格式化。

屏幕截图
下面未格式化代码的示例。
CleanShot 2020-06-24 at 12 17 15@2x

系统(请完成以下信息):

  • 操作系统:Mac
  • IDE:VScode
  • 插件/软件包:Svelte Beta

额外的背景
我将此与.editorconfig

最有用的评论

您是否将默认设置为所有文件类型?

是的,我做到了。 我是VSCode的新手。
现在,我使用以下设置,它的工作原理像一个超级按钮:

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

谢谢大家解决这个问题!

所有16条评论

这是否意味着如果您要“手动”格式化(使用sortcut /命令),则代码将被格式化? 还是根本不格式化?

我尝试进一步调试它。 我尝试包括.prettierrc配置并安装Prettier,但我能够使某些工作正常。 由于禁用了Prettier并删除了.prettierrc配置,它不再存在问题,并且在保存时格式化。 我的猜测是,即使在手动格式化之前也行不通。

如果有时间,我应该卸载VScode并从头开始尝试。

我不了解格式化的工作原理,但我在考虑以下情形:

  • 如果未安装Prettier,是否可以格式化?
  • 是否应在没有.prettierrc配置的情况下进行格式化?
  • 是否应该从.editorconfig ? 当前,当.prettierrc存在时,编辑器配置有效。
  • 它应该能够在不安装Prettier的情况下进行格式化
  • 它应该在没有.prettierrc配置的情况下格式化
  • 它当前不从.editorconfig ,但是可以添加它。

在后台,格式化的工作方式如下:

  1. 尝试解决更漂亮的问题。 如果用户不存在,则首先在用户的node_modules中搜索,然后回退到自己的版本。
  2. 尝试查找配置文件。 如果不存在,则没有问题,将使用默认值。
  3. 使用prettier-plugin-svelte格式化文件。

如果您尝试格式化,但未格式化任何内容,您是否可以查看Output-> Svelte并查看是否存在可疑内容(或仅在此处复制日志)?

感谢您澄清这些观点。 如果有机会,我将尝试重新安装VScode并尝试重现该问题。

我确实有同样的错误。 保存时不会修改该代码。\
仅在.svelte文件中发生,其他文件将在保存时自动格式化。
我的输出-> Svelte仅打印行Using Svelte v3.24.0 from .... \
Output-> Prettier在.svelte文件中保留为空,但按预期方式工作,并在其他文件(例如js,ts,..)上填充输出

通过控制台prettier --write "**/*.{css,html,js,json,md,scss,svelte,ts,yml}"触发svelte文件将自动格式化-但是在保存为vs代码后不会自动格式化。

如果您明确调用“ format”命令,它会格式化吗?还是根本不格式化?

如果您明确调用“ format”命令,它会格式化吗?还是根本不格式化?

如果我强制使用vs代码格式( ctr + shift + i ),它会格式化除* .svelte文件之外的所有文件。

有一个设置svelte.format.enable ,在您的设置中它设置为true吗?

您说过在Output-Svelte内部仅显示Using svelte ... ,这意味着它甚至没有到达格式代码。 如果可以的话,输出中也应该有Using Prettier ...

有一个设置svelte.format.enable ,在您的设置中它设置为true吗?

是的,这个设置是正确的

您说过在Output-Svelte内部仅显示Using svelte ... ,这意味着它甚至没有到达格式代码。 如果可以的话,输出中也应该有Using Prettier ...

在我看来,IDE和控制台无法使用相同的选项/设置。

昨天我在预处理sass上添加了该选项,该选项很好用,没有任何问题(通过cli webpack-dev-server --config config/webpack.config.js --progress ),但是IDE抛出错误(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'
}

也许这是有关的。

我认为这是一个无关紧要的问题。 您需要安装sass (推荐)或node-sass有关更多信息,请参见此处

我认为这是一个无关紧要的问题。 您需要安装sass (推荐)或node-sass有关更多信息,请参见此处

感谢您的链接。 我只是将节点二进制路径添加到svelte.language-server.runtime ,它解决了无缺陷的错误: zap:。

设置svelte.language-server.ls-pathsvelte.language-server.port为空。 已启用所有其他设置,例如svelte.plugin.typescript.enable

可能的原因: https :

@ s0me0ther @limitlessloop您可以检查这是否是导致问题的原因吗? https://github.com/sveltejs/prettier-plugin-svelte/issues/74#issuecomment -665831712

@ s0me0ther @limitlessloop您可以检查这是否是导致问题的原因吗? sveltejs / prettier-plugin-svelte#74(评论)

@dummdidumm ,这现在适用于苗条文件,谢谢!\
但是,如果我将默认格式化程序从esbenp.prettier-vscode更改svelte.svelte-vscode只能格式化svelte文件:/。\
有没有办法在不同的文件类型上使用不同的格式化程序?

您是否将默认设置为所有文件类型?

您是否将默认设置为所有文件类型?

是的,我做到了。 我是VSCode的新手。
现在,我使用以下设置,它的工作原理像一个超级按钮:

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

谢谢大家解决这个问题!

此页面是否有帮助?
0 / 5 - 0 等级