goreleaser-ls.nvim

April 3, 2026 · View on GitHub

Neovim plugin for goreleaser-ls — a language server for .goreleaser.yml files.

demo

Features

  • Hover — documentation for all goreleaser keys, enum values, deprecation warnings
  • Completion — context-aware keys, nested fields, {{ . template variables
  • Diagnostics — missing version: 2, unknown keys, deprecated fields, invalid template variables, build ID cross-references
  • Go to definition — jump from ID references to build definitions
  • Document symbols — outline of all configuration sections
  • Code actions — quick-fix deprecated field names

Requirements

Install the goreleaser-ls binary:

go install github.com/owenrumney/goreleaser-ls/cmd/goreleaser-ls@latest

Installation

lazy.nvim

{
  "owenrumney/goreleaser-ls.nvim",
  ft = "yaml",
  opts = {},
}

packer.nvim

use {
  "owenrumney/goreleaser-ls.nvim",
  config = function()
    require("goreleaser-ls").setup()
  end,
}

Configuration

All options are optional — defaults work out of the box if goreleaser-ls is on your $PATH.

require("goreleaser-ls").setup({
  -- Command to start the language server.
  cmd = { "goreleaser-ls" },

  -- Files used to detect the project root.
  root_markers = {
    ".goreleaser.yml",
    ".goreleaser.yaml",
    "goreleaser.yml",
    "goreleaser.yaml",
  },
})

How it works

The plugin activates on FileType yaml and checks the filename against goreleaser patterns (.goreleaser.yml, .goreleaser.yaml, etc.). It only starts the language server for matching files — other YAML files are unaffected.

License

MIT