{ pkgs, config, lib, ... }: with lib; with builtins; let cfg = config.vim.utility.venn-nvim; in { options.vim.utility.venn-nvim = { enable = mkEnableOption "draw ASCII diagrams in Neovim"; }; config = mkIf (cfg.enable) { vim.startPlugins = [ "venn-nvim" ]; # TODO: https://github.com/jbyuki/venn.nvim#using-toggle-command # add keybindings for drawing diagrams4 vim.luaConfigRC.venn-nvim = nvim.dag.entryAnywhere '' local venn = require('venn') -- venn.nvim: enable or disable keymappings function _G.Toggle_venn() local venn_enabled = vim.inspect(vim.b.venn_enabled) if venn_enabled == "nil" then vim.b.venn_enabled = true vim.cmd[[setlocal ve=all]] -- draw a line on HJKL keystokes vim.api.nvim_buf_set_keymap(0, "n", "J", "j:VBox", {noremap = true}) vim.api.nvim_buf_set_keymap(0, "n", "K", "k:VBox", {noremap = true}) vim.api.nvim_buf_set_keymap(0, "n", "L", "l:VBox", {noremap = true}) vim.api.nvim_buf_set_keymap(0, "n", "H", "h:VBox", {noremap = true}) -- draw a box by pressing "f" with visual selection vim.api.nvim_buf_set_keymap(0, "v", "f", ":VBox", {noremap = true}) else vim.cmd[[setlocal ve=]] vim.cmd[[mapclear ]] vim.b.venn_enabled = nil end end -- toggle keymappings for venn using v vim.api.nvim_set_keymap('n', 'v', ":lua Toggle_venn()", { noremap = true}) ''; }; }