├── README.md ├── flake.lock ├── flake.nix ├── ftplugin └── lua.lua ├── init.lua ├── lazy-lock.json ├── lua ├── .luarc.json ├── alpha │ └── init.lua ├── config │ ├── init.lua │ ├── keymaps.lua │ ├── lazy.lua │ ├── plugins │ │ ├── cmp.lua │ │ └── luasnip.lua │ └── settings.lua └── plugins │ ├── cmp.lua │ ├── colorscheme.lua │ ├── fugitive.lua │ ├── gitsigns.lua │ ├── lsp.lua │ ├── lualine.lua │ ├── luasnip.lua │ ├── mason.lua │ ├── notify.lua │ ├── telescope.lua │ └── tree-sitter.lua └── shell.nix /README.md: -------------------------------------------------------------------------------- 1 | # MASTERING NEOVIM 2 | 3 | configuracion que armo para la serie de videos 4 | 5 | [youtube](https://www.youtube.com/playlist?list=PLzc_3azyItDXysVKuih0vRHziTuSZEVP9) 6 | [discord](https://discord.gg/4Pe8hfRfTx) 7 | -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "flake-utils": { 4 | "inputs": { 5 | "systems": "systems" 6 | }, 7 | "locked": { 8 | "lastModified": 1705309234, 9 | "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", 10 | "owner": "numtide", 11 | "repo": "flake-utils", 12 | "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", 13 | "type": "github" 14 | }, 15 | "original": { 16 | "owner": "numtide", 17 | "repo": "flake-utils", 18 | "type": "github" 19 | } 20 | }, 21 | "nixpkgs": { 22 | "locked": { 23 | "lastModified": 1709069307, 24 | "narHash": "sha256-ER6N232jucnqu4+AK80RdmgBDuk61FAqmp36EMqkQns=", 25 | "owner": "NixOS", 26 | "repo": "nixpkgs", 27 | "rev": "9c1ea5e3a2a2578792438cba233f2763593e19c5", 28 | "type": "github" 29 | }, 30 | "original": { 31 | "owner": "NixOS", 32 | "ref": "nixpkgs-unstable", 33 | "repo": "nixpkgs", 34 | "type": "github" 35 | } 36 | }, 37 | "root": { 38 | "inputs": { 39 | "flake-utils": "flake-utils", 40 | "nixpkgs": "nixpkgs" 41 | } 42 | }, 43 | "systems": { 44 | "locked": { 45 | "lastModified": 1681028828, 46 | "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 47 | "owner": "nix-systems", 48 | "repo": "default", 49 | "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 50 | "type": "github" 51 | }, 52 | "original": { 53 | "owner": "nix-systems", 54 | "repo": "default", 55 | "type": "github" 56 | } 57 | } 58 | }, 59 | "root": "root", 60 | "version": 7 61 | } 62 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "Mastering nvim flake"; 3 | inputs = { 4 | nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; 5 | flake-utils.url = "github:numtide/flake-utils"; 6 | }; 7 | outputs = { 8 | self, 9 | nixpkgs, 10 | flake-utils, 11 | }: 12 | flake-utils.lib.eachDefaultSystem (system: let 13 | pkgs = nixpkgs.legacyPackages.${system}; 14 | in { 15 | # packages.default = pkgs.callPackage ./default.nix {}; 16 | devShells.default = pkgs.callPackage ./shell.nix {}; 17 | }); 18 | } 19 | -------------------------------------------------------------------------------- /ftplugin/lua.lua: -------------------------------------------------------------------------------- 1 | vim.bo.tabstop = 2 2 | vim.bo.softtabstop = 2 3 | vim.bo.expandtab = true 4 | vim.bo.shiftwidth = 2 5 | -------------------------------------------------------------------------------- /init.lua: -------------------------------------------------------------------------------- 1 | require("config") 2 | 3 | vim.api.nvim_create_user_command("Alpha", function() 4 | local picker = require("telescope.pickers") 5 | local finders = require("telescope.finders") 6 | local actions = require("telescope.actions") 7 | local action_state = require("telescope.actions.state") 8 | local conf = require("telescope.config").values 9 | 10 | picker.new({}, { 11 | prompt_title = "Alpha", 12 | finder = finders.new_table({ 13 | results = { "alpha", "beta", "delta", "omega" } 14 | }), 15 | sorter = conf.generic_sorter(), 16 | previewer = false, 17 | attach_mappings = function (_, map) 18 | map("i", "", function (promt_bufnr) 19 | actions.close(promt_bufnr) 20 | local entry = action_state.get_selected_entry() 21 | vim.notify(entry[1]) 22 | end) 23 | 24 | return true 25 | end, 26 | }):find() 27 | end, {}) 28 | -------------------------------------------------------------------------------- /lazy-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "LuaSnip": { "branch": "master", "commit": "8ae1dedd988eb56441b7858bd1e8554dfadaa46d" }, 3 | "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, 4 | "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" }, 5 | "cmp-git": { "branch": "main", "commit": "169202582f900b0e189eed5153b291383bfbba47" }, 6 | "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" }, 7 | "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, 8 | "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, 9 | "gitsigns.nvim": { "branch": "main", "commit": "a4db718c78bff65198e3b63f1043f1e7bb5e05c8" }, 10 | "lazy.nvim": { "branch": "main", "commit": "31ddbea7c10b6920c9077b66c97951ca8682d5c8" }, 11 | "lualine.nvim": { "branch": "master", "commit": "b5e8bb642138f787a2c1c5aedc2a78cb2cebbd67" }, 12 | "mason.nvim": { "branch": "main", "commit": "751b1fcbf3d3b783fcf8d48865264a9bcd8f9b10" }, 13 | "neodev.nvim": { "branch": "main", "commit": "ce9a2e8eaba5649b553529c5498acb43a6c317cd" }, 14 | "nvim-autopairs": { "branch": "master", "commit": "dbfc1c34bed415906395db8303c71039b3a3ffb4" }, 15 | "nvim-cmp": { "branch": "main", "commit": "ce16de5665c766f39c271705b17fff06f7bcb84f" }, 16 | "nvim-lspconfig": { "branch": "master", "commit": "f4619ab31fc4676001ea05ae8200846e6e7700c7" }, 17 | "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" }, 18 | "nvim-treesitter": { "branch": "master", "commit": "54cf9180a36299265e217858e6e531245074c3f4" }, 19 | "nvim-treesitter-textobjects": { "branch": "master", "commit": "0b826f843f1079b9f0aba41f2a5cb7612e6b3329" }, 20 | "nvim-web-devicons": { "branch": "master", "commit": "3ee60deaa539360518eaab93a6c701fe9f4d82ef" }, 21 | "playground": { "branch": "master", "commit": "ba48c6a62a280eefb7c85725b0915e021a1a0749" }, 22 | "plenary.nvim": { "branch": "master", "commit": "8aad4396840be7fc42896e3011751b7609ca4119" }, 23 | "telescope-file-browser.nvim": { "branch": "master", "commit": "5ee5002373655fd684a4ad0d47a3de876ceacf9a" }, 24 | "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" }, 25 | "telescope.nvim": { "branch": "master", "commit": "4626aaa2bcfdacf55fd6d44b430e2df81b2403ff" }, 26 | "vim-enfocado": { "branch": "main", "commit": "2a8fffdff1a20473f0fbacef10f2fb356e039b31" }, 27 | "vim-fugitive": { "branch": "master", "commit": "c0b03f1cac242d96837326d300f42a660306fc1a" } 28 | } -------------------------------------------------------------------------------- /lua/.luarc.json: -------------------------------------------------------------------------------- 1 | { 2 | "workspace.checkThirdParty": false 3 | } -------------------------------------------------------------------------------- /lua/alpha/init.lua: -------------------------------------------------------------------------------- 1 | return function () 2 | local text = "no se olviden el like" 3 | vim.api.nvim_buf_set_lines(0, -1, -1, true, {text}) 4 | end 5 | -------------------------------------------------------------------------------- /lua/config/init.lua: -------------------------------------------------------------------------------- 1 | require "config.settings" 2 | require "config.lazy" 3 | require "config.keymaps" 4 | -------------------------------------------------------------------------------- /lua/config/keymaps.lua: -------------------------------------------------------------------------------- 1 | vim.keymap.set('n', 'bd', ':bd!', {desc = "Close current buffer" }) 2 | 3 | vim.keymap.set('', 'rr', ':source %', { desc = "Source the current file" }) 4 | 5 | vim.keymap.set('v', '>', '>gv', { desc = "after tab in re-select the same"}) 6 | vim.keymap.set('v', '<', '"] = cmp.mapping.scroll_docs(-4), 84 | [""] = cmp.mapping.scroll_docs(4), 85 | [""] = cmp.mapping.abort(), 86 | [""] = cmp.mapping(function(fallback) 87 | if cmp.visible() then 88 | cmp.select_next_item() 89 | elseif luasnip.choice_active() then 90 | luasnip.change_choice(1) 91 | else 92 | fallback() 93 | end 94 | end, { "i", "s" }), 95 | [""] = cmp.mapping.select_prev_item(), 96 | [""] = cmp.mapping.confirm { 97 | behavior = cmp.ConfirmBehavior.Insert, 98 | select = true, 99 | }, 100 | [""] = cmp.mapping.complete(), 101 | }, 102 | sources = { 103 | { name = "nvim_lsp" }, 104 | { name = "path" }, 105 | { name = "luasnip" }, 106 | { name = "buffer" }, 107 | }, 108 | }) 109 | 110 | cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done { map_char = { tex = "" } }) 111 | 112 | -- Set configuration for specific filetype. 113 | cmp.setup.filetype('gitcommit', { 114 | sources = cmp.config.sources({ 115 | { name = 'git' }, -- You can specify the `git` source if [you were installed it](https://github.com/petertriho/cmp-git). 116 | }, { 117 | { name = 'buffer' }, 118 | }) 119 | }) 120 | 121 | -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). 122 | cmp.setup.cmdline({ '/', '?' }, { 123 | mapping = cmp.mapping.preset.cmdline(), 124 | sources = { 125 | { name = 'buffer' } 126 | } 127 | }) 128 | 129 | -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). 130 | cmp.setup.cmdline(':', { 131 | mapping = cmp.mapping.preset.cmdline(), 132 | sources = cmp.config.sources({ 133 | { name = 'path' } 134 | }, { 135 | { name = 'cmdline' } 136 | }) 137 | }) 138 | end 139 | 140 | return M 141 | -------------------------------------------------------------------------------- /lua/config/plugins/luasnip.lua: -------------------------------------------------------------------------------- 1 | local ls = require "luasnip" 2 | local types = require "luasnip.util.types" 3 | 4 | local M = {} 5 | 6 | function M.setup() 7 | ls.config.set_config { 8 | -- This tells LuaSnip to remember to keep around the last snippet. 9 | -- You can jump back into even if you move outside of the selection 10 | history = true, 11 | 12 | -- This one is cool cause if you have dynamic snippets, it updatesas you type! 13 | updateevents = "TextChanged,TextChangedI", 14 | 15 | -- Autosnippets: 16 | enable_autosnippets = true, 17 | 18 | ext_opts = { 19 | [types.choiceNode] = { 20 | active = { 21 | virt_text = { { "<- Choice", "Error" } }, 22 | }, 23 | }, 24 | }, 25 | } 26 | 27 | -- is my expansion key 28 | -- this will expand the current item or jump to the next item within the snippet. 29 | vim.keymap.set({ "i", "s" }, "", function() 30 | if ls.expand_or_jumpable() then 31 | ls.expand_or_jump() 32 | end 33 | end, { silent = true }) 34 | 35 | -- is my jump backwards key. 36 | -- this always moves to the previous item within the snippet 37 | vim.keymap.set({ "i", "s" }, "", function() 38 | if ls.jumpable(-1) then 39 | ls.jump(-1) 40 | end 41 | end, { silent = true }) 42 | 43 | -- is selecting within a list of options. 44 | -- This is useful for choice nodes (introduced in the forthcoming episode 2) 45 | vim.keymap.set("i", "", function() 46 | if ls.choice_active() then 47 | ls.change_choice(1) 48 | end 49 | end) 50 | end 51 | 52 | return M 53 | -------------------------------------------------------------------------------- /lua/config/settings.lua: -------------------------------------------------------------------------------- 1 | vim.o.number = true 2 | vim.o.relativenumber = true 3 | vim.g.mapleader = " " 4 | vim.o.termguicolors = true 5 | -------------------------------------------------------------------------------- /lua/plugins/cmp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "hrsh7th/nvim-cmp", 3 | dependencies = { 4 | "hrsh7th/cmp-buffer", 5 | "hrsh7th/cmp-path", 6 | "hrsh7th/cmp-nvim-lsp", 7 | "hrsh7th/cmp-cmdline", 8 | "hrsh7th/cmp-git", 9 | "L3MON4D3/LuaSnip", 10 | "saadparwaiz1/cmp_luasnip", 11 | "windwp/nvim-autopairs", 12 | }, 13 | event = "VeryLazy", 14 | main = "config.plugins.cmp", 15 | config = true, 16 | } 17 | -------------------------------------------------------------------------------- /lua/plugins/colorscheme.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "wuelnerdotexe/vim-enfocado", 3 | lazy = false, -- make sure we load this during startup if it is your main colorscheme 4 | priority = 1000, -- make sure to load this before all the other start plugins 5 | config = function() 6 | -- load the colorscheme here 7 | vim.cmd([[colorscheme enfocado]]) 8 | end, 9 | } 10 | -------------------------------------------------------------------------------- /lua/plugins/fugitive.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "tpope/vim-fugitive", 3 | cmd = {"G", "Git"}, 4 | keys = { 5 | {"ga", ":Git fetch --all -p", desc = "Git fetch"}, 6 | {"gl", ":Git pull", desc = "Git pull"}, 7 | }, 8 | } 9 | -------------------------------------------------------------------------------- /lua/plugins/gitsigns.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "lewis6991/gitsigns.nvim", 3 | opts = { 4 | signcolumn = false, 5 | numhl = true, 6 | max_file_length = 10000, 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /lua/plugins/lsp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "neovim/nvim-lspconfig", 3 | dependencies = { 4 | "williamboman/mason.nvim", 5 | "folke/neodev.nvim", 6 | }, 7 | config = function() 8 | vim.keymap.set('n', 'e', vim.diagnostic.open_float) 9 | vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) 10 | vim.keymap.set('n', ']d', vim.diagnostic.goto_next) 11 | vim.keymap.set('n', 'q', vim.diagnostic.setloclist) 12 | 13 | local on_attach = function(_, bufnr) 14 | vim.bo[bufnr].omnifunc = 'v:lua.vim.lsp.omnifunc' 15 | local opts = { buffer = bufnr } 16 | vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) 17 | vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) 18 | vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) 19 | vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) 20 | vim.keymap.set('n', '', vim.lsp.buf.signature_help, opts) 21 | vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, opts) 22 | vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, opts) 23 | vim.keymap.set('n', 'wl', function() 24 | print(vim.inspect(vim.lsp.buf.list_workspace_folders())) 25 | end, opts) 26 | vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, opts) 27 | vim.keymap.set('n', 'rn', vim.lsp.buf.rename, opts) 28 | vim.keymap.set({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, opts) 29 | vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) 30 | vim.keymap.set('n', 'f', function() 31 | vim.lsp.buf.format { async = true } 32 | end, opts) 33 | end 34 | 35 | require("neodev").setup() 36 | require("lspconfig").lua_ls.setup({ 37 | on_attach = on_attach, 38 | settings = { 39 | Lua = { 40 | telemetry = { enable = false }, 41 | workspace = { checkThirdParty = false }, 42 | } 43 | } 44 | }) 45 | require("lspconfig").tailwindcss.setup({ 46 | on_attach = on_attach, 47 | }) 48 | end 49 | } 50 | -------------------------------------------------------------------------------- /lua/plugins/lualine.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvim-lualine/lualine.nvim", 3 | dependencies = { "nvim-tree/nvim-web-devicons" }, 4 | opts = { 5 | options = { 6 | globalstatus = true, 7 | }, 8 | sections = { 9 | lualine_c = { { "filename", file_status = true, path = 1, } }, 10 | lualine_x = { 11 | { 12 | require("lazy.status").updates, 13 | cond = require("lazy.status").has_updates, 14 | color = { fg = "#ff9e64" }, 15 | }, 16 | }, 17 | }, 18 | inactive_winbar = { 19 | lualine_c = { "filename" }, 20 | }, 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /lua/plugins/luasnip.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "L3MON4D3/LuaSnip", 3 | version = "v2.*", 4 | main = "config.plugins.luasnip", 5 | config = true, 6 | } 7 | -------------------------------------------------------------------------------- /lua/plugins/mason.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "williamboman/mason.nvim", 3 | config = true, 4 | } 5 | -------------------------------------------------------------------------------- /lua/plugins/notify.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: missing-fields 2 | return { 3 | "rcarriga/nvim-notify", 4 | event = "VeryLazy", 5 | config = function() 6 | local notify = require "notify" 7 | -- this for transparency 8 | notify.setup { background_colour = "#000000" } 9 | -- this overwrites the vim notify function 10 | vim.notify = notify.notify 11 | end, 12 | } 13 | -------------------------------------------------------------------------------- /lua/plugins/telescope.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvim-telescope/telescope.nvim", 3 | event = 'VeryLazy', 4 | dependencies = { 5 | "nvim-lua/plenary.nvim", 6 | "nvim-telescope/telescope-file-browser.nvim", 7 | { 8 | 'nvim-telescope/telescope-fzf-native.nvim', 9 | build = 'make' 10 | } }, 11 | opts = { 12 | extensions = { 13 | fzf = { 14 | fuzzy = true, -- false will only do exact matching 15 | override_generic_sorter = true, -- override the generic sorter 16 | override_file_sorter = true, -- override the file sorter 17 | case_mode = "smart_case", -- or "ignore_case" or "respect_case" 18 | -- the default case_mode is "smart_case" 19 | }, 20 | } 21 | }, 22 | config = function(opts) 23 | require('telescope').setup(opts) 24 | require('telescope').load_extension('fzf') 25 | end, 26 | keys = { 27 | { 28 | "pp", 29 | function() 30 | require('telescope.builtin').git_files({ show_untracked = true }) 31 | end, 32 | desc = "Telescope Git Files", 33 | }, 34 | { 35 | "pe", 36 | function() 37 | require("telescope.builtin").buffers() 38 | end, 39 | desc = "Telescope buffers", 40 | }, 41 | { 42 | "gs", 43 | function() 44 | require("telescope.builtin").git_status() 45 | end, 46 | desc = "Telescope Git status", 47 | }, 48 | { 49 | "gc", 50 | function() 51 | require("telescope.builtin").git_bcommits() 52 | end, 53 | desc = "Telescope Git status", 54 | }, 55 | { 56 | "gb", 57 | function() 58 | require("telescope.builtin").git_branches() 59 | end, 60 | desc = "Telescope Git branches", 61 | }, 62 | { 63 | "rp", 64 | function() 65 | require("telescope.builtin").find_files({ 66 | prompt_title = "Plugins", 67 | cwd = vim.fn.stdpath("config") .. "/lua/plugins", 68 | attach_mappings = function(_, map) 69 | local actions = require("telescope.actions") 70 | local action_state = require("telescope.actions.state") 71 | map("i", "", function(prompt_bufnr) 72 | local new_plugin = action_state.get_current_line() 73 | actions.close(prompt_bufnr) 74 | vim.cmd(string.format("edit ~/.config/nvim/lua/plugins/%s.lua", new_plugin)) 75 | end) 76 | return true 77 | end 78 | }) 79 | end 80 | }, 81 | { 82 | "pf", 83 | function() 84 | require('telescope.builtin').find_files() 85 | end, 86 | desc = "Telescope Find Files", 87 | }, 88 | { 89 | "ph", 90 | function() 91 | require("telescope.builtin").help_tags() 92 | end, 93 | desc = "Telescope Help" 94 | }, 95 | { 96 | "bb", 97 | function() 98 | require("telescope").extensions.file_browser.file_browser({ path = "%:h:p", select_buffer = true }) 99 | end, 100 | desc = "Telescope file browser" 101 | } 102 | }, 103 | } 104 | -------------------------------------------------------------------------------- /lua/plugins/tree-sitter.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvim-treesitter/nvim-treesitter", 3 | dependencies = { 4 | "nvim-treesitter/nvim-treesitter-textobjects", 5 | "nvim-treesitter/playground", 6 | }, 7 | build = ":TSUpdate", 8 | event = "VeryLazy", 9 | main = "nvim-treesitter.configs", 10 | opts = { 11 | ensure_installed = { 12 | "lua", 13 | "luadoc", 14 | "query", 15 | }, 16 | highlight = { 17 | enable = true, 18 | }, 19 | indent = { 20 | enable = true, 21 | }, 22 | textobjects = { 23 | select = { 24 | enable = true, 25 | lookahead = true, 26 | keymaps = { 27 | ["af"] = "@function.outer", 28 | ["if"] = "@function.inner", 29 | ["ac"] = "@conditional.outer", 30 | ["ic"] = "@conditional.inner", 31 | ["al"] = "@loop.outer", 32 | ["il"] = "@loop.inner", 33 | } 34 | } 35 | }, 36 | playground = { 37 | enable = true, 38 | disable = {}, 39 | updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code 40 | persist_queries = false, -- Whether the query persists across vim sessions 41 | keybindings = { 42 | toggle_query_editor = 'o', 43 | toggle_hl_groups = 'i', 44 | toggle_injected_languages = 't', 45 | toggle_anonymous_nodes = 'a', 46 | toggle_language_display = 'I', 47 | focus_language = 'f', 48 | unfocus_language = 'F', 49 | update = 'R', 50 | goto_node = '', 51 | show_help = '?', 52 | }, 53 | } 54 | }, 55 | } 56 | -------------------------------------------------------------------------------- /shell.nix: -------------------------------------------------------------------------------- 1 | {pkgs ? import {}}: 2 | pkgs.mkShell { 3 | # inputsFrom = [(pkgs.callPackage ./default.nix {})]; 4 | 5 | buildInputs = with pkgs; [ 6 | neovim 7 | lua-language-server 8 | ]; 9 | shellHook = '' 10 | export NVIM_APPNAME="mastering" 11 | ''; 12 | } 13 | --------------------------------------------------------------------------------