Rewrote Neovim configuration to use Lazy
This commit is contained in:
parent
b7c113644e
commit
244042ab31
15 changed files with 410 additions and 499 deletions
|
@ -1,12 +1,28 @@
|
||||||
require('packer_init')
|
-- Change leader to a comma, ensure this happens before packages are loaded.
|
||||||
|
vim.g.mapleader = ','
|
||||||
|
|
||||||
|
-- Disable netrw in favor of nvim-tree
|
||||||
|
vim.g.loaded_netrw = 1
|
||||||
|
vim.g.loaded_netrwPlugin = 1
|
||||||
|
|
||||||
|
-- Configure basic Neovim settings.
|
||||||
require('general')
|
require('general')
|
||||||
require('colorscheme')
|
|
||||||
|
-- Configure key mappings not defined for plugins.
|
||||||
require('keymap')
|
require('keymap')
|
||||||
require('plugins/floaterm')
|
|
||||||
require('plugins/cmp')
|
-- This loads (lazily) all plugins and configures things like plugin-specific
|
||||||
require('plugins/lsp')
|
-- key mappings.
|
||||||
require('plugins/scala')
|
require('plugin_management')
|
||||||
require('plugins/bufferline')
|
|
||||||
require('plugins/lualine')
|
-- Initialize the color scheme, depends on plugins being available.
|
||||||
require('plugins/telescope')
|
require('colorscheme')
|
||||||
|
|
||||||
|
-- Setup autocmd for metals - metals is a little weird and needs to load itself.
|
||||||
|
-- The plugin that's loaded just makes metals code available in the first place.
|
||||||
|
require('plugins/metals')
|
||||||
|
|
||||||
|
-- Setup treesitter, select the configs to load, etc.
|
||||||
require('plugins/treesitter')
|
require('plugins/treesitter')
|
||||||
|
|
||||||
|
require('plugins/lualine')
|
||||||
|
|
3
.config/nvim/lua/.luarc.json
Normal file
3
.config/nvim/lua/.luarc.json
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"workspace.checkThirdParty": false
|
||||||
|
}
|
|
@ -2,47 +2,5 @@
|
||||||
vim.opt.background = 'dark'
|
vim.opt.background = 'dark'
|
||||||
--vim.opt.background = 'light'
|
--vim.opt.background = 'light'
|
||||||
|
|
||||||
-- Settings for gruvbox-material
|
|
||||||
--
|
|
||||||
--vim.g.gruvbox_material_palette = 'mix'
|
|
||||||
vim.g.gruvbox_material_palette = 'material'
|
|
||||||
--vim.g.gruvbox_material_palette = 'original'
|
|
||||||
--
|
|
||||||
vim.g.gruvbox_material_background = 'hard'
|
|
||||||
--vim.g.gruvbox_material_background = 'medium'
|
|
||||||
--vim.g.gruvbox_material_background = 'soft'
|
|
||||||
--
|
|
||||||
vim.g.gruvbox_material_enable_bold = 1
|
|
||||||
|
|
||||||
-- Settings for material
|
|
||||||
vim.g.material_style = "palenight"
|
|
||||||
|
|
||||||
require('material').setup {
|
|
||||||
|
|
||||||
italics = {
|
|
||||||
comments = true, -- Enable italic comments
|
|
||||||
},
|
|
||||||
|
|
||||||
plugins = {
|
|
||||||
neogit = false,
|
|
||||||
sidebar_nvim = false,
|
|
||||||
lsp_saga = false,
|
|
||||||
nvim_dap = false,
|
|
||||||
nvim_navic = false,
|
|
||||||
hop = false,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Settings for nightfox
|
|
||||||
-- Available colorscheme values: nightfox, duskfox, nordfox, terafox
|
|
||||||
require('nightfox').setup({
|
|
||||||
options = {
|
|
||||||
styles = {
|
|
||||||
comments = "italic",
|
|
||||||
keywords = "bold",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Set the color scheme
|
-- Set the color scheme
|
||||||
vim.cmd 'colorscheme gruvbox-material'
|
vim.cmd 'colorscheme gruvbox-material'
|
||||||
|
|
|
@ -9,11 +9,14 @@ opt.swapfile = false -- Don't use swapfile
|
||||||
opt.modelines = 0 -- Disable modelines
|
opt.modelines = 0 -- Disable modelines
|
||||||
opt.encoding = 'utf-8' -- Set default encoding to UTF-8
|
opt.encoding = 'utf-8' -- Set default encoding to UTF-8
|
||||||
|
|
||||||
|
opt.termguicolors = true
|
||||||
|
|
||||||
-- Note that this setting is important for which-key. Also don't reduce it too
|
-- Note that this setting is important for which-key. Also don't reduce it too
|
||||||
-- low, or the behavior will start getting wonky and always show which-key.
|
-- low, or the behavior will start getting wonky and always show which-key.
|
||||||
opt.timeoutlen = 500 -- Time in ms to wait for a sequnece to complete
|
opt.timeoutlen = 500 -- Time in ms to wait for a sequnece to complete
|
||||||
|
|
||||||
opt.shortmess:remove("F")
|
opt.shortmess:remove("F")
|
||||||
|
vim.opt_global.shortmess:remove("F")
|
||||||
opt.shortmess:append("c")
|
opt.shortmess:append("c")
|
||||||
|
|
||||||
opt.wildignore = {
|
opt.wildignore = {
|
||||||
|
|
|
@ -1,141 +1,49 @@
|
||||||
-----------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Define keymaps for Neovim and plugins.
|
-- Define keymaps for Neovim
|
||||||
-----------------------------------------------------------
|
--
|
||||||
|
-- Note that leader is defined in init.lua to ensure that all mappings are
|
||||||
|
-- correct in plugins.
|
||||||
|
--
|
||||||
|
-- Plugins define their own keymappings in plugin_management.lua
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
local function map(mode, lhs, rhs, opts)
|
local map = vim.keymap.set
|
||||||
local options = { noremap = true, silent = true }
|
|
||||||
if opts then
|
|
||||||
options = vim.tbl_extend('force', options, opts)
|
|
||||||
end
|
|
||||||
vim.api.nvim_set_keymap(mode, lhs, rhs, options)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Change leader to a comma
|
|
||||||
vim.g.mapleader = ','
|
|
||||||
vim.g.maplocalleader = ' '
|
vim.g.maplocalleader = ' '
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
-- General
|
|
||||||
-----------------------------------------------------------
|
|
||||||
|
|
||||||
-- Clear search highlighting
|
-- Clear search highlighting
|
||||||
map('n', '<leader>/', ':nohlsearch<CR>')
|
map('n', '<leader>/', ':nohlsearch<CR>', { desc = 'Clear Search Highlight' })
|
||||||
|
|
||||||
-- Save current buffer
|
-- Save current buffer
|
||||||
map('n', '<leader>s', ':up<CR>')
|
map('n', '<leader>s', ':up<CR>', { desc = 'Save' })
|
||||||
|
|
||||||
-- Move to previous buffer
|
-- Move to previous buffer
|
||||||
map('n', '<leader>bp', ':bp<CR>')
|
map('n', '<leader>bp', ':bp<CR>', { desc = 'Prev Buffer' })
|
||||||
|
|
||||||
-- Move to next buffer
|
-- Move to next buffer
|
||||||
map('n', '<leader>bn', ':bn<CR>')
|
map('n', '<leader>bn', ':bn<CR>', { desc = 'Next Buffer' })
|
||||||
|
|
||||||
-- Delete current buffer
|
-- Delete current buffer
|
||||||
map('n', '<leader>bd', ':bd<CR>')
|
map('n', '<leader>bd', ':bd<CR>', { desc = 'Delete Buffer' })
|
||||||
|
|
||||||
-- Close the quickfix window
|
-- Close the quickfix window
|
||||||
map('n', '<leader>cq', ':ccl<CR>')
|
map('n', '<leader>cq', ':ccl<CR>', { desc = 'Close Quickfix' })
|
||||||
|
|
||||||
-- Create a vertical split
|
-- Create a vertical split
|
||||||
map('n', '<leader>v', ':vsplit<CR>')
|
map('n', '<leader>v', ':vsplit<CR>', { desc = 'Vertical Split' })
|
||||||
|
|
||||||
-- These appear broken with latest neovim, and nvim-cmp has
|
--------------------------------------------------------------------------------
|
||||||
-- settings that work in any case. Keep as a reminder for a
|
|
||||||
-- few weeks just in case.
|
|
||||||
-- Use Tab to jump to the next option in a popup menu
|
|
||||||
--vim.keymap.set('i', '<Tab>', function()
|
|
||||||
-- return vim.fn.pumvisible() == 1 and '<C-N>' or '<Tab>'
|
|
||||||
--end, {expr = true})
|
|
||||||
|
|
||||||
-- Use Shift+Tab to jump to the previous option in a popup menu
|
|
||||||
--vim.keymap.set('i', '<S-Tab>', function()
|
|
||||||
-- return vim.fn.pumvisible() == 1 and '<C-P>' or '<Tab>'
|
|
||||||
--end, {expr = true})
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
-- Telescope
|
|
||||||
-----------------------------------------------------------
|
|
||||||
|
|
||||||
-- Use ';' to search active buffers
|
|
||||||
map('n', ';', '<cmd>Telescope buffers<CR>')
|
|
||||||
|
|
||||||
-- Use Ctrl+P to show a list of files
|
|
||||||
map('n', '<C-P>', '<cmd>Telescope find_files<CR>')
|
|
||||||
|
|
||||||
-- Live Grep
|
|
||||||
map('n', '<leader>fg', '<cmd>Telescope live_grep<CR>')
|
|
||||||
|
|
||||||
-- Metals commands
|
|
||||||
map('n', '<leader>fm', '<cmd>Telescope metals commands<CR>')
|
|
||||||
|
|
||||||
-- Search project TODOs in Telescope
|
|
||||||
map('n', '<leader>ft', '<cmd>TodoTelescope<CR>')
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
-- Trouble
|
|
||||||
-----------------------------------------------------------
|
|
||||||
|
|
||||||
-- Show/hide Trouble
|
|
||||||
map('n', '<leader>xx', '<cmd>TroubleToggle<CR>')
|
|
||||||
|
|
||||||
-- Show workspace diagnostics
|
|
||||||
map('n', '<leader>xw', '<cmd>TroubleToggle workspace_diagnostics<CR>')
|
|
||||||
|
|
||||||
-- Show document diagnostics
|
|
||||||
map('n', '<leader>xd', '<cmd>TroubleToggle document_diagnostics<CR>')
|
|
||||||
|
|
||||||
-- Show quickfix
|
|
||||||
map('n', '<leader>xq', '<cmd>TroubleToggle quickfix<CR>')
|
|
||||||
|
|
||||||
-- Show local list
|
|
||||||
map('n', '<leader>xl', '<cmd>TroubleToggle loclist<CR>')
|
|
||||||
|
|
||||||
-- Show LSP references
|
|
||||||
map('n', '<leader>xr', '<cmd>TroubleToggle lsp_references<CR>')
|
|
||||||
|
|
||||||
-- Show project TODOs in Trouble
|
|
||||||
map('n', '<leader>xt', '<cmd>TodoTrouble<CR>')
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
-- Floaterm
|
|
||||||
-----------------------------------------------------------
|
|
||||||
|
|
||||||
-- Create a new floating terminal
|
|
||||||
vim.g.floaterm_keymap_new = '<leader>tc'
|
|
||||||
|
|
||||||
-- Move to the previous terminal
|
|
||||||
vim.g.floaterm_keymap_prev = '<leader>tp'
|
|
||||||
|
|
||||||
-- Move to the next terminal
|
|
||||||
vim.g.floaterm_keymap_next = '<leader>tn'
|
|
||||||
|
|
||||||
-- Toggle the visibility of the floating terminal
|
|
||||||
vim.g.floaterm_keymap_toggle = '<leader>tt'
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
-- nvim-tree
|
|
||||||
-----------------------------------------------------------
|
|
||||||
|
|
||||||
-- Toggle the file tree
|
|
||||||
map('n', '<C-A>tt', '<cmd>NvimTreeToggle<CR>')
|
|
||||||
|
|
||||||
-- Find the current buffer in the file tree
|
|
||||||
map('n', '<C-A>tf', '<cmd>NvimTreeFindFile<CR>')
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
-- LSP
|
-- LSP
|
||||||
-----------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
map('n', 'K', vim.lsp.buf.hover, { desc = 'Hover' })
|
||||||
map('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>')
|
map('n', 'gi', vim.lsp.buf.implementation, { desc = 'Go To Implementation' })
|
||||||
map('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>')
|
map('n', 'gr', vim.lsp.buf.references, { desc = 'Go To References' })
|
||||||
map('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>')
|
map('n', 'gds', vim.lsp.buf.document_symbol, { desc = 'Document Symbol' })
|
||||||
map('n', 'gds', '<cmd>lua vim.lsp.buf.document_symbol()<CR>')
|
map('n', 'gws', vim.lsp.buf.workspace_symbol, { desc = 'Workspace Symbol' })
|
||||||
map('n', 'gws', '<cmd>lua vim.lsp.buf.workspace_symbol()<CR>')
|
map('n', 'gd', vim.lsp.buf.definition, { desc = 'Go To Definition' })
|
||||||
map('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>')
|
map('n', '<leader>cl', vim.lsp.codelens.run, { desc = 'Code Lens' })
|
||||||
map('n', '<leader>cl', '<cmd>lua vim.lsp.codelens.run()<CR>')
|
map('n', '<leader>D', vim.lsp.buf.type_definition, { desc = 'Type Definition' })
|
||||||
map('n', '<leader>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>')
|
map('n', '<leader>rn', vim.lsp.buf.rename, { desc = 'Rename' })
|
||||||
map('n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>')
|
map('n', '<leader>ca', vim.lsp.buf.code_action, { desc = 'Code Action' })
|
||||||
map('n', '<leader>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>')
|
map('n', '[c', '<cmd>lua vim.diagnostic.goto_prev({ wrap = false })<CR>', { desc = 'prev diagnostic' })
|
||||||
map('n', '<leader>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>')
|
map('n', ']c', '<cmd>lua vim.diagnostic.goto_next({ wrap = false })<CR>', { desc = 'next diagnostic' })
|
||||||
map('n', '[c', '<cmd>lua vim.diagnostic.goto_prev { wrap = false }<CR>')
|
|
||||||
map('n', ']c', '<cmd>lua vim.diagnostic.goto_next { wrap = false }<CR>')
|
|
||||||
|
|
|
@ -1,157 +0,0 @@
|
||||||
-- Automatically install packer
|
|
||||||
local fn = vim.fn
|
|
||||||
local install_path = fn.stdpath('data') .. '/site/pack/packer/start/packer.nvim'
|
|
||||||
|
|
||||||
if fn.empty(fn.glob(install_path)) > 0 then
|
|
||||||
local _ = fn.system({
|
|
||||||
'git',
|
|
||||||
'clone',
|
|
||||||
'--depth',
|
|
||||||
'1',
|
|
||||||
'https://github.com/wbthomason/packer.nvim',
|
|
||||||
install_path
|
|
||||||
})
|
|
||||||
vim.o.runtimepath = vim.fn.stdpath('data') .. '/site/pack/*/start/*,' .. vim.o.runtimepath
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Use a protected call so we don't error out on first use
|
|
||||||
local status_ok, _ = pcall(require, 'packer')
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
return require('packer').startup(function(use)
|
|
||||||
-- Plugin/package manager.
|
|
||||||
use 'wbthomason/packer.nvim'
|
|
||||||
|
|
||||||
-- Required for a number of Lua plugins.
|
|
||||||
use 'nvim-lua/plenary.nvim'
|
|
||||||
|
|
||||||
-- Color schemes
|
|
||||||
use 'sainnhe/gruvbox-material'
|
|
||||||
use 'rebelot/kanagawa.nvim'
|
|
||||||
use 'marko-cerovac/material.nvim'
|
|
||||||
use { 'EdenEast/nightfox.nvim', run = ':NightfoxCompile' }
|
|
||||||
|
|
||||||
-- Telescope: fuzzy finder
|
|
||||||
use {
|
|
||||||
'nvim-telescope/telescope.nvim',
|
|
||||||
requires = {
|
|
||||||
{ 'nvim-lua/plenary.nvim' }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Native Telescope implementation based on FZF for performance.
|
|
||||||
use {
|
|
||||||
'nvim-telescope/telescope-fzf-native.nvim',
|
|
||||||
run = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build'
|
|
||||||
}
|
|
||||||
|
|
||||||
-- A pretty list for showing diagnostics, references, telescope results,
|
|
||||||
-- quickfix and location lists to help you solve all the trouble your code
|
|
||||||
-- is causing.
|
|
||||||
use {
|
|
||||||
'folke/trouble.nvim',
|
|
||||||
requires = 'kyazdani42/nvim-web-devicons',
|
|
||||||
config = function()
|
|
||||||
require('trouble').setup()
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Treesitter: Neovim bindings for the Tree-sitter parser generator tool and
|
|
||||||
-- incremental parsing library.
|
|
||||||
use {
|
|
||||||
'nvim-treesitter/nvim-treesitter',
|
|
||||||
run = ':TSUpdate'
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Neovim-native LSP Implementation
|
|
||||||
use 'neovim/nvim-lspconfig'
|
|
||||||
|
|
||||||
-- Snippet engine is REQUIRED for nvim-cmp.
|
|
||||||
use 'L3MON4D3/LuaSnip'
|
|
||||||
|
|
||||||
-- nvim-cmp - completion plugin, used for LSP and Metals
|
|
||||||
use {
|
|
||||||
'hrsh7th/nvim-cmp',
|
|
||||||
requires = {
|
|
||||||
'hrsh7th/cmp-nvim-lsp',
|
|
||||||
'hrsh7th/cmp-path',
|
|
||||||
'hrsh7th/cmp-buffer',
|
|
||||||
'saadparwaiz1/cmp_luasnip'
|
|
||||||
--'PaterJason/cmp-conjure'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Metals, for Scala development.
|
|
||||||
use {
|
|
||||||
'scalameta/nvim-metals',
|
|
||||||
requires = { 'nvim-lua/plenary.nvim' },
|
|
||||||
--ft = { 'scala', 'sbt' } -- this is busted for some reason.
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Lualine (configures the bottom bars)
|
|
||||||
use {
|
|
||||||
'nvim-lualine/lualine.nvim',
|
|
||||||
requires = 'kyazdani42/nvim-web-devicons'
|
|
||||||
}
|
|
||||||
|
|
||||||
-- bufferline - shows a bar at the top with open buffers
|
|
||||||
use {
|
|
||||||
'akinsho/bufferline.nvim',
|
|
||||||
requires = 'kyazdani42/nvim-web-devicons'
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Floating terminal
|
|
||||||
use 'voldikss/vim-floaterm'
|
|
||||||
|
|
||||||
-- Show signs for Git
|
|
||||||
use {
|
|
||||||
'lewis6991/gitsigns.nvim',
|
|
||||||
config = function()
|
|
||||||
require('gitsigns').setup()
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Show unobtrusive indentation guides
|
|
||||||
use {
|
|
||||||
'lukas-reineke/indent-blankline.nvim',
|
|
||||||
config = function()
|
|
||||||
require('indent_blankline').setup()
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
-- nvim-tree for when I want to view files
|
|
||||||
use {
|
|
||||||
'kyazdani42/nvim-tree.lua',
|
|
||||||
requires = {
|
|
||||||
'kyazdani42/nvim-web-devicons'
|
|
||||||
},
|
|
||||||
tag = 'nightly',
|
|
||||||
config = function()
|
|
||||||
require('nvim-tree').setup()
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Special highlighting and tracking for certain notable words
|
|
||||||
use {
|
|
||||||
'folke/todo-comments.nvim',
|
|
||||||
requires = 'nvim-lua/plenary.nvim',
|
|
||||||
config = function()
|
|
||||||
require('todo-comments').setup()
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Racket support
|
|
||||||
use 'benknoble/vim-racket'
|
|
||||||
|
|
||||||
-- PlantUML syntax
|
|
||||||
use 'aklt/plantuml-syntax'
|
|
||||||
|
|
||||||
-- Terraform
|
|
||||||
use 'hashivim/vim-terraform'
|
|
||||||
|
|
||||||
-- i3 configuration syntax
|
|
||||||
use 'mboughaba/i3config.vim'
|
|
||||||
|
|
||||||
end)
|
|
320
.config/nvim/lua/plugin_management.lua
Normal file
320
.config/nvim/lua/plugin_management.lua
Normal file
|
@ -0,0 +1,320 @@
|
||||||
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
|
if not vim.loop.fs_stat(lazypath) then
|
||||||
|
vim.fn.system({
|
||||||
|
"git",
|
||||||
|
"clone",
|
||||||
|
"--filter=blob:none",
|
||||||
|
"https://github.com/folke/lazy.nvim.git",
|
||||||
|
"--branch=stable", -- latest stable release
|
||||||
|
lazypath,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
require("lazy").setup({
|
||||||
|
-- Color schemes. Lazy, only selected will be loaded.
|
||||||
|
{
|
||||||
|
'sainnhe/gruvbox-material',
|
||||||
|
config = function(_)
|
||||||
|
vim.g.gruvbox_material_palette = 'material'
|
||||||
|
vim.g.gruvbox_material_background = 'hard'
|
||||||
|
vim.g.gruvbox_material_enable_bold = 1
|
||||||
|
end
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'rebelot/kanagawa.nvim',
|
||||||
|
lazy = true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'marko-cerovac/material.nvim',
|
||||||
|
lazy = true,
|
||||||
|
opts = {
|
||||||
|
italics = {
|
||||||
|
comments = true, -- Enable italic comments
|
||||||
|
},
|
||||||
|
|
||||||
|
plugins = {
|
||||||
|
neogit = false,
|
||||||
|
sidebar_nvim = false,
|
||||||
|
lsp_saga = false,
|
||||||
|
nvim_dap = false,
|
||||||
|
nvim_navic = false,
|
||||||
|
hop = false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'EdenEast/nightfox.nvim',
|
||||||
|
build = ':NightfoxCompile',
|
||||||
|
lazy = true,
|
||||||
|
opts = {
|
||||||
|
options = {
|
||||||
|
styles = {
|
||||||
|
comments = "italic",
|
||||||
|
keywords = "bold",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Common dependency for Lua plugins
|
||||||
|
'nvim-lua/plenary.nvim',
|
||||||
|
|
||||||
|
-- Common dependency for many plugins (visual)
|
||||||
|
'nvim-tree/nvim-web-devicons',
|
||||||
|
|
||||||
|
-- Fuzzy finder (files, buffers, live grep, etc.)
|
||||||
|
-- Includes a native build based on FZF for performance.
|
||||||
|
{
|
||||||
|
'nvim-telescope/telescope.nvim',
|
||||||
|
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||||
|
keys = {
|
||||||
|
{ ';', '<cmd>Telescope buffers<CR>', desc = 'Find Buffer' },
|
||||||
|
{ '<C-P>', '<cmd>Telescope find_files<CR>', desc = 'Find File' },
|
||||||
|
{ '<leader>fg', '<cmd>Telescope live_grep<CR>', desc = 'Live Grep' },
|
||||||
|
{ '<leader>fm', '<cmd>Telescope metals commands<CR>', desc = 'Find Metals Command' },
|
||||||
|
{ '<leader>ft', '<cmd>TodoTelescope<CR>', desc = 'Find TODO' },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'nvim-telescope/telescope-fzf-native.nvim',
|
||||||
|
build = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build',
|
||||||
|
config = function(_)
|
||||||
|
require('telescope').load_extension('fzf')
|
||||||
|
end
|
||||||
|
},
|
||||||
|
|
||||||
|
-- A pretty list for showing diagnostics, references, telescope results,
|
||||||
|
-- quickfix and location lists to help you solve all the trouble your code
|
||||||
|
-- is causing.
|
||||||
|
{
|
||||||
|
'folke/trouble.nvim',
|
||||||
|
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
||||||
|
keys = {
|
||||||
|
{ '<leader>xx', '<cmd>TroubleToggle<CR>', desc = 'Trouble' },
|
||||||
|
{ '<leader>xw', '<cmd>TroubleToggle workspace_diagnostics<CR>', desc = 'Workspace Diagnostics' },
|
||||||
|
{ '<leader>xd', '<cmd>TroubleToggle document_diagnostics<CR>', desc = 'Document Diagnostics' },
|
||||||
|
{ '<leader>xq', '<cmd>TroubleToggle quickfix<CR>', desc = 'Quickfix' },
|
||||||
|
{ '<leader>xl', '<cmd>TroubleToggle loclist<CR>', desc = 'Local List' },
|
||||||
|
{ '<leader>xr', '<cmd>TroubleToggle lsp_references<CR>', desc = 'LSP References' },
|
||||||
|
{ '<leader>xr', '<cmd>TodoTrouble<CR>', desc = 'Show TODOs' },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Treesitter: Neovim bindings for the Tree-sitter parser generator tool and
|
||||||
|
-- incremental parsing library.
|
||||||
|
{
|
||||||
|
'nvim-treesitter/nvim-treesitter',
|
||||||
|
build = ':TSUpdate'
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Neovim-native LSP Implementation
|
||||||
|
{
|
||||||
|
'neovim/nvim-lspconfig',
|
||||||
|
dependencies = {
|
||||||
|
'hrsh7th/cmp-nvim-lsp',
|
||||||
|
},
|
||||||
|
config = function(_)
|
||||||
|
local lsp = require('lspconfig')
|
||||||
|
|
||||||
|
-- Establish a set of capabilities so we can advertise nvim-cmp support.
|
||||||
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
|
||||||
|
-- Add nvim-cmp support to the capabilities.
|
||||||
|
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
|
||||||
|
|
||||||
|
-- lua-language-server
|
||||||
|
lsp.lua_ls.setup {
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
runtime = {
|
||||||
|
-- Tell the language server which version of Lua you're using (most
|
||||||
|
-- likely LuaJIT in the case of Neovim)
|
||||||
|
version = 'LuaJIT',
|
||||||
|
},
|
||||||
|
diagnostics = {
|
||||||
|
-- Get the language server to recognize the `vim` global
|
||||||
|
globals = {'vim'},
|
||||||
|
},
|
||||||
|
workspace = {
|
||||||
|
-- Make the server aware of Neovim runtime files
|
||||||
|
library = vim.api.nvim_get_runtime_file("", true),
|
||||||
|
},
|
||||||
|
-- Do not send telemetry data containing a randomized but unique
|
||||||
|
-- identifier
|
||||||
|
telemetry = {
|
||||||
|
enable = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- bash-language-server
|
||||||
|
lsp.bashls.setup{}
|
||||||
|
|
||||||
|
-- texlab = latex language server
|
||||||
|
lsp.texlab.setup{}
|
||||||
|
|
||||||
|
-- terraform-ls = terraform language server (Hashicorp stable)
|
||||||
|
lsp.terraformls.setup{}
|
||||||
|
|
||||||
|
-- tsserver = typescript language server, works for JS as well.
|
||||||
|
lsp.tsserver.setup{}
|
||||||
|
end
|
||||||
|
},
|
||||||
|
|
||||||
|
-- nvim-cmp - completion plugin, used for LSP and Metals
|
||||||
|
{
|
||||||
|
'hrsh7th/nvim-cmp',
|
||||||
|
dependencies = {
|
||||||
|
'L3MON4D3/LuaSnip',
|
||||||
|
'hrsh7th/cmp-nvim-lsp',
|
||||||
|
'hrsh7th/cmp-path',
|
||||||
|
'hrsh7th/cmp-buffer',
|
||||||
|
'saadparwaiz1/cmp_luasnip'
|
||||||
|
},
|
||||||
|
config = function(_)
|
||||||
|
local cmp = require('cmp')
|
||||||
|
|
||||||
|
cmp.setup{
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
require('luasnip').lsp_expand(args.body)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
sources = {
|
||||||
|
{ name = 'nvim_lsp' },
|
||||||
|
{ name = 'luasnip' },
|
||||||
|
{ name = 'path' },
|
||||||
|
{ name = 'buffer', option = { keyword_length = 5 }, },
|
||||||
|
},
|
||||||
|
mapping = {
|
||||||
|
['<CR>'] = cmp.mapping.confirm({ select = true }),
|
||||||
|
['<C-Space>'] = cmp.mapping.complete(),
|
||||||
|
['<Tab>'] = function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
['<S-Tab>'] = function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Metals, for Scala development.
|
||||||
|
{
|
||||||
|
'scalameta/nvim-metals',
|
||||||
|
--event = 'FileType *.scala,*.sbt',
|
||||||
|
--lazy = true,
|
||||||
|
dependencies = { 'nvim-lua/plenary.nvim' }
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Lualine (configures the bottom bars)
|
||||||
|
{
|
||||||
|
'nvim-lualine/lualine.nvim',
|
||||||
|
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
||||||
|
},
|
||||||
|
|
||||||
|
-- bufferline - shows a bar at the top with open buffers
|
||||||
|
{
|
||||||
|
'akinsho/bufferline.nvim',
|
||||||
|
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
||||||
|
opts = {
|
||||||
|
options = {
|
||||||
|
mode = 'buffers',
|
||||||
|
indicator = {
|
||||||
|
style = 'none'
|
||||||
|
},
|
||||||
|
diagnostics = 'nvim_lsp',
|
||||||
|
color_icons = true,
|
||||||
|
show_buffer_icons = true,
|
||||||
|
show_buffer_close_icons = false,
|
||||||
|
separator_style = 'slant',
|
||||||
|
always_show_bufferline = true,
|
||||||
|
hover = {
|
||||||
|
enabled = false
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Floating terminal
|
||||||
|
{
|
||||||
|
'voldikss/vim-floaterm',
|
||||||
|
keys = {
|
||||||
|
{ '<leader>tc', '<cmd>FloatermNew<CR>', desc = 'New Floating Terminal' },
|
||||||
|
{ '<leader>tc', '<C-\\><C-n><cmd>FloatermNew<CR>', mode = 't', desc = 'New Floating Terminal' },
|
||||||
|
{ '<leader>tt', '<cmd>FloatermToggle<CR>', desc = 'Toggle Floating Terminal' },
|
||||||
|
{ '<leader>tt', '<C-\\><C-n><cmd>FloatermToggle<CR>', mode = 't', desc = 'Toggle Floating Terminal' },
|
||||||
|
{ '<leader>tp', '<cmd>FloatermPrev<CR>', desc = 'Previous Terminal' },
|
||||||
|
{ '<leader>tp', '<C-\\><C-n><cmd>FloatermPrev<CR>', mode = 't', desc = 'Previous Terminal' },
|
||||||
|
{ '<leader>tn', '<cmd>FloatermNext<CR>', desc = 'Next Terminal' },
|
||||||
|
{ '<leader>tn', '<C-\\><C-n><cmd>FloatermNext<CR>', mode = 't', desc = 'Next Terminal' },
|
||||||
|
},
|
||||||
|
config = function(_)
|
||||||
|
vim.g.floaterm_width = 0.8
|
||||||
|
vim.g.floaterm_height = 0.8
|
||||||
|
vim.g.floaterm_gitcommit = 'split'
|
||||||
|
end
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Show signs for Git
|
||||||
|
{ 'lewis6991/gitsigns.nvim' },
|
||||||
|
|
||||||
|
-- Show unobtrusive indentation guides
|
||||||
|
{ 'lukas-reineke/indent-blankline.nvim', },
|
||||||
|
|
||||||
|
-- nvim-tree for when I want to view files
|
||||||
|
{
|
||||||
|
'nvim-tree/nvim-tree.lua',
|
||||||
|
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
||||||
|
tag = 'nightly',
|
||||||
|
lazy = false,
|
||||||
|
keys = {
|
||||||
|
{ '<C-A>tt', '<cmd>NvimTreeToggle<CR>', desc = 'File Tree' },
|
||||||
|
{ '<C-A>tf', '<cmd>NvimTreeFindFile<CR>', desc = 'Tree Find File' },
|
||||||
|
},
|
||||||
|
config = function(_)
|
||||||
|
require('nvim-tree').setup()
|
||||||
|
end
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Special highlighting and tracking for certain notable words
|
||||||
|
{
|
||||||
|
'folke/todo-comments.nvim',
|
||||||
|
dependencies = 'nvim-lua/plenary.nvim',
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Racket support
|
||||||
|
{
|
||||||
|
'benknoble/vim-racket',
|
||||||
|
event = 'BufEnter *.rkt',
|
||||||
|
lazy = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- PlantUML syntax
|
||||||
|
{
|
||||||
|
'aklt/plantuml-syntax',
|
||||||
|
event = 'BufEnter *.puml',
|
||||||
|
lazy = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Terraform
|
||||||
|
{
|
||||||
|
'hashivim/vim-terraform',
|
||||||
|
event = 'BufEnter *.tf',
|
||||||
|
lazy = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- i3 configuration syntax
|
||||||
|
'mboughaba/i3config.vim',
|
||||||
|
})
|
|
@ -1,25 +0,0 @@
|
||||||
require('bufferline').setup {
|
|
||||||
options = {
|
|
||||||
mode = 'buffers',
|
|
||||||
indicator = {
|
|
||||||
style = 'none'
|
|
||||||
},
|
|
||||||
diagnostics = 'nvim_lsp',
|
|
||||||
-- offsets appear to be broken
|
|
||||||
--offsets = {
|
|
||||||
-- filetype = 'NvimTree',
|
|
||||||
-- text = 'File Explorer',
|
|
||||||
-- highlight = 'Directory',
|
|
||||||
-- text_align = 'center',
|
|
||||||
-- separator = true
|
|
||||||
--},
|
|
||||||
color_icons = true,
|
|
||||||
show_buffer_icons = true,
|
|
||||||
show_buffer_close_icons = false,
|
|
||||||
separator_style = 'slant',
|
|
||||||
always_show_bufferline = true,
|
|
||||||
hover = {
|
|
||||||
enabled = false
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
|
@ -1,43 +0,0 @@
|
||||||
local cmp = require('cmp')
|
|
||||||
|
|
||||||
cmp.setup{
|
|
||||||
snippet = {
|
|
||||||
-- REQUIRED - you must specify a snippet engine
|
|
||||||
expand = function(args)
|
|
||||||
require('luasnip').lsp_expand(args.body)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
sources = {
|
|
||||||
{ name = 'nvim_lsp' },
|
|
||||||
{ name = 'luasnip' },
|
|
||||||
{ name = 'path' },
|
|
||||||
{ name = 'buffer', option = { keyword_length = 5 }, },
|
|
||||||
},
|
|
||||||
mapping = {
|
|
||||||
['<CR>'] = cmp.mapping.confirm({ select = true }),
|
|
||||||
['<C-Space>'] = cmp.mapping.complete(),
|
|
||||||
['<Tab>'] = function(fallback)
|
|
||||||
if cmp.visible() then
|
|
||||||
cmp.select_next_item()
|
|
||||||
else
|
|
||||||
fallback()
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
['<S-Tab>'] = function(fallback)
|
|
||||||
if cmp.visible() then
|
|
||||||
cmp.select_prev_item()
|
|
||||||
else
|
|
||||||
fallback()
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
-- Setup conjure, only for supported files
|
|
||||||
--cmp.setup.filetype('racket', {
|
|
||||||
-- sources = {
|
|
||||||
-- { name = 'conjure' },
|
|
||||||
-- { name = 'luasnip' },
|
|
||||||
-- { name = 'path' },
|
|
||||||
-- { name = 'buffer', option = { keyword_length = 5 }, },
|
|
||||||
-- }
|
|
||||||
--})
|
|
|
@ -1,3 +0,0 @@
|
||||||
vim.g.floaterm_width = 0.8
|
|
||||||
vim.g.floaterm_height = 0.8
|
|
||||||
vim.g.floaterm_gitcommit = 'split'
|
|
|
@ -1,60 +0,0 @@
|
||||||
local lsp = require('lspconfig')
|
|
||||||
|
|
||||||
-- Use an on_attach function to configure after LSP attaches to buffer
|
|
||||||
local on_attach = function(_, bufnr)
|
|
||||||
local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end
|
|
||||||
buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Establish a set of capabilities so we can advertise nvim-cmp support.
|
|
||||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
|
||||||
|
|
||||||
-- Add nvim-cmp support to the capabilities.
|
|
||||||
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
|
|
||||||
|
|
||||||
-- zls = zig language server
|
|
||||||
lsp.zls.setup {
|
|
||||||
on_attach = on_attach,
|
|
||||||
flags = {
|
|
||||||
debounce_text_changes = 150
|
|
||||||
},
|
|
||||||
capabilities = capabilities
|
|
||||||
}
|
|
||||||
|
|
||||||
-- lua-language-server
|
|
||||||
lsp.sumneko_lua.setup {
|
|
||||||
settings = {
|
|
||||||
Lua = {
|
|
||||||
runtime = {
|
|
||||||
-- Tell the language server which version of Lua you're using (most
|
|
||||||
-- likely LuaJIT in the case of Neovim)
|
|
||||||
version = 'LuaJIT',
|
|
||||||
},
|
|
||||||
diagnostics = {
|
|
||||||
-- Get the language server to recognize the `vim` global
|
|
||||||
globals = {'vim'},
|
|
||||||
},
|
|
||||||
workspace = {
|
|
||||||
-- Make the server aware of Neovim runtime files
|
|
||||||
library = vim.api.nvim_get_runtime_file("", true),
|
|
||||||
},
|
|
||||||
-- Do not send telemetry data containing a randomized but unique
|
|
||||||
-- identifier
|
|
||||||
telemetry = {
|
|
||||||
enable = false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
-- bash-language-server
|
|
||||||
lsp.bashls.setup{}
|
|
||||||
|
|
||||||
-- texlab = latex language server
|
|
||||||
lsp.texlab.setup{}
|
|
||||||
|
|
||||||
-- terraform-ls = terraform language server (Hashicorp stable)
|
|
||||||
lsp.terraformls.setup{}
|
|
||||||
|
|
||||||
-- tsserver = typescript language server, works for JS as well.
|
|
||||||
lsp.tsserver.setup{}
|
|
|
@ -4,9 +4,7 @@
|
||||||
-- Autocmd that will actually be in charging of starting the whole thing
|
-- Autocmd that will actually be in charging of starting the whole thing
|
||||||
local nvim_metals_group = vim.api.nvim_create_augroup(
|
local nvim_metals_group = vim.api.nvim_create_augroup(
|
||||||
'nvim-metals',
|
'nvim-metals',
|
||||||
{
|
{ clear = true }
|
||||||
clear = true
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd('FileType', {
|
vim.api.nvim_create_autocmd('FileType', {
|
||||||
|
@ -14,9 +12,6 @@ vim.api.nvim_create_autocmd('FileType', {
|
||||||
callback = function()
|
callback = function()
|
||||||
local metals_config = require('metals').bare_config()
|
local metals_config = require('metals').bare_config()
|
||||||
|
|
||||||
-- Capabilities for completion.
|
|
||||||
local capabilities = require('cmp_nvim_lsp').default_capabilities()
|
|
||||||
|
|
||||||
metals_config.settings = {
|
metals_config.settings = {
|
||||||
showImplicitArguments = true,
|
showImplicitArguments = true,
|
||||||
showInferredType = true,
|
showInferredType = true,
|
||||||
|
@ -28,7 +23,7 @@ vim.api.nvim_create_autocmd('FileType', {
|
||||||
-- status bar somehow."
|
-- status bar somehow."
|
||||||
metals_config.init_options.statusBarProvider = 'on'
|
metals_config.init_options.statusBarProvider = 'on'
|
||||||
|
|
||||||
metals_config.capabilities = capabilities
|
metals_config.capabilities = require('cmp_nvim_lsp').default_capabilities()
|
||||||
require('metals').initialize_or_attach(metals_config)
|
require('metals').initialize_or_attach(metals_config)
|
||||||
end,
|
end,
|
||||||
group = nvim_metals_group,
|
group = nvim_metals_group,
|
|
@ -1,4 +0,0 @@
|
||||||
require('telescope').setup()
|
|
||||||
|
|
||||||
-- This is required to use FZF with Telescope.
|
|
||||||
require('telescope').load_extension('fzf')
|
|
|
@ -1,28 +1,28 @@
|
||||||
require'nvim-treesitter.configs'.setup {
|
require'nvim-treesitter.configs'.setup {
|
||||||
-- One of "all", "maintained", or a list of languages
|
-- One of "all", "maintained", or a list of languages
|
||||||
ensure_installed = {
|
ensure_installed = {
|
||||||
"c", "zig", "bash", "scala", "yaml", "css", "javascript",
|
"c", "zig", "bash", "scala", "yaml", "css", "javascript",
|
||||||
"latex", "clojure", "lua", "cpp", "hcl", "json"
|
"latex", "clojure", "lua", "cpp", "hcl", "json"
|
||||||
},
|
},
|
||||||
|
|
||||||
-- Install languages synchronously (only applied to `ensure_installed`)
|
-- Install languages synchronously (only applied to `ensure_installed`)
|
||||||
sync_install = false,
|
sync_install = false,
|
||||||
|
|
||||||
-- List of parsers to ignore installing
|
-- List of parsers to ignore installing
|
||||||
ignore_install = { },
|
ignore_install = { },
|
||||||
|
|
||||||
highlight = {
|
highlight = {
|
||||||
enable = true,
|
enable = true,
|
||||||
disable = {},
|
disable = {},
|
||||||
-- Setting this to true will run `:h syntax` and tree-sitter at the same
|
-- Setting this to true will run `:h syntax` and tree-sitter at the same
|
||||||
-- time. Set this to `true` if you depend on 'syntax' being enabled (like
|
-- time. Set this to `true` if you depend on 'syntax' being enabled (like
|
||||||
-- for indentation). Using this option may slow down your editor, and you
|
-- for indentation). Using this option may slow down your editor, and you
|
||||||
-- may see some duplicate highlights. Instead of true it can also be a list
|
-- may see some duplicate highlights. Instead of true it can also be a list
|
||||||
-- of languages
|
-- of languages
|
||||||
additional_vim_regex_highlighting = false,
|
additional_vim_regex_highlighting = false,
|
||||||
},
|
},
|
||||||
|
|
||||||
indent = {
|
indent = {
|
||||||
enable = true
|
enable = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue