]> git.armaanb.net Git - dotfiles.git/blobdiff - .config/nvim/init.lua
nvim: use treesitter
[dotfiles.git] / .config / nvim / init.lua
index f06885157ea2cd9ba8aab487afffe96dfa379ac5..b7888e62ed2a6679c5fd73a5fe7749568a26dd33 100644 (file)
@@ -6,9 +6,7 @@ vim.opt.mouse = 'a'
 vim.opt.undofile = true
 vim.opt.textwidth = 80
 map('', 'Q', '<nop>', opts)
-
--- Polyglot
-vim.g.polyglot_disabled = {'sensible'}
+vim.g.mapleader = ' '
 
 -- Plugins
 local install_path = vim.fn.stdpath('data') .. '/site/pack/paqs/start/paq-nvim'
@@ -18,20 +16,29 @@ if vim.fn.empty(vim.fn.glob(install_path)) > 0 then
                'https://github.com/savq/paq-nvim.git', install_path})
 end
 
+require('impatient')
+
 require('paq') {
-       'ap/vim-css-color';              -- Highlight css colors
-       'ctrlpvim/ctrlp.vim';            -- Fuzzy file finding
-       'editorconfig/editorconfig-vim'; -- Follow editorconfig
-       'godlygeek/tabular';             -- Line things up
-       'lifepillar/vim-mucomplete';     -- Simple autocompletion
-       'meain/hima-vim';                -- Nice color scheme
-       'neovim/nvim-lspconfig';         -- LSP configurations
-       'sheerun/vim-polyglot';          -- Language pack
-       'tpope/vim-commentary';          -- Easily comment
-       'tpope/vim-rsi';                 -- Readline bindings
-       'tpope/vim-sensible';            -- Sensible defaults
-       'tpope/vim-speeddating';         -- Modify dates with C-a, C-x
-       'tpope/vim-surround';            -- Easily modify sorrounding characters
+       'editorconfig/editorconfig-vim';  -- Follow editorconfig
+       'folke/lsp-colors.nvim';          -- Add LSP colors to any theme
+       'godlygeek/tabular';              -- Line things up
+       'junegunn/fzf';                   -- Fuzzy file finding
+       'junegunn/fzf.vim';               -- Fuzzy file finding
+       'lewis6991/impatient.nvim';       -- Improve startup time
+       'lifepillar/vim-mucomplete';      -- Simple autocompletion
+       'meain/hima-vim';                 -- Nice color scheme
+       'nathom/filetype.nvim';           -- Faster filetype.vim replacement
+       'neovim/nvim-lspconfig';          -- LSP configurations
+       'norcalli/nvim-colorizer.lua';    -- Highlight css colors
+       'ntpeters/vim-better-whitespace'; -- Highlight and strip whitespace
+       'nvim-treesitter/nvim-treesitter';-- Parsing
+       'romgrk/nvim-treesitter-context'; -- Shows context for where you are
+       'savq/paq-nvim';                  -- paq manages itself
+       'tpope/vim-commentary';           -- Easily comment
+       'tpope/vim-rsi';                  -- Readline bindings
+       'tpope/vim-sensible';             -- Sensible defaults
+       'tpope/vim-speeddating';          -- Modify dates with C-a, C-x
+       'tpope/vim-surround';             -- Easily modify surrounding chars
 }
 
 -- Colorscheme
@@ -47,6 +54,14 @@ map('n', '<C-l>', '<C-w><C-l>', opts)
 -- Clear search highlighting
 map('n', '<C-c>', ':noh<CR>', opts)
 
+-- FZF
+map('n', '<leader>ff', ':Files<CR>', opts)
+-- TODO: Sharp corners... I can't figure this out
+
+-- Disable keyword completion
+map('i', '<C-n>', '<Down>', opts)
+map('i', '<C-p>', '<Up>', opts)
+
 -- Completion
 vim.opt.completeopt = vim.opt.completeopt + 'menuone'
 vim.opt.completeopt = vim.opt.completeopt - 'preview'
@@ -74,12 +89,14 @@ local on_attach = function(client, bufnr)
                '<cmd>lua vim.lsp.buf.references()<CR>', opts)
        buf_set_keymap('n', 'K',
                '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
-       buf_set_keymap('n', '<space>rn',
+       buf_set_keymap('n', '<leader>rn',
                '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
        buf_set_keymap('n', '[d',
                '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
        buf_set_keymap('n', ']d',
                '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
+       buf_set_keymap('n', '<leader>e',
+               '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts)
 end
 
 -- Add servers
@@ -92,3 +109,38 @@ for _, server in ipairs(servers) do
 end
 
 vim.opt.signcolumn = 'no'
+
+-- Jump to files with gf
+vim.opt.hidden = true
+vim.opt.path = vim.opt.path + '**'
+
+-- Disable intro message
+vim.opt.shortmess = "I"
+
+-- Treesitter
+require('nvim-treesitter.configs').setup {
+       ensure_installed = "maintained",
+       highlight = {
+               enable = true,
+               additional_vim_regex_highlighting = false,
+       },
+       incremental_selection = {
+               enable = true,
+               keymaps = {
+                       init_selection = "gnn",
+                       node_incremental = "grn",
+                       scope_incremental = "grc",
+                       node_decremental = "grm",
+               },
+       },
+       indent = {
+               enable = true
+       }
+}
+
+-- Folds
+vim.opt.foldmethod = 'expr'
+vim.opt.foldexpr = 'nvim_treesitter#foldexpr()'
+vim.opt.foldenable = false
+map('n', '<leader>fe', ':set foldenable<CR>', opts)
+map('n', '<leader>fd', ':set nofoldenable<CR>', opts)