From 90ae7caf178945e3b8a7c864f02c17e0cb6d4deb Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Thu, 7 Aug 2025 22:13:07 +0200 Subject: [PATCH] Integrate Meld file comparing into Neovim --- lazyvim/.config/nvim/init.lua | 1 + lazyvim/.config/nvim/lua/config/keymaps.lua | 26 +++++++++++++++++++++ lazyvim/.config/nvim/lua/user/utils.lua | 15 ++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 lazyvim/.config/nvim/lua/user/utils.lua diff --git a/lazyvim/.config/nvim/init.lua b/lazyvim/.config/nvim/init.lua index 2514f9e..27d6b7c 100644 --- a/lazyvim/.config/nvim/init.lua +++ b/lazyvim/.config/nvim/init.lua @@ -1,2 +1,3 @@ -- bootstrap lazy.nvim, LazyVim and your plugins require("config.lazy") +require("user.utils") diff --git a/lazyvim/.config/nvim/lua/config/keymaps.lua b/lazyvim/.config/nvim/lua/config/keymaps.lua index 1c1a170..dca3fa3 100644 --- a/lazyvim/.config/nvim/lua/config/keymaps.lua +++ b/lazyvim/.config/nvim/lua/config/keymaps.lua @@ -23,3 +23,29 @@ map({ "n", "v" }, "y", [["+y]], { noremap = true, silent = true, desc = -- Paste from system clipboard map("n", "p", [["+p]], { noremap = true, silent = true, desc = "Paste from system clipboard" }) + +vim.keymap.set("n", "cc", function() + local file1 = vim.fn.expand("%") + + local project_root = vim.fn.systemlist("git rev-parse --show-toplevel")[1] + if project_root == "" then + project_root = vim.fn.getcwd() + end + + require("telescope.builtin").find_files({ + prompt_title = "Compare with...", + cwd = project_root, + hidden = true, + follow = true, + attach_mappings = function(_, map) + map("i", "", function(prompt_bufnr) + local actions = require("telescope.actions") + local action_state = require("telescope.actions.state") + local file2 = action_state.get_selected_entry().path + actions.close(prompt_bufnr) + require("user.utils").meld_diff(file1, file2) + end) + return true + end, + }) +end, { desc = "Compare with" }) diff --git a/lazyvim/.config/nvim/lua/user/utils.lua b/lazyvim/.config/nvim/lua/user/utils.lua new file mode 100644 index 0000000..205792a --- /dev/null +++ b/lazyvim/.config/nvim/lua/user/utils.lua @@ -0,0 +1,15 @@ +-- This file contains all custom functions for integrate external tools. + +-- Meld for comparing and merging files +local M = {} + +function M.meld_diff(file1, file2) + if not file1 or not file2 then + print("Usage: :lua require'user.utils'.meld_diff('file1', 'file2')") + return + end + local cmd = string.format("meld '%s' '%s' &", file1, file2) + os.execute(cmd) +end + +return M