From 3fce1b5d9350c116270111e92f2d993e1b518d4d Mon Sep 17 00:00:00 2001 From: Jasper Ras Date: Sat, 9 Nov 2024 14:26:34 +0100 Subject: Inline home-manager --- home-manager/neovim/chatgpt.lua | 5 +++ home-manager/neovim/copilot-vim.lua | 10 +++++ home-manager/neovim/harpoon.lua | 12 ++++++ home-manager/neovim/init.lua | 38 ++++++++++++++++++ home-manager/neovim/lsp-zero-nvim.lua | 66 +++++++++++++++++++++++++++++++ home-manager/neovim/nvim-tree-lua.lua | 4 ++ home-manager/neovim/nvim-treesitter.lua | 9 +++++ home-manager/neovim/nvim-web-devicons.lua | 1 + home-manager/neovim/telescope-nvim.lua | 18 +++++++++ 9 files changed, 163 insertions(+) create mode 100644 home-manager/neovim/chatgpt.lua create mode 100644 home-manager/neovim/copilot-vim.lua create mode 100644 home-manager/neovim/harpoon.lua create mode 100644 home-manager/neovim/init.lua create mode 100644 home-manager/neovim/lsp-zero-nvim.lua create mode 100644 home-manager/neovim/nvim-tree-lua.lua create mode 100644 home-manager/neovim/nvim-treesitter.lua create mode 100644 home-manager/neovim/nvim-web-devicons.lua create mode 100644 home-manager/neovim/telescope-nvim.lua (limited to 'home-manager/neovim') 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", "", 'copilot#Accept("")', { 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', 'a', function() mark.add_file() end) +vim.keymap.set('n', 'm', function() ui.toggle_quick_menu() end) +vim.keymap.set('n', 'b', function() ui.nav_next() end) +vim.keymap.set('n', 'n', function() ui.nav_prev() end) +vim.keymap.set('n', 'h', function() ui.nav_file(1) end) +vim.keymap.set('n', 'j', function() ui.nav_file(2) end) +vim.keymap.set('n', 'k', function() ui.nav_file(3) end) +vim.keymap.set('n', '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', 'y', '"+y') +vim.keymap.set('n', 'Y', '"+yg_') +vim.keymap.set('n', 'y', '"+y') +vim.keymap.set('n', 'yy', '"+yy') +vim.keymap.set('n', 'p', '"+p') +vim.keymap.set('n', 'P', '"+P') +vim.keymap.set('v', 'p', '"+p') +vim.keymap.set('v', 'P', '"+P') + +-- Try to keep our cursor centered +vim.keymap.set('n', 'j', 'jzz') +vim.keymap.set('n', 'k', 'kzz') +vim.keymap.set('n', '', 'zz') +vim.keymap.set('n', '', 'zz') + +-- Splits +vim.keymap.set('n', 'd', ':split') +vim.keymap.set('n', 's', ':vsplit') + +-- :he listchars +vim.opt.listchars = { + trail = '*', + space = 'ˑ', + tab = '▷▷⋮', +} +vim.keymap.set('n', '', ':set invlist') + +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', 'Telescope lsp_definitions', opts) + vim.keymap.set('n', 'gi', 'Telescope lsp_implementations', opts) + vim.keymap.set('n', 'gr', 'Telescope lsp_references', opts) + vim.keymap.set('n', '', 'LspRestart', 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 = { + [''] = cmp.mapping.confirm({select = false}), + [''] = cmp_action.luasnip_jump_forward(), + [''] = cmp_action.luasnip_jump_backward(), + [''] = cmp_action.luasnip_supertab(), + [''] = 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', '', 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', 'f', function() api.find_files{hidden=true} end, {}) +vim.keymap.set('n', 'g', api.live_grep, {}) +vim.keymap.set('n', 'B', api.buffers, {}) +vim.keymap.set('n', 'H', api.help_tags, {}) + +vim.api.nvim_set_keymap("n", "", ":Telescope file_browser path=%:p:h select_buffer=true", { noremap = true }) -- cgit v1.2.3