refactor nvim config
This commit is contained in:
parent
8542426d53
commit
f4bc3252ee
40 changed files with 798 additions and 1079 deletions
2
.gitmodules
vendored
2
.gitmodules
vendored
|
|
@ -1,5 +1,5 @@
|
|||
[submodule "config/nvim"]
|
||||
path = config/nvim
|
||||
path = config/AstroNvim
|
||||
url = https://github.com/AstroNvim/AstroNvim
|
||||
[submodule "config/alacritty/themes/catppuccin"]
|
||||
path = config/alacritty/themes/catppuccin
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
████ ███ █████ █████
|
||||
░░███ ░░░ ░░███ ░░███
|
||||
██████ ░███ ██████ ████ ███████ ░███ █████
|
||||
░░░░░███ ░███ ███░░███░░███ ███░░███ ░███░░███
|
||||
███████ ░███ ░███████ ░███ ░███ ░███ ░██████░
|
||||
███░░███ ░███ ░███░░░ ░███ ░███ ░███ ░███░░███
|
||||
░░████████ █████░░██████ █████░░████████ ████ █████
|
||||
░░░░░░░░ ░░░░░ ░░░░░░ ░░░░░ ░░░░░░░░ ░░░░ ░░░░░
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
-- Siable netrw
|
||||
vim.g.loaded = 1
|
||||
vim.g.loaded_netrwPlugin = 1
|
||||
|
||||
-- native neovim config
|
||||
require("options")
|
||||
|
||||
-- keybindings config
|
||||
require("keys")
|
||||
|
||||
-- Autocmd config
|
||||
require("autocommands")
|
||||
|
||||
require("plugins")
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
local cmd = vim.api.nvim_create_autocmd
|
||||
|
||||
-- cmd({"BufNewFile", "BufFilePre", "BufRead"}, {
|
||||
-- pattern = {"*.md"},
|
||||
-- callback = function() vim.opt.filetype = "markdown" end
|
||||
-- })
|
||||
|
||||
cmd("InsertEnter",
|
||||
{pattern = "*", command = "norm zz", desc = "Center line on insert mode"})
|
||||
|
||||
-- highlight yank selection
|
||||
cmd("TextYankPost", {
|
||||
pattern = "*",
|
||||
callback = function() vim.highlight.on_yank() end,
|
||||
desc = "Highligth line on yank"
|
||||
})
|
||||
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
--[[
|
||||
|
||||
Modes:
|
||||
|
||||
| String value | Help page | Affected modes | Vimscript equivalent |
|
||||
| -------------|------------------|-----------------------------------------------|-----------------------|
|
||||
| '' | mapmode-nvo | Normal, Visual, Select, Operator-pending | :map |
|
||||
| 'n' | mapmode-n | Normal | :nmap |
|
||||
| 'v' | mapmode-v | Visual and Select | :vmap |
|
||||
| 's' | mapmode-s | Select | :smap |
|
||||
| 'x' | mapmode-x | Visual | :xmap |
|
||||
| 'o' | mapmode-o | Operator-pending | :omap |
|
||||
| '!' | mapmode-ic | Insert and Command-line | :map! |
|
||||
| 'i' | mapmode-i | Insert | :imap |
|
||||
| 'l' | mapmode-l | Insert, Command-line, Lang-Arg | :lmap |
|
||||
| 'c' | mapmode-c | Command-line | :cmap |
|
||||
| 't' | mapmode-t | Terminal | :tmap |
|
||||
|
||||
Define Mapping with:
|
||||
vim.keymap.set(mode, keys, action[, options])
|
||||
|
||||
--]]
|
||||
|
||||
-- Leader Key
|
||||
vim.g.mapleader = ' '
|
||||
|
||||
vim.keymap.set('n', "<CR>", ":noh<CR>", { desc = "Remove search Highlight", silent = true })
|
||||
|
||||
-- local function changeComment()
|
||||
-- local table = vim.opt.fo:get()
|
||||
-- local enabled = tagle.c == true && tagle.r == true && tagle.o == true
|
||||
-- end
|
||||
|
||||
vim.keymap.set('', "<Leader>tc", [[if &fo =~ 'cro' | set fo-=cro | else | set fo+=cro | endif]], { desc = "Toggle autocomments", silent = true })
|
||||
|
||||
vim.keymap.set('', "<Leader>ti", ":setlocal autoindent!<CR>", { desc = "toggle auto indent"})
|
||||
|
||||
vim.keymap.set('', "<Leader>ts", ":setlocal spell!<CR>", { desc = "Toggle spell checker", silent = true })
|
||||
|
||||
vim.keymap.set('t', '<ESC>', [[<C-\><C-n>]], { desc = "Exit terminal with Esc", silent = true })
|
||||
|
||||
vim.keymap.set('n', '<C-s>', ':w<CR>', { desc = "Save file", silent = true })
|
||||
|
||||
vim.keymap.set({ 'n', 'v', 'i' }, '<A-j>', ':m .+1<CR>==', { desc = "Move current line down", silent = true })
|
||||
|
||||
vim.keymap.set({ 'n', 'v', 'i' }, '<A-k>', ':m .-2<CR>==', { desc = "Move current line up", silent = true })
|
||||
|
||||
|
||||
vim.keymap.set('v', '<', '<gv', { desc = "Better indentation in visual mode", silent = true })
|
||||
|
||||
vim.keymap.set('v', '>', '>gv', { desc = "Better indentation in visual mode", silent = true })
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
--------------------------------------------------------------------------------
|
||||
-- Native Neovim Config --
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
--[[
|
||||
|
||||
vim.opt.{option} -> :set
|
||||
vim.opt_global.{option} -> :setglobal
|
||||
vim.opt_local.{option} -> :setlocal
|
||||
|
||||
--]]
|
||||
|
||||
|
||||
-- Set Shell
|
||||
vim.opt.shell = "/usr/bin/env bash"
|
||||
|
||||
vim.g.python3_host_prog = "/usr/bin/python3"
|
||||
|
||||
-- Keep the cursor centered by X rows from top / bottom
|
||||
vim.opt.scrolloff = 15
|
||||
|
||||
-- Use System clipboard
|
||||
vim.opt.clipboard = "unnamedplus"
|
||||
|
||||
-- Enable Mouse
|
||||
vim.opt.mouse = "a"
|
||||
|
||||
-- Set Numbers
|
||||
vim.opt.number = true
|
||||
vim.opt.relativenumber = true
|
||||
|
||||
-- Identation
|
||||
local indent = 2
|
||||
vim.opt.tabstop = indent
|
||||
vim.opt.shiftwidth = indent
|
||||
vim.opt.softtabstop = indent
|
||||
|
||||
-- Ignore case when searching
|
||||
vim.opt.ignorecase = true
|
||||
|
||||
-- Override the 'ignorecase' option if the search pattern contains case characters.
|
||||
vim.opt.smartcase = true
|
||||
|
||||
-- Wrap Search
|
||||
vim.opt.wrapscan = true
|
||||
|
||||
-- Autocompletion with 'wildchar'
|
||||
vim.opt.wildmode = "longest,list,full"
|
||||
|
||||
-- Fix Sppliting
|
||||
vim.opt.splitbelow = true
|
||||
vim.opt.splitright = true
|
||||
|
||||
-- Set undofile
|
||||
vim.opt.undofile = true
|
||||
vim.opt.undodir = os.getenv("HOME") .. "/.nvim/undo"
|
||||
vim.opt.undolevels = 1000
|
||||
|
||||
-- Open already open windows
|
||||
vim.opt.switchbuf = 'usetab'
|
||||
|
||||
-- Auto add comments on new line if prev was a comment
|
||||
vim.opt.fo:append({ cro = true })
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
-- luasnip setup
|
||||
local luasnip = require 'luasnip'
|
||||
local cmp = require 'cmp'
|
||||
|
||||
cmp.setup {
|
||||
snippet = {
|
||||
expand = function(args) require('luasnip').lsp_expand(args.body) end
|
||||
},
|
||||
mapping = {
|
||||
['<C-p>'] = cmp.mapping.select_prev_item(),
|
||||
['<C-n>'] = cmp.mapping.select_next_item(),
|
||||
['<C-d>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
['<C-Space>'] = cmp.mapping.complete(),
|
||||
['<C-e>'] = cmp.mapping.close(),
|
||||
['<CR>'] = cmp.mapping.confirm {
|
||||
behavior = cmp.ConfirmBehavior.Replace,
|
||||
select = true
|
||||
},
|
||||
['<Tab>'] = function(fallback)
|
||||
if vim.fn.pumvisible() == 1 then
|
||||
vim.fn.feedkeys(vim.api.nvim_replace_termcodes('<C-n>', true,
|
||||
true, true), 'n')
|
||||
elseif luasnip.expand_or_jumpable() then
|
||||
vim.fn.feedkeys(vim.api.nvim_replace_termcodes(
|
||||
'<Plug>luasnip-expand-or-jump', true, true,
|
||||
true), '')
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end,
|
||||
['<S-Tab>'] = function(fallback)
|
||||
if vim.fn.pumvisible() == 1 then
|
||||
vim.fn.feedkeys(vim.api.nvim_replace_termcodes('<C-p>', true,
|
||||
true, true), 'n')
|
||||
elseif luasnip.jumpable(-1) then
|
||||
vim.fn.feedkeys(vim.api.nvim_replace_termcodes(
|
||||
'<Plug>luasnip-jump-prev', true, true, true),
|
||||
'')
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end
|
||||
},
|
||||
sources = {
|
||||
{name = 'nvim_lsp'}, {name = 'luasnip'}, {name = "nvim_lua"},
|
||||
{name = 'path'}, {name = 'buffer'}, {name = 'calc'},
|
||||
{name = 'treesitter'}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
require('nvim-autopairs').setup()
|
||||
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
local function config()
|
||||
require("bufferline").setup({
|
||||
options = {
|
||||
diagnostics = "nvim_lsp",
|
||||
diagnostics_update_in_insert = true,
|
||||
color_icons = true,
|
||||
show_close_icon = false
|
||||
}
|
||||
})
|
||||
|
||||
vim.keymap.set('n', 'H', ':BufferLineCyclePrev<CR>', { desc = "Go to prev buffer", silent = true })
|
||||
vim.keymap.set('n', 'L', ':BufferLineCycleNext<CR>', { desc = "Go to next buffer", silent = true })
|
||||
vim.keymap.set('n', '<Leader>c', ':bdelete<CR>', { desc = "Close current buffer", silent = true })
|
||||
vim.keymap.set('n', '<Leader>C', ':bdelete!<CR>', { desc = "Close current buffer whitout saving", silent = true })
|
||||
end
|
||||
|
||||
return {
|
||||
'akinsho/bufferline.nvim',
|
||||
tag = "v2.*",
|
||||
requires = 'kyazdani42/nvim-web-devicons',
|
||||
config = config
|
||||
}
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
local function config()
|
||||
|
||||
local catppuccin = require("catppuccin")
|
||||
|
||||
vim.g.catppuccin_flavour = "mocha"
|
||||
|
||||
vim.cmd [[colorscheme catppuccin]]
|
||||
|
||||
-- configure it
|
||||
catppuccin.setup({
|
||||
transparent_background = true,
|
||||
term_colors = false,
|
||||
styles = {
|
||||
comments = {"italic"},
|
||||
conditionals = {"italic"},
|
||||
loops = {"italic"},
|
||||
functions = {"italic"},
|
||||
keywords = {"italic"},
|
||||
strings = {"italic"},
|
||||
variables = {"italic"},
|
||||
numbers = {},
|
||||
booleans = {},
|
||||
properties = {},
|
||||
types = {},
|
||||
operators = {}
|
||||
},
|
||||
integrations = {
|
||||
treesitter = true,
|
||||
native_lsp = {
|
||||
enabled = true,
|
||||
virtual_text = {
|
||||
errors = {"italic"},
|
||||
hints = {"italic"},
|
||||
warnings = {"italic"},
|
||||
information = {"italic"}
|
||||
},
|
||||
underlines = {
|
||||
errors = {"underline"},
|
||||
hints = {"underline"},
|
||||
warnings = {"underline"},
|
||||
information = {"underline"}
|
||||
}
|
||||
},
|
||||
lsp_trouble = true,
|
||||
cmp = true,
|
||||
lsp_saga = true,
|
||||
gitgutter = false,
|
||||
gitsigns = true,
|
||||
telescope = true,
|
||||
nvimtree = {
|
||||
enabled = true,
|
||||
show_root = true,
|
||||
transparent_panel = true
|
||||
},
|
||||
indent_blankline = {enabled = true, colored_indent_levels = true},
|
||||
neotree = {
|
||||
enabled = false,
|
||||
show_root = true,
|
||||
transparent_panel = false
|
||||
},
|
||||
dap = {enabled = false, enable_ui = false},
|
||||
which_key = true,
|
||||
dashboard = true,
|
||||
neogit = false,
|
||||
vim_sneak = false,
|
||||
fern = false,
|
||||
barbar = true,
|
||||
bufferline = true,
|
||||
markdown = true,
|
||||
lightspeed = false,
|
||||
ts_rainbow = true,
|
||||
hop = false,
|
||||
notify = true,
|
||||
telekasten = true,
|
||||
symbols_outline = true,
|
||||
mini = false
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
return {"catppuccin/nvim", as = "catppuccin", config = config}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
-- Default FZF
|
||||
vim.g.dashboard_default_executive = "telescope"
|
||||
|
||||
-- Custom Shortcuts
|
||||
-- TODO: Change this for telescope equivalents
|
||||
vim.api.nvim_set_keymap('n', '<Leader>db', ":DashboardJumpMark<CR>",
|
||||
{silent = true})
|
||||
vim.api.nvim_set_keymap('n', '<Leader>dh', ":DashboardFindHistory<CR>",
|
||||
{silent = true})
|
||||
vim.api.nvim_set_keymap('n', '<Leader>df', ":DashboardFindFile<CR>",
|
||||
{silent = true})
|
||||
vim.api.nvim_set_keymap('n', '<Leader>dn', ":DashboardNewFile<CR>",
|
||||
{silent = true})
|
||||
vim.api.nvim_set_keymap('n', '<Leader>da', ":DashboardFindWord<CR>",
|
||||
{silent = true})
|
||||
vim.api.nvim_set_keymap('n', '<Leader>dc', ":DashboardChangeColorscheme<CR>",
|
||||
{silent = true})
|
||||
|
||||
-- Show mappings
|
||||
vim.g.dashboard_custom_shortcut = {
|
||||
last_session = 'SPC s l',
|
||||
book_marks = 'SPC d b',
|
||||
find_history = 'SPC d h',
|
||||
find_file = 'SPC d f',
|
||||
new_file = 'SPC d n',
|
||||
find_word = 'SPC d a',
|
||||
change_colorscheme = 'SPC d c'
|
||||
}
|
||||
|
||||
-- Hide tabline on dashboard
|
||||
vim.cmd([[
|
||||
autocmd FileType dashboard set showtabline=0 | autocmd WinLeave <buffer> set showtabline=2
|
||||
]])
|
||||
|
|
@ -1,72 +0,0 @@
|
|||
local focus = require("focus")
|
||||
|
||||
local options = {
|
||||
-- Completely disable this plugin
|
||||
-- Default: true
|
||||
enable = true,
|
||||
|
||||
-- Force width for the d window
|
||||
-- Default: Calculated based on golden ratio
|
||||
-- width = 120
|
||||
|
||||
-- Force height for the d window
|
||||
-- Default: Calculated based on golden ratio
|
||||
-- height = 40
|
||||
|
||||
-- Sets the width of directory tree buffers such as NerdTree, NvimTree and CHADTree
|
||||
-- Default: vim.g.nvim_tree_width or 30
|
||||
-- treewidth = 20
|
||||
|
||||
-- Displays a cursorline in the ed window only
|
||||
-- Not displayed in uned windows
|
||||
-- Default: true
|
||||
-- cursorline = false
|
||||
|
||||
-- Displays a sign column in the ed window only
|
||||
-- Not displayed in uned windows
|
||||
-- Default: true
|
||||
-- signcolumn = false
|
||||
|
||||
-- Displays line numbers in the ed window only
|
||||
-- Not displayed in uned windows
|
||||
-- Default: true
|
||||
number = true,
|
||||
|
||||
-- Displays relative line numbers in the ed window only
|
||||
-- Not displayed in uned windows
|
||||
-- See :h relativenumber
|
||||
-- Default: false
|
||||
relativenumber = true,
|
||||
|
||||
-- Displays hybrid line numbers in the ed window only
|
||||
-- Not displayed in uned windows
|
||||
-- Combination of :h relativenumber, but also displays the line number of the current line only
|
||||
-- Default: false
|
||||
-- hybridnumber = true
|
||||
|
||||
-- Enable auto highlighting for ed/unfocussed windows
|
||||
-- Default: false
|
||||
winhighlight = true,
|
||||
}
|
||||
|
||||
----------------------------------------------------------------------
|
||||
-- Mappings --
|
||||
----------------------------------------------------------------------
|
||||
|
||||
local function focusmap(direction)
|
||||
vim.keymap.set("n", "<C-" .. direction .. ">", function()
|
||||
focus.split_command(direction)
|
||||
end, { desc = "Change or create focused window" })
|
||||
end
|
||||
|
||||
focusmap("h")
|
||||
focusmap("j")
|
||||
focusmap("k")
|
||||
focusmap("l")
|
||||
|
||||
return {
|
||||
"beauwilliams/focus.nvim",
|
||||
config = function()
|
||||
require("focus").setup(options)
|
||||
end,
|
||||
}
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
local mapper = require("nvim-mapper")
|
||||
|
||||
require('gitsigns').setup {
|
||||
signs = {
|
||||
add = {
|
||||
hl = 'GitSignsAdd',
|
||||
text = '│',
|
||||
numhl = 'GitSignsAddNr',
|
||||
linehl = 'GitSignsAddLn'
|
||||
},
|
||||
change = {
|
||||
hl = 'GitSignsChange',
|
||||
text = '│',
|
||||
numhl = 'GitSignsChangeNr',
|
||||
linehl = 'GitSignsChangeLn'
|
||||
},
|
||||
delete = {
|
||||
hl = 'GitSignsDelete',
|
||||
text = '_',
|
||||
numhl = 'GitSignsDeleteNr',
|
||||
linehl = 'GitSignsDeleteLn'
|
||||
},
|
||||
topdelete = {
|
||||
hl = 'GitSignsDelete',
|
||||
text = '‾',
|
||||
numhl = 'GitSignsDeleteNr',
|
||||
linehl = 'GitSignsDeleteLn'
|
||||
},
|
||||
changedelete = {
|
||||
hl = 'GitSignsChange',
|
||||
text = '~',
|
||||
numhl = 'GitSignsChangeNr',
|
||||
linehl = 'GitSignsChangeLn'
|
||||
}
|
||||
},
|
||||
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
|
||||
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
|
||||
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
|
||||
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
|
||||
keymaps = {
|
||||
-- Default keymap options
|
||||
noremap = true,
|
||||
|
||||
['n ]h'] = {
|
||||
expr = true,
|
||||
"&diff ? ']c' : '<cmd>lua require\"gitsigns.actions\".next_hunk()<CR>'"
|
||||
},
|
||||
['n [h'] = {
|
||||
expr = true,
|
||||
"&diff ? '[c' : '<cmd>lua require\"gitsigns.actions\".prev_hunk()<CR>'"
|
||||
},
|
||||
|
||||
['n <leader>gs'] = '<cmd>lua require"gitsigns".stage_hunk()<CR>',
|
||||
['v <leader>gs'] = '<cmd>lua require"gitsigns".stage_hunk({vim.fn.line("."), vim.fn.line("v")})<CR>',
|
||||
['n <leader>gu'] = '<cmd>lua require"gitsigns".undo_stage_hunk()<CR>',
|
||||
['n <leader>gr'] = '<cmd>lua require"gitsigns".reset_hunk()<CR>',
|
||||
['v <leader>gr'] = '<cmd>lua require"gitsigns".reset_hunk({vim.fn.line("."), vim.fn.line("v")})<CR>',
|
||||
['n <leader>gR'] = '<cmd>lua require"gitsigns".reset_buffer()<CR>',
|
||||
['n <leader>gp'] = '<cmd>lua require"gitsigns".preview_hunk()<CR>',
|
||||
['n <leader>gb'] = '<cmd>lua require"gitsigns".blame_line(true)<CR>',
|
||||
['n <leader>gS'] = '<cmd>lua require"gitsigns".stage_buffer()<CR>',
|
||||
['n <leader>gU'] = '<cmd>lua require"gitsigns".reset_buffer_index()<CR>',
|
||||
|
||||
-- Text objects
|
||||
['o ih'] = ':<C-U>lua require"gitsigns.actions".select_hunk()<CR>',
|
||||
['x ih'] = ':<C-U>lua require"gitsigns.actions".select_hunk()<CR>'
|
||||
},
|
||||
watch_index = {interval = 1000, follow_files = true},
|
||||
attach_to_untracked = true,
|
||||
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
|
||||
current_line_blame_opts = {
|
||||
virt_text = true,
|
||||
virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align'
|
||||
delay = 1000
|
||||
},
|
||||
current_line_blame_formatter_opts = {relative_time = false},
|
||||
sign_priority = 6,
|
||||
update_debounce = 100,
|
||||
status_formatter = nil, -- Use default
|
||||
max_file_length = 40000,
|
||||
preview_config = {
|
||||
-- Options passed to nvim_open_win
|
||||
border = 'single',
|
||||
style = 'minimal',
|
||||
relative = 'cursor',
|
||||
row = 0,
|
||||
col = 1
|
||||
},
|
||||
diff_opts = {internal = true}, -- If vim.diff or luajit is present
|
||||
yadm = {enable = false}
|
||||
}
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
local mapper = require("nvim-mapper")
|
||||
|
||||
require("harpoon").setup({
|
||||
global_settings = {save_on_toggle = false, save_on_change = true}
|
||||
})
|
||||
|
||||
-- Mark list
|
||||
mapper.map('n', '<Leader>mq',
|
||||
[[:lua require("harpoon.ui").toggle_quick_menu()<CR>]],
|
||||
{silent = true, noremap = true}, "harpoon", "quick_menu",
|
||||
"Open list of marked files")
|
||||
|
||||
-- Mark File
|
||||
mapper.map('n', '<Leader>ma', [[:lua require("harpoon.mark").add_file()<CR>]],
|
||||
{silent = true, noremap = true}, "harpoon", "add_file",
|
||||
"Add current file to mark list")
|
||||
|
||||
-- Open marked file
|
||||
mapper.map('n', '<Leader>mj', [[:lua require("harpoon.ui").nav_file(1)<CR>]],
|
||||
{silent = true, noremap = true}, "harpoon", "file_navigation_1",
|
||||
"Go to marked file 1")
|
||||
mapper.map('n', '<Leader>mk', [[:lua require("harpoon.ui").nav_file(2)<CR>]],
|
||||
{silent = true, noremap = true}, "harpoon", "file_navigation_2",
|
||||
"Go to marked file 2")
|
||||
mapper.map('n', '<Leader>ml', [[:lua require("harpoon.ui").nav_file(3)<CR>]],
|
||||
{silent = true, noremap = true}, "harpoon", "file_navigation_3",
|
||||
"Go to marked file 3")
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
local function config()
|
||||
|
||||
-- vim.opt.list = true
|
||||
-- vim.opt.listchars:append "space:⋅"
|
||||
-- vim.opt.listchars:append "eol:↴"
|
||||
|
||||
require("indent_blankline").setup {
|
||||
space_char_blankline = " ",
|
||||
show_current_context = true,
|
||||
show_current_context_start = false
|
||||
}
|
||||
|
||||
-- vim.g.indent_blankline_char_list = {"│"}
|
||||
-- vim.g.indentLine_enabled = 1
|
||||
vim.g.indent_blankline_show_trailing_blankline_indent = false
|
||||
vim.g.indent_blankline_filetype_exclude = {
|
||||
"help", "terminal", "dashboard", "nvim-tree"
|
||||
}
|
||||
vim.g.indent_blankline_buftype_exclude = {"terminal"}
|
||||
vim.g.indent_blankline_show_first_indent_level = false
|
||||
vim.g.indent_blankline_use_treesitter = true
|
||||
|
||||
end
|
||||
|
||||
return {"lukas-reineke/indent-blankline.nvim", config = config}
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
local active_plugins = {
|
||||
"focus",
|
||||
"colorscheme",
|
||||
"nvim-tree",
|
||||
"bufferline",
|
||||
"treesitter",
|
||||
"prettyfolds",
|
||||
"indent-lines",
|
||||
"lsp",
|
||||
"telescope",
|
||||
}
|
||||
|
||||
--[[
|
||||
Auto update plugins from outside neomvim
|
||||
nvim --headless -c 'autocmd User PackerComplete quitall' -c 'PackerSync'
|
||||
--]]
|
||||
--
|
||||
local ensure_packer = function()
|
||||
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
|
||||
fn.system({
|
||||
"git",
|
||||
"clone",
|
||||
"--depth",
|
||||
"1",
|
||||
"https://github.com/wbthomason/packer.nvim",
|
||||
install_path,
|
||||
})
|
||||
vim.cmd([[packadd packer.nvim]])
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
local packer_bootstrap = ensure_packer()
|
||||
|
||||
require("packer").startup({
|
||||
function(use)
|
||||
use("wbthomason/packer.nvim")
|
||||
|
||||
for _, name in ipairs(active_plugins) do
|
||||
local ok, plugin = pcall(require, "plugins." .. name)
|
||||
if ok then
|
||||
use(plugin)
|
||||
else
|
||||
print("Error loading " .. name .. "In: " .. plugin)
|
||||
end
|
||||
end
|
||||
|
||||
if packer_bootstrap then
|
||||
require("packer").sync()
|
||||
end
|
||||
end,
|
||||
config = {
|
||||
display = {
|
||||
open_fn = function()
|
||||
return require("packer.util").float({ border = "single" })
|
||||
end,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
|
@ -1,160 +0,0 @@
|
|||
--[[
|
||||
|
||||
LSP Server: code completition, references for variables and other stuff.
|
||||
Linter: Code rules for consistency.
|
||||
Formatter: Code style for eye candy.
|
||||
Debugger: well... a debugger...
|
||||
|
||||
--]]
|
||||
|
||||
-- FIXME: Refactor this code so it's more readable
|
||||
|
||||
local function setup()
|
||||
local lsp = require("lsp-zero")
|
||||
local cmp = require("cmp")
|
||||
local null_ls = require("null-ls")
|
||||
-- local mason_null_ls = require("mason-null-ls")
|
||||
|
||||
lsp.preset("recommended")
|
||||
|
||||
lsp.nvim_workspace({
|
||||
library = vim.api.nvim_get_runtime_file("", true),
|
||||
})
|
||||
|
||||
local cmp_select = { behavior = cmp.SelectBehavior.Select }
|
||||
|
||||
lsp.setup_nvim_cmp({
|
||||
mapping = lsp.defaults.cmp_mappings({
|
||||
["<C-p>"] = cmp.mapping.select_prev_item(cmp_select),
|
||||
["<C-n>"] = cmp.mapping.select_next_item(cmp_select),
|
||||
}),
|
||||
|
||||
sources = {
|
||||
{ name = "path" },
|
||||
{ name = "nvim_lsp", keyword_length = 3 },
|
||||
{ name = "luasnip", keyword_length = 2 },
|
||||
},
|
||||
})
|
||||
|
||||
lsp.set_preferences({
|
||||
set_lsp_keymaps = false,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "K", function()
|
||||
vim.lsp.buf.hover()
|
||||
end, { desc = "Show lsp info of the symbol under the cursor", silent = true })
|
||||
vim.keymap.set("n", "gd", function()
|
||||
vim.lsp.buf.definition()
|
||||
end, { desc = "Go to definition", silent = true })
|
||||
vim.keymap.set("n", "gD", function()
|
||||
vim.lsp.buf.declaration()
|
||||
end, { desc = "Go to declaration", silent = true })
|
||||
vim.keymap.set("n", "gi", function()
|
||||
vim.lsp.buf.implementation()
|
||||
end, { desc = "Go to implementation", silent = true })
|
||||
vim.keymap.set("n", "go", function()
|
||||
vim.lsp.buf.type_definition()
|
||||
end, { desc = "Go to definition of the type", silent = true })
|
||||
vim.keymap.set("n", "gr", function()
|
||||
vim.lsp.buf.references()
|
||||
end, { desc = "List references in quickfix window", silent = true })
|
||||
vim.keymap.set("n", "K", function()
|
||||
vim.lsp.buf.signature_help()
|
||||
end, { desc = "Show signature", silent = true })
|
||||
vim.keymap.set("n", "<Leader>lr", function()
|
||||
vim.lsp.buf.rename()
|
||||
end, { desc = "Rename all references", silent = true })
|
||||
vim.keymap.set("n", "<Leader>la", function()
|
||||
vim.lsp.buf.code_action()
|
||||
end, { desc = "Code action", silent = true })
|
||||
vim.keymap.set("n", "<Leader>lj", function()
|
||||
vim.diagnostic.goto_next()
|
||||
end, { desc = "Go to next diagnostics", silent = true })
|
||||
vim.keymap.set("n", "<Leader>lk", function()
|
||||
vim.diagnostic.goto_prev()
|
||||
end, { desc = "Go to prev diagnostics", silent = true })
|
||||
|
||||
lsp.setup()
|
||||
|
||||
local null_linters = null_ls.builtins.diagnostics
|
||||
local null_formatters = null_ls.builtins.formatting
|
||||
|
||||
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
|
||||
|
||||
local lsp_formatting = function(bufnr)
|
||||
vim.lsp.buf.format({
|
||||
filter = function(client)
|
||||
-- apply whatever logic you want (in this example, we'll only use null-ls)
|
||||
return client.name == "null-ls"
|
||||
end,
|
||||
bufnr = bufnr,
|
||||
})
|
||||
end
|
||||
|
||||
null_ls.setup({
|
||||
on_attach = function(client, bufnr)
|
||||
if client.supports_method("textDocument/formatting") then
|
||||
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
|
||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||
group = augroup,
|
||||
buffer = bufnr,
|
||||
callback = function()
|
||||
-- TODO: use this when neovim 8.0 comes out
|
||||
lsp_formatting(bufnr)
|
||||
-- vim.lsp.buf.formatting_sync()
|
||||
end,
|
||||
})
|
||||
end
|
||||
end,
|
||||
|
||||
sources = {
|
||||
-- Linters --
|
||||
null_linters.eslint_d,
|
||||
null_linters.gitlint,
|
||||
null_linters.luacheck,
|
||||
null_linters.markdownlint,
|
||||
null_linters.shellcheck,
|
||||
null_linters.yamllint,
|
||||
null_linters.todo_comments,
|
||||
|
||||
-- Formatters --
|
||||
null_formatters.blade_formatter,
|
||||
null_formatters.blue,
|
||||
null_formatters.fixjson,
|
||||
null_formatters.phpcsfixer,
|
||||
null_formatters.prettierd,
|
||||
null_formatters.shfmt,
|
||||
null_formatters.sql_formatter,
|
||||
null_formatters.stylua,
|
||||
null_formatters.yamlfmt,
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
return {
|
||||
"VonHeikemen/lsp-zero.nvim",
|
||||
config = setup,
|
||||
requires = {
|
||||
-- LSP Support
|
||||
{ "neovim/nvim-lspconfig" },
|
||||
{ "williamboman/mason.nvim" },
|
||||
{ "williamboman/mason-lspconfig.nvim" },
|
||||
|
||||
-- Autocompletion
|
||||
{ "hrsh7th/nvim-cmp" },
|
||||
{ "hrsh7th/cmp-buffer" },
|
||||
{ "hrsh7th/cmp-path" },
|
||||
{ "saadparwaiz1/cmp_luasnip" },
|
||||
{ "hrsh7th/cmp-nvim-lsp" },
|
||||
{ "hrsh7th/cmp-nvim-lua" },
|
||||
|
||||
-- Snippets
|
||||
{ "L3MON4D3/LuaSnip" },
|
||||
{ "rafamadriz/friendly-snippets" },
|
||||
|
||||
-- Linters and Formatters
|
||||
{ "jose-elias-alvarez/null-ls.nvim" },
|
||||
-- { "jayp0521/mason-null-ls.nvim" },
|
||||
{ "nvim-lua/plenary.nvim" },
|
||||
},
|
||||
}
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
local mapper = require("nvim-mapper")
|
||||
|
||||
require('nvim-comment-frame').setup({
|
||||
|
||||
-- if true, <leader>cf keymap will be disabled
|
||||
disable_default_keymap = true,
|
||||
|
||||
-- width of the comment frame
|
||||
frame_width = 70,
|
||||
|
||||
-- wrap the line after 'n' characters
|
||||
line_wrap_len = 50,
|
||||
|
||||
-- automatically indent the comment frame based on the line
|
||||
auto_indent = true,
|
||||
|
||||
-- add comment above the current line
|
||||
add_comment_above = true,
|
||||
|
||||
-- configurations for individual language goes here
|
||||
languages = {
|
||||
dosini = {
|
||||
start_str = ';;',
|
||||
end_str = ';;',
|
||||
fill_char = '*',
|
||||
auto_indent = false
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
mapper.map('n', '<Leader>ch',
|
||||
[[:lua require('nvim-comment-frame').add_comment()<CR>]],
|
||||
{silent = true, noremap = true}, "nvim-comment-frame", "one line",
|
||||
"Add one line header")
|
||||
mapper.map('n', '<Leader>cH',
|
||||
[[:lua require('nvim-comment-frame').add_multiline_comment()<CR>]],
|
||||
{silent = true, noremap = true}, "nvim-comment-frame", "multi line",
|
||||
"Add multi line header")
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
local mapper = require("nvim-mapper")
|
||||
-- don't close terminals on hidden
|
||||
vim.opt.hidden = true
|
||||
|
||||
require("toggleterm").setup {
|
||||
-- size can be a number or function which is passed the current terminal
|
||||
size = function(term)
|
||||
if term.direction == "horizontal" then
|
||||
return 15
|
||||
elseif term.direction == "vertical" then
|
||||
return vim.o.columns * 0.4
|
||||
end
|
||||
end,
|
||||
hide_numbers = true, -- hide the number column in toggleterm buffers
|
||||
shade_filetypes = {},
|
||||
shade_terminals = false,
|
||||
-- shading_factor = '<number>', -- the degree by which to darken to terminal colour, default: 1 for dark backgrounds, 3 for light
|
||||
start_in_insert = true,
|
||||
insert_mappings = true, -- whether or not the open mapping applies in insert mode
|
||||
persist_size = true,
|
||||
direction = 'float', -- 'vertical' | 'horizontal' | 'window' | 'float',
|
||||
close_on_exit = true, -- close the terminal window when the process exits
|
||||
shell = vim.o.shell, -- change the default shell
|
||||
-- This field is only relevant if direction is set to 'float'
|
||||
float_opts = {
|
||||
-- The border key is *almost* the same as 'nvim_win_open'
|
||||
-- see :h nvim_win_open for details on borders however
|
||||
-- the 'curved' border is a custom border type
|
||||
-- not natively supported but implemented in this plugin.
|
||||
border = 'single', -- 'single' | 'double' | 'shadow' | 'curved' | ... other options supported by win open
|
||||
width = math.ceil(vim.o.columns * 0.8),
|
||||
height = math.ceil(vim.o.lines * 0.6),
|
||||
winblend = 0,
|
||||
highlights = {border = "Normal", background = "Normal"}
|
||||
}
|
||||
}
|
||||
|
||||
-- Toggle Terminals
|
||||
mapper.map('n', '<Leader>mf', [[:1ToggleTerm<CR>]],
|
||||
{silent = true, noremap = true}, "Terminal", "toggle_term_1",
|
||||
"Toggle terminal 1")
|
||||
mapper.map('n', '<Leader>md', [[:2ToggleTerm<CR>]],
|
||||
{silent = true, noremap = true}, "Terminal", "toggle_term_2",
|
||||
"Toggle terminal 2")
|
||||
mapper.map('n', '<Leader>ms', [[:3ToggleTerm<CR>]],
|
||||
{silent = true, noremap = true}, "Terminal", "toggle_term_3",
|
||||
"Toggle terminal 3")
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
local function tree_config()
|
||||
local tree = require("nvim-tree")
|
||||
local tree_cb = require("nvim-tree.config").nvim_tree_callback
|
||||
|
||||
tree.setup({
|
||||
hijack_unnamed_buffer_when_opening = true,
|
||||
disable_netrw = true,
|
||||
hijack_netrw = true,
|
||||
hijack_cursor = true, -- cursor at the start of filename
|
||||
update_focused_file = {
|
||||
enable = true -- focus curren file
|
||||
},
|
||||
actions = { open_file = { quit_on_open = true } },
|
||||
renderer = {
|
||||
full_name = true, -- show remaining name in floating text
|
||||
group_empty = true, -- group empty folders
|
||||
add_trailing = true, -- Trailing slash to folders
|
||||
highlight_opened_files = "all",
|
||||
highlight_git = true
|
||||
},
|
||||
view = {
|
||||
centralize_selection = true, -- center current file on enter
|
||||
width = 30, -- N° of columns or %
|
||||
mappings = {
|
||||
custom_only = false,
|
||||
-- list of mappings to set on the tree manually
|
||||
list = {
|
||||
{ key = { "l", "<CR>", "o", "<2-LeftMouse>" }, action = "edit" },
|
||||
-- {key = {"L", "<2-RightMouse>", "<C-]>"}, action = "cd"},
|
||||
{ key = "s", action = "vsplit" },
|
||||
{ key = "v", action = "split" },
|
||||
{ key = "t", action = "tabnew" },
|
||||
{ key = { "h", "<BS>" }, action = "close_node" },
|
||||
{ key = "i", action = "toggle_dotfiles" },
|
||||
{ key = "I", action = "toggle_ignored" },
|
||||
{ key = { "<C-l>", "<C-CR>" }, cb = tree_cb("system_open") }
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
-- bindings
|
||||
vim.keymap.set("n", "<leader>e", ":NvimTreeToggle<CR>", { desc = "Toggle file tree", silent = true })
|
||||
vim.keymap.set("n", "<C-e>", ":NvimTreeToggle<CR>", { desc = "Toggle file tree", silent = true })
|
||||
end
|
||||
|
||||
return {
|
||||
'kyazdani42/nvim-tree.lua',
|
||||
config = tree_config,
|
||||
requires = {
|
||||
'kyazdani42/nvim-web-devicons' -- optional, for file icons
|
||||
}
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
local function config() require('pretty-fold').setup({fill_char = " "}) end
|
||||
|
||||
return {'anuvyklack/pretty-fold.nvim', config = config}
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
require("project_nvim").setup {
|
||||
-- Manual mode doesn't automatically change your root directory, so you have
|
||||
-- the option to manually do so using `:ProjectRoot` command.
|
||||
manual_mode = false,
|
||||
|
||||
-- Methods of detecting the root directory. **"lsp"** uses the native neovim
|
||||
-- lsp, while **"pattern"** uses vim-rooter like glob pattern matching. Here
|
||||
-- order matters: if one is not detected, the other is used as fallback. You
|
||||
-- can also delete or rearangne the detection methods.
|
||||
detection_methods = {"lsp", "pattern"},
|
||||
|
||||
-- All the patterns used to detect root dir, when **"pattern"** is in
|
||||
-- detection_methods
|
||||
patterns = {
|
||||
".git", "_darcs", ".hg", ".bzr", ".svn", "Makefile", "package.json"
|
||||
},
|
||||
|
||||
-- Table of lsp clients to ignore by name
|
||||
-- eg: { "efm", ... }
|
||||
ignore_lsp = {},
|
||||
|
||||
-- Don't calculate root dir on specific directories
|
||||
-- Ex: { "~/.cargo/*", ... }
|
||||
exclude_dirs = {},
|
||||
|
||||
-- Show hidden files in telescope
|
||||
show_hidden = false,
|
||||
|
||||
-- When set to false, you will get a message when project.nvim changes your
|
||||
-- directory.
|
||||
silent_chdir = false,
|
||||
|
||||
-- Path where project.nvim will store the project history for use in
|
||||
-- telescope
|
||||
datapath = vim.fn.stdpath("data")
|
||||
}
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
local function config()
|
||||
-- Telescope.nvim
|
||||
local telescope = require("telescope")
|
||||
local pickers = require("telescope.builtin")
|
||||
require("project_nvim").setup()
|
||||
|
||||
-- Extensions
|
||||
telescope.load_extension("projects")
|
||||
|
||||
-- Open Files
|
||||
vim.keymap.set("n", "<Leader>f", function()
|
||||
pickers.find_files()
|
||||
end, { silent = true, desc = "Find file" })
|
||||
|
||||
vim.keymap.set("n", "<Leader>Fp", function()
|
||||
telescope.extensions.projects.projects()
|
||||
end, { silent = true, desc = "Find project" })
|
||||
|
||||
-- List vim stuff
|
||||
vim.keymap.set("n", "<Leader>bf", function()
|
||||
pickers.buffers()
|
||||
end, { silent = true, desc = "Find buffers" })
|
||||
|
||||
-- List LSP Stuff
|
||||
vim.keymap.set("n", "<Leader>ld", function()
|
||||
pickers.diagnostics({ bufnr = 0 })
|
||||
end, { silent = true, desc = "Find diagnostics" })
|
||||
|
||||
vim.keymap.set("n", "<Leader>lD", function()
|
||||
pickers.diagnostics()
|
||||
end, { silent = true, desc = "Find diagnostics in all buffers" })
|
||||
|
||||
-- Config
|
||||
local telescope_actions = require("telescope.actions")
|
||||
telescope.setup({
|
||||
defaults = {
|
||||
entry_prefix = " ",
|
||||
selection_caret = "* ",
|
||||
file_ignore_patterns = { "%.env", "cache", ".xlsx" },
|
||||
mappings = {
|
||||
i = {
|
||||
["<C-j>"] = telescope_actions.move_selection_next,
|
||||
["<C-k>"] = telescope_actions.move_selection_previous,
|
||||
["<C-s>"] = telescope_actions.file_vsplit,
|
||||
["<C-v>"] = telescope_actions.file_split,
|
||||
["<ESC>"] = telescope_actions.close,
|
||||
},
|
||||
n = {
|
||||
["gg"] = telescope_actions.move_to_top,
|
||||
["G"] = telescope_actions.move_to_bottom,
|
||||
["s"] = telescope_actions.file_vsplit,
|
||||
["v"] = telescope_actions.file_split,
|
||||
},
|
||||
},
|
||||
path_display = {
|
||||
truncate = 1,
|
||||
},
|
||||
},
|
||||
-- Specific config
|
||||
pickers = {
|
||||
buffers = {
|
||||
sort_lastused = true,
|
||||
mappings = {
|
||||
i = { ["d"] = require("telescope.actions").delete_buffer },
|
||||
n = { ["<c-d>"] = require("telescope.actions").delete_buffer },
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
return {
|
||||
"nvim-telescope/telescope.nvim",
|
||||
branch = "0.1.x",
|
||||
requires = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"ahmedkhalf/project.nvim",
|
||||
},
|
||||
config = config,
|
||||
}
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
local function config()
|
||||
|
||||
require('nvim-treesitter.configs').setup({
|
||||
ensure_installed = {
|
||||
"bash", "c", "comment", "cpp", "css", "dockerfile", "html",
|
||||
"javascript", "jsdoc", "json", "lua", "python", "query", "regex",
|
||||
"typescript", "yaml", "sql", "http", "php", "rust", "scss",
|
||||
"markdown", "dart"
|
||||
},
|
||||
highlight = {enable = true},
|
||||
indent = {enable = true},
|
||||
rainbow = {
|
||||
enable = true,
|
||||
extended_mode = true, -- Highlight also non-parentheses delimiters, boolean or table: lang -> boolean
|
||||
max_file_lines = 1000 -- Do not enable for files with more than 1000 lines, int
|
||||
}
|
||||
})
|
||||
|
||||
-- Treesitter Folding
|
||||
vim.api.nvim_create_autocmd({
|
||||
'BufEnter', 'BufAdd', 'BufNew', 'BufNewFile', 'BufWinEnter'
|
||||
}, {
|
||||
group = vim.api.nvim_create_augroup('TS_FOLD_WORKAROUND', {}),
|
||||
callback = function()
|
||||
vim.opt.foldmethod = 'expr'
|
||||
vim.opt.foldexpr = 'nvim_treesitter#foldexpr()'
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
return {
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
run = function()
|
||||
require('nvim-treesitter.install').update({with_sync = true})
|
||||
end,
|
||||
config = config
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
require("ts-node-action").setup({})
|
||||
|
||||
vim.keymap.set({ "n" }, "<leader>lt", require("ts-node-action").node_action, { desc = "Trigger Node Action" })
|
||||
19
config/nvim/LICENSE.md
Normal file
19
config/nvim/LICENSE.md
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
MIT License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
130
config/nvim/README.md
Normal file
130
config/nvim/README.md
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
# kickstart.nvim
|
||||
|
||||
### Introduction
|
||||
|
||||
A starting point for Neovim that is:
|
||||
|
||||
* Small
|
||||
* Single-file (with examples of moving to multi-file)
|
||||
* Documented
|
||||
* Modular
|
||||
|
||||
This repo is meant to be used as by **YOU** to begin your Neovim journey; remove the things you don't use and add what you miss.
|
||||
|
||||
Distribution Alternatives:
|
||||
- [LazyVim](https://www.lazyvim.org/): A delightful distribution maintained by @folke (the author of lazy.nvim, the package manager used here)
|
||||
|
||||
### Installation
|
||||
|
||||
Kickstart.nvim targets *only* the latest ['stable'](https://github.com/neovim/neovim/releases/tag/stable) and latest ['nightly'](https://github.com/neovim/neovim/releases/tag/nightly) of Neovim. If you are experiencing issues, please make sure you have the latest versions.
|
||||
|
||||
* Backup your previous configuration
|
||||
* (Recommended) Fork this repo (so that you have your own copy that you can modify).
|
||||
* Clone the kickstart repo into `$HOME/.config/nvim/` (Linux/Mac) or `~/AppData/Local/nvim/` (Windows)
|
||||
* If you don't want to include it as a git repo, you can just clone it and then move the files to this location
|
||||
* Start Neovim (`nvim`) and allow `lazy.nvim` to complete installation.
|
||||
* Restart Neovim
|
||||
* **You're ready to go!**
|
||||
|
||||
Additional system requirements:
|
||||
- Make sure to review the readmes of the plugins if you are experiencing errors. In particular:
|
||||
- [ripgrep](https://github.com/BurntSushi/ripgrep#installation) is required for multiple [telescope](https://github.com/nvim-telescope/telescope.nvim#suggested-dependencies) pickers.
|
||||
- See as well [Windows Installation](#Windows-Installation)
|
||||
|
||||
### Configuration And Extension
|
||||
|
||||
* Inside of your fork, feel free to modify any file you like! It's your fork!
|
||||
* Then there are two primary configuration options available:
|
||||
* Include the `lua/kickstart/plugins/*` files in your configuration.
|
||||
* Add new configuration in `lua/custom/plugins/*` files, which will be auto sourced using `lazy.nvim`
|
||||
* NOTE: To enable this, you need to uncomment `{ import = 'custom.plugins' }` in your `init.lua`
|
||||
|
||||
You can also merge updates/changes from the repo back into your fork, to keep up-to-date with any changes for the default configuration
|
||||
|
||||
#### Example: Adding an autopairs plugin
|
||||
|
||||
In the file: `lua/custom/plugins/autopairs.lua`, add:
|
||||
|
||||
```lua
|
||||
-- File: lua/custom/plugins/autopairs.lua
|
||||
|
||||
return {
|
||||
"windwp/nvim-autopairs",
|
||||
config = function()
|
||||
require("nvim-autopairs").setup {}
|
||||
end,
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
This will automatically install `nvim-autopairs` and enable it on startup. For more information, see documentation for [lazy.nvim](https://github.com/folke/lazy.nvim).
|
||||
|
||||
#### Example: Adding a file tree plugin
|
||||
|
||||
In the file: `lua/custom/plugins/filetree.lua`, add:
|
||||
|
||||
```lua
|
||||
-- Unless you are still migrating, remove the deprecated commands from v1.x
|
||||
vim.cmd([[ let g:neo_tree_remove_legacy_commands = 1 ]])
|
||||
|
||||
return {
|
||||
"nvim-neo-tree/neo-tree.nvim",
|
||||
version = "*",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"nvim-tree/nvim-web-devicons", -- not strictly required, but recommended
|
||||
"MunifTanjim/nui.nvim",
|
||||
},
|
||||
config = function ()
|
||||
require('neo-tree').setup {}
|
||||
end,
|
||||
}
|
||||
```
|
||||
|
||||
This will install the tree plugin and add the command `:Neotree` for you. You can explore the documentation at [neo-tree.nvim](https://github.com/nvim-neo-tree/neo-tree.nvim) for more information.
|
||||
|
||||
#### Example: Adding a file to change default options
|
||||
|
||||
To change default options, you can add a file in the `/after/plugin/` folder (see `:help load-plugins`) to include your own options, keymaps, autogroups, and more. The following is an example `defaults.lua` file (located at `$HOME/.config/nvim/after/plugin/defaults.lua`).
|
||||
|
||||
```lua
|
||||
vim.opt.relativenumber = true
|
||||
|
||||
vim.keymap.set('n', '<leader>sr', require('telescope.builtin').resume, { desc = '[S]earch [R]esume' })
|
||||
```
|
||||
|
||||
### Contribution
|
||||
|
||||
Pull-requests are welcome. The goal of this repo is not to create a Neovim configuration framework, but to offer a starting template that shows, by example, available features in Neovim. Some things that will not be included:
|
||||
|
||||
* Custom language server configuration (null-ls templates)
|
||||
* Theming beyond a default colorscheme necessary for LSP highlight groups
|
||||
|
||||
Each PR, especially those which increase the line count, should have a description as to why the PR is necessary.
|
||||
|
||||
### FAQ
|
||||
|
||||
* What should I do if I already have a pre-existing neovim configuration?
|
||||
* You should back it up, then delete all files associated with it.
|
||||
* This includes your existing init.lua and the neovim files in `~/.local` which can be deleted with `rm -rf ~/.local/share/nvim/`
|
||||
* You may also want to look at the [migration guide for lazy.nvim](https://github.com/folke/lazy.nvim#-migration-guide)
|
||||
* What if I want to "uninstall" this configuration:
|
||||
* See [lazy.nvim uninstall](https://github.com/folke/lazy.nvim#-uninstalling) information
|
||||
* Are there any cool videos about this plugin?
|
||||
* Current iteration of kickstart (coming soon)
|
||||
* Here is one about the previous iteration of kickstart: [video introduction to Kickstart.nvim](https://youtu.be/stqUbv-5u2s).
|
||||
|
||||
### Windows Installation
|
||||
|
||||
Installation may require installing build tools, and updating the run command for `telescope-fzf-native`
|
||||
|
||||
See `telescope-fzf-native` documentation for [more details](https://github.com/nvim-telescope/telescope-fzf-native.nvim#installation)
|
||||
|
||||
This requires:
|
||||
|
||||
- Install CMake, and the Microsoft C++ Build Tools on Windows
|
||||
|
||||
```lua
|
||||
{'nvim-telescope/telescope-fzf-native.nvim', build = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' }
|
||||
```
|
||||
|
||||
127
config/nvim/init.lua
Normal file
127
config/nvim/init.lua
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
-- Loadnoptions before anything
|
||||
require("aleidk.options")
|
||||
|
||||
-- Init PLugins
|
||||
|
||||
-- Install package manager https://github.com/folke/lazy.nvim
|
||||
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)
|
||||
|
||||
-- Load plugins
|
||||
require("lazy").setup("aleidk.plugins")
|
||||
|
||||
-- Rest of configuratin
|
||||
|
||||
require("aleidk.keymaps")
|
||||
require("aleidk.autocmds")
|
||||
require("aleidk.IDE")
|
||||
|
||||
-- [[ Configure Telescope ]]
|
||||
-- See `:help telescope` and `:help telescope.setup()`
|
||||
require("telescope").setup({
|
||||
defaults = {
|
||||
mappings = {
|
||||
i = {
|
||||
["<C-u>"] = false,
|
||||
["<C-d>"] = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- Enable telescope fzf native, if installed
|
||||
pcall(require("telescope").load_extension, "fzf")
|
||||
|
||||
-- See `:help telescope.builtin`
|
||||
vim.keymap.set("n", "<leader>?", require("telescope.builtin").oldfiles, { desc = "[?] Find recently opened files" })
|
||||
vim.keymap.set("n", "<leader><space>", require("telescope.builtin").buffers, { desc = "[ ] Find existing buffers" })
|
||||
vim.keymap.set("n", "<leader>/", function()
|
||||
-- You can pass additional configuration to telescope to change theme, layout, etc.
|
||||
require("telescope.builtin").current_buffer_fuzzy_find(require("telescope.themes").get_dropdown({
|
||||
winblend = 10,
|
||||
previewer = false,
|
||||
}))
|
||||
end, { desc = "[/] Fuzzily search in current buffer" })
|
||||
|
||||
vim.keymap.set("n", "<leader>sf", require("telescope.builtin").find_files, { desc = "[S]earch [F]iles" })
|
||||
vim.keymap.set("n", "<leader>sh", require("telescope.builtin").help_tags, { desc = "[S]earch [H]elp" })
|
||||
vim.keymap.set("n", "<leader>sw", require("telescope.builtin").grep_string, { desc = "[S]earch current [W]ord" })
|
||||
vim.keymap.set("n", "<leader>sg", require("telescope.builtin").live_grep, { desc = "[S]earch by [G]rep" })
|
||||
vim.keymap.set("n", "<leader>sd", require("telescope.builtin").diagnostics, { desc = "[S]earch [D]iagnostics" })
|
||||
|
||||
-- [[ Configure Treesitter ]]
|
||||
-- See `:help nvim-treesitter`
|
||||
require("nvim-treesitter.configs").setup({
|
||||
-- Add languages to be installed here that you want installed for treesitter
|
||||
ensure_installed = { "c", "cpp", "go", "lua", "python", "rust", "tsx", "typescript", "vimdoc", "vim" },
|
||||
-- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!)
|
||||
auto_install = false,
|
||||
highlight = { enable = true },
|
||||
indent = { enable = true, disable = { "python" } },
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = "<c-space>",
|
||||
node_incremental = "<c-space>",
|
||||
scope_incremental = "<c-s>",
|
||||
node_decremental = "<M-space>",
|
||||
},
|
||||
},
|
||||
textobjects = {
|
||||
select = {
|
||||
enable = true,
|
||||
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
|
||||
keymaps = {
|
||||
-- You can use the capture groups defined in textobjects.scm
|
||||
["aa"] = "@parameter.outer",
|
||||
["ia"] = "@parameter.inner",
|
||||
["af"] = "@function.outer",
|
||||
["if"] = "@function.inner",
|
||||
["ac"] = "@class.outer",
|
||||
["ic"] = "@class.inner",
|
||||
},
|
||||
},
|
||||
move = {
|
||||
enable = true,
|
||||
set_jumps = true, -- whether to set jumps in the jumplist
|
||||
goto_next_start = {
|
||||
["]m"] = "@function.outer",
|
||||
["]]"] = "@class.outer",
|
||||
},
|
||||
goto_next_end = {
|
||||
["]M"] = "@function.outer",
|
||||
["]["] = "@class.outer",
|
||||
},
|
||||
goto_previous_start = {
|
||||
["[m"] = "@function.outer",
|
||||
["[["] = "@class.outer",
|
||||
},
|
||||
goto_previous_end = {
|
||||
["[M"] = "@function.outer",
|
||||
["[]"] = "@class.outer",
|
||||
},
|
||||
},
|
||||
swap = {
|
||||
enable = true,
|
||||
swap_next = {
|
||||
["<leader>a"] = "@parameter.inner",
|
||||
},
|
||||
swap_previous = {
|
||||
["<leader>A"] = "@parameter.inner",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- The line beneath this is called `modeline`. See `:help modeline`
|
||||
-- vim: ts=2 sts=2 sw=2 et
|
||||
26
config/nvim/lazy-lock.json
Normal file
26
config/nvim/lazy-lock.json
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"Comment.nvim": { "branch": "master", "commit": "a89339ffbee677ab0521a483b6dac7e2e67c907e" },
|
||||
"LuaSnip": { "branch": "master", "commit": "8d6c0a93dec34900577ba725e91c44b8d3ca1f45" },
|
||||
"cmp-nvim-lsp": { "branch": "main", "commit": "0e6b2ed705ddcff9738ec4ea838141654f12eeef" },
|
||||
"cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" },
|
||||
"fidget.nvim": { "branch": "main", "commit": "0ba1e16d07627532b6cae915cc992ecac249fb97" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "372d5cb485f2062ac74abc5b33054abac21d8b58" },
|
||||
"indent-blankline.nvim": { "branch": "master", "commit": "018bd04d80c9a73d399c1061fa0c3b14a7614399" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "5c89dc52f42e5058a46b0912d7d9042f564e44e0" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "84ffb80e452d95e2c46fa29a98ea11a240f7843e" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "7034065099c1665143091c7282b3b1b8f0b23783" },
|
||||
"mason.nvim": { "branch": "main", "commit": "b20a4bd32247411d39d8dd5c94e2e5c87d98556d" },
|
||||
"neodev.nvim": { "branch": "main", "commit": "e812f3d0e62e21a164b70f90f642cf30129503e4" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "777450fd0ae289463a14481673e26246b5e38bf2" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "eddaef928c1e1dd79a96f5db45f2fd7f2efe7ea0" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "831f37635df26864a397a5e35450eec97bfe60cd" },
|
||||
"nvim-treesitter-textobjects": { "branch": "master", "commit": "8673926519ea61069f9c1366d1ad1949316d250e" },
|
||||
"onedark.nvim": { "branch": "master", "commit": "dd640f6cfb0e370cfd3db389f04b172508848bd3" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "9ac3e9541bbabd9d73663d757e4fe48a675bb054" },
|
||||
"telescope-fzf-native.nvim": { "branch": "main", "commit": "580b6c48651cabb63455e97d7e131ed557b8c7e2" },
|
||||
"telescope.nvim": { "branch": "master", "commit": "c1a2af0af69e80e14e6b226d3957a064cd080805" },
|
||||
"vim-fugitive": { "branch": "master", "commit": "e6651a79facf5cc2b7c554fdc19eb8a9fe89602c" },
|
||||
"vim-rhubarb": { "branch": "master", "commit": "ee69335de176d9325267b0fd2597a22901d927b1" },
|
||||
"vim-sleuth": { "branch": "master", "commit": "1cc4557420f215d02c4d2645a748a816c220e99b" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "94cb020ff33a1e0e22fac1c41663d2c439741f17" }
|
||||
}
|
||||
1
config/nvim/lua/aleidk/IDE/init.lua
Normal file
1
config/nvim/lua/aleidk/IDE/init.lua
Normal file
|
|
@ -0,0 +1 @@
|
|||
require("aleidk.IDE.lsp")
|
||||
139
config/nvim/lua/aleidk/IDE/lsp.lua
Normal file
139
config/nvim/lua/aleidk/IDE/lsp.lua
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
-- LSP settings.
|
||||
-- This function gets run when an LSP connects to a particular buffer.
|
||||
local on_attach = function(_, bufnr)
|
||||
-- NOTE: Remember that lua is a real programming language, and as such it is possible
|
||||
-- to define small helper and utility functions so you don't have to repeat yourself
|
||||
-- many times.
|
||||
--
|
||||
-- In this case, we create a function that lets us more easily define mappings specific
|
||||
-- for LSP related items. It sets the mode, buffer and description for us each time.
|
||||
local nmap = function(keys, func, desc)
|
||||
if desc then
|
||||
desc = "LSP: " .. desc
|
||||
end
|
||||
|
||||
vim.keymap.set("n", keys, func, { buffer = bufnr, desc = desc })
|
||||
end
|
||||
|
||||
nmap("<leader>rn", vim.lsp.buf.rename, "[R]e[n]ame")
|
||||
nmap("<leader>ca", vim.lsp.buf.code_action, "[C]ode [A]ction")
|
||||
|
||||
nmap("gd", vim.lsp.buf.definition, "[G]oto [D]efinition")
|
||||
nmap("gr", require("telescope.builtin").lsp_references, "[G]oto [R]eferences")
|
||||
nmap("gI", vim.lsp.buf.implementation, "[G]oto [I]mplementation")
|
||||
nmap("<leader>D", vim.lsp.buf.type_definition, "Type [D]efinition")
|
||||
nmap("<leader>ds", require("telescope.builtin").lsp_document_symbols, "[D]ocument [S]ymbols")
|
||||
nmap("<leader>ws", require("telescope.builtin").lsp_dynamic_workspace_symbols, "[W]orkspace [S]ymbols")
|
||||
|
||||
-- See `:help K` for why this keymap
|
||||
nmap("K", vim.lsp.buf.hover, "Hover Documentation")
|
||||
nmap("<C-k>", vim.lsp.buf.signature_help, "Signature Documentation")
|
||||
|
||||
-- Lesser used LSP functionality
|
||||
nmap("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration")
|
||||
nmap("<leader>wa", vim.lsp.buf.add_workspace_folder, "[W]orkspace [A]dd Folder")
|
||||
nmap("<leader>wr", vim.lsp.buf.remove_workspace_folder, "[W]orkspace [R]emove Folder")
|
||||
nmap("<leader>wl", function()
|
||||
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||
end, "[W]orkspace [L]ist Folders")
|
||||
|
||||
-- Create a command `:Format` local to the LSP buffer
|
||||
vim.api.nvim_buf_create_user_command(bufnr, "Format", function(_)
|
||||
vim.lsp.buf.format()
|
||||
end, { desc = "Format current buffer with LSP" })
|
||||
end
|
||||
|
||||
-- Enable the following language servers
|
||||
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
|
||||
--
|
||||
-- Add any additional override configuration in the following tables. They will be passed to
|
||||
-- the `settings` field of the server config. You must look up that documentation yourself.
|
||||
local servers = {
|
||||
-- clangd = {},
|
||||
-- gopls = {},
|
||||
-- pyright = {},
|
||||
-- rust_analyzer = {},
|
||||
-- tsserver = {},
|
||||
|
||||
lua_ls = {
|
||||
Lua = {
|
||||
workspace = { checkThirdParty = false },
|
||||
telemetry = { enable = false },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
-- Diagnostic keymaps
|
||||
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, { desc = "Go to previous diagnostic message" })
|
||||
vim.keymap.set("n", "]d", vim.diagnostic.goto_next, { desc = "Go to next diagnostic message" })
|
||||
vim.keymap.set("n", "<leader>e", vim.diagnostic.open_float, { desc = "Open floating diagnostic message" })
|
||||
vim.keymap.set("n", "<leader>q", vim.diagnostic.setloclist, { desc = "Open diagnostics list" })
|
||||
|
||||
-- Setup neovim lua configuration
|
||||
require("neodev").setup()
|
||||
|
||||
-- nvim-cmp supports additional completion capabilities, so broadcast that to servers
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities)
|
||||
|
||||
-- Ensure the servers above are installed
|
||||
local mason_lspconfig = require("mason-lspconfig")
|
||||
|
||||
mason_lspconfig.setup({
|
||||
ensure_installed = vim.tbl_keys(servers),
|
||||
})
|
||||
|
||||
mason_lspconfig.setup_handlers({
|
||||
function(server_name)
|
||||
require("lspconfig")[server_name].setup({
|
||||
capabilities = capabilities,
|
||||
on_attach = on_attach,
|
||||
settings = servers[server_name],
|
||||
})
|
||||
end,
|
||||
})
|
||||
|
||||
-- nvim-cmp setup
|
||||
local cmp = require("cmp")
|
||||
local luasnip = require("luasnip")
|
||||
|
||||
luasnip.config.setup({})
|
||||
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
luasnip.lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
["<C-d>"] = cmp.mapping.scroll_docs(-4),
|
||||
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
||||
["<C-Space>"] = cmp.mapping.complete({}),
|
||||
["<CR>"] = cmp.mapping.confirm({
|
||||
behavior = cmp.ConfirmBehavior.Replace,
|
||||
select = true,
|
||||
}),
|
||||
["<Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
elseif luasnip.expand_or_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif luasnip.jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
}),
|
||||
sources = {
|
||||
{ name = "nvim_lsp" },
|
||||
{ name = "luasnip" },
|
||||
},
|
||||
})
|
||||
10
config/nvim/lua/aleidk/autocmds.lua
Normal file
10
config/nvim/lua/aleidk/autocmds.lua
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
-- [[ Highlight on yank ]]
|
||||
-- See `:help vim.highlight.on_yank()`
|
||||
local highlight_group = vim.api.nvim_create_augroup("YankHighlight", { clear = true })
|
||||
vim.api.nvim_create_autocmd("TextYankPost", {
|
||||
callback = function()
|
||||
vim.highlight.on_yank()
|
||||
end,
|
||||
group = highlight_group,
|
||||
pattern = "*",
|
||||
})
|
||||
9
config/nvim/lua/aleidk/keymaps.lua
Normal file
9
config/nvim/lua/aleidk/keymaps.lua
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
-- [[ Basic Keymaps ]]
|
||||
|
||||
-- Keymaps for better default experience
|
||||
-- See `:help vim.keymap.set()`
|
||||
vim.keymap.set({ "n", "v" }, "<Space>", "<Nop>", { silent = true })
|
||||
|
||||
-- Remap for dealing with word wrap
|
||||
vim.keymap.set("n", "k", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
|
||||
vim.keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
|
||||
45
config/nvim/lua/aleidk/options.lua
Normal file
45
config/nvim/lua/aleidk/options.lua
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
-- [[ Setting options ]]
|
||||
-- See `:help vim.o`
|
||||
|
||||
-- Set <space> as the leader key
|
||||
-- NOTE: Must happen before plugins are required (otherwise wrong leader will be used)
|
||||
vim.g.mapleader = " "
|
||||
vim.g.maplocalleader = " "
|
||||
|
||||
-- Set highlight on search
|
||||
vim.o.hlsearch = false
|
||||
|
||||
-- Make line numbers default
|
||||
vim.wo.number = true
|
||||
|
||||
-- Enable mouse mode
|
||||
vim.o.mouse = "a"
|
||||
|
||||
-- Sync clipboard between OS and Neovim.
|
||||
-- Remove this option if you want your OS clipboard to remain independent.
|
||||
-- See `:help 'clipboard'`
|
||||
vim.o.clipboard = "unnamedplus"
|
||||
|
||||
-- Enable break indent
|
||||
vim.o.breakindent = true
|
||||
|
||||
-- Save undo history
|
||||
vim.o.undofile = true
|
||||
|
||||
-- Case insensitive searching UNLESS /C or capital in search
|
||||
vim.o.ignorecase = true
|
||||
vim.o.smartcase = true
|
||||
|
||||
-- Keep signcolumn on by default
|
||||
vim.wo.signcolumn = "yes"
|
||||
|
||||
-- Decrease update time
|
||||
vim.o.updatetime = 250
|
||||
vim.o.timeout = true
|
||||
vim.o.timeoutlen = 300
|
||||
|
||||
-- Set completeopt to have a better completion experience
|
||||
vim.o.completeopt = "menuone,noselect"
|
||||
|
||||
-- NOTE: You should make sure your terminal supports this
|
||||
vim.o.termguicolors = true
|
||||
14
config/nvim/lua/aleidk/plugins/gitsigns.lua
Normal file
14
config/nvim/lua/aleidk/plugins/gitsigns.lua
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
-- Adds git releated signs to the gutter, as well as utilities for managing changes
|
||||
return {
|
||||
"lewis6991/gitsigns.nvim",
|
||||
opts = {
|
||||
-- See `:help gitsigns.txt`
|
||||
signs = {
|
||||
add = { text = "+" },
|
||||
change = { text = "~" },
|
||||
delete = { text = "_" },
|
||||
topdelete = { text = "‾" },
|
||||
changedelete = { text = "~" },
|
||||
},
|
||||
},
|
||||
}
|
||||
115
config/nvim/lua/aleidk/plugins/init.lua
Normal file
115
config/nvim/lua/aleidk/plugins/init.lua
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
return {
|
||||
-- NOTE: First, some plugins that don't require any configuration
|
||||
|
||||
-- Git related plugins
|
||||
"tpope/vim-fugitive",
|
||||
"tpope/vim-rhubarb",
|
||||
|
||||
-- Detect tabstop and shiftwidth automatically
|
||||
"tpope/vim-sleuth",
|
||||
|
||||
-- NOTE: This is where your plugins related to LSP can be installed.
|
||||
-- The configuration is done below. Search for lspconfig to find it below.
|
||||
{
|
||||
-- LSP Configuration & Plugins
|
||||
"neovim/nvim-lspconfig",
|
||||
dependencies = {
|
||||
-- Automatically install LSPs to stdpath for neovim
|
||||
{ "williamboman/mason.nvim", config = true },
|
||||
"williamboman/mason-lspconfig.nvim",
|
||||
|
||||
-- Useful status updates for LSP
|
||||
-- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
|
||||
{ "j-hui/fidget.nvim", opts = {} },
|
||||
|
||||
-- Additional lua configuration, makes nvim stuff amazing!
|
||||
"folke/neodev.nvim",
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
-- Autocompletion
|
||||
"hrsh7th/nvim-cmp",
|
||||
dependencies = { "hrsh7th/cmp-nvim-lsp", "L3MON4D3/LuaSnip", "saadparwaiz1/cmp_luasnip" },
|
||||
},
|
||||
|
||||
-- Useful plugin to show you pending keybinds.
|
||||
{ "folke/which-key.nvim", opts = {} },
|
||||
|
||||
{
|
||||
-- Theme inspired by Atom
|
||||
"navarasu/onedark.nvim",
|
||||
priority = 1000,
|
||||
config = function()
|
||||
vim.cmd.colorscheme("onedark")
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
-- Set lualine as statusline
|
||||
"nvim-lualine/lualine.nvim",
|
||||
-- See `:help lualine.txt`
|
||||
opts = {
|
||||
options = {
|
||||
icons_enabled = false,
|
||||
theme = "onedark",
|
||||
component_separators = "|",
|
||||
section_separators = "",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
-- Add indentation guides even on blank lines
|
||||
"lukas-reineke/indent-blankline.nvim",
|
||||
-- Enable `lukas-reineke/indent-blankline.nvim`
|
||||
-- See `:help indent_blankline.txt`
|
||||
opts = {
|
||||
char = "┊",
|
||||
show_trailing_blankline_indent = false,
|
||||
},
|
||||
},
|
||||
|
||||
-- "gc" to comment visual regions/lines
|
||||
{ "numToStr/Comment.nvim", opts = {} },
|
||||
|
||||
-- Fuzzy Finder (files, lsp, etc)
|
||||
{ "nvim-telescope/telescope.nvim", version = "*", dependencies = { "nvim-lua/plenary.nvim" } },
|
||||
|
||||
-- Fuzzy Finder Algorithm which requires local dependencies to be built.
|
||||
-- Only load if `make` is available. Make sure you have the system
|
||||
-- requirements installed.
|
||||
{
|
||||
"nvim-telescope/telescope-fzf-native.nvim",
|
||||
-- NOTE: If you are having trouble with this installation,
|
||||
-- refer to the README for telescope-fzf-native for more instructions.
|
||||
build = "make",
|
||||
cond = function()
|
||||
return vim.fn.executable("make") == 1
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
-- Highlight, edit, and navigate code
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
dependencies = {
|
||||
"nvim-treesitter/nvim-treesitter-textobjects",
|
||||
},
|
||||
build = ":TSUpdate",
|
||||
},
|
||||
|
||||
-- NOTE: Next Step on Your Neovim Journey: Add/Configure additional "plugins" for kickstart
|
||||
-- These are some example plugins that I've included in the kickstart repository.
|
||||
-- Uncomment any of the lines below to enable them.
|
||||
-- require 'kickstart.plugins.autoformat',
|
||||
-- require 'kickstart.plugins.debug',
|
||||
|
||||
-- NOTE: The import below automatically adds your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
|
||||
-- You can use this folder to prevent any conflicts with this init.lua if you're interested in keeping
|
||||
-- up-to-date with whatever is in the kickstart repo.
|
||||
--
|
||||
-- For additional information see: https://github.com/folke/lazy.nvim#-structuring-your-plugins
|
||||
--
|
||||
-- An additional note is that if you only copied in the `init.lua`, you can just comment this line
|
||||
-- to get rid of the warning telling you that there are not plugins in `lua/custom/plugins/`.
|
||||
}
|
||||
5
config/nvim/lua/custom/plugins/init.lua
Normal file
5
config/nvim/lua/custom/plugins/init.lua
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
-- You can add your own plugins here or in other files in this directory!
|
||||
-- I promise not to create any merge conflicts in this directory :)
|
||||
--
|
||||
-- See the kickstart.nvim README for more information
|
||||
return {}
|
||||
74
config/nvim/lua/kickstart/plugins/autoformat.lua
Normal file
74
config/nvim/lua/kickstart/plugins/autoformat.lua
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
-- autoformat.lua
|
||||
--
|
||||
-- Use your language server to automatically format your code on save.
|
||||
-- Adds additional commands as well to manage the behavior
|
||||
|
||||
return {
|
||||
'neovim/nvim-lspconfig',
|
||||
config = function()
|
||||
-- Switch for controlling whether you want autoformatting.
|
||||
-- Use :KickstartFormatToggle to toggle autoformatting on or off
|
||||
local format_is_enabled = true
|
||||
vim.api.nvim_create_user_command('KickstartFormatToggle', function()
|
||||
format_is_enabled = not format_is_enabled
|
||||
print('Setting autoformatting to: ' .. tostring(format_is_enabled))
|
||||
end, {})
|
||||
|
||||
-- Create an augroup that is used for managing our formatting autocmds.
|
||||
-- We need one augroup per client to make sure that multiple clients
|
||||
-- can attach to the same buffer without interfering with each other.
|
||||
local _augroups = {}
|
||||
local get_augroup = function(client)
|
||||
if not _augroups[client.id] then
|
||||
local group_name = 'kickstart-lsp-format-' .. client.name
|
||||
local id = vim.api.nvim_create_augroup(group_name, { clear = true })
|
||||
_augroups[client.id] = id
|
||||
end
|
||||
|
||||
return _augroups[client.id]
|
||||
end
|
||||
|
||||
-- Whenever an LSP attaches to a buffer, we will run this function.
|
||||
--
|
||||
-- See `:help LspAttach` for more information about this autocmd event.
|
||||
vim.api.nvim_create_autocmd('LspAttach', {
|
||||
group = vim.api.nvim_create_augroup('kickstart-lsp-attach-format', { clear = true }),
|
||||
-- This is where we attach the autoformatting for reasonable clients
|
||||
callback = function(args)
|
||||
local client_id = args.data.client_id
|
||||
local client = vim.lsp.get_client_by_id(client_id)
|
||||
local bufnr = args.buf
|
||||
|
||||
-- Only attach to clients that support document formatting
|
||||
if not client.server_capabilities.documentFormattingProvider then
|
||||
return
|
||||
end
|
||||
|
||||
-- Tsserver usually works poorly. Sorry you work with bad languages
|
||||
-- You can remove this line if you know what you're doing :)
|
||||
if client.name == 'tsserver' then
|
||||
return
|
||||
end
|
||||
|
||||
-- Create an autocmd that will run *before* we save the buffer.
|
||||
-- Run the formatting command for the LSP that has just attached.
|
||||
vim.api.nvim_create_autocmd('BufWritePre', {
|
||||
group = get_augroup(client),
|
||||
buffer = bufnr,
|
||||
callback = function()
|
||||
if not format_is_enabled then
|
||||
return
|
||||
end
|
||||
|
||||
vim.lsp.buf.format {
|
||||
async = false,
|
||||
filter = function(c)
|
||||
return c.id == client.id
|
||||
end,
|
||||
}
|
||||
end,
|
||||
})
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
||||
83
config/nvim/lua/kickstart/plugins/debug.lua
Normal file
83
config/nvim/lua/kickstart/plugins/debug.lua
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
-- debug.lua
|
||||
--
|
||||
-- Shows how to use the DAP plugin to debug your code.
|
||||
--
|
||||
-- Primarily focused on configuring the debugger for Go, but can
|
||||
-- be extended to other languages as well. That's why it's called
|
||||
-- kickstart.nvim and not kitchen-sink.nvim ;)
|
||||
|
||||
return {
|
||||
-- NOTE: Yes, you can install new plugins here!
|
||||
'mfussenegger/nvim-dap',
|
||||
-- NOTE: And you can specify dependencies as well
|
||||
dependencies = {
|
||||
-- Creates a beautiful debugger UI
|
||||
'rcarriga/nvim-dap-ui',
|
||||
|
||||
-- Installs the debug adapters for you
|
||||
'williamboman/mason.nvim',
|
||||
'jay-babu/mason-nvim-dap.nvim',
|
||||
|
||||
-- Add your own debuggers here
|
||||
'leoluz/nvim-dap-go',
|
||||
},
|
||||
config = function()
|
||||
local dap = require 'dap'
|
||||
local dapui = require 'dapui'
|
||||
|
||||
require('mason-nvim-dap').setup {
|
||||
-- Makes a best effort to setup the various debuggers with
|
||||
-- reasonable debug configurations
|
||||
automatic_setup = true,
|
||||
|
||||
-- You can provide additional configuration to the handlers,
|
||||
-- see mason-nvim-dap README for more information
|
||||
handlers = {},
|
||||
|
||||
-- You'll need to check that you have the required things installed
|
||||
-- online, please don't ask me how to install them :)
|
||||
ensure_installed = {
|
||||
-- Update this to ensure that you have the debuggers for the langs you want
|
||||
'delve',
|
||||
},
|
||||
}
|
||||
|
||||
-- Basic debugging keymaps, feel free to change to your liking!
|
||||
vim.keymap.set('n', '<F5>', dap.continue)
|
||||
vim.keymap.set('n', '<F1>', dap.step_into)
|
||||
vim.keymap.set('n', '<F2>', dap.step_over)
|
||||
vim.keymap.set('n', '<F3>', dap.step_out)
|
||||
vim.keymap.set('n', '<leader>b', dap.toggle_breakpoint)
|
||||
vim.keymap.set('n', '<leader>B', function()
|
||||
dap.set_breakpoint(vim.fn.input 'Breakpoint condition: ')
|
||||
end)
|
||||
|
||||
-- Dap UI setup
|
||||
-- For more information, see |:help nvim-dap-ui|
|
||||
dapui.setup {
|
||||
-- Set icons to characters that are more likely to work in every terminal.
|
||||
-- Feel free to remove or use ones that you like more! :)
|
||||
-- Don't feel like these are good choices.
|
||||
icons = { expanded = '▾', collapsed = '▸', current_frame = '*' },
|
||||
controls = {
|
||||
icons = {
|
||||
pause = '⏸',
|
||||
play = '▶',
|
||||
step_into = '⏎',
|
||||
step_over = '⏭',
|
||||
step_out = '⏮',
|
||||
step_back = 'b',
|
||||
run_last = '▶▶',
|
||||
terminate = '⏹',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
dap.listeners.after.event_initialized['dapui_config'] = dapui.open
|
||||
dap.listeners.before.event_terminated['dapui_config'] = dapui.close
|
||||
dap.listeners.before.event_exited['dapui_config'] = dapui.close
|
||||
|
||||
-- Install golang specific config
|
||||
require('dap-go').setup()
|
||||
end,
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue