summaryrefslogtreecommitdiff
path: root/home-manager/neovim
diff options
context:
space:
mode:
authorJasper Ras <jaspert.ras@gmail.com>2024-11-09 14:26:34 +0100
committerJasper Ras <jaspert.ras@gmail.com>2024-11-09 14:26:34 +0100
commit3fce1b5d9350c116270111e92f2d993e1b518d4d (patch)
treedaada43eb23df53d6a0df3622d4bfe913851d1f3 /home-manager/neovim
parent4211ed3b82be9af26460a0a8d88dce9ce319bb47 (diff)
Inline home-manager
Diffstat (limited to 'home-manager/neovim')
-rw-r--r--home-manager/neovim/chatgpt.lua5
-rw-r--r--home-manager/neovim/copilot-vim.lua10
-rw-r--r--home-manager/neovim/harpoon.lua12
-rw-r--r--home-manager/neovim/init.lua38
-rw-r--r--home-manager/neovim/lsp-zero-nvim.lua66
-rw-r--r--home-manager/neovim/nvim-tree-lua.lua4
-rw-r--r--home-manager/neovim/nvim-treesitter.lua9
-rw-r--r--home-manager/neovim/nvim-web-devicons.lua1
-rw-r--r--home-manager/neovim/telescope-nvim.lua18
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 })