VSCode не выполняет автоматическое форматирование при сохранении — Перейти

Я работаю над проектом Go и использую VSCode в качестве IDE. Я установил официальные расширения Go и настроил свои настройки таким образом, чтобы форматирование onSave сохранялось во время кодирования.

Мой файл settings.json выглядит так:

{
  "editor.formatOnPaste": true,
  "git.autofetch": true,
  "[markdown]": {
    "editor.wordWrap": "on"
  },
  "eslint.codeActionsOnSave.rules": null,
  "solidity.telemetry": false,
  "editor.formatOnSave": true,
  "eslint.run": "onSave",
  "workbench.editor.wrapTabs": true,
  "remote.SSH.remoteServerListenOnSocket": true,
  "redhat.telemetry.enabled": false,
  "githubPullRequests.pullBranch": "never",
  "eslint.workingDirectories": [],
  "eslint.timeBudget.onValidation": {
    "warn": 4000,
    "error": 8000
  },
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "[jsonc]": {
    "editor.defaultFormatter": "vscode.json-language-features"
  },
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[python]": {
    "editor.formatOnType": true
  },
  "prettier.ignorePath": "",
  "editor.rulers": [
    120
  ],
  "editor.inlineSuggest.enabled": true,
  "go.alternateTools": {
    "go": "/Users/vitomirpavlov/go/bin"
  },
  "go.toolsManagement.autoUpdate": true,
  "go.lintFlags": [
    "--fast"
  ],
  "go.lintTool": "golangci-lint",
  "go.formatTool": "goimports",
  "go.testTimeout": "15m",
  "go.lintOnSave": "file",
  "go.vetOnSave": "package",
  "[go]": {
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
      "source.organizeImports": true
    }
  },
  "[go.mod]": {
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
      "source.organizeImports": true
    }
  },
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit"
  },
  "eslint.validate": [
    "javascript",
    "javascriptreact"
  ],
  "prettier.requireConfig": true,
}

Я использую golang v1.20.14, gopls v0.15.3 и golangci-lint v1.51.0. Я попробовал несколько вещей, таких как переустановка расширения Go, удаление всех других конфигураций в файле settings.json и отключение всех других расширений, которые у меня есть, чтобы убедиться в отсутствии конфликтов.

У меня довольно длинные строки, которые нужно форматировать как многострочные, но это вообще не форматирует.

Как правильно настроить линтер/форматер?

Я не знаю vscode, но вижу, что editor.defaultFormatter настроен на что-то, что не предназначено для Go. При быстром поиске в Google кажется, что эта настройка переопределяет любые отдельные настройки плагина.

JimB 11.07.2024 17:35

@JimB Я проверил, удалив его, но это все равно не решает проблему.

VitoCK 12.07.2024 08:39

вам может потребоваться указать форматировщик для go: "editor.defaultFormatter": "golang.Go"

Hoopra 12.07.2024 10:00

@Hoopra, вообще-то, это сработало! Теперь он перезаписал defaultFormatter, который я установил выше. Теперь я вижу, что это было очевидно, потому что на других языках я сделал это :D Спасибо!

VitoCK 15.07.2024 07:02
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
0
4
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы отформатировать файл кода, вам понадобится форматировщик по умолчанию для этого языка:

"[go]": {
  "editor.defaultFormatter": "golang.Go"
}

Другие вопросы по теме