diff options
| -rw-r--r-- | dotfiles/nvim/nvim0.12.lua | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/dotfiles/nvim/nvim0.12.lua b/dotfiles/nvim/nvim0.12.lua new file mode 100644 index 0000000..b8346a1 --- /dev/null +++ b/dotfiles/nvim/nvim0.12.lua @@ -0,0 +1,145 @@ +-- Configuration for nvim 0.12+ +-- Not replacing my main configuration yet as this isn't released or +-- in any distribution package managers at the moment + +-- Themes +vim.pack.add({'https://github.com/shaunsingh/nord.nvim'}) +vim.pack.add({'https://github.com/ellisonleao/gruvbox.nvim'}) + +vim.pack.add({'https://github.com/nvim-treesitter/nvim-treesitter'}) + +-- Required for telescope +vim.pack.add({'https://github.com/nvim-lua/plenary.nvim'}) +vim.pack.add({'https://github.com/nvim-telescope/telescope.nvim'}) + +local hooks = function(ev) + local name, kind = ev.data.spec.name, ev.data.kind + + if name == 'nvim-treesitter' then + vim.system(":TSUpdate") + end +end + +vim.api.nvim_create_autocmd('PackChanged', {callback = hooks}) + +require'nvim-treesitter.configs'.setup { + hightlight = { + enable = true, + } +} + +-------------------------------------------------------------------------------- +-- telescope +-------------------------------------------------------------------------------- +vim.keymap.set('n', '<leader>?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' }) +vim.keymap.set('n', '<leader>sb', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' }) +vim.keymap.set('n', '<leader>/', function() + -- You can pass additional configuration to telescope to change theme, layout, etc. + require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { + winblend = 10, + previewer = false, + }) +end, { desc = '[/] Fuzzily search in current buffer]' }) + +vim.keymap.set('n', '<leader>sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' }) +vim.keymap.set('n', '<leader>sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' }) +vim.keymap.set('n', '<leader>sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' }) +vim.keymap.set('n', '<leader>sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' }) +vim.keymap.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' }) +local builtin = require('telescope.builtin') +vim.keymap.set('n', '<C-p>', builtin.find_files, {}) +vim.keymap.set('n', '<C-o>', builtin.git_files, {}) +vim.keymap.set('n', '<leader>ps', function() + builtin.grep_string({ search = vim.fn.input("Grep > ") }) +end) +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- Nord theme config +-------------------------------------------------------------------------------- +-- vim.g.nord_contrast = true +-- vim.g.nord_borders = false +vim.g.nord_disable_background = true +vim.g.nord_italic = false +-- vim.g.nord_uniform_diff_background = true +vim.g.nord_bold = false + +-- Load the colorscheme +require('nord').set() +-------------------------------------------------------------------------------- + + +-- "Basic" nvim config: + +vim.opt.nu = true +vim.opt.rnu = true + +vim.keymap.set("n", "<leader>l", function() vim.cmd('set list!') end) +vim.opt.listchars = 'tab:▸ ,eol:¬,trail:•' +-- vim.opt.listchars = 'tab:| ,eol:$,trail:.' + +-- tw == textwidth +vim.opt.tw = 80 +vim.opt.colorcolumn = "80" + +vim.opt.ic = true +vim.opt.hls = true + +vim.opt.scrolloff = 8 + +vim.opt.tabstop = 4 +vim.opt.softtabstop = 4 +vim.opt.shiftwidth = 4 +vim.opt.smartindent = true +vim.opt.expandtab = false +vim.opt.wrap = false + +-- I know how to setup my editor, I don't need your changes to my vim +-- configuration. +vim.opt.modeline = false + +-- Use \-s to pop open a spelling menu. use ]s to search forwards and [s to go +-- +-- backwards. +-- Apparently this also doesn't work if spell checking isn't enabled +-- at the time you enable it. +vim.opt.spell = true +vim.keymap.set("n", "<leader>ss", "ea<C-X><C-S>") +vim.opt.spell = false + + +-- Always show status line +vim.opt.laststatus = 2 + +-- Automatically keep window sizes equal and do it automatically +vim.cmd("set ea") +vim.cmd("autocmd VimResized * wincmd =") + + +vim.diagnostic.config({ + virtual_text = true, + signs = true, + underline = true, + -- update_in_insert = false, + severity_sort = true, +}) + + +-- For LSP, :help lsp-defaults can be useful to get the keybindings down + +-- clangd language server config... +-- 'bear' can be useful for generating compile_commands.json with clangd +vim.lsp.config['clangd'] = { + cmd = {'clangd'}, + filetypes = { 'c', 'cpp' }, + root_markers = {'compile_commands.json' }, +} +vim.lsp.enable('clangd') + + +vim.lsp.config['gopls'] = { + cmd = {'gopls'}, + filetypes = { 'go' }, + root_markers = {'go.mod' }, +} +vim.lsp.enable('gopls') |
