diff options
Diffstat (limited to 'config/essentials/nvim/lua/user')
18 files changed, 387 insertions, 0 deletions
diff --git a/config/essentials/nvim/lua/user/aucommands.vim b/config/essentials/nvim/lua/user/aucommands.vim new file mode 100644 index 0000000..732985f --- /dev/null +++ b/config/essentials/nvim/lua/user/aucommands.vim @@ -0,0 +1,21 @@ +" Absolute numbers if window isn't focused +augroup numbertoggle + autocmd! + autocmd BufEnter,FocusGained,WinEnter * if &nu | set rnu | endif + autocmd BufLeave,FocusLost,WinLeave * if &nu | set nornu | endif +augroup END + +" terminal specific layout +augroup neovim_terminal autocmd! + autocmd TermOpen * startinsert + autocmd TermOpen * :GitGutterBufferDisable + autocmd TermOpen * :set nonumber norelativenumber signcolumn=no + autocmd TermOpen * nnoremap <buffer> <C-c> i<C-c> +augroup END + +" Return to last edit position +autocmd BufReadPost * + \ if line("'\"") > 1 && line("'\"") <= line("$") | + \ exe "normal! g`\"" | + \ endif + diff --git a/config/essentials/nvim/lua/user/cmp/arduino.lua b/config/essentials/nvim/lua/user/cmp/arduino.lua new file mode 100644 index 0000000..777df8d --- /dev/null +++ b/config/essentials/nvim/lua/user/cmp/arduino.lua @@ -0,0 +1,3 @@ +require'lspconfig'.arduino_language_server.setup{ + cmd = {"arduino-language-server", "-cli-config", "~/.arduinoIDE/arduino-cli.yaml"} +} diff --git a/config/essentials/nvim/lua/user/cmp/bash.lua b/config/essentials/nvim/lua/user/cmp/bash.lua new file mode 100644 index 0000000..91b6fba --- /dev/null +++ b/config/essentials/nvim/lua/user/cmp/bash.lua @@ -0,0 +1 @@ +require'lspconfig'.bashls.setup{} diff --git a/config/essentials/nvim/lua/user/cmp/clangd.lua b/config/essentials/nvim/lua/user/cmp/clangd.lua new file mode 100644 index 0000000..810aa42 --- /dev/null +++ b/config/essentials/nvim/lua/user/cmp/clangd.lua @@ -0,0 +1,2 @@ +-- c cpp +require'lspconfig'.clangd.setup{} diff --git a/config/essentials/nvim/lua/user/cmp/css.lua b/config/essentials/nvim/lua/user/cmp/css.lua new file mode 100644 index 0000000..07cb8bc --- /dev/null +++ b/config/essentials/nvim/lua/user/cmp/css.lua @@ -0,0 +1 @@ +require'lspconfig'.cssls.setup{} diff --git a/config/essentials/nvim/lua/user/cmp/emmet.lua b/config/essentials/nvim/lua/user/cmp/emmet.lua new file mode 100644 index 0000000..3193727 --- /dev/null +++ b/config/essentials/nvim/lua/user/cmp/emmet.lua @@ -0,0 +1 @@ +require'lspconfig'.emmet_ls.setup{} diff --git a/config/essentials/nvim/lua/user/cmp/html.lua b/config/essentials/nvim/lua/user/cmp/html.lua new file mode 100644 index 0000000..69ed29d --- /dev/null +++ b/config/essentials/nvim/lua/user/cmp/html.lua @@ -0,0 +1,7 @@ +-- html +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities.textDocument.completion.completionItem.snippetSupport = true + +require'lspconfig'.html.setup { + capabilities = capabilities, +} diff --git a/config/essentials/nvim/lua/user/cmp/init.lua b/config/essentials/nvim/lua/user/cmp/init.lua new file mode 100644 index 0000000..a545f12 --- /dev/null +++ b/config/essentials/nvim/lua/user/cmp/init.lua @@ -0,0 +1,12 @@ +require("user.cmp.setup") + +require("user.cmp.arduino") +require("user.cmp.bash") +require("user.cmp.clangd") +require("user.cmp.html") +require("user.cmp.css") +require("user.cmp.java") +require("user.cmp.js") +require("user.cmp.emmet") +require("user.cmp.lua") +require("user.cmp.python") diff --git a/config/essentials/nvim/lua/user/cmp/java.lua b/config/essentials/nvim/lua/user/cmp/java.lua new file mode 100644 index 0000000..1027588 --- /dev/null +++ b/config/essentials/nvim/lua/user/cmp/java.lua @@ -0,0 +1 @@ +-- require'lspconfig'.jdtls.setup{} diff --git a/config/essentials/nvim/lua/user/cmp/js.lua b/config/essentials/nvim/lua/user/cmp/js.lua new file mode 100644 index 0000000..7188a22 --- /dev/null +++ b/config/essentials/nvim/lua/user/cmp/js.lua @@ -0,0 +1 @@ +require'lspconfig'.tsserver.setup{} diff --git a/config/essentials/nvim/lua/user/cmp/lua.lua b/config/essentials/nvim/lua/user/cmp/lua.lua new file mode 100644 index 0000000..e594870 --- /dev/null +++ b/config/essentials/nvim/lua/user/cmp/lua.lua @@ -0,0 +1,20 @@ +-- lua +require'lspconfig'.lua_ls.setup { + settings = { + Lua = { + runtime = { + version = 'LuaJIT', + }, + diagnostics = { + globals = {'vim'}, + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), + checkThirdParty = false, -- no prompt for luassert :) + }, + telemetry = { + enable = false, + }, + }, + }, +} diff --git a/config/essentials/nvim/lua/user/cmp/python.lua b/config/essentials/nvim/lua/user/cmp/python.lua new file mode 100644 index 0000000..aec86bd --- /dev/null +++ b/config/essentials/nvim/lua/user/cmp/python.lua @@ -0,0 +1 @@ +require'lspconfig'.jedi_language_server.setup{} diff --git a/config/essentials/nvim/lua/user/cmp/setup.lua b/config/essentials/nvim/lua/user/cmp/setup.lua new file mode 100644 index 0000000..ed8a2d2 --- /dev/null +++ b/config/essentials/nvim/lua/user/cmp/setup.lua @@ -0,0 +1,49 @@ +local cmp = require'cmp' +cmp.setup({ + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) + end, + }, + window = { + -- completion = cmp.config.window.bordered(), + -- documentation = cmp.config.window.bordered(), + }, + mapping = cmp.mapping.preset.insert({ + ['<C-b>'] = cmp.mapping.scroll_docs(-4), + ['<C-f>'] = cmp.mapping.scroll_docs(4), + ['<C-Space>'] = cmp.mapping.complete(), + ['<C-c>'] = cmp.mapping.abort(), + ['<C-y>'] = cmp.mapping.confirm({ select = true }), + }), + sources = cmp.config.sources({ + { name = 'nvim_lua' }, + { name = 'nvim_lsp'}, + { name = 'path' }, + { name = 'luasnip' }, + { name = 'nvim_lsp_signature_help' }, + { name = 'buffer', keyword_length = 4 }, + }), + preselect = cmp.PreselectMode.None, +}) + +cmp.setup.filetype('gitcommit', { + sources = cmp.config.sources({ + { name = 'cmp_git' }, + { name = 'buffer', keyword_length = 4 }, + }) +}) + +cmp.setup.cmdline({ '/', '?' }, { + mapping = cmp.mapping.preset.cmdline(), + sources = { + { name = 'buffer', keyword_length = 4 } + }, +}) +cmp.setup.cmdline(':', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = 'path' }, + { name = 'cmdline', keyword_length = 4 } + }), +}) diff --git a/config/essentials/nvim/lua/user/init.lua b/config/essentials/nvim/lua/user/init.lua new file mode 100644 index 0000000..a9ba9c4 --- /dev/null +++ b/config/essentials/nvim/lua/user/init.lua @@ -0,0 +1,6 @@ +require("user.packer") +require("user.remap") +require("user.set") +require("user.cmp") +require("user.zk") +vim.cmd.source(vim.fn.stdpath("config") .. "/lua/user/aucommands.vim") diff --git a/config/essentials/nvim/lua/user/packer.lua b/config/essentials/nvim/lua/user/packer.lua new file mode 100644 index 0000000..90ffa5b --- /dev/null +++ b/config/essentials/nvim/lua/user/packer.lua @@ -0,0 +1,61 @@ +return require('packer').startup(function(use) + use('wbthomason/packer.nvim') + + -- files + use { + 'nvim-telescope/telescope.nvim', tag = '0.1.1', + requires = { {'nvim-lua/plenary.nvim'} } + } + use('nvim-telescope/telescope-symbols.nvim') + use('theprimeagen/harpoon') + + -- colors + use('shaunsingh/nord.nvim') + use('norcalli/nvim-colorizer.lua') + + use('airblade/vim-gitgutter') + + use('nvim-treesitter/nvim-treesitter', {run = ':TSUpdate'}) + use('nvim-treesitter/playground') + + use('mbbill/undotree') + + use('tpope/vim-capslock') + use('tpope/vim-commentary') + use('tpope/vim-endwise') + use('tpope/vim-fugitive') + use('tpope/vim-repeat') + use('tpope/vim-surround') + use('tpope/vim-vinegar') + + -- utils + use('godlygeek/tabular') + use('renerocksai/calendar-vim') + use('LordTlasT/live-server') + use('ojroques/vim-oscyank', {branch = "main"}) + use("potamides/pantran.nvim") + + -- objects + use('michaeljsmith/vim-indent-object') + + -- completion + use('neovim/nvim-lspconfig') + use('hrsh7th/nvim-cmp') + use('hrsh7th/cmp-nvim-lua') + use('hrsh7th/cmp-nvim-lsp') + use('hrsh7th/cmp-buffer') + use('hrsh7th/cmp-path') + use('hrsh7th/cmp-cmdline') + use('hrsh7th/cmp-nvim-lsp-signature-help') + use('alvan/vim-closetag') + + -- java + use('mfussenegger/nvim-jdtls') + + -- snippets + use('L3MON4D3/LuaSnip') + use('saadparwaiz1/cmp_luasnip') + + -- notes + use('renerocksai/telekasten.nvim') +end) diff --git a/config/essentials/nvim/lua/user/remap.lua b/config/essentials/nvim/lua/user/remap.lua new file mode 100644 index 0000000..962ce46 --- /dev/null +++ b/config/essentials/nvim/lua/user/remap.lua @@ -0,0 +1,101 @@ +vim.g.mapleader = " " +vim.g.maplocalleader = "\\" + +-- -- vinegar is already doing this +-- vim.keymap.set("n", "-", vim.cmd.Ex) + +-- moving +vim.keymap.set("i", "<C-a>", "<C-o>I", { noremap = true }) +vim.keymap.set("i", "<C-e>", "<C-o>A", { noremap = true }) +vim.keymap.set("i", "<C-k>", "<C-o>D", { noremap = true }) + +vim.keymap.set("i", "{<cr>", "{<cr>}<C-o>O", { noremap = true }) +vim.keymap.set("i", "{;<cr>", "{<cr>};<C-o>O", { noremap = true }) + +-- buffers +vim.keymap.set("n", "gb", "<cmd>buffers<cr>:buffer<Space>", { noremap = true }) +vim.keymap.set("n", "<Leader>q", "<cmd>q!<cr>", { noremap = true }) +vim.keymap.set("n", "<Leader>Q", "<cmd>qa!<cr>", { noremap = true }) + +-- Windows +vim.keymap.set("n", "<A-h>", "<C-W>h", { noremap = true }) +vim.keymap.set("n", "<A-j>", "<C-W>j", { noremap = true }) +vim.keymap.set("n", "<A-k>", "<C-W>k", { noremap = true }) +vim.keymap.set("n", "<A-l>", "<C-W>l", { noremap = true }) +vim.keymap.set("n", "<A-o>", "<C-W>o", { noremap = true }) +-- command line +vim.keymap.set("c", "<M-b>", "<C-Left>", { noremap = true }) +vim.keymap.set("c", "<M-f>", "<C-Right>", { noremap = true }) +vim.keymap.set("c", "<M-d>", "<C-Right><C-w>", { noremap = true }) + +-- move visual selection up/down wards +vim.keymap.set("v", "J", "<cmd>m '>+1<cr>gv=gv<cr>", { noremap = true }) +vim.keymap.set("v", "K", "<cmd>m '<-2<cr>gv=gv<cr>", { noremap = true }) + +-- clipboard +vim.keymap.set("n", "<Leader>y", "\"+y", { noremap = true }) +vim.keymap.set("n", "<Leader>o", "<Plug>OSCYank", { noremap = true }) + +-- templates +vim.keymap.set("n", "<LocalLeader>rt", ":-1r " .. vim.fn.stdpath("config") .. "/templates", { noremap = true }) + +-- hide all +local s = {hidden_all = 0} +vim.keymap.set("n", "<C-h>", function () + s.hidden_all = 1 - s.hidden_all + local opt = s.hidden_all == 0 + vim.opt.showmode = opt + vim.opt.ruler = opt + vim.opt.nu = opt + vim.opt.rnu = opt + vim.opt.showcmd = opt + vim.opt.laststatus = opt and 2 or 0 + vim.opt.signcolumn = opt and "yes" or "no" +end, { noremap = true }) + +-- utils +vim.keymap.set("i", "<LocalLeader>r", "<cmd>r!echo -n $RANDOM<cr><esc>kJA", { noremap = true }) +-- ordered list +vim.keymap.set("n", "<LocalLeader>n", "0vap<C-v>I0. <esc>gvg<C-a>", { noremap = true }) +vim.keymap.set("v", "<Leader>u", "<cmd>'<,'>s/^[0-9]\\+\\. //<cr><esc>", { noremap = true }) +-- scripts +vim.keymap.set("n", "<Leader>x", "<cmd>!chmod +x %<cr>", { noremap = true, silent = true}) +-- replace +vim.keymap.set("n", "<Leader>sf", [[:%s/\<<C-r><C-w>\>/<C-r><C-w><C-w>/gI<Left><Left><Left>]]) +vim.keymap.set("n", "<Leader>sl", [[:s/\<<C-r><C-w>\>/<C-r><C-w><C-w>/gI<Left><Left><Left>]]) + +-- write +vim.keymap.set("n", "<LocalLeader>w", "<cmd>write<cr>", { noremap = true }) +vim.keymap.set("n", "<LocalLeader>W", "<cmd>write!<cr>", { noremap = true }) +vim.keymap.set("n", "<LocalLeader>e", "<cmd>edit<cr>", { noremap = true }) +vim.keymap.set("n", "<LocalLeader>s", function () + vim.cmd.source() + print("sourced.") +end, { noremap = true }) + +-- Packer +vim.keymap.set("n", "<Leader>P", "<cmd>PackerSync<cr>", { noremap = true }) + +-- spelling +vim.keymap.set("n", "<Leader><C-s>", "<cmd>setlocal spell!<cr>", { noremap = true }) + +-- open terminal in file's parent director +-- this needs to be asynchrous +vim.keymap.set("n", "<Return>", function () + local cmd = "cd " .. vim.fn.expand("%:p:h") .. "; setsid st" + -- asynchrous go brr + vim.fn.jobstart(cmd, { on_exit = function(job_id, exit_code, event_type) end }) +end, { noremap = true }) + + +-- clear registers +vim.keymap.set("n", "<Leader>rc", function () + local regs = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '/', '-', '"'} + for _, r in ipairs(regs) do + vim.fn.setreg(r, {}) + end +end, { noremap = true }) diff --git a/config/essentials/nvim/lua/user/set.lua b/config/essentials/nvim/lua/user/set.lua new file mode 100644 index 0000000..69ee4ae --- /dev/null +++ b/config/essentials/nvim/lua/user/set.lua @@ -0,0 +1,43 @@ +local opt = vim.opt + +opt.clipboard = "unnamed" + +opt.termguicolors = true + +opt.number = true +opt.relativenumber = true +opt.showmatch = true +opt.matchtime = 0 +opt.showcmd = true +opt.cursorline = true +opt.ruler = true + +opt.path:append("**") + +opt.wildmenu = true +opt.incsearch = true +opt.hlsearch = false + +opt.mouse = "" + +opt.tabstop = 4 +opt.shiftwidth = 4 +opt.backspace = "indent,eol,start" + +opt.signcolumn = "yes" +opt.updatetime = 100 +opt.laststatus = 2 +opt.history = 200 +opt.encoding = "utf-8" + +opt.smartindent = true +opt.scrolloff = 8 + +opt.ignorecase = true +opt.smartcase = true + +opt.swapfile = false +opt.backup = false + +opt.spelllang = "en_us,nl" +opt.formatoptions = "cqrnj" diff --git a/config/essentials/nvim/lua/user/zk.lua b/config/essentials/nvim/lua/user/zk.lua new file mode 100644 index 0000000..a3cdefb --- /dev/null +++ b/config/essentials/nvim/lua/user/zk.lua @@ -0,0 +1,56 @@ +local home = vim.fn.expand("~/docs/zk") +require('telekasten').setup({ + home = home, + take_over_my_home = true, + auto_set_filetype = true, + auto_set_syntax = true, + dailies = home .. '/' .. 'daily', + weeklies = home .. '/' .. 'weekly', + templates = home .. '/' .. 'templates', + image_subdir = "img", + extension = ".md", + new_note_filename = "title", + uuid_type = "%Y%m%d%H%M", + uuid_sep = "-", + filename_space_subst = nil, + follow_creates_nonexisting = true, + dailies_create_nonexisting = true, + weeklies_create_nonexisting = true, + journal_auto_open = false, + template_new_note = home .. '/' .. 'templates/new_note.md', + template_new_daily = home .. '/' .. 'templates/daily.md', + template_new_weekly= home .. '/' .. 'templates/weekly.md', + image_link_style = "markdown", + sort = "filename", + plug_into_calendar = true, + calendar_opts = { + weeknm = 4, + calendar_monday = 1, + calendar_mark = 'left-fit', + }, + close_after_yanking = false, + insert_after_inserting = true, + tag_notation = "#tag", + command_palette_theme = "dropdown", + show_tags_theme = "ivy", + subdirs_in_links = true, + template_handling = "smart", + new_note_location = "smart", + rename_update_links = true, + media_previewer = "telescope-media-files", + follow_url_fallback = nil, +}) + +vim.keymap.set("n", "<leader>z", "<cmd>Telekasten panel<cr>") +vim.keymap.set("n", "<leader>zN", "<cmd>Telekasten new_templated_note<cr>") +vim.keymap.set("n", "<leader>zT", "<cmd>Telekasten goto_today<cr>") +vim.keymap.set("n", "<leader>zW", "<cmd>Telekasten goto_thisweek<cr>") +vim.keymap.set("n", "<leader>zd", "<cmd>Telekasten find_daily_notes<cr>") +vim.keymap.set("n", "<leader>zf", "<cmd>Telekasten find_notes<cr>") +vim.keymap.set("n", "<leader>zg", "<cmd>Telekasten search_notes<cr>") +vim.keymap.set("n", "<leader>zm", "<cmd>Telekasten browse_media<cr>") +vim.keymap.set("n", "<leader>zn", "<cmd>Telekasten new_note<cr>") +vim.keymap.set("n", "<leader>zp", "<cmd>Telekasten preview_img<cr>") +vim.keymap.set("n", "<leader>zs", "<cmd>Telekasten switch_vault<cr>") +vim.keymap.set("n", "<leader>zw", "<cmd>Telekasten find_weekly_notes<cr>") +vim.keymap.set("n", "<leader>#", "<cmd>Telekasten show_tags<cr>") |