chore(nvim): track project-local Neovim config, drop .idea from ignore

Add .nvim.lua, an opt-in project-local Neovim configuration for
LazyVim users. It extends the runtime path with .nvim/ so the
treesitter injections ship with the repo, and wires conform to
format embedded GraphQL regions (via prettier's injected formatter)
alongside goimports/gofumpt on Go buffers.

Add .nvim/queries/go/injections.scm, which marks Go raw string
literals starting with query/mutation/subscription/fragment as
GraphQL injections, so treesitter highlighting and formatting apply
to the embedded AniList queries.

Remove .idea from .gitignore: the ignore list now deliberately
tracks project-local editor configs (.nvim.lua) instead of
editor-specific junk.
This commit is contained in:
John O'Keefe
2026-09-24 13:50:24 -04:00
parent 4f36457563
commit c0885a4bd5
3 changed files with 57 additions and 1 deletions
-1
View File
@@ -30,7 +30,6 @@ frontend/package.json.md5
# Root-level lockfile only: the frontend lockfile IS tracked so CI installs
# are reproducible and setup-node's npm cache has something to hash.
/package-lock.json
.idea
.env
environment.go
# Updater signing private key. The public half (updater.pub) is committed and
+36
View File
@@ -0,0 +1,36 @@
-- AniTrack project-local Neovim config (for LazyVim users)
-- Requires: vim.o.exrc = true in your Neovim config; approve the :trust prompt.
local here = vim.fs.dirname(debug.getinfo(1, "S").source:sub(2))
-- project-local treesitter queries (graphql injections for Go raw strings)
vim.opt.rtp:append(here .. "/.nvim")
vim.api.nvim_create_autocmd("FileType", {
pattern = "go",
once = true,
callback = function()
-- ensure the graphql treesitter parser exists (no-op when already installed)
pcall(function()
local LazyVim = require("lazyvim.util")
if not LazyVim.treesitter.have("graphql") then
require("nvim-treesitter").install({ "graphql" })
end
end)
-- conform: format embedded graphql regions via prettier (injected formatter)
require("conform").setup({
formatters_by_ft = {
go = { "goimports", "gofumpt", "injected" },
graphql = { "prettier" },
},
formatters = {
prettier = {
-- conform's injected formatter resolves formatters against the host
-- (go) buffer, so LazyVim's filetype-gated prettier condition would
-- filter it out; safe to relax since prettier is only registered
-- for filetypes it supports.
condition = function() return true end,
},
},
})
end,
})
+21
View File
@@ -0,0 +1,21 @@
; extends
((raw_string_literal
(raw_string_literal_content) @injection.content)
(#lua-match? @injection.content "^%s*query%f[^%w]")
(#set! injection.language "graphql"))
((raw_string_literal
(raw_string_literal_content) @injection.content)
(#lua-match? @injection.content "^%s*mutation%f[^%w]")
(#set! injection.language "graphql"))
((raw_string_literal
(raw_string_literal_content) @injection.content)
(#lua-match? @injection.content "^%s*subscription%f[^%w]")
(#set! injection.language "graphql"))
((raw_string_literal
(raw_string_literal_content) @injection.content)
(#lua-match? @injection.content "^%s*fragment%f[^%w]")
(#set! injection.language "graphql"))