wyebanie neovima
This commit is contained in:
@@ -1,90 +0,0 @@
|
||||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}: let
|
||||
finecmdline = pkgs.vimUtils.buildVimPlugin {
|
||||
name = "fine-cmdline";
|
||||
src = inputs.fine-cmdline;
|
||||
};
|
||||
in {
|
||||
programs = {
|
||||
neovim = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
vimdiffAlias = true;
|
||||
withNodeJs = true;
|
||||
extraPackages = with pkgs; [
|
||||
lua-language-server
|
||||
gopls
|
||||
xclip
|
||||
wl-clipboard
|
||||
luajitPackages.lua-lsp
|
||||
nil
|
||||
rust-analyzer
|
||||
#nodePackages.bash-language-server
|
||||
yaml-language-server
|
||||
pyright
|
||||
marksman
|
||||
];
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
alpha-nvim
|
||||
auto-session
|
||||
bufferline-nvim
|
||||
dressing-nvim
|
||||
indent-blankline-nvim
|
||||
nui-nvim
|
||||
finecmdline
|
||||
nvim-treesitter.withAllGrammars
|
||||
lualine-nvim
|
||||
nvim-autopairs
|
||||
nvim-web-devicons
|
||||
nvim-cmp
|
||||
nvim-surround
|
||||
nvim-lspconfig
|
||||
cmp-nvim-lsp
|
||||
cmp-buffer
|
||||
luasnip
|
||||
cmp_luasnip
|
||||
friendly-snippets
|
||||
lspkind-nvim
|
||||
comment-nvim
|
||||
nvim-ts-context-commentstring
|
||||
plenary-nvim
|
||||
neodev-nvim
|
||||
luasnip
|
||||
telescope-nvim
|
||||
todo-comments-nvim
|
||||
nvim-tree-lua
|
||||
telescope-fzf-native-nvim
|
||||
vim-tmux-navigator
|
||||
];
|
||||
extraConfig = ''
|
||||
set noemoji
|
||||
nnoremap : <cmd>FineCmdline<CR>
|
||||
'';
|
||||
extraLuaConfig = ''
|
||||
${builtins.readFile ./nvim/options.lua}
|
||||
${builtins.readFile ./nvim/keymaps.lua}
|
||||
${builtins.readFile ./nvim/plugins/alpha.lua}
|
||||
${builtins.readFile ./nvim/plugins/autopairs.lua}
|
||||
${builtins.readFile ./nvim/plugins/auto-session.lua}
|
||||
${builtins.readFile ./nvim/plugins/comment.lua}
|
||||
${builtins.readFile ./nvim/plugins/cmp.lua}
|
||||
${builtins.readFile ./nvim/plugins/lsp.lua}
|
||||
${builtins.readFile ./nvim/plugins/nvim-tree.lua}
|
||||
${builtins.readFile ./nvim/plugins/telescope.lua}
|
||||
${builtins.readFile ./nvim/plugins/todo-comments.lua}
|
||||
${builtins.readFile ./nvim/plugins/treesitter.lua}
|
||||
${builtins.readFile ./nvim/plugins/fine-cmdline.lua}
|
||||
require("ibl").setup()
|
||||
require("bufferline").setup{}
|
||||
require("lualine").setup({
|
||||
icons_enabled = true,
|
||||
})
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
local keymap = vim.keymap
|
||||
-- use jk to exit insert mode
|
||||
keymap.set("i", "jk", "<ESC>", { desc = "Exit insert mode with jk" })
|
||||
-- clear search highlights
|
||||
keymap.set("n", "<leader>nh", ":nohl<CR>", { desc = "Clear search highlights" })
|
||||
-- window management
|
||||
keymap.set("n", "<leader>sv", "<C-w>v", { desc = "Split window vertically" }) -- split window vertically
|
||||
keymap.set("n", "<leader>sh", "<C-w>s", { desc = "Split window horizontally" }) -- split window horizontally
|
||||
keymap.set("n", "<leader>se", "<C-w>=", { desc = "Make splits equal size" }) -- make split windows equal width & height
|
||||
keymap.set("n", "<leader>sx", "<cmd>close<CR>", { desc = "Close current split" }) -- close current split window
|
||||
keymap.set("n", "<leader>to", "<cmd>tabnew<CR>", { desc = "Open new tab" }) -- open new tab
|
||||
keymap.set("n", "<leader>tx", "<cmd>tabclose<CR>", { desc = "Close current tab" }) -- close current tab
|
||||
keymap.set("n", "<leader>tn", "<cmd>tabn<CR>", { desc = "Go to next tab" }) -- go to next tab
|
||||
keymap.set("n", "<leader>tp", "<cmd>tabp<CR>", { desc = "Go to previous tab" }) -- go to previous tab
|
||||
keymap.set("n", "<leader>tf", "<cmd>tabnew %<CR>", { desc = "Open current buffer in new tab" }) -- move current buffer to new tab
|
||||
@@ -1,21 +0,0 @@
|
||||
local opt = vim.opt
|
||||
opt.number = true
|
||||
opt.relativenumber = true
|
||||
opt.tabstop = 2
|
||||
opt.shiftwidth = 2
|
||||
opt.expandtab = true
|
||||
opt.autoindent = true
|
||||
opt.wrap = false
|
||||
opt.ignorecase = true
|
||||
opt.smartcase = true
|
||||
opt.termguicolors = true
|
||||
opt.background = "dark"
|
||||
opt.signcolumn = "yes"
|
||||
opt.mouse = "a"
|
||||
opt.cursorline = true
|
||||
opt.backspace = "indent,eol,start"
|
||||
opt.clipboard:append("unnamedplus")
|
||||
opt.splitright = true
|
||||
opt.splitbelow = true
|
||||
opt.swapfile = false
|
||||
vim.g.mapleader = " "
|
||||
@@ -1,30 +0,0 @@
|
||||
local alpha = require("alpha")
|
||||
local dashboard = require("alpha.themes.dashboard")
|
||||
|
||||
-- Set header
|
||||
dashboard.section.header.val = {
|
||||
" ",
|
||||
" ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ ",
|
||||
" ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║ ",
|
||||
" ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║ ",
|
||||
" ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║ ",
|
||||
" ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║ ",
|
||||
" ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ ",
|
||||
" ",
|
||||
}
|
||||
|
||||
-- Set menu
|
||||
dashboard.section.buttons.val = {
|
||||
dashboard.button("e", " > New File", "<cmd>ene<CR>"),
|
||||
dashboard.button("SPC fe", " > Toggle file explorer", "<cmd>NvimTreeToggle<CR>"),
|
||||
dashboard.button("SPC ff", " > Find File", "<cmd>Telescope find_files<CR>"),
|
||||
dashboard.button("SPC lg", " > Find Word", "<cmd>Telescope live_grep<CR>"),
|
||||
dashboard.button("SPC wr", " > Restore Session For Current Directory", "<cmd>SessionRestore<CR>"),
|
||||
dashboard.button("q", " > Quit NVIM", "<cmd>qa<CR>"),
|
||||
}
|
||||
|
||||
-- Send config to alpha
|
||||
alpha.setup(dashboard.opts)
|
||||
|
||||
-- Disable folding on alpha buffer
|
||||
vim.cmd([[autocmd FileType alpha setlocal nofoldenable]])
|
||||
@@ -1,11 +0,0 @@
|
||||
local auto_session = require("auto-session")
|
||||
|
||||
auto_session.setup({
|
||||
auto_restore_enabled = false,
|
||||
auto_session_suppress_dirs = { "~/", "~/Dev/", "~/Downloads", "~/Documents", "~/Desktop/" },
|
||||
})
|
||||
|
||||
local keymap = vim.keymap
|
||||
|
||||
keymap.set("n", "<leader>wr", "<cmd>SessionRestore<CR>", { desc = "Restore session for cwd" }) -- restore last workspace session for current directory
|
||||
keymap.set("n", "<leader>ws", "<cmd>SessionSave<CR>", { desc = "Save session for auto session root dir" }) -- save workspace session for current working directory
|
||||
@@ -1,20 +0,0 @@
|
||||
local autopairs = require("nvim-autopairs")
|
||||
|
||||
-- configure autopairs
|
||||
autopairs.setup({
|
||||
check_ts = true, -- enable treesitter
|
||||
ts_config = {
|
||||
lua = { "string" }, -- don't add pairs in lua string treesitter nodes
|
||||
javascript = { "template_string" }, -- don't add pairs in javscript template_string treesitter nodes
|
||||
java = false, -- don't check treesitter on java
|
||||
},
|
||||
})
|
||||
|
||||
-- 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())
|
||||
@@ -1,41 +0,0 @@
|
||||
local cmp = require("cmp")
|
||||
local luasnip = require("luasnip")
|
||||
local lspkind = require("lspkind")
|
||||
|
||||
-- loads vscode style snippets from installed plugins (e.g. friendly-snippets)
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
|
||||
cmp.setup({
|
||||
completion = {
|
||||
completeopt = "menu,menuone,preview,noselect",
|
||||
},
|
||||
snippet = { -- configure how nvim-cmp interacts with snippet engine
|
||||
expand = function(args)
|
||||
luasnip.lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
["<C-k>"] = cmp.mapping.select_prev_item(), -- previous suggestion
|
||||
["<C-j>"] = cmp.mapping.select_next_item(), -- next suggestion
|
||||
["<C-b>"] = cmp.mapping.scroll_docs(-4),
|
||||
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
||||
["<C-Space>"] = cmp.mapping.complete(), -- show completion suggestions
|
||||
["<C-e>"] = cmp.mapping.abort(), -- close completion window
|
||||
["<CR>"] = cmp.mapping.confirm({ select = false }),
|
||||
}),
|
||||
-- sources for autocompletion
|
||||
sources = cmp.config.sources({
|
||||
{ name = "nvim_lsp" }, -- language servers
|
||||
{ name = "luasnip" }, -- snippets
|
||||
{ name = "buffer" }, -- text within current buffer
|
||||
{ name = "path" }, -- file system paths
|
||||
}),
|
||||
|
||||
-- configure lspkind for vs-code like pictograms in completion menu
|
||||
formatting = {
|
||||
format = lspkind.cmp_format({
|
||||
maxwidth = 50,
|
||||
ellipsis_char = "...",
|
||||
}),
|
||||
},
|
||||
})
|
||||
@@ -1,9 +0,0 @@
|
||||
local comment = require("Comment")
|
||||
|
||||
local ts_context_commentstring = require("ts_context_commentstring.integrations.comment_nvim")
|
||||
|
||||
-- enable comment
|
||||
comment.setup({
|
||||
-- for commenting tsx, jsx, svelte, html files
|
||||
pre_hook = ts_context_commentstring.create_pre_hook(),
|
||||
})
|
||||
@@ -1,33 +0,0 @@
|
||||
require('fine-cmdline').setup({
|
||||
cmdline = {
|
||||
enable_keymaps = true,
|
||||
smart_history = true,
|
||||
prompt = '> '
|
||||
},
|
||||
popup = {
|
||||
position = {
|
||||
row = '10%',
|
||||
col = '50%',
|
||||
},
|
||||
size = {
|
||||
width = '60%',
|
||||
},
|
||||
border = {
|
||||
style = 'rounded',
|
||||
},
|
||||
win_options = {
|
||||
winhighlight = 'Normal:Normal,FloatBorder:FloatBorder',
|
||||
},
|
||||
},
|
||||
hooks = {
|
||||
before_mount = function(input)
|
||||
-- code
|
||||
end,
|
||||
after_mount = function(input)
|
||||
-- code
|
||||
end,
|
||||
set_keymaps = function(imap, feedkeys)
|
||||
-- code
|
||||
end
|
||||
}
|
||||
})
|
||||
@@ -1,8 +0,0 @@
|
||||
local lspconfig = require("lspconfig")
|
||||
|
||||
require'lspconfig'.pyright.setup{}
|
||||
require'lspconfig'.nil_ls.setup{}
|
||||
require'lspconfig'.marksman.setup{}
|
||||
require'lspconfig'.rust_analyzer.setup{}
|
||||
require'lspconfig'.yamlls.setup{}
|
||||
require'lspconfig'.bashls.setup{}
|
||||
@@ -1,47 +0,0 @@
|
||||
local nvimtree = require("nvim-tree")
|
||||
|
||||
-- recommended settings from nvim-tree documentation
|
||||
vim.g.loaded_netrw = 1
|
||||
vim.g.loaded_netrwPlugin = 1
|
||||
|
||||
nvimtree.setup({
|
||||
view = {
|
||||
width = 35,
|
||||
relativenumber = true,
|
||||
},
|
||||
-- change folder arrow icons
|
||||
renderer = {
|
||||
indent_markers = {
|
||||
enable = true,
|
||||
},
|
||||
icons = {
|
||||
glyphs = {
|
||||
folder = {
|
||||
arrow_closed = "", -- arrow when folder is closed
|
||||
arrow_open = "", -- arrow when folder is open
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
-- disable window_picker for
|
||||
-- explorer to work well with
|
||||
-- window splits
|
||||
actions = {
|
||||
open_file = {
|
||||
window_picker = {
|
||||
enable = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
filters = {
|
||||
custom = { ".DS_Store" },
|
||||
},
|
||||
git = {
|
||||
ignore = false,
|
||||
},
|
||||
})
|
||||
|
||||
-- set keymaps
|
||||
local keymap = vim.keymap -- for conciseness
|
||||
|
||||
keymap.set("n", "<leader>fe", "<cmd>NvimTreeToggle<CR>", { desc = "Toggle file explorer" }) -- toggle file explorer
|
||||
@@ -1,20 +0,0 @@
|
||||
require('telescope').setup({
|
||||
extensions = {
|
||||
fzf = {
|
||||
fuzzy = true, -- false will only do exact matching
|
||||
override_generic_sorter = true, -- override the generic sorter
|
||||
override_file_sorter = true, -- override the file sorter
|
||||
case_mode = "smart_case", -- or "ignore_case" or "respect_case"
|
||||
-- the default case_mode is "smart_case"
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
require('telescope').load_extension('fzf')
|
||||
|
||||
local builtin = require('telescope.builtin')
|
||||
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
|
||||
vim.keymap.set('n', '<leader>lg', builtin.live_grep, {})
|
||||
vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
|
||||
vim.keymap.set('n', '<leader>fh', builtin.help_tags, {})
|
||||
vim.keymap.set("n", "<leader>ft", "<cmd>TodoTelescope<cr>", { desc = "Find todos" })
|
||||
@@ -1,14 +0,0 @@
|
||||
local todo_comments = require("todo-comments")
|
||||
|
||||
-- set keymaps
|
||||
local keymap = vim.keymap -- for conciseness
|
||||
|
||||
keymap.set("n", "]t", function()
|
||||
todo_comments.jump_next()
|
||||
end, { desc = "Next todo comment" })
|
||||
|
||||
keymap.set("n", "[t", function()
|
||||
todo_comments.jump_prev()
|
||||
end, { desc = "Previous todo comment" })
|
||||
|
||||
todo_comments.setup()
|
||||
@@ -1,9 +0,0 @@
|
||||
require('nvim-treesitter.configs').setup {
|
||||
ensure_installed = {},
|
||||
|
||||
auto_install = false,
|
||||
|
||||
highlight = { enable = true },
|
||||
|
||||
indent = { enable = true },
|
||||
}
|
||||
Reference in New Issue
Block a user