Language-tools: Форматирование при сохранении не работает должным образом

Созданный на 24 июн. 2020  ·  16Комментарии  ·  Источник: sveltejs/language-tools

Опишите ошибку
Когда документ .svelte форматируется при сохранении, отступ не меняется.

Воспроизводить

  1. Установите Svelte Beta для 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 config
  • В настоящее время он не получает конфигурацию из .editorconfig , но это можно добавить.

Под капотом форматирование работает следующим образом:

  1. Постарайтесь решить красивее. Сначала выполните поиск в node_modules пользователя, вернитесь к собственной версии, если она отсутствует.
  2. Попробуйте найти файл конфигурации. Если их нет, нет проблем, используются значения по умолчанию.
  3. Отформатируйте файл с помощью prettier-plugin-svelte .

Если вы попытаетесь отформатировать, но ничего не отформатируйте, не могли бы вы заглянуть в Output-> Svelte и посмотреть, есть ли что-нибудь подозрительное (или просто скопируйте логин сюда)?

Спасибо за разъяснение этих моментов. Если у меня будет возможность, я попробую переустановить VScode и попытаться воспроизвести проблему.

У меня такая же ошибка. Код не изменяется при сохранении. \
Это происходит только в файлах .svelte , другие файлы будут автоматически отформатированы при сохранении. \
Мой вывод-> Svelte печатает только строку Using Svelte v3.24.0 from .... \
Вывод-> Prettier остается пустым в файлах .svelte , но работает должным образом и заполняет вывод в других файлах (например: js, ts, ..)

Запущенные через консоль prettier --write "**/*.{css,html,js,json,md,scss,svelte,ts,yml}" , svelte-файлы будут автоматически отформатированы, но не после сохранения в vs-code.

Он форматируется, если вы явно вызываете команду "форматировать", или он не форматируется вообще?

Он форматируется, если вы явно вызываете команду "форматировать", или он не форматируется вообще?

Если я принудительно использую формат 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 , что устраняет ошибку none-sass: zap :.

Настройки svelte.language-server.ls-path и svelte.language-server.port пусты. Все остальные настройки, такие как svelte.plugin.typescript.enable , включены.

@ 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 я могу форматировать только небольшие файлы: /. \
Есть ли способ использовать разные форматеры для разных типов файлов?

Вы установили значение по умолчанию для всех типов файлов?

Вы установили значение по умолчанию для всех типов файлов?

Да. Я новичок в VSCode .. \
Теперь я использую следующие настройки, которые работают как шарм:

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

Спасибо всем за решение этого вопроса!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги