diff options
Diffstat (limited to 'home-manager/neovim')
-rw-r--r-- | home-manager/neovim/chatgpt.lua | 5 | ||||
-rw-r--r-- | home-manager/neovim/copilot-vim.lua | 10 | ||||
-rw-r--r-- | home-manager/neovim/harpoon.lua | 12 | ||||
-rw-r--r-- | home-manager/neovim/init.lua | 38 | ||||
-rw-r--r-- | home-manager/neovim/lsp-zero-nvim.lua | 66 | ||||
-rw-r--r-- | home-manager/neovim/nvim-tree-lua.lua | 4 | ||||
-rw-r--r-- | home-manager/neovim/nvim-treesitter.lua | 9 | ||||
-rw-r--r-- | home-manager/neovim/nvim-web-devicons.lua | 1 | ||||
-rw-r--r-- | home-manager/neovim/telescope-nvim.lua | 18 |
9 files changed, 163 insertions, 0 deletions
diff --git a/home-manager/neovim/chatgpt.lua b/home-manager/neovim/chatgpt.lua new file mode 100644 index 0000000..c71d690 --- /dev/null +++ b/home-manager/neovim/chatgpt.lua @@ -0,0 +1,5 @@ +local home = vim.fn.expand("$HOME") + +require("chatgpt").setup({ + api_key_cmd = "gpg --decrypt " .. home .. "/.vim-chatgpt.gpg" +}) diff --git a/home-manager/neovim/copilot-vim.lua b/home-manager/neovim/copilot-vim.lua new file mode 100644 index 0000000..6b08971 --- /dev/null +++ b/home-manager/neovim/copilot-vim.lua @@ -0,0 +1,10 @@ +vim.g.copilot_no_tab_map = true +vim.api.nvim_set_keymap("i", "<C-y>", 'copilot#Accept("<CR>")', { silent = true, expr = true }) + +vim.g.copilot_filetypes = { + ['*'] = false, + ['python'] = true, + ['go'] = true, + ['php'] = true, + ['yaml'] = true, +} diff --git a/home-manager/neovim/harpoon.lua b/home-manager/neovim/harpoon.lua new file mode 100644 index 0000000..0e589f2 --- /dev/null +++ b/home-manager/neovim/harpoon.lua @@ -0,0 +1,12 @@ +local mark = require'harpoon.mark' +local ui = require'harpoon.ui' + +vim.keymap.set('n', '<leader>a', function() mark.add_file() end) +vim.keymap.set('n', '<leader>m', function() ui.toggle_quick_menu() end) +vim.keymap.set('n', '<leader>b', function() ui.nav_next() end) +vim.keymap.set('n', '<leader>n', function() ui.nav_prev() end) +vim.keymap.set('n', '<leader>h', function() ui.nav_file(1) end) +vim.keymap.set('n', '<leader>j', function() ui.nav_file(2) end) +vim.keymap.set('n', '<leader>k', function() ui.nav_file(3) end) +vim.keymap.set('n', '<leader>l', function() ui.nav_file(4) end) + diff --git a/home-manager/neovim/init.lua b/home-manager/neovim/init.lua new file mode 100644 index 0000000..24504b9 --- /dev/null +++ b/home-manager/neovim/init.lua @@ -0,0 +1,38 @@ +-- Recommended per nvim-tree-lua +vim.g.loaded_netrw = 1 +vim.g.loaded_netrwPlugin = 1 + +-- Set default theme +vim.o.termguicolors = true +vim.cmd("colorscheme catppuccin-frappe") + +-- System clipboard copy and paste +vim.keymap.set('v', '<leader>y', '"+y') +vim.keymap.set('n', '<leader>Y', '"+yg_') +vim.keymap.set('n', '<leader>y', '"+y') +vim.keymap.set('n', '<leader>yy', '"+yy') +vim.keymap.set('n', '<leader>p', '"+p') +vim.keymap.set('n', '<leader>P', '"+P') +vim.keymap.set('v', '<leader>p', '"+p') +vim.keymap.set('v', '<leader>P', '"+P') + +-- Try to keep our cursor centered +vim.keymap.set('n', 'j', 'jzz') +vim.keymap.set('n', 'k', 'kzz') +vim.keymap.set('n', '<C-d>', '<C-d>zz') +vim.keymap.set('n', '<C-u>', '<C-u>zz') + +-- Splits +vim.keymap.set('n', '<leader>d', ':split<CR>') +vim.keymap.set('n', '<leader>s', ':vsplit<CR>') + +-- :he listchars +vim.opt.listchars = { + trail = '*', + space = 'ˑ', + tab = '▷▷⋮', +} +vim.keymap.set('n', '<leader><TAB><TAB>', ':set invlist<CR>') + +vim.opt.colorcolumn = "120" + diff --git a/home-manager/neovim/lsp-zero-nvim.lua b/home-manager/neovim/lsp-zero-nvim.lua new file mode 100644 index 0000000..2abd191 --- /dev/null +++ b/home-manager/neovim/lsp-zero-nvim.lua @@ -0,0 +1,66 @@ +local lsp = require('lsp-zero').preset({ + manage_nvim_cmp = { + set_sources = 'recommended', + } +}) + +lsp.on_attach(function(client, bufnr) + local opts = {buffer = bufnr} + + lsp.default_keymaps(opts) + + vim.keymap.set('n', 'gd', '<cmd>Telescope lsp_definitions<cr>', opts) + vim.keymap.set('n', 'gi', '<cmd>Telescope lsp_implementations<cr>', opts) + vim.keymap.set('n', 'gr', '<cmd>Telescope lsp_references<cr>', opts) + vim.keymap.set('n', '<F5>', '<cmd>LspRestart<cr>', opts) +end) + +-- When you don't have mason.nvim installed +-- You'll need to list the servers installed in your system +lsp.setup_servers({'nixd', 'pyright', 'phpactor', 'gopls', 'lua_ls', 'ansiblels'}) + +-- (Optional) Configure lua language server for neovim +local lspconfig = require('lspconfig') +lspconfig.lua_ls.setup { + settings = { + Lua = { + runtime = { + -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) + version = 'LuaJIT', + }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = {'vim'}, + }, + workspace = { + -- Make the server aware of Neovim runtime files + library = vim.api.nvim_get_runtime_file("", true), + checkThirdParty = false, + }, + -- Do not send telemetry data containing a randomized but unique identifier + telemetry = { + enable = false, + }, + }, + }, +} + +lsp.setup() + +local cmp = require('cmp') +local cmp_action = require('lsp-zero').cmp_action() + +cmp.setup({ + sources = { + {name = 'nvim_lsp'}, + {name = 'nvim_lua'}, + }, + mapping = { + ['<CR>'] = cmp.mapping.confirm({select = false}), + ['<C-f>'] = cmp_action.luasnip_jump_forward(), + ['<C-b>'] = cmp_action.luasnip_jump_backward(), + ['<Tab>'] = cmp_action.luasnip_supertab(), + ['<S-Tab>'] = cmp_action.luasnip_shift_supertab(), + }, +}) + diff --git a/home-manager/neovim/nvim-tree-lua.lua b/home-manager/neovim/nvim-tree-lua.lua new file mode 100644 index 0000000..9911ba3 --- /dev/null +++ b/home-manager/neovim/nvim-tree-lua.lua @@ -0,0 +1,4 @@ +require('nvim-tree').setup {} + +local api = require'nvim-tree.api' +vim.keymap.set('n', '<Tab>', function () api.tree.open({ find_file = true }) end) diff --git a/home-manager/neovim/nvim-treesitter.lua b/home-manager/neovim/nvim-treesitter.lua new file mode 100644 index 0000000..6bc8fbb --- /dev/null +++ b/home-manager/neovim/nvim-treesitter.lua @@ -0,0 +1,9 @@ +require'nvim-treesitter.configs'.setup { + -- Automatically install missing parsers when entering buffer + -- False because we install them via Nix. + auto_install = false, + highlight = { + enable = true, + additional_vim_regex_highlighting = false, + }, +} diff --git a/home-manager/neovim/nvim-web-devicons.lua b/home-manager/neovim/nvim-web-devicons.lua new file mode 100644 index 0000000..57051fb --- /dev/null +++ b/home-manager/neovim/nvim-web-devicons.lua @@ -0,0 +1 @@ +require'nvim-web-devicons'.setup {} diff --git a/home-manager/neovim/telescope-nvim.lua b/home-manager/neovim/telescope-nvim.lua new file mode 100644 index 0000000..eeaf87e --- /dev/null +++ b/home-manager/neovim/telescope-nvim.lua @@ -0,0 +1,18 @@ +local telescope = require'telescope' +telescope.setup { + extensions = { + file_browser = { + theme = "ivy", + hijack_netrw = true, + }, + }, +} +telescope.load_extension "file_browser" + +local api = require('telescope.builtin') +vim.keymap.set('n', '<leader>f', function() api.find_files{hidden=true} end, {}) +vim.keymap.set('n', '<leader>g', api.live_grep, {}) +vim.keymap.set('n', '<leader>B', api.buffers, {}) +vim.keymap.set('n', '<leader>H', api.help_tags, {}) + +vim.api.nvim_set_keymap("n", "<Tab>", ":Telescope file_browser path=%:p:h select_buffer=true<CR>", { noremap = true }) |