From 58ccb30bb172c7e42728fbe12be69c7505ee297f Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Mon, 7 Sep 2026 11:50:00 +0200 Subject: Unterstützung für jsonc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nvim/lua/config/autocmds.lua | 15 ++++++++++++++- nvim/lua/config/filetypes.lua | 18 ++++++++++++++++++ nvim/lua/config/treesitter.lua | 3 +-- 3 files changed, 33 insertions(+), 3 deletions(-) (limited to 'nvim') diff --git a/nvim/lua/config/autocmds.lua b/nvim/lua/config/autocmds.lua index 53bf7a9..0835670 100644 --- a/nvim/lua/config/autocmds.lua +++ b/nvim/lua/config/autocmds.lua @@ -1,5 +1,6 @@ -- https://github.com/nvim-treesitter/nvim-treesitter/blob/main/doc/nvim-treesitter.txt local treesitter_languages = require("config.treesitter").languages +local extra_filetypes = require("config.filetypes").extra local function enable_treesitter_features() if not pcall(vim.treesitter.start) then return end @@ -9,8 +10,20 @@ local function enable_treesitter_features() vim.bo.indentexpr = "v:lua.require('nvim-treesitter').indentexpr()" end +-- Fuehrt zwei Listen zu einer neuen zusammen, ohne die Eingaben zu veraendern. +local function merge(list, extra) + local merged = {} + for _, item in ipairs(list) do + table.insert(merged, item) + end + for _, item in ipairs(extra) do + table.insert(merged, item) + end + return merged +end + vim.api.nvim_create_autocmd("FileType", { - pattern = treesitter_languages, + pattern = merge(treesitter_languages, extra_filetypes), callback = enable_treesitter_features, }) diff --git a/nvim/lua/config/filetypes.lua b/nvim/lua/config/filetypes.lua index a8a059a..b3dec26 100644 --- a/nvim/lua/config/filetypes.lua +++ b/nvim/lua/config/filetypes.lua @@ -1,6 +1,24 @@ +-- Custom Filetype-Erkennung fuer Dateien, die von der eingebauten Erkennung +-- abweichen sollen. + +local M = {} + +-- Filetypes, die hier zusaetzlich zur eingebauten Erkennung entstehen und +-- an anderer Stelle mitberuecksichtigt werden muessen (siehe config.autocmds, +-- Treesitter-Aktivierung). +M.extra = { "jsonc" } + vim.filetype.add({ extension = { j2 = "jinja", + -- .json als jsonc behandeln, damit Kommentare erlaubt sind (jsonls meldet + -- sie dann nicht als Fehler). json = "jsonc", }, }) + +-- nvim-treesitter stellt keinen eigenen jsonc-Parser bereit. Der json-Parser +-- versteht // und /* */ Kommentare, deshalb wird er fuer jsonc mitbenutzt. +vim.treesitter.language.register("json", "jsonc") + +return M diff --git a/nvim/lua/config/treesitter.lua b/nvim/lua/config/treesitter.lua index de71d50..e52d637 100644 --- a/nvim/lua/config/treesitter.lua +++ b/nvim/lua/config/treesitter.lua @@ -10,8 +10,7 @@ M.languages = { -- "jinja", -- "jinja_inline", "jq", - "json", -- weiterhin nötig für Injections, z.B. ```json in Markdown - "jsonc", + "json", -- deckt auch den Dateityp jsonc ab (siehe lua/config/filetypes.lua) "lua", "make", "markdown", -- cgit v1.3