nvim: clean up lua init

This commit is contained in:
dogeystamp 2024-03-03 19:19:56 -05:00
parent c2abcf4f3e
commit c599929e4f
Signed by: dogeystamp
GPG Key ID: 7225FE3592EFFA38
5 changed files with 192 additions and 124 deletions

28
.gitmodules vendored
View File

@ -1,3 +1,6 @@
################
# note-taking setup
################
[submodule "src/.local/bin/pyinstantref"] [submodule "src/.local/bin/pyinstantref"]
path = src/.local/bin/pyinstantref path = src/.local/bin/pyinstantref
url = https://github.com/dogeystamp/pyinstantref url = https://github.com/dogeystamp/pyinstantref
@ -5,6 +8,12 @@
path = src/.local/bin/inkscape-shortcut-manager path = src/.local/bin/inkscape-shortcut-manager
url = https://github.com/dogeystamp/inkscape-shortcut-manager url = https://github.com/dogeystamp/inkscape-shortcut-manager
################
# neovim plugins
################
# prompts # prompts
# telescope.vim # telescope.vim
[submodule "src/.local/share/nvim/site/pack/3pp/start/telescope.nvim"] [submodule "src/.local/share/nvim/site/pack/3pp/start/telescope.nvim"]
@ -32,12 +41,6 @@
path = src/.local/share/nvim/site/pack/3pp/start/vim-gitgutter path = src/.local/share/nvim/site/pack/3pp/start/vim-gitgutter
url = https://github.com/airblade/vim-gitgutter.git url = https://github.com/airblade/vim-gitgutter.git
# error/warning/info box
# coding.vim
[submodule "src/.local/share/nvim/site/pack/3pp/start/trouble.nvim"]
path = src/.local/share/nvim/site/pack/3pp/start/trouble.nvim
url = https://github.com/folke/trouble.nvim
# auto close brackets and quotes # auto close brackets and quotes
# coding.vim # coding.vim
[submodule "src/.local/share/nvim/site/pack/3pp/start/auto-pairs"] [submodule "src/.local/share/nvim/site/pack/3pp/start/auto-pairs"]
@ -51,13 +54,10 @@
url = https://github.com/puremourning/vimspector.git url = https://github.com/puremourning/vimspector.git
# language smarts # language smarts
# coding.vim # coding.lua
[submodule "src/.local/share/nvim/site/pack/3pp/start/nvim-lspconfig"] [submodule "src/.local/share/nvim/site/pack/3pp/start/nvim-lspconfig"]
path = src/.local/share/nvim/site/pack/3pp/start/nvim-lspconfig path = src/.local/share/nvim/site/pack/3pp/start/nvim-lspconfig
url = https://github.com/neovim/nvim-lspconfig.git url = https://github.com/neovim/nvim-lspconfig.git
[submodule "src/.local/share/nvim/site/pack/3pp/start/lsp-status.nvim"]
path = src/.local/share/nvim/site/pack/3pp/start/lsp-status.nvim
url = https://github.com/nvim-lua/lsp-status.nvim.git
[submodule "src/.local/share/nvim/site/pack/3pp/start/nvim-cmp"] [submodule "src/.local/share/nvim/site/pack/3pp/start/nvim-cmp"]
path = src/.local/share/nvim/site/pack/3pp/start/nvim-cmp path = src/.local/share/nvim/site/pack/3pp/start/nvim-cmp
url = https://github.com/hrsh7th/nvim-cmp.git url = https://github.com/hrsh7th/nvim-cmp.git
@ -68,8 +68,14 @@
path = src/.local/share/nvim/site/pack/3pp/start/nvim-treesitter path = src/.local/share/nvim/site/pack/3pp/start/nvim-treesitter
url = https://github.com/nvim-treesitter/nvim-treesitter.git url = https://github.com/nvim-treesitter/nvim-treesitter.git
# error/warning/info box
# coding.lua
[submodule "src/.local/share/nvim/site/pack/3pp/start/trouble.nvim"]
path = src/.local/share/nvim/site/pack/3pp/start/trouble.nvim
url = https://github.com/folke/trouble.nvim
# aesthetic changes # aesthetic changes
# coding.vim # init.lua
[submodule "src/.local/share/nvim/site/pack/3pp/start/dressing.nvim"] [submodule "src/.local/share/nvim/site/pack/3pp/start/dressing.nvim"]
path = src/.local/share/nvim/site/pack/3pp/start/dressing.nvim path = src/.local/share/nvim/site/pack/3pp/start/dressing.nvim
url = https://github.com/stevearc/dressing.nvim.git url = https://github.com/stevearc/dressing.nvim.git

View File

@ -4,6 +4,15 @@ My dotfiles.
## Installation ## Installation
Clone with submodules (this is necessary for Neovim plugins):
```bash
git clone --recurse-submodules https://github.com/dogeystamp/dots.git
# alternatively, after cloning:
git submodule init
git submodule update
```
Symlink all the files in src/ to your home directory using the provided dotinstall.sh script, or manually. Symlink all the files in src/ to your home directory using the provided dotinstall.sh script, or manually.
Otherwise, copy them manually to your home directory. Otherwise, copy them manually to your home directory.
@ -22,9 +31,13 @@ once the dotfiles are installed, see `~/.config/dot_profile.example` for more in
### Notes ### Notes
`.local/bin/keyboard.sh` provides changes I like, such as swapping escape and caps lock, which you should remove if you don't need. - `.local/bin/keyboard.sh` provides changes I like, such as swapping escape and caps lock, which you should remove if you don't need.
My qutebrowser configuration emphasizes privacy over usability, and you might need to edit it to suit your needs if you want to use it. - My qutebrowser configuration emphasizes privacy over usability, and you might need to edit it to suit your needs if you want to use it.
- Neovim plugins are installed [via git submodule](https://hiphish.github.io/blog/2021/12/05/managing-vim-plugins-without-plugin-manager/)
rather than through conventional means. This has less complexity than a plugin manager since I already manage all my dotfiles under Git.
Plugins are declared in `.gitmodules`.
**Desktop Preview** **Desktop Preview**

View File

@ -0,0 +1,140 @@
-- stuff for coding
------
-- syntax highlighting
-- plug: nvim-treesitter
------
require'nvim-treesitter.configs'.setup {
ensure_installed = { "c", "cpp", "javascript", "typescript", "python", "vim", "fish", "bash" },
sync_install = false,
auto_install = false,
highlight = {
enable = true,
disable = function(lang, buf)
local max_filesize = 100 * 1024 -- 100 KB
local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
if ok and stats and stats.size > max_filesize then
return true
end
end,
},
}
------
-- diagnostics box
-- plug: trouble.nvim
------
require('trouble').setup({
icons = false,
fold_open = "v", -- icon used for open folds
fold_closed = ">", -- icon used for closed folds
indent_lines = false, -- add an indent guide below the fold icons
signs = {
-- icons / text used for a diagnostic
error = "error",
warning = "warn",
hint = "hint",
information = "info"
},
use_diagnostic_signs = false -- enabling this will use the signs defined in your lsp client
})
--------------------------------
--------------------------------
-- language smarts (LSP and completion)
--------------------------------
--------------------------------
------
-- language server (LSP)
-- plug: nvim-lspconfig
------
local on_attach = function(client, bufnr)
local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end
-- Enable completion triggered by <c-x><c-o>
buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
local opts = { noremap=true, silent=true }
buf_set_keymap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
buf_set_keymap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
buf_set_keymap('n', 'gK', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
buf_set_keymap('n', 'gs', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
buf_set_keymap('n', 'gt', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
buf_set_keymap('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
buf_set_keymap('n', '<space>ss', '<cmd>lua vim.lsp.buf.workspace_symbol()<CR>', opts)
buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
buf_set_keymap('n', '<space>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<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', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
buf_set_keymap('n', '<space>f', '<cmd>lua vim.lsp.buf.format()<CR>', opts)
end
-- table declares LSPs to be set up
-- as well as settings per server (overrides defaults)
local servers = {
--pyright = {},
pylsp = {
settings = {
plugins = {
['python-lsp-black'] = {},
['python-pyflakes'] = {},
['pylsp-mypy'] = {},
},
},
},
clangd = {},
tsserver = {},
bashls = {},
cssls = {},
rust_analyzer = {
settings = {
['rust-analyzer'] = {
check = {
allTargets = false,
},
},
},
},
}
local nvim_lsp = require('lspconfig')
for lsp, sv_settings in pairs(servers) do
-- defaults
settings = {
on_attach = on_attach,
flags = {
debounce_text_changes = 150,
}
}
for k, v in pairs(servers[lsp]) do settings[k] = v end
nvim_lsp[lsp].setup(settings)
end
------
-- completions
-- plug: nvim-cmp, cmp-nvim-lsp
------
local cmp = require('cmp')
cmp.setup({
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
mapping = cmp.mapping.preset.insert({
['<C-e>'] = cmp.mapping.abort(),
['<C-f>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
}),
sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'buffer' },
})
})

View File

@ -1,22 +1,13 @@
-- Syntax highlighting --------------------------------
require'nvim-treesitter.configs'.setup { --------------------------------
ensure_installed = { "c", "cpp", "javascript", "typescript", "python", "vim", "fish", "bash" }, -- miscellaneous plugins
sync_install = false, --------------------------------
auto_install = false, --------------------------------
highlight = {
enable = true,
disable = function(lang, buf) ------
local max_filesize = 100 * 1024 -- 100 KB -- url motions
local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) -- plug: urlview.nvim
if ok and stats and stats.size > max_filesize then ------
return true
end
end,
},
}
-- motions to hop between URLs fast
require("urlview").setup({ require("urlview").setup({
jump = { jump = {
prev = "<leader>uj", prev = "<leader>uj",
@ -24,104 +15,23 @@ require("urlview").setup({
}, },
}) })
local on_attach = function(client, bufnr)
local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end
-- Enable completion triggered by <c-x><c-o>
buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
local opts = { noremap=true, silent=true }
buf_set_keymap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
buf_set_keymap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
buf_set_keymap('n', 'gK', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
buf_set_keymap('n', 'gs', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
buf_set_keymap('n', 'gt', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
buf_set_keymap('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
buf_set_keymap('n', '<space>ss', '<cmd>lua vim.lsp.buf.workspace_symbol()<CR>', opts)
buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
buf_set_keymap('n', '<space>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<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', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
buf_set_keymap('n', '<space>f', '<cmd>lua vim.lsp.buf.format()<CR>', opts)
end
-- settings per server (overrides defaults)
local servers = {
--pyright = {},
pylsp = {
settings = {
plugins = {
['python-lsp-black'] = {},
['python-pyflakes'] = {},
['pylsp-mypy'] = {},
},
},
},
clangd = {},
tsserver = {},
bashls = {},
cssls = {},
rust_analyzer = {
settings = {
['rust-analyzer'] = {
check = {
allTargets = false,
},
},
},
},
}
local nvim_lsp = require('lspconfig')
for lsp, sv_settings in pairs(servers) do
-- defaults
settings = {
on_attach = on_attach,
flags = {
debounce_text_changes = 150,
}
}
for k, v in pairs(servers[lsp]) do settings[k] = v end
nvim_lsp[lsp].setup(settings)
end
------
-- fancy prompts -- fancy prompts
-- plug: dressing.nvim
------
require('dressing').setup({ require('dressing').setup({
input = { input = {
insert_only = false, insert_only = false,
} }
}) })
local cmp = require'cmp'
cmp.setup({
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
mapping = cmp.mapping.preset.insert({
['<C-e>'] = cmp.mapping.abort(),
['<C-f>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
}),
sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'buffer' },
})
})
-- improved error list
require('trouble').setup({ --------------------------------
icons = false, --------------------------------
fold_open = "v", -- icon used for open folds -- imports (see .config/nvim/lua/)
fold_closed = ">", -- icon used for closed folds --------------------------------
indent_lines = false, -- add an indent guide below the fold icons --------------------------------
signs = {
-- icons / text used for a diagnostic require("coding")
error = "error",
warning = "warn",
hint = "hint",
information = "info"
},
use_diagnostic_signs = false -- enabling this will use the signs defined in your lsp client
})

@ -1 +0,0 @@
Subproject commit 54f48eb5017632d81d0fd40112065f1d062d0629