From 7773c8a8769bdfec97f77975987d808cc752ff10 Mon Sep 17 00:00:00 2001 From: Barrett Ruth Date: Fri, 6 Mar 2026 13:22:18 -0500 Subject: [PATCH] feat: add telescope.nvim integration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: Telescope never sets `filetype=diff` on preview buffers — it calls `vim.treesitter.start(bufnr, "diff")` directly, so diffs.nvim's `FileType` autocmd never fires. Solution: add a `telescope` config toggle (same pattern as neogit, gitsigns, committia) and a `User TelescopePreviewerLoaded` autocmd that calls `attach()` on the preview buffer. --- lua/diffs/init.lua | 17 +++++++++++++++++ plugin/diffs.lua | 10 ++++++++++ 2 files changed, 27 insertions(+) diff --git a/lua/diffs/init.lua b/lua/diffs/init.lua index a9551a5..882d0c4 100644 --- a/lua/diffs/init.lua +++ b/lua/diffs/init.lua @@ -42,6 +42,8 @@ ---@class diffs.CommittiaConfig +---@class diffs.TelescopeConfig + ---@class diffs.ConflictKeymaps ---@field ours string|false ---@field theirs string|false @@ -68,6 +70,7 @@ ---@field neogit diffs.NeogitConfig|false ---@field gitsigns diffs.GitsignsConfig|false ---@field committia diffs.CommittiaConfig|false +---@field telescope diffs.TelescopeConfig|false ---@field conflict diffs.ConflictConfig ---@class diffs @@ -149,6 +152,7 @@ local default_config = { neogit = false, gitsigns = false, committia = false, + telescope = false, conflict = { enabled = true, disable_diagnostics = true, @@ -607,6 +611,10 @@ local function init() opts.committia = {} end + if opts.telescope == true then + opts.telescope = {} + end + vim.validate('debug', opts.debug, function(v) return v == nil or type(v) == 'boolean' or type(v) == 'string' end, 'boolean or string (file path)') @@ -623,6 +631,9 @@ local function init() vim.validate('committia', opts.committia, function(v) return v == nil or v == false or type(v) == 'table' end, 'table or false') + vim.validate('telescope', opts.telescope, function(v) + return v == nil or v == false or type(v) == 'table' + end, 'table or false') vim.validate('extra_filetypes', opts.extra_filetypes, 'table', true) vim.validate('highlights', opts.highlights, 'table', true) @@ -1012,6 +1023,12 @@ function M.get_committia_config() return config.committia end +---@return diffs.TelescopeConfig|false +function M.get_telescope_config() + init() + return config.telescope +end + ---@return diffs.ConflictConfig function M.get_conflict_config() init() diff --git a/plugin/diffs.lua b/plugin/diffs.lua index bce599d..9f59dc1 100644 --- a/plugin/diffs.lua +++ b/plugin/diffs.lua @@ -18,6 +18,16 @@ if gs_cfg == true or type(gs_cfg) == 'table' then end end +local tel_cfg = (vim.g.diffs or {}).telescope +if tel_cfg == true or type(tel_cfg) == 'table' then + vim.api.nvim_create_autocmd('User', { + pattern = 'TelescopePreviewerLoaded', + callback = function() + require('diffs').attach(vim.api.nvim_get_current_buf()) + end, + }) +end + vim.api.nvim_create_autocmd('FileType', { pattern = require('diffs').compute_filetypes(vim.g.diffs or {}), callback = function(args)