{ lib, ... }: { programs.nvf.settings.vim = { autopairs.nvim-autopairs.enable = true; snippets.luasnip = { enable = true; loaders = # lua '' require('luasnip.loaders.from_vscode').lazy_load() require("luasnip.loaders.from_snipmate").lazy_load() ''; setupOpts.enable_autosnippets = true; }; additionalRuntimePaths = [ ./nvim ]; autocomplete = { blink-cmp = { enable = true; friendly-snippets.enable = true; setupOpts = { enabled = lib.generators.mkLuaInline # lua '' --- Disable completion for markdown function() return not vim.tbl_contains({"markdown"}, vim.bo.filetype) and vim.bo.buftype ~= "prompt" and vim.b.completion ~= false end ''; cmdline = { enabled = true; sources = null; completion.menu.auto_show = false; }; #completion.menu.auto_show = # lib.generators.mkLuaInline # # lua # '' # function(ctx) # --- Get the cursor position from the current window # local row, column = unpack(vim.api.nvim_win_get_cursor(0)) # --- Get the current row (1 is Neovim API giving us 1-based indexing) # --- Get the current column but don't return negative numbers # --- ignore_injections are to ignore embedded code # --- success is the result, node is the syntax node object # local success, node = pcall(vim.treesitter.get_node, { # pos = {row - 1, math.max(0, column - 1)}, # ignore_injections = false # }) # --- Types of nodes to ignore # local reject = {"comment", "line_comment", "block_comment", "string_start", "string_content", "string_end" } # --- If the node type is in the reject table, don't show the completion # if success and node and vim.tbl_contains(reject, node:type()) then # return false; # end # -- whatever other logic you want beyond this # return true # end # ''; # menu.auto_show = false; completion.documentation.auto_show_delay_ms = 0; signature.enabled = true; }; }; }; utility = { motion = { hop.enable = true; # h precognition.enable = false; }; yanky-nvim.enable = true; }; }; }