neovim - all packages

This commit is contained in:
2024-03-02 18:14:05 +01:00
parent 8b8d9fd9b5
commit a5c009d449
26 changed files with 536 additions and 85 deletions

View File

@@ -1,57 +1,3 @@
NeoVim: Zusatz:
- obsidian-nvim - firefox Bookmarks neu
- obsidian vaults einrichten in home/programs/neovim/lua/plugins/obsidian.lua
- plenary-nvim
- telescope-nvim
- telescope-fzf-native-nvim
- neoscroll-nvim
- leap-nvim
- bufferline-nvim
- lualine-nvim
- lualine-lsp-progress
- dropbar-nvim
- vim-obsession
- nvim-tree-lua
- oil-nvim
- nvim-web-devicons
- nvim-cmp
- cmp-nvim-lua
- cmp-buffer
- cmp-path
- luasnip
- cmp_luasnip
- friendly-snippets
- lspkind-nvim
- cmp-conjure
- conform-nvim
- comment-nvim
- nvim-ts-context-commentstring
- nvim-surround
- nvim-autopairs
- vimtex
- nvim-treesitter.withAllGrammars
- nvim-treesitter-textobjects
- rainbow-delimiters-nvim
- nvim-lspconfig
- neoconf.nvim
- neodev-nvim
- lean-nvim
- nvim-lspconfig
- plenary-nvim
- conjure
- wich-key-nvim
- markdown-preview-nvim

View File

@@ -21,21 +21,88 @@ in {
withPython3 = true; withPython3 = true;
plugins = with pkgs.vimPlugins; [ plugins = with pkgs.vimPlugins; [
# Plugin-Manager bufferline-nvim
lazy-nvim
# Theme
catppuccin-nvim catppuccin-nvim
cmp-buffer#
# Obsidian cmp-conjure#
obsidian-nvim cmp-nvim-lua#
cmp-path#
plenary-nvim cmp_luasnip#
telescope-nvim comment-nvim#
conform-nvim
conjure
dropbar-nvim
friendly-snippets#
lazy-nvim#
lean-nvim
leap-nvim
lspkind-nvim#
lualine-lsp-progress#
lualine-nvim
luasnip#
markdown-preview-nvim
neoconf-nvim#
neodev-nvim#
neoscroll-nvim
nvim-autopairs
nvim-cmp nvim-cmp
nvim-lspconfig
nvim-surround
nvim-tree-lua
nvim-treesitter.withAllGrammars nvim-treesitter.withAllGrammars
nvim-treesitter-textobjects
nvim-ts-context-commentstring
nvim-web-devicons#
obsidian-nvim
oil-nvim
plenary-nvim
rainbow-delimiters-nvim#
telescope-fzf-native-nvim
telescope-nvim
vimtex
which-key-nvim
];
extraPackages = with pkgs; [
ripgrep
fd
codespell
prettierd
# Lua
lua-language-server
stylua
# Haskell
haskell-language-server
ghc
stack
cabal-install
haskellPackages.fourmolu
# Lean
lean4
# Python
ruff-lsp
nodePackages.pyright
isort
python311Packages.autopep8
# LaTeX
texliveFull
texlab
xdotool
pplatex
neovim-remote
# Nix
nixd
nixfmt
# Rust
rust-analyzer
# Bash
nodePackages.bash-language-server
shellcheck
shellharden
# sh
shfmt
# Scheme
chez
]; ];
extraLuaConfig = '' extraLuaConfig = ''

View File

@@ -0,0 +1,15 @@
return {
{
"akinsho/bufferline.nvim",
dependencies = { "nvim-tree/nvim-web-devicons", "catppuccin/nvim" },
config = function()
vim.opt.termguicolors = true
require("bufferline").setup({
highlights = require("catppuccin.groups.integrations.bufferline").get(),
options = {
diagnostics = "nvim_lsp",
},
})
end,
},
}

View File

@@ -0,0 +1,55 @@
return {
{
"stevearc/conform.nvim",
event = { "BufWritePre" },
cmd = "ConformInfo",
keys = {
{
"<leader>cF",
function()
require("conform").format({ formatters = { "injected" } })
end,
mode = { "n", "v" },
desc = "Format Injected Langs",
},
},
config = function()
require("conform").setup({
format_on_save = {
-- These options will be passed to conform.format()
timeout_ms = 500,
lsp_fallback = true,
},
formatters_by_ft = {
lua = { "stylua" },
python = { "isort", "autopep8" },
haskell = { "fourmolu" },
bash = { "shellcheck", "shellharden" },
sh = { "shfmt" },
markdown = { "prettierd" },
json = { "prettierd" },
yaml = { "prettierd" },
nix = { "nixfmt" },
tex = { "latexindent" },
["*"] = { "codespell" },
["_"] = { "trim_whitespace" },
},
formatters = {
stylua = {
inherit = true,
prepend_args = { "--indent-type", "Spaces", "--indent-width", "2" },
},
codespell = {
inherit = true,
prepend_args = { "-L", "launch" },
},
latexindent = {
inherit = true,
prepend_args = { "-y=\"defaultIndent:' '\"" },
},
},
})
end,
},
}

View File

@@ -0,0 +1,34 @@
return {
{
"Olical/conjure",
ft = { "lua", "python", "scheme" },
dependencies = {
{
"PaterJason/cmp-conjure",
config = function()
local cmp = require("cmp")
local config = cmp.get_config()
table.insert(config.sources, {
name = "buffer",
option = {
sources = {
{ name = "conjure" },
},
},
})
cmp.setup(config)
end,
},
},
config = function()
require("conjure.main").main()
require("conjure.mapping")["on-filetype"]()
vim.g["conjure#debug"] = false
vim.g["conjure#client#scheme#stdio#command"] = "scheme"
vim.g["conjure#client#scheme#stdio#prompt_pattern"] = "> $?"
vim.g["conjure#mapping#prefix"] = "<leader>,"
vim.g["conjure#extract#tree_sitter#enabled"] = true
end,
},
}

View File

@@ -0,0 +1,14 @@
return {
{
"Bekaboo/dropbar.nvim",
-- optional, but required for fuzzy finder support
dependencies = {
"nvim-telescope/telescope-fzf-native.nvim",
},
config = function()
vim.keymap.set("n", "<leader>bs", function()
require("dropbar.api").pick(vim.v.count ~= 0 and vim.v.count)
end)
end,
},
}

View File

@@ -0,0 +1,17 @@
return {
'Julian/lean.nvim',
event = { 'BufReadPre *.lean', 'BufNewFile *.lean' },
dependencies = {
'neovim/nvim-lspconfig',
'nvim-lua/plenary.nvim',
'hrsh7th/nvim-cmp',
},
-- see details below for full configuration options
opts = {
lsp = {
on_attach = on_attach,
},
mappings = true,
}
}

View File

@@ -0,0 +1,11 @@
return {
{
"ggandor/leap.nvim",
config = function()
local leap = require("leap")
leap.opts.special_keys.prev_target = "<bs>"
leap.opts.special_keys.prev_group = "<bs>"
end,
},
}

View File

@@ -0,0 +1,18 @@
return {
{
"nvim-lualine/lualine.nvim",
dependencies = { "nvim-tree/nvim-web-devicons", "arkav/lualine-lsp-progress" },
config = function()
require("lualine").setup({
options = {
theme = "catppuccin",
},
sections = {
lualine_c = {
"lsp_progress",
},
},
})
end,
},
}

View File

@@ -0,0 +1,12 @@
return {
{
"iamcco/markdown-preview.nvim",
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
ft = { "markdown" },
config = function()
vim.g.mkdp_theme = "dark"
vim.g.mkdp_echo_preview_url = 1
vim.g.mkdp_browser = "luakit"
end,
},
}

View File

@@ -0,0 +1,13 @@
return {
{
"karb94/neoscroll.nvim",
config = function()
require("neoscroll").setup({
-- All these keys will be mapped to their corresponding default scrolling animation
mappings = { "<C-u>", "<C-d>", "<C-b>", "<C-f>", "<C-y>", "<C-e>", "zt", "zz", "zb" },
hide_cursor = true, -- Hide cursor while scrolling
stop_eof = true, -- Stop at <EOF> when scrolling downwards
})
end,
},
}

View File

@@ -0,0 +1,28 @@
return {
{
"windwp/nvim-autopairs",
event = { "InsertEnter" },
dependencies = {
"hrsh7th/nvim-cmp",
},
config = function()
-- import nvim-autopairs
local autopairs = require("nvim-autopairs")
-- configure autopairs
autopairs.setup({
check_ts = true, -- enable treesitter
})
-- import nvim-autopairs completion functionality
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
-- import nvim-cmp plugin (completions plugin)
local cmp = require("cmp")
-- make autopairs and completion work together
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
end,
},
}

View File

@@ -0,0 +1,107 @@
return {
-- lspconfig
{
"neovim/nvim-lspconfig",
event = { "BufReadPre", "BufNewFile" },
dependencies = {
{ "folke/neoconf.nvim", dependencies = { "nvim-lspconfig" } },
{ "folke/neodev.nvim", opts = {} },
},
config = function()
local lspconfig = require("lspconfig")
local cmp_nvim_lsp = require("cmp_nvim_lsp")
local keymap = vim.keymap
local signs = { Error = "", Warn = "", Hint = "󰠠 ", Info = "" }
for type, icon in pairs(signs) do
local hl = "DiagnosticSign" .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
end
local opts = { noremap = true, silent = true }
local on_attach = function(client, bufnr)
opts.buffer = bufnr
-- set keybinds
opts.desc = "Show LSP references"
keymap.set("n", "gR", "<cmd>Telescope lsp_references<CR>", opts) -- show definition, references
opts.desc = "Go to declaration"
keymap.set("n", "gD", vim.lsp.buf.declaration, opts) -- go to declaration
opts.desc = "Show LSP definitions"
keymap.set("n", "gd", "<cmd>Telescope lsp_definitions<CR>", opts) -- show lsp definitions
opts.desc = "Show LSP implementations"
keymap.set("n", "gi", "<cmd>Telescope lsp_implementations<CR>", opts) -- show lsp implementations
opts.desc = "Show LSP type definitions"
keymap.set("n", "gt", "<cmd>Telescope lsp_type_definitions<CR>", opts) -- show lsp type definitions
opts.desc = "See available code actions"
keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, opts) -- see available code actions, in visual mode will apply to selection
opts.desc = "Smart rename"
keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts) -- smart rename
opts.desc = "Show buffer diagnostics"
keymap.set("n", "<leader>D", "<cmd>Telescope diagnostics bufnr=0<CR>", opts) -- show diagnostics for file
opts.desc = "Show line diagnostics"
keymap.set("n", "<leader>d", vim.diagnostic.open_float, opts) -- show diagnostics for line
opts.desc = "Go to previous diagnostic"
keymap.set("n", "[d", vim.diagnostic.goto_prev, opts) -- jump to previous diagnostic in buffer
opts.desc = "Go to next diagnostic"
keymap.set("n", "]d", vim.diagnostic.goto_next, opts) -- jump to next diagnostic in buffer
opts.desc = "Show documentation for what is under cursor"
keymap.set("n", "K", vim.lsp.buf.hover, opts) -- show documentation for what is under cursor
opts.desc = "Restart LSP"
keymap.set("n", "<leader>rs", ":LspRestart<CR>", opts) -- mapping to restart lsp if necessary
end
local capabilities = cmp_nvim_lsp.default_capabilities()
lspconfig["lua_ls"].setup({
capabilities = capabilities,
on_attach = on_attach,
})
lspconfig["hls"].setup({
filetypes = { 'haskell', 'lhaskell', 'cabal' },
capabilities = capabilities,
on_attach = on_attach,
})
lspconfig["leanls"].setup({
capabilities = capabilities,
on_attach = on_attach,
})
lspconfig["bashls"].setup({
capabilities = capabilities,
on_attach = on_attach,
})
lspconfig["pyright"].setup({
capabilities = capabilities,
on_attach = on_attach,
})
lspconfig["ruff_lsp"].setup({
capabilities = capabilities,
on_attach = on_attach,
})
lspconfig["texlab"].setup({
capabilities = capabilities,
on_attach = on_attach,
})
lspconfig["nixd"].setup({
capabilities = capabilities,
on_attach = on_attach,
})
lspconfig["rust_analyzer"].setup({
capabilities = capabilities,
on_attach = on_attach,
})
end,
},
}

View File

@@ -0,0 +1,10 @@
return {
{
"kylechui/nvim-surround",
event = "VeryLazy",
config = function()
require("nvim-surround").setup({})
end,
},
}

View File

@@ -0,0 +1,22 @@
return {
{
"nvim-tree/nvim-tree.lua",
lazy = false,
keys = {
{ "<leader>ft", "<CMD>NvimTreeToggle<CR>", desc = "Nvim Tree" },
},
dependencies = {
"nvim-tree/nvim-web-devicons",
},
config = function()
require("nvim-tree").setup({
hijack_netrw = false,
hijack_unnamed_buffer_when_opening = false,
hijack_directories = {
enable = false,
},
})
end,
},
}

View File

@@ -46,11 +46,4 @@ return {
end, end,
}, },
}, },
{
"nvim-treesitter/nvim-treesitter-textobjects",
dependencies = {
"nvim-treesitter/nvim-treesitter",
},
},
} }

View File

@@ -0,0 +1,9 @@
return {
{
"nvim-treesitter/nvim-treesitter-textobjects",
dependencies = {
"nvim-treesitter/nvim-treesitter",
},
},
}

View File

@@ -0,0 +1,20 @@
return {
{
"JoosepAlviste/nvim-ts-context-commentstring",
dependencies = {
{
"numToStr/Comment.nvim",
lazy = false,
config = function()
require("Comment").setup({
pre_hook = function()
return vim.bo.commentstring
end,
})
end,
},
"nvim-treesitter/nvim-treesitter",
},
},
}

View File

@@ -0,0 +1,20 @@
return {
{
"stevearc/oil.nvim",
opts = {},
lazy = false,
config = function()
require("oil").setup({
default_file_explorer = true,
delete_to_trash = true,
experimental_watch_for_changes = true,
use_default_keymaps = true,
})
end,
keys = {
{ "-", "<CMD>Oil<CR>", desc = "Open parent directory" },
},
-- Optional dependencies
dependencies = { "nvim-tree/nvim-web-devicons" },
},
}

View File

@@ -0,0 +1,4 @@
return {
{ "nvim-lua/plenary.nvim" },
}

View File

@@ -1,12 +1,4 @@
return { return {
{ "nvim-lua/plenary.nvim" },
{
"nvim-telescope/telescope.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
require("telescope").setup({})
end,
},
{ {
"nvim-telescope/telescope-fzf-native.nvim", "nvim-telescope/telescope-fzf-native.nvim",
config = function() config = function()
@@ -17,4 +9,3 @@ return {
end, end,
}, },
} }

View File

@@ -0,0 +1,10 @@
return {
{
"nvim-telescope/telescope.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
require("telescope").setup({})
end,
},
}

View File

@@ -0,0 +1,19 @@
return {
{
"lervag/vimtex",
lazy = false, -- lazy-loading will disable inverse search
config = function()
vim.api.nvim_create_autocmd({ "FileType" }, {
group = vim.api.nvim_create_augroup("lazyvim_vimtex_conceal", { clear = true }),
pattern = { "bib", "tex" },
callback = function()
vim.wo.conceallevel = 2
end,
})
vim.g.vimtex_mappings_disable = { ["n"] = { "K" } } -- disable `K` as it conflicts with LSP hover
vim.g.vimtex_quickfix_method = "pplatex"
vim.g.vimtex_view_method = "zathura"
end,
},
}

View File

@@ -0,0 +1,16 @@
return {
{
"folke/which-key.nvim",
optional = true,
event = "VeryLazy",
init = function()
vim.o.timeout = true
vim.o.timeoutlen = 300
end,
opts = {
defaults = {
["<localLeader>l"] = { name = "+vimtex" },
},
},
},
}