dotfiles

My current dotfiles, managed with stow!
Log | Files | Refs | README

commit 6802fffc8145ced0afc6291f6757066e3d43fad3
parent 37812ab606b0f122730afe51a58dad407785d806
Author: Benjamin Paul <bpaul@bpaul.xyz>
Date:   Thu, 29 Sep 2022 01:22:48 +1000

Lot's of neovim config changes! I probably should have been updating the git repo more regularly, huh. Whoops

Diffstat:
MREADME.md | 2++
Anvim/.config/nvim/after/plugin/cmp.lua | 71+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Anvim/.config/nvim/after/plugin/compe.lua | 13+++++++++++++
Anvim/.config/nvim/after/plugin/feline.lua | 3+++
Anvim/.config/nvim/after/plugin/lsp.lua | 88+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Anvim/.config/nvim/after/plugin/luasnip.lua | 11+++++++++++
Rnvim/.config/nvim/lua/plugins/nvim_colorizer.lua -> nvim/.config/nvim/after/plugin/nvim_colorizer.lua | 0
Anvim/.config/nvim/after/plugin/orgmode.lua | 8++++++++
Rnvim/.config/nvim/lua/plugins/telescope.lua -> nvim/.config/nvim/after/plugin/telescope.lua | 0
Anvim/.config/nvim/after/plugin/treesitter.lua | 6++++++
Rnvim/.config/nvim/lua/plugins/vimtex.lua -> nvim/.config/nvim/after/plugin/vimtex.lua | 0
Mnvim/.config/nvim/init.lua | 7+++++++
Mnvim/.config/nvim/lua/map.lua | 39+++++++++++++++++++--------------------
Mnvim/.config/nvim/lua/plugins.lua | 41+++++++++++++++++++++++++++--------------
Dnvim/.config/nvim/lua/plugins/compe.lua | 13-------------
Dnvim/.config/nvim/lua/plugins/feline.lua | 3---
Dnvim/.config/nvim/lua/plugins/lsp.lua | 9---------
Dnvim/.config/nvim/lua/plugins/luasnip.lua | 33---------------------------------
Dnvim/.config/nvim/lua/plugins/treesitter.lua | 8--------
19 files changed, 255 insertions(+), 100 deletions(-)

diff --git a/README.md b/README.md @@ -22,6 +22,7 @@ Software to try: Awesome Sway River +Kiwmi Openbox Kitty @@ -31,5 +32,6 @@ Fish Rofi +Yambar (Pretend there are screenshots here) diff --git a/nvim/.config/nvim/after/plugin/cmp.lua b/nvim/.config/nvim/after/plugin/cmp.lua @@ -0,0 +1,71 @@ +-- TODO +-- set max autocomplete field count + +local cmp = require 'cmp' +local luasnip = require 'luasnip' + +local function has_words_before() + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + -- make this line not ugly please! + return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil +end + +cmp.setup({ + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + mapping = { + ['<Tab>'] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + -- elseif luasnip.expand_or_jumpable() then + -- luasnip.expand_or_jump() + elseif has_words_before() then + cmp.complete() + else + fallback() + end + end, { "i", "s" }), + ['<S-Tab>'] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + -- elseif luasnip.jumpable(-1) then + -- luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + --['<CR>'] = cmp.mapping.confirm({ select = true }), + -- Add <CR> binding!! + -- <CR> binding sucks! it means you are unable to create a new line + }, + sources = cmp.config.sources({ + { name = 'nvim_lua' }, + { name = 'nvim_lsp' }, + { name = 'cmp-nvim-lsp-signature-help' }, + { name = 'path' }, + { name = 'orgmode' }, + { name = 'luasnip' }, + { name = 'calc' }, + { name = 'latex_symbols' }, + { name = 'spell' }, + { name = 'buffer', keyword_length = 5 }, + --{ name = 'rg' }, idk how to use this though but it seems cool + }) + -- TODO Sorting!! +}) + +cmp.setup.cmdline(':', { + sources = cmp.config.sources({ + { name = 'path' }, + { name = 'cmdline' }, + }) +}) + +cmp.setup.cmdline('/', { + sources = cmp.config.sources({ + { name = 'buffer' }, + }) +}) diff --git a/nvim/.config/nvim/after/plugin/compe.lua b/nvim/.config/nvim/after/plugin/compe.lua @@ -0,0 +1,13 @@ +-- switched to nvim-cmp + +--require'compe'.setup{ +-- enabled = true; +-- autocomplete = true; +-- preselect = 'enable'; +-- source = { +-- buffer = true; +-- luasnip = true; +-- nvim_lsp = true; +-- nvim_lua = true; +-- }; +--} diff --git a/nvim/.config/nvim/after/plugin/feline.lua b/nvim/.config/nvim/after/plugin/feline.lua @@ -0,0 +1,3 @@ +--require 'feline' .setup({ +-- preset = 'noicon' +--}) diff --git a/nvim/.config/nvim/after/plugin/lsp.lua b/nvim/.config/nvim/after/plugin/lsp.lua @@ -0,0 +1,88 @@ +-- Uncomment this for a broken implementation of format on save! :( +--local format = vim.api.nvim_create_augroup("LSPFormat", { clear = true }) +--vim.api.nvim_create_autocmd("BufWritePre", { +--command = ":lua vim.lsp.buf.format()", +--group = format, +--buffer = 0, +--}) + +-- Mappings +local opts = { noremap = true, silent = true } + +-- Open detail about a diagnostic +vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, opts) +-- Go to the previous or next diagnostic +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) +vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts) +-- Create a list of diagnostics for the current buffer +-- This is pretty cool! It makes a new buffer which contains the list, and you +-- can goto each diagnostic by pressing enter on it! +vim.keymap.set('n', '<leader><leader>e', vim.diagnostic.setloclist, opts) + +-- Only do this stuff once a language server has been attached +local on_attach = function(_, bufnr) + -- Enable insert mode autocompletion with <C-x><C-o> (:h 'omnifunc') + vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') + + local bufopts = { noremap = true, silent = true, buffer = bufnr } + + -- Format the current file using the formatter provided with the language + -- server + vim.keymap.set('n', '<leader><leader>f', vim.lsp.buf.format, bufopts) + -- Show information about the symbol under the cursor in a floating windor. + -- Call twice to move into the floating window. + vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) + -- Jump to definitions + vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) + vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) + vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts) + vim.keymap.set('n', '<leader>d', vim.lsp.buf.type_definition, bufopts) + -- List all references of the symbol under the cursor + vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) + -- Rename something + vim.keymap.set('n', '<leader><leader>r', vim.lsp.buf.rename, bufopts) + -- Run a code action (very cool) with telescope i think somehow + vim.keymap.set('n', '<leader><leader>c', vim.lsp.buf.code_action, bufopts) +end + +-- Servers +require 'lspconfig'.ccls.setup { + on_attach = on_attach, +} +require 'lspconfig'.hls.setup { + on_attach = on_attach, +} +require 'lspconfig'.texlab.setup { + on_attach = on_attach, +} +require 'lspconfig'.sumneko_lua.setup { + on_attach = on_attach, + settings = { + Lua = { + runtime = { + version = "LuaJIT", + }, + diagnostics = { + globals = { 'vim' }, + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), + }, + telemetry = { + enabled = false, + }, + } + } +} +require 'rust-tools'.setup({ + server = { + on_attach = on_attach, + settings = { + ["rust-analyzer"] = { + checkOnSave = { + allTargets = false, + }, + } + } + } +}) diff --git a/nvim/.config/nvim/after/plugin/luasnip.lua b/nvim/.config/nvim/after/plugin/luasnip.lua @@ -0,0 +1,11 @@ +local ls = require 'luasnip' + +local s = ls.snippet +local t = ls.text_node +local f = ls.function_node + +ls.snippets = { + all = { + -- lmoa + } +} diff --git a/nvim/.config/nvim/lua/plugins/nvim_colorizer.lua b/nvim/.config/nvim/after/plugin/nvim_colorizer.lua diff --git a/nvim/.config/nvim/after/plugin/orgmode.lua b/nvim/.config/nvim/after/plugin/orgmode.lua @@ -0,0 +1,8 @@ +local orgmode = require('orgmode') + +orgmode.setup_ts_grammar() + +orgmode.setup({ + org_agenda_files = { '~/doc/org/*' }, + org_default_notes_file = '~/doc/org/index.org', +}) diff --git a/nvim/.config/nvim/lua/plugins/telescope.lua b/nvim/.config/nvim/after/plugin/telescope.lua diff --git a/nvim/.config/nvim/after/plugin/treesitter.lua b/nvim/.config/nvim/after/plugin/treesitter.lua @@ -0,0 +1,6 @@ +require'nvim-treesitter.configs'.setup { + highlight = { + enable = true, + additional_vim_regex_highlighting = true, + }, +} diff --git a/nvim/.config/nvim/lua/plugins/vimtex.lua b/nvim/.config/nvim/after/plugin/vimtex.lua diff --git a/nvim/.config/nvim/init.lua b/nvim/.config/nvim/init.lua @@ -3,6 +3,13 @@ require 'settings' require 'map' require 'commands' +-- I can't remember why this is in my config but it might be important for +-- something +P = function(table) + print(vim.inspect(table)) + return table +end + --if packer_plugins["lush.nvim"] and packer_plugins["lush.nvim"].loaded then --load 'colours' --end diff --git a/nvim/.config/nvim/lua/map.lua b/nvim/.config/nvim/lua/map.lua @@ -1,31 +1,30 @@ -- Make CTRL-L clear echo and search -vim.api.nvim_set_keymap('n', '<C-L>', ':noh<CR>:mode<CR>', - { noremap = true, silent = true }) +vim.keymap.set('n', '<C-L>', ':noh<CR>:mode<CR>', + { noremap = true, silent = true }) -- Make leader+a insert one from the end of the line because semicolon -vim.api.nvim_set_keymap('n', '<leader>a', '$i', - { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>a', '$i', + { noremap = true, silent = true }) -- Make leader+x delete char at the end of the line -vim.api.nvim_set_keymap('n', '<leader>x', '$x', - { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>x', '$x', + { noremap = true, silent = true }) -- Make leader+f fix the spelling of the current word -vim.api.nvim_set_keymap('n', '<leader>f', '1z=', - { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>f', '1z=', + { noremap = true, silent = true }) -- Make leader+C open the colour scheme menu -vim.api.nvim_set_keymap('n', '<leader>C', ':Telescope colorscheme<CR>', - { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>C', ':Telescope colorscheme<CR>', + { noremap = true, silent = true }) -- Make leader+F fuzzyfind files -vim.api.nvim_set_keymap('n', '<leader>F', ':Telescope find_files<CR>', - { noremap = true, silent = true }) - +vim.keymap.set('n', '<leader>F', ':Telescope find_files<CR>', + { noremap = true, silent = true }) + -- Make Shift-Delete do nothing (my keyboard is weird so I press it a lot) -vim.api.nvim_set_keymap('i', '<S-Del>', '', { noremap = true, silent = true }) +vim.keymap.set('i', '<S-Del>', '', { noremap = true, silent = true }) -- Tab completion -vim.api.nvim_set_keymap("i", "<Tab>", "v:lua.tab_complete()", {expr = true}) -vim.api.nvim_set_keymap("s", "<Tab>", "v:lua.tab_complete()", {expr = true}) -vim.api.nvim_set_keymap("i", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true}) -vim.api.nvim_set_keymap("s", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true}) +--vim.keymap.set("i", "<Tab>", "v:lua.tab_complete()", {expr = true}) +--vim.keymap.set("s", "<Tab>", "v:lua.tab_complete()", {expr = true}) +--vim.keymap.set("i", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true}) +--vim.keymap.set("s", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true}) --- TODO --- LSP mappings +-- LSP mappings in after/plugin/lsp.lua diff --git a/nvim/.config/nvim/lua/plugins.lua b/nvim/.config/nvim/lua/plugins.lua @@ -8,7 +8,7 @@ vim.cmd 'packadd packer.nvim' -- modulize more -- e.g. rust-tools should only initialize for rust files -require 'packer' .startup(function() +require 'packer'.startup(function() use 'wbthomason/packer.nvim' use 'gruvbox-community/gruvbox' @@ -21,39 +21,52 @@ require 'packer' .startup(function() use '~/.config/nvim/plugins/theme' - use { 'norcalli/nvim-colorizer.lua', config = function() require 'plugins/nvim_colorizer' end } + use 'norcalli/nvim-colorizer.lua' use 'mhinz/vim-startify' use 'mattn/calendar-vim' - use { 'neovim/nvim-lspconfig', config = function() require 'plugins/lsp' end } + -- This is cool + --use 'vimpostor/vim-tpipeline' + + use 'nvim-orgmode/orgmode' + + use 'neovim/nvim-lspconfig' use 'simrat39/rust-tools.nvim' - -- TODO Switch to nvim-cmp - use { 'hrsh7th/nvim-compe', config = function() require 'plugins/compe' end } - use { 'L3MON4D3/LuaSnip', config = function() require 'plugins/luasnip' end } + use 'L3MON4D3/LuaSnip' + -- TODO switch to coq!!! + use 'hrsh7th/nvim-cmp' + use 'saadparwaiz1/cmp_luasnip' + use 'hrsh7th/cmp-buffer' + use 'hrsh7th/cmp-cmdline' + use 'hrsh7th/cmp-path' + use 'hrsh7th/cmp-nvim-lsp' + use 'hrsh7th/cmp-nvim-lsp-signature-help' + use 'hrsh7th/cmp-nvim-lua' + use 'hrsh7th/cmp-calc' + + use 'lukas-reineke/cmp-rg' + use 'f3fora/cmp-spell' + use 'kdheepak/cmp-latex-symbols' + use 'tweekmonster/startuptime.vim' - use { 'lervag/vimtex', config = function() require 'plugins/vimtex' end } + use 'lervag/vimtex' use 'fidian/hexmode' - --use { 'famiu/feline.nvim', config = require 'plugins/feline' end } - use { 'nvim-treesitter/nvim-treesitter', run = ':TSUpdate', - config = function() require 'plugins/treesitter' end } - -- use 'p00f/nvim-ts-rainbow' -- https://github.com/nvim-treesitter/nvim-treesitter-refactor ? use { - 'nvim-telescope/telescope.nvim', - requires = { {'nvim-lua/plenary.nvim'} }, - config = function() require 'plugins/telescope' end + 'nvim-telescope/telescope.nvim', + requires = { { 'nvim-lua/plenary.nvim' } } } use 'nvim-telescope/telescope-bibtex.nvim' use 'nvim-telescope/telescope-cheat.nvim' diff --git a/nvim/.config/nvim/lua/plugins/compe.lua b/nvim/.config/nvim/lua/plugins/compe.lua @@ -1,13 +0,0 @@ --- switch to nvim-cmp - -require'compe'.setup{ - enabled = true; - autocomplete = true; - preselect = 'enable'; - source = { - buffer = true; - luasnip = true; - nvim_lsp = true; - nvim_lua = true; - }; -} diff --git a/nvim/.config/nvim/lua/plugins/feline.lua b/nvim/.config/nvim/lua/plugins/feline.lua @@ -1,3 +0,0 @@ -require 'feline' .setup({ - preset = 'noicon' -}) diff --git a/nvim/.config/nvim/lua/plugins/lsp.lua b/nvim/.config/nvim/lua/plugins/lsp.lua @@ -1,9 +0,0 @@ -require'lspconfig'.ccls.setup{} -require'lspconfig'.hls.setup{} - --- rust -require'lspconfig'.rust_analyzer.setup{} -require'rust-tools'.setup({}) - -require'lspconfig'.texlab.setup{} -require'lspconfig'.sumneko_lua.setup{} diff --git a/nvim/.config/nvim/lua/plugins/luasnip.lua b/nvim/.config/nvim/lua/plugins/luasnip.lua @@ -1,33 +0,0 @@ -function t(str) - return vim.api.nvim_replace_termcodes(str, true, true, true) -end - -function check_back_space() - local col = vim.fn.col('.') - 1 - if col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then - return true - else - return false - end -end - -_G.tab_complete = function() - if vim.fn.pumvisible() == 1 then - return t "<C-n>" - elseif require'luasnip'.expand_or_jumpable() then - return t "<Plug>luasnip-expand-or-jump" - elseif check_back_space() then - return t "<Tab>" - else - return vim.fn['compe#complete']() - end -end -_G.s_tab_complete = function() - if vim.fn.pumvisible() == 1 then - return t "<C-p>" - elseif require'luasnip'.expand_or_jumpable() then - return t "<Plug>luasnip-expand-or-jump" - else - return t "<S-Tab>" - end -end diff --git a/nvim/.config/nvim/lua/plugins/treesitter.lua b/nvim/.config/nvim/lua/plugins/treesitter.lua @@ -1,8 +0,0 @@ -require'nvim-treesitter.configs'.setup { - highlight = { - enable = true - }, - rainbow = { - enable = false - } -}