aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dotfiles/nvim/nvim0.12.lua145
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')