Add alacritty configmaster
@ -0,0 +1,24 @@ | |||
font: | |||
normal: | |||
family: Liberation Mono | |||
style: Regular | |||
bold: | |||
family: Liberation Mono | |||
style: Bold | |||
italic: | |||
family: Liberation Mono | |||
style: Italic | |||
bold_italic: | |||
family: Liberation Mono | |||
style: Bold Italic | |||
size: 11 | |||
import: | |||
- ~/.config/alacritty/themes/Nightfly.yml | |||
key_bindings: | |||
- { key: Return, mods: Control|Shift, action: SpawnNewInstance } |
@ -0,0 +1,36 @@ | |||
# Colors (Nightfly) | |||
colors: | |||
# Default colors | |||
primary: | |||
background: '#011627' | |||
foreground: '#acb4c2' | |||
cursor: | |||
text: '#fafafa' | |||
cursor: '#9ca1aa' | |||
selection: | |||
text: '#080808' | |||
background: '#b2ceee' | |||
# Normal colors | |||
normal: | |||
black: '#1d3b53' | |||
red: '#fc514e' | |||
green: '#a1cd5e' | |||
yellow: '#e3d18a' | |||
blue: '#82aaff' | |||
magenta: '#c792ea' | |||
cyan: '#7fdbca' | |||
white: '#a1aab8' | |||
# Bright colors | |||
bright: | |||
black: '#7c8f8f' | |||
red: '#ff5874' | |||
green: '#21c7a8' | |||
yellow: '#ecc48d' | |||
blue: '#82aaff' | |||
magenta: '#ae81ff' | |||
cyan: '#7fdbca' | |||
white: '#d6deeb' |
@ -1,9 +1,3 @@ | |||
-- General options and remaps | |||
require('config.general') | |||
-- Helper functions | |||
require('helper.toggle-tab-width') | |||
-- Plugins | |||
require('packer-plugins') | |||
require('tovi.core') | |||
require('tovi.lazy') |
@ -0,0 +1,44 @@ | |||
{ | |||
"Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" }, | |||
"FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" }, | |||
"LuaSnip": { "branch": "master", "commit": "c5fb16a934892086d4ba01bac48b77c65435025e" }, | |||
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, | |||
"cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" }, | |||
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, | |||
"cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" }, | |||
"copilot.vim": { "branch": "release", "commit": "998cf5ab1b85e844c7e8edb864a997e590df7182" }, | |||
"dart-vim-plugin": { "branch": "master", "commit": "928302ec931caf0dcf21835cca284ccd2b192f7b" }, | |||
"dressing.nvim": { "branch": "master", "commit": "c1e1d5fa44fe08811b6ef4aadac2b50e602f9504" }, | |||
"friendly-snippets": { "branch": "main", "commit": "ebf6d6e83494cdd88a54a429340256f4dbb6a052" }, | |||
"fugitive-gitlab.vim": { "branch": "master", "commit": "55fed481c0309b3405dd3d72921d687bf36873a8" }, | |||
"gitsigns.nvim": { "branch": "main", "commit": "9bec6e1ef5542e33974e5b4f982c8c063b981974" }, | |||
"go.nvim": { "branch": "master", "commit": "019936780060efc64c0f22a47afd08fbbe82e026" }, | |||
"guihua.lua": { "branch": "master", "commit": "5ad8dba19ce9b9fd8965598984dfdc9c119f97e4" }, | |||
"harpoon": { "branch": "master", "commit": "21f4c47c6803d64ddb934a5b314dcb1b8e7365dc" }, | |||
"lazy.nvim": { "branch": "main", "commit": "2a9354c7d2368d78cbd5575a51a2af5bd8a6ad01" }, | |||
"lspkind.nvim": { "branch": "master", "commit": "57610d5ab560c073c465d6faf0c19f200cb67e6e" }, | |||
"lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" }, | |||
"mason-lspconfig.nvim": { "branch": "main", "commit": "2451adb9bdb0fd32140bf3aa8dbc17ff60050db3" }, | |||
"mason-null-ls.nvim": { "branch": "main", "commit": "ae0c5fa57468ac65617f1bf821ba0c3a1e251f0c" }, | |||
"mason.nvim": { "branch": "main", "commit": "d66c60e17dd6fd8165194b1d14d21f7eb2c1697a" }, | |||
"minintro.nvim": { "branch": "master", "commit": "b150254b4ae85a896175c65debdd25ce7b5fd106" }, | |||
"neotest": { "branch": "master", "commit": "1e67a504d03def3a6a1125d934cb511680f72555" }, | |||
"neotest-go": { "branch": "main", "commit": "1a15e1136db43775214a3e7a598f8930c29c94b7" }, | |||
"neotest-phpunit": { "branch": "main", "commit": "e2dfa3280d2a33495a3f710bc364d2cfd1f40c83" }, | |||
"nightfly": { "branch": "master", "commit": "2737ba5b8d22ad6803bb0f51099f90c61bab566c" }, | |||
"null-ls.nvim": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" }, | |||
"nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" }, | |||
"nvim-colorizer.lua": { "branch": "master", "commit": "dde3084106a70b9a79d48f426f6d6fec6fd203f7" }, | |||
"nvim-lsp-file-operations": { "branch": "master", "commit": "2abe934ab00a18932f55edfd881555934622fe36" }, | |||
"nvim-lspconfig": { "branch": "master", "commit": "ede4114e1fd41acb121c70a27e1b026ac68c42d6" }, | |||
"nvim-tree.lua": { "branch": "master", "commit": "07eb5b4059aa0a6366c46d5546ff6239dfdc1f03" }, | |||
"nvim-treesitter": { "branch": "master", "commit": "af6b3ecea9b3cff18b9244027e23e7f2c34ebdd5" }, | |||
"nvim-ts-autotag": { "branch": "main", "commit": "6be1192965df35f94b8ea6d323354f7dc7a557e4" }, | |||
"nvim-web-devicons": { "branch": "master", "commit": "480a756df82a0c231622c9bf2173bb6634713716" }, | |||
"plenary.nvim": { "branch": "master", "commit": "9ce85b0f7dcfe5358c0be937ad23e456907d410b" }, | |||
"telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" }, | |||
"telescope.nvim": { "branch": "0.1.x", "commit": "54930e1abfc94409e1bb9266e752ef8379008592" }, | |||
"undotree": { "branch": "master", "commit": "0e11ba7325efbbb3f3bebe06213afa3e7ec75131" }, | |||
"vim-fugitive": { "branch": "master", "commit": "99db68d9b3304580bd383da7aaee05c7a954a344" }, | |||
"which-key.nvim": { "branch": "main", "commit": "7ccf476ebe0445a741b64e36c78a682c1c6118b7" } | |||
} |
@ -1,6 +0,0 @@ | |||
{ | |||
"diagnostics.globals": [ | |||
"vim", | |||
"use" | |||
] | |||
} |
@ -1,2 +0,0 @@ | |||
vim.api.nvim_set_keymap('i', ',,', 'copilot#Accept("<CR>")', { expr = true, silent = true }) | |||
vim.api.nvim_set_keymap('n', '<leader>cs', '<cmd>Copilot panel<CR>', { noremap = true }) |
@ -1,3 +0,0 @@ | |||
vim.cmd[[ let g:db_ui_winwidth = 30 ]] | |||
vim.keymap.set('n', '<leader>db', ':DBUIToggle<CR>', { noremap = true }) |
@ -1,38 +0,0 @@ | |||
require('dashboard').setup({ | |||
theme = 'hyper', | |||
config = { | |||
week_header = { | |||
enable = true, | |||
}, | |||
shortcut = { | |||
{ | |||
desc = 'New', | |||
action = 'enew', | |||
key = 'e', | |||
}, | |||
{ | |||
desc = 'Update', | |||
action = 'PackerSync', | |||
key = 'u', | |||
}, | |||
{ | |||
icon_hl = '@variable', | |||
desc = 'Files', | |||
action = 'Telescope find_files', | |||
key = 'f', | |||
}, | |||
{ | |||
icon_hl = '@variable', | |||
desc = 'Git Files', | |||
action = 'Telescope git_files', | |||
key = 'g', | |||
}, | |||
{ | |||
icon_hl = '@variable', | |||
desc = 'Quit', | |||
action = 'quit', | |||
key = 'q', | |||
}, | |||
}, | |||
}, | |||
}) |
@ -1,7 +0,0 @@ | |||
vim.opt.diffopt = vim.opt.diffopt + "vertical" | |||
vim.opt.display = vim.opt.display + 'lastline' | |||
vim.api.nvim_set_keymap('n', '<leader>gl', ':GBrowse<CR>', { noremap = true }) | |||
vim.cmd([[ let g:fugitive_gitlab_domains = {"ssh://code.codium.com.au": "https://code.codium.com.au"} ]]) |
@ -1,4 +0,0 @@ | |||
require('config.general.options') | |||
require('config.general.remaps') | |||
require('config.general.autocmd') |
@ -1,63 +0,0 @@ | |||
local options = { noremap = true } | |||
-- Don't copy "c" changes to primary register | |||
vim.keymap.set('n', 'c', '"_c', options) | |||
-- Easily open splits | |||
vim.keymap.set('n', '<leader>hs', '<cmd>split<cr>', options) | |||
vim.keymap.set('n', '<leader>vs', '<cmd>vsplit<cr>', options) | |||
-- Copy the entire file | |||
vim.keymap.set('n', '<leader>y', 'ggyG<C-o>', options) | |||
vim.keymap.set('n', '<F5>', function() vim.cmd('mksession! ~/.cache//nvim/session/manual_session.vim') end, options) | |||
vim.keymap.set('n', '<F6>', function() vim.cmd('source ~/.cache/nvim/session/manual_session.vim') end, options) | |||
vim.keymap.set('n', '<F7>', function() vim.cmd('source ~/.cache/nvim/session/shutdown_session.vim') end, options) | |||
-- Navigating with guides | |||
vim.keymap.set('n', '<leader><leader>', '<Esc>/<++><Enter>"_c4l', options) | |||
vim.keymap.set('v', '<leader><leader>', '<Esc>/<++><Enter>"_c4l', options) | |||
-- Spell-check | |||
vim.keymap.set('n', '<leader>o', '<cmd>setlocal spell! spelllang=en_au<cr>', options) | |||
-- Keep highlight when indenting | |||
vim.keymap.set('v', '<', '<gv', options) | |||
vim.keymap.set('v', '>', '>gv', options) | |||
vim.keymap.set('n', '<A-1>', '1gt', options) | |||
vim.keymap.set('n', '<A-2>', '2gt', options) | |||
vim.keymap.set('n', '<A-3>', '3gt', options) | |||
vim.keymap.set('n', '<A-4>', '4gt', options) | |||
vim.keymap.set('n', '<A-5>', '5gt', options) | |||
vim.keymap.set('n', '<A-6>', '6gt', options) | |||
vim.keymap.set('n', '<A-7>', '7gt', options) | |||
vim.keymap.set('n', '<A-8>', '8gt', options) | |||
vim.keymap.set('n', '<A-9>', '9gt', options) | |||
vim.keymap.set('n', '<leader>gp', '<cmd>Git push<CR>', options) | |||
vim.keymap.set('n', '<leader>gP', '<cmd>Git pull<CR>', options) | |||
vim.keymap.set('n', '<leader>ga', '<cmd>Git add .<CR>', options) | |||
vim.keymap.set('n', '<leader>gA', '<cmd>Git add<CR>', options) | |||
vim.keymap.set('n', '<leader>gc', '<cmd>Git commit<CR>', options) | |||
vim.keymap.set('n', '<leader>gC', '<cmd>Git commit -a<CR>', options) | |||
vim.keymap.set("x", "<leader>p", "\"_dP", options) | |||
vim.keymap.set("n", "<leader>d", "\"_d", options) | |||
vim.keymap.set("v", "<leader>d", "\"_d", options) | |||
vim.keymap.set('v', 'J', ":m '>+1<CR>gv=gv") | |||
vim.keymap.set('v', 'K', ":m '<-2<CR>gv=gv") | |||
vim.keymap.set('n', '<C-d>', '<C-d>zz') | |||
vim.keymap.set('n', '<C-u>', '<C-u>zz') | |||
vim.keymap.set('n', 'n', 'nzzzv') | |||
vim.keymap.set('n', 'N', 'Nzzzv') | |||
vim.keymap.set('n', '<C-k>', '<cmd>cnext<CR>zz') | |||
vim.keymap.set('n', '<C-j>', '<cmd>cprev<CR>zz') | |||
vim.keymap.set('n', '<leader>k', '<cmd>lnext<CR>zz') | |||
vim.keymap.set('n', '<leader>j', '<cmd>cprev<CR>zz') | |||
vim.keymap.set("n", "<leader>s", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]]) |
@ -1,42 +0,0 @@ | |||
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` | |||
watch_gitdir = { | |||
interval = 1000, | |||
follow_files = true | |||
}, | |||
attach_to_untracked = true, | |||
current_line_blame = true, -- Toggle with `:Gitsigns toggle_current_line_blame` | |||
current_line_blame_opts = { | |||
virt_text = true, | |||
virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align' | |||
delay = 0, | |||
ignore_whitespace = false, | |||
}, | |||
current_line_blame_formatter = '<author>, <author_time:%Y-%m-%d> - <summary>', | |||
sign_priority = 6, | |||
update_debounce = 100, | |||
status_formatter = nil, -- Use default | |||
max_file_length = 40000, -- Disable if file is longer than this (in lines) | |||
preview_config = { | |||
-- Options passed to nvim_open_win | |||
border = 'single', | |||
style = 'minimal', | |||
relative = 'cursor', | |||
row = 0, | |||
col = 1 | |||
}, | |||
yadm = { | |||
enable = false | |||
}, | |||
} |
@ -1,88 +0,0 @@ | |||
require('go').setup({ | |||
disable_defaults = false, -- true|false when true set false to all boolean settings and replace all table | |||
-- settings with {} | |||
go = 'go', -- go command, can be go[default] or go1.18beta1 | |||
goimport = 'gopls', -- goimport command, can be gopls[default] or goimport | |||
fillstruct = 'gopls', -- can be nil (use fillstruct, slower) and gopls | |||
gofmt = 'gofumpt', --gofmt cmd, | |||
max_line_len = 128, -- max line length in golines format, Target maximum line length for golines | |||
tag_transform = false, -- can be transform option("snakecase", "camelcase", etc) check gomodifytags for details and more options | |||
gotests_template = "", -- sets gotests -template parameter (check gotests for details) | |||
gotests_template_dir = "", -- sets gotests -template_dir parameter (check gotests for details) | |||
comment_placeholder = '' , -- comment_placeholder your cool placeholder e.g. ﳑ | |||
icons = {breakpoint = '🧘', currentpos = '🏃'}, -- setup to `false` to disable icons setup | |||
verbose = false, -- output loginf in messages | |||
lsp_cfg = false, -- true: use non-default gopls setup specified in go/lsp.lua | |||
-- false: do nothing | |||
-- if lsp_cfg is a table, merge table with with non-default gopls setup in go/lsp.lua, e.g. | |||
-- lsp_cfg = {settings={gopls={matcher='CaseInsensitive', ['local'] = 'your_local_module_path', gofumpt = true }}} | |||
lsp_gofumpt = false, -- true: set default gofmt in gopls format to gofumpt | |||
lsp_on_attach = nil, -- nil: use on_attach function defined in go/lsp.lua, | |||
-- when lsp_cfg is true | |||
-- if lsp_on_attach is a function: use this function as on_attach function for gopls | |||
lsp_keymaps = true, -- set to false to disable gopls/lsp keymap | |||
lsp_codelens = true, -- set to false to disable codelens, true by default, you can use a function | |||
-- function(bufnr) | |||
-- vim.api.nvim_buf_set_keymap(bufnr, "n", "<space>F", "<cmd>lua vim.lsp.buf.formatting()<CR>", {noremap=true, silent=true}) | |||
-- end | |||
-- to setup a table of codelens | |||
lsp_diag_hdlr = true, -- hook lsp diag handler | |||
-- virtual text setup | |||
lsp_diag_virtual_text = { space = 0, prefix = "" }, | |||
lsp_diag_signs = true, | |||
lsp_diag_update_in_insert = false, | |||
lsp_document_formatting = true, | |||
-- set to true: use gopls to format | |||
-- false if you want to use other formatter tool(e.g. efm, nulls) | |||
lsp_inlay_hints = { | |||
enable = true, | |||
-- Only show inlay hints for the current line | |||
only_current_line = false, | |||
-- Event which triggers a refersh of the inlay hints. | |||
-- You can make this "CursorMoved" or "CursorMoved,CursorMovedI" but | |||
-- not that this may cause higher CPU usage. | |||
-- This option is only respected when only_current_line and | |||
-- autoSetHints both are true. | |||
only_current_line_autocmd = "CursorHold", | |||
-- whether to show variable name before type hints with the inlay hints or not | |||
-- default: false | |||
show_variable_name = true, | |||
-- prefix for parameter hints | |||
parameter_hints_prefix = " ", | |||
show_parameter_hints = true, | |||
-- prefix for all the other hints (type, chaining) | |||
other_hints_prefix = "=> ", | |||
-- whether to align to the lenght of the longest line in the file | |||
max_len_align = false, | |||
-- padding from the left if max_len_align is true | |||
max_len_align_padding = 1, | |||
-- whether to align to the extreme right or not | |||
right_align = false, | |||
-- padding from the right if right_align is true | |||
right_align_padding = 6, | |||
-- The color of the hints | |||
highlight = "Comment", | |||
}, | |||
gopls_cmd = nil, -- if you need to specify gopls path and cmd, e.g {"/home/user/lsp/gopls", "-logfile","/var/log/gopls.log" } | |||
gopls_remote_auto = true, -- add -remote=auto to gopls | |||
gocoverage_sign = "█", | |||
sign_priority = 5, -- change to a higher number to override other signs | |||
dap_debug = true, -- set to false to disable dap | |||
dap_debug_keymap = true, -- true: use keymap for debugger defined in go/dap.lua | |||
-- false: do not use keymap in go/dap.lua. you must define your own. | |||
-- windows: use visual studio keymap | |||
dap_debug_gui = true, -- set to true to enable dap gui, highly recommand | |||
dap_debug_vt = true, -- set to true to enable dap virtual text | |||
-- build_tags = "tag1,tag2", -- set default build tags | |||
textobjects = true, -- enable default text jobects through treesittter-text-objects | |||
test_runner = 'go', -- one of {`go`, `richgo`, `dlv`, `ginkgo`} | |||
verbose_tests = true, -- set to add verbose flag to tests | |||
run_in_floaterm = false, -- set to true to run in float window. :GoTermClose closes the floatterm | |||
-- float term recommand if you use richgo/ginkgo with terminal color | |||
trouble = false, -- true: use trouble to open quickfix | |||
test_efm = false, -- errorfomat for quickfix, default mix mode, set to true will be efm only | |||
luasnip = false, -- enable included luasnip snippets. you can also disable while add lua/snips folder to luasnip load | |||
-- Do not enable this if you already added the path, that will duplicate the entries | |||
}) |
@ -1,14 +0,0 @@ | |||
local mark = require("harpoon.mark") | |||
local ui = require("harpoon.ui") | |||
vim.keymap.set('n', '<leader>a', mark.add_file) | |||
vim.keymap.set('n', '<leader>th', mark.toggle_file) | |||
vim.keymap.set('n', '<C-e>', ui.toggle_quick_menu) | |||
vim.keymap.set('n', '<C-h>', function () ui.nav_file(1) end) | |||
vim.keymap.set('n', '<C-j>', function () ui.nav_file(2) end) | |||
vim.keymap.set('n', '<C-k>', function () ui.nav_file(3) end) | |||
vim.keymap.set('n', '<C-l>', function () ui.nav_file(4) end) | |||
vim.keymap.set('n', '<C-,>', function () ui.nav_prev() end) | |||
vim.keymap.set('n', '<C-.>', function () ui.nav_next() end) |
@ -1,128 +0,0 @@ | |||
local lsp = require('lsp-zero') | |||
local luasnip = require("luasnip") | |||
lsp.preset('recommended') | |||
lsp.ensure_installed({ | |||
'lua_ls', | |||
'tsserver', | |||
'eslint', | |||
'gopls', | |||
'intelephense', | |||
'jsonls', | |||
'volar', | |||
}) | |||
local has_words_before = function() | |||
local line, col = unpack(vim.api.nvim_win_get_cursor(0)) | |||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match "%s" == nil | |||
end | |||
local cmp = require('cmp') | |||
-- Use buffer source for `/` | |||
cmp.setup.cmdline("/", { | |||
enabled = false | |||
}) | |||
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). | |||
cmp.setup.cmdline(':', { | |||
enabled = false, | |||
}) | |||
-- local cmp_select = {behavior = cmp.SelectBehavior.Select} | |||
local cmp_mappings = lsp.defaults.cmp_mappings({ | |||
["<C-k>"] = cmp.mapping(cmp.mapping.select_prev_item(), { "i", "c" }), | |||
["<C-j>"] = cmp.mapping(cmp.mapping.select_next_item(), { "i", "c" }), | |||
["<C-b>"] = cmp.mapping(cmp.mapping.scroll_docs(-4), { "i", "c" }), | |||
["<C-f>"] = cmp.mapping(cmp.mapping.scroll_docs(4), { "i", "c" }), | |||
["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), | |||
["<C-e>"] = cmp.mapping { i = cmp.mapping.close(), c = cmp.mapping.close() }, | |||
["<CR>"] = cmp.mapping { | |||
i = cmp.mapping.confirm { behavior = cmp.ConfirmBehavior.Replace, select = false }, | |||
c = function(fallback) | |||
if cmp.visible() then | |||
cmp.mapping.confirm { behavior = cmp.ConfirmBehavior.Replace, select = false } | |||
else | |||
fallback() | |||
end | |||
end, | |||
}, | |||
["<Tab>"] = cmp.mapping( | |||
function(fallback) | |||
if cmp.visible() then | |||
cmp.select_next_item() | |||
elseif luasnip.expand_or_jumpable() then | |||
luasnip.expand_or_jump() | |||
elseif has_words_before() then | |||
cmp.complete() | |||
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", | |||
}), | |||
}) | |||
lsp.setup_nvim_cmp({ | |||
mapping = cmp_mappings, | |||
completion = { | |||
completeopt = "menu,menuone", | |||
}, | |||
window = { | |||
completion = { | |||
side_padding = 1, | |||
winhighlight = "NormalFloat:NormalFloat,FloatBorder:TelescopeBorder", | |||
scrollbar = false, | |||
}, | |||
documentation = { | |||
border = { "╭", "─", "╮", "│", "╯", "─", "╰", "│" }, | |||
winhighlight = "NormalFloat:NormalFloat,FloatBorder:TelescopeBorder", | |||
}, | |||
snippet = { | |||
expand = function(args) | |||
luasnip.lsp_expand(args.body) | |||
end, | |||
}, | |||
}, | |||
}) | |||
lsp.on_attach(function(client, bufnr) | |||
local opts = {buffer = bufnr, remap = false} | |||
-- Key mappings | |||
vim.keymap.set("n", "K", vim.lsp.buf.hover, opts) | |||
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, opts) | |||
vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts) | |||
vim.keymap.set("n", "[e", function () vim.diagnostic.goto_prev({severity = vim.diagnostic.severity.ERROR}) end, opts) | |||
vim.keymap.set("n", "]e", function () vim.diagnostic.goto_next({severity = vim.diagnostic.severity.ERROR}) end, opts) | |||
vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts) | |||
vim.keymap.set("n", "<leader>vws", function() vim.lsp.buf.workspace_symbol() end, opts) | |||
vim.keymap.set("n", "<leader>vd", function() vim.diagnostic.open_float() end, opts) | |||
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts) | |||
vim.keymap.set("n", "<leader>K", vim.lsp.buf.code_action, opts) | |||
vim.keymap.set("n", "<leader>of", vim.diagnostic.open_float, opts) | |||
vim.keymap.set("n", "gh", vim.lsp.buf.signature_help, opts) | |||
end) | |||
lsp.setup() |
@ -1,40 +0,0 @@ | |||
require('lualine').setup { | |||
options = { | |||
icons_enabled = true, | |||
theme = 'catppuccin-mocha', | |||
component_separators = { left = '', right = ''}, | |||
section_separators = { left = '', right = ''}, | |||
disabled_filetypes = { | |||
statusline = {}, | |||
winbar = {}, | |||
}, | |||
ignore_focus = {}, | |||
always_divide_middle = true, | |||
globalstatus = false, | |||
refresh = { | |||
statusline = 1000, | |||
tabline = 1000, | |||
winbar = 1000, | |||
} | |||
}, | |||
sections = { | |||
lualine_a = {'mode'}, | |||
lualine_b = {'branch', 'diff', 'diagnostics'}, | |||
lualine_c = {'filename'}, | |||
lualine_x = {'encoding', 'fileformat', 'filetype'}, | |||
lualine_y = {'progress'}, | |||
lualine_z = {'location'} | |||
}, | |||
inactive_sections = { | |||
lualine_a = {}, | |||
lualine_b = {}, | |||
lualine_c = {'filename'}, | |||
lualine_x = {'location'}, | |||
lualine_y = {}, | |||
lualine_z = {} | |||
}, | |||
tabline = {}, | |||
winbar = {}, | |||
inactive_winbar = {}, | |||
extensions = {} | |||
} |
@ -1,14 +0,0 @@ | |||
local M = {} | |||
function M.setup() | |||
local luasnip = require "luasnip" | |||
luasnip.config.set_config { | |||
history = false, | |||
updateevents = "TextChanged,TextChangedI", | |||
} | |||
require("luasnip/loaders/from_vscode").load() | |||
end | |||
return M |
@ -1,60 +0,0 @@ | |||
require('neoclip').setup({ | |||
history = 1000, | |||
enable_persistent_history = true, | |||
length_limit = 1048576, | |||
continuous_sync = true, | |||
db_path = vim.fn.stdpath("data") .. "/databases/neoclip.sqlite3", | |||
filter = nil, | |||
preview = true, | |||
prompt = nil, | |||
default_register = '"', | |||
default_register_macros = 'q', | |||
enable_macro_history = true, | |||
content_spec_column = false, | |||
disable_keycodes_parsing = false, | |||
on_select = { | |||
move_to_front = false, | |||
close_telescope = true, | |||
}, | |||
on_paste = { | |||
set_reg = false, | |||
move_to_front = false, | |||
close_telescope = true, | |||
}, | |||
on_replay = { | |||
set_reg = false, | |||
move_to_front = false, | |||
close_telescope = true, | |||
}, | |||
on_custom_action = { | |||
close_telescope = true, | |||
}, | |||
keys = { | |||
telescope = { | |||
i = { | |||
select = '<cr>', | |||
paste = '<c-p>', | |||
paste_behind = '<c-k>', | |||
replay = '<c-q>', -- replay a macro | |||
delete = '<c-d>', -- delete an entry | |||
edit = '<c-e>', -- edit an entry | |||
custom = {}, | |||
}, | |||
n = { | |||
select = '<cr>', | |||
paste = 'p', | |||
--- It is possible to map to more than one key. | |||
-- paste = { 'p', '<c-p>' }, | |||
paste_behind = 'P', | |||
replay = 'q', | |||
delete = 'd', | |||
edit = 'e', | |||
custom = {}, | |||
}, | |||
}, | |||
}, | |||
}) | |||
vim.keymap.set('n', '<leader>cp', function() | |||
require('telescope').extensions.neoclip.default() | |||
end) |
@ -1,22 +0,0 @@ | |||
local neotest = require('neotest') | |||
vim.keymap.set('n', '<leader>tr', function () neotest.run.run() end) | |||
vim.keymap.set('n', '<leader>tR', function () neotest.run.run_last() end) | |||
vim.keymap.set('n', '<leader>tf', function () neotest.run.run(vim.fn.expand('%')) end) | |||
vim.keymap.set('n', '<leader>tS', function () neotest.run.stop() end) | |||
vim.keymap.set('n', '<leader>ta', function () neotest.run.attach() end) | |||
vim.keymap.set('n', '<leader>to', function () neotest.output.open() end) | |||
vim.keymap.set('n', '<leader>ts', function () neotest.summary.toggle() end) | |||
neotest.setup({ | |||
adapters = { | |||
require("neotest-phpunit")({ | |||
root_files = { "phpunit.xml", "composer.json" }, | |||
phpunit_cmd = { "docker-compose", "exec", "fpm", "./vendor/bin/phpunit" }, | |||
filter_dirs = { "vendor" }, | |||
mapped_docker_dir = "/var/www", | |||
append_to_cwd = '/api' | |||
}), | |||
}, | |||
}) | |||
@ -1,18 +0,0 @@ | |||
require("noice").setup({ | |||
lsp = { | |||
-- override markdown rendering so that **cmp** and other plugins use **Treesitter** | |||
override = { | |||
["vim.lsp.util.convert_input_to_markdown_lines"] = true, | |||
["vim.lsp.util.stylize_markdown"] = true, | |||
["cmp.entry.get_documentation"] = true, | |||
}, | |||
}, | |||
-- you can enable a preset for easier configuration | |||
presets = { | |||
bottom_search = false, -- use a classic bottom cmdline for search | |||
command_palette = true, -- position the cmdline and popupmenu together | |||
long_message_to_split = true, -- long messages will be sent to a split | |||
inc_rename = false, -- enables an input dialog for inc-rename.nvim | |||
lsp_doc_border = false, -- add a border to hover docs and signature help | |||
}, | |||
}) |
@ -1,205 +0,0 @@ | |||
-- Unless you are still migrating, remove the deprecated commands from v1.x | |||
vim.cmd([[ let g:neo_tree_remove_legacy_commands = 1 ]]) | |||
-- If you want icons for diagnostic errors, you'll need to define them somewhere: | |||
vim.fn.sign_define("DiagnosticSignError", | |||
{text = " ", texthl = "DiagnosticSignError"}) | |||
vim.fn.sign_define("DiagnosticSignWarn", | |||
{text = " ", texthl = "DiagnosticSignWarn"}) | |||
vim.fn.sign_define("DiagnosticSignInfo", | |||
{text = " ", texthl = "DiagnosticSignInfo"}) | |||
vim.fn.sign_define("DiagnosticSignHint", | |||
{text = "", texthl = "DiagnosticSignHint"}) | |||
-- NOTE: this is changed from v1.x, which used the old style of highlight groups | |||
-- in the form "LspDiagnosticsSignWarning" | |||
require("neo-tree").setup({ | |||
close_if_last_window = false, -- Close Neo-tree if it is the last window left in the tab | |||
popup_border_style = "rounded", | |||
enable_git_status = true, | |||
enable_diagnostics = true, | |||
sort_case_insensitive = false, -- used when sorting files and directories in the tree | |||
sort_function = nil , -- use a custom function for sorting files and directories in the tree | |||
-- sort_function = function (a,b) | |||
-- if a.type == b.type then | |||
-- return a.path > b.path | |||
-- else | |||
-- return a.type > b.type | |||
-- end | |||
-- end , -- this sorts files and directories descendantly | |||
default_component_configs = { | |||
container = { | |||
enable_character_fade = true | |||
}, | |||
indent = { | |||
indent_size = 2, | |||
padding = 1, -- extra padding on left hand side | |||
-- indent guides | |||
with_markers = true, | |||
indent_marker = "│", | |||
last_indent_marker = "└", | |||
highlight = "NeoTreeIndentMarker", | |||
-- expander config, needed for nesting files | |||
with_expanders = nil, -- if nil and file nesting is enabled, will enable expanders | |||
expander_collapsed = "", | |||
expander_expanded = "", | |||
expander_highlight = "NeoTreeExpander", | |||
}, | |||
icon = { | |||
folder_closed = "", | |||
folder_open = "", | |||
folder_empty = "ﰊ", | |||
-- The next two settings are only a fallback, if you use nvim-web-devicons and configure default icons there | |||
-- then these will never be used. | |||
default = "*", | |||
highlight = "NeoTreeFileIcon" | |||
}, | |||
modified = { | |||
symbol = "[+]", | |||
highlight = "NeoTreeModified", | |||
}, | |||
name = { | |||
trailing_slash = false, | |||
use_git_status_colors = true, | |||
highlight = "NeoTreeFileName", | |||
}, | |||
git_status = { | |||
symbols = { | |||
-- Change type | |||
added = "", -- or "✚", but this is redundant info if you use git_status_colors on the name | |||
modified = "", -- or "", but this is redundant info if you use git_status_colors on the name | |||
deleted = "✖",-- this can only be used in the git_status source | |||
renamed = "",-- this can only be used in the git_status source | |||
-- Status type | |||
untracked = "", | |||
ignored = "", | |||
unstaged = "", | |||
staged = "", | |||
conflict = "", | |||
} | |||
}, | |||
}, | |||
window = { | |||
position = "left", | |||
width = 40, | |||
mapping_options = { | |||
noremap = true, | |||
nowait = true, | |||
}, | |||
mappings = { | |||
["<space>"] = { | |||
"toggle_node", | |||
nowait = false, -- disable `nowait` if you have existing combos starting with this char that you want to use | |||
}, | |||
["<2-LeftMouse>"] = "open", | |||
["<cr>"] = "open", | |||
["S"] = "open_split", | |||
["s"] = "open_vsplit", | |||
-- ["S"] = "split_with_window_picker", | |||
-- ["s"] = "vsplit_with_window_picker", | |||
["t"] = "open_tabnew", | |||
["w"] = "open_with_window_picker", | |||
["C"] = "close_node", | |||
["z"] = "close_all_nodes", | |||
--["Z"] = "expand_all_nodes", | |||
["a"] = { | |||
"add", | |||
-- some commands may take optional config options, see `:h neo-tree-mappings` for details | |||
config = { | |||
show_path = "none" -- "none", "relative", "absolute" | |||
} | |||
}, | |||
["A"] = "add_directory", -- also accepts the optional config.show_path option like "add". | |||
["d"] = "delete", | |||
["r"] = "rename", | |||
["y"] = "copy_to_clipboard", | |||
["x"] = "cut_to_clipboard", | |||
["p"] = "paste_from_clipboard", | |||
["c"] = "copy", -- takes text input for destination, also accepts the optional config.show_path option like "add": | |||
-- ["c"] = { | |||
-- "copy", | |||
-- config = { | |||
-- show_path = "none" -- "none", "relative", "absolute" | |||
-- } | |||
--} | |||
["m"] = "move", -- takes text input for destination, also accepts the optional config.show_path option like "add". | |||
["q"] = "close_window", | |||
["R"] = "refresh", | |||
["?"] = "show_help", | |||
["<"] = "prev_source", | |||
[">"] = "next_source", | |||
} | |||
}, | |||
nesting_rules = {}, | |||
filesystem = { | |||
filtered_items = { | |||
visible = false, -- when true, they will just be displayed differently than normal items | |||
hide_dotfiles = true, | |||
hide_gitignored = true, | |||
hide_hidden = true, -- only works on Windows for hidden files/directories | |||
hide_by_name = { | |||
--"node_modules" | |||
}, | |||
hide_by_pattern = { -- uses glob style patterns | |||
--"*.meta" | |||
}, | |||
never_show = { -- remains hidden even if visible is toggled to true | |||
--".DS_Store", | |||
--"thumbs.db" | |||
}, | |||
}, | |||
follow_current_file = true, -- This will find and focus the file in the active buffer every | |||
-- time the current file is changed while the tree is open. | |||
group_empty_dirs = false, -- when true, empty folders will be grouped together | |||
hijack_netrw_behavior = "open_default", -- netrw disabled, opening a directory opens neo-tree | |||
-- in whatever position is specified in window.position | |||
-- "open_current", -- netrw disabled, opening a directory opens within the | |||
-- window like netrw would, regardless of window.position | |||
-- "disabled", -- netrw left alone, neo-tree does not handle opening dirs | |||
use_libuv_file_watcher = false, -- This will use the OS level file watchers to detect changes | |||
-- instead of relying on nvim autocmd events. | |||
window = { | |||
mappings = { | |||
["<bs>"] = "navigate_up", | |||
["."] = "set_root", | |||
["H"] = "toggle_hidden", | |||
["/"] = "fuzzy_finder", | |||
["D"] = "fuzzy_finder_directory", | |||
["f"] = "filter_on_submit", | |||
["<c-x>"] = "clear_filter", | |||
["[g"] = "prev_git_modified", | |||
["]g"] = "next_git_modified", | |||
} | |||
} | |||
}, | |||
buffers = { | |||
follow_current_file = true, -- This will find and focus the file in the active buffer every | |||
-- time the current file is changed while the tree is open. | |||
group_empty_dirs = true, -- when true, empty folders will be grouped together | |||
show_unloaded = true, | |||
window = { | |||
mappings = { | |||
["bd"] = "buffer_delete", | |||
["<bs>"] = "navigate_up", | |||
["."] = "set_root", | |||
} | |||
}, | |||
}, | |||
git_status = { | |||
window = { | |||
position = "float", | |||
mappings = { | |||
["A"] = "git_add_all", | |||
["gu"] = "git_unstage_file", | |||
["ga"] = "git_add_file", | |||
["gr"] = "git_revert_file", | |||
["gc"] = "git_commit", | |||
["gp"] = "git_push", | |||
["gg"] = "git_commit_and_push", | |||
} | |||
} | |||
} | |||
}) | |||
vim.api.nvim_set_keymap('n', '<C-q>', '<Cmd>Neotree toggle<CR>', { noremap = true }) |
@ -1,3 +0,0 @@ | |||
vim.keymap.set('n', '<leader>c', require('osc52').copy_operator, { expr = true }) | |||
vim.keymap.set('n', '<leader>cc', '<leader>c_', { remap = true }) | |||
vim.keymap.set('v', '<leader>c', require('osc52').copy_visual) |
@ -1,7 +0,0 @@ | |||
vim.keymap.set('n', '<C-d>', function () | |||
if vim.bo.filetype ~= 'php' then | |||
return | |||
end | |||
vim.api.nvim_call_function("PhpDocSingle", {}) | |||
end, options) |
@ -1,19 +0,0 @@ | |||
local prettier = require("prettier") | |||
prettier.setup({ | |||
bin = 'prettier', | |||
filetypes = { | |||
"css", | |||
"graphql", | |||
"html", | |||
"javascript", | |||
"javascriptreact", | |||
"json", | |||
"less", | |||
"markdown", | |||
"scss", | |||
"typescript", | |||
"typescriptreact", | |||
"yaml", | |||
}, | |||
}) |
@ -1,106 +0,0 @@ | |||
local previewers = require('telescope.previewers') | |||
local previewers_utils = require('telescope.previewers.utils') | |||
local builtin = require('telescope.builtin') | |||
local sorters = require('telescope.sorters') | |||
local actions = require('telescope.actions') | |||
local max_size = 100000 | |||
local truncate_large_files = function(filepath, bufnr, opts) | |||
opts = opts or {} | |||
filepath = vim.fn.expand(filepath) | |||
vim.loop.fs_stat(filepath, function(_, stat) | |||
if not stat then return end | |||
if stat.size > max_size then | |||
local cmd = {"head", "-c", max_size, filepath} | |||
previewers_utils.job_maker(cmd, bufnr, opts) | |||
else | |||
previewers.buffer_previewer_maker(filepath, bufnr, opts) | |||
end | |||
end) | |||
end | |||
require('telescope').setup({ | |||
defaults = { | |||
file_sorter = sorters.get_fzy_sorter, | |||
prompt_prefix = ' >', | |||
color_devicons = true, | |||
buffer_previewer_maker = truncate_large_files, | |||
initial_mode = "insert", | |||
selection_strategy = "reset", | |||
sorting_strategy = "ascending", | |||
layout_strategy = "horizontal", | |||
layout_config = { | |||
horizontal = { | |||
prompt_position = "top", | |||
preview_width = 0.55, | |||
results_width = 0.8, | |||
}, | |||
vertical = { | |||
mirror = false, | |||
}, | |||
width = 0.87, | |||
height = 0.80, | |||
preview_cutoff = 120, | |||
}, | |||
path_display = { "truncate" }, | |||
winblend = 0, | |||
border = {}, | |||
borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" }, | |||
mappings = { | |||
i = { | |||
['<C-x>'] = false, | |||
['<C-q>'] = actions.send_to_qflist, | |||
}, | |||
}, | |||
}, | |||
}) | |||
function git_branches () | |||
builtin.git_branches({ | |||
attach_mappings = function(_, map) | |||
map("i", "<c-d>", actions.git_delete_branch) | |||
map("n", "<c-d>", actions.git_delete_branch) | |||
return true | |||
end, | |||
}) | |||
end | |||
function files () | |||
local ran, errorMessage = pcall(function() | |||
builtin.git_files({ show_untracked = true }) | |||
end) | |||
if not ran then | |||
builtin.find_files() | |||
end | |||
end | |||
local options = { noremap = true } | |||
vim.keymap.set('n', '<C-g>', builtin.live_grep, options) | |||
vim.keymap.set('n', '<C-p>', files, options) | |||
vim.keymap.set('n', '<leader>df', function() | |||
builtin.find_files({ | |||
prompt_title = "< VimRC >", | |||
cwd = vim.fn.expand('~/.config/nvim'), | |||
hidden = true, | |||
}) | |||
end, options) | |||
vim.keymap.set('n', '<leader>fb', builtin.buffers, options) | |||
vim.keymap.set('n', '<leader>fo', builtin.oldfiles, options) | |||
vim.keymap.set('n', '<leader>gr', builtin.lsp_references, options) | |||
vim.keymap.set("n", '<leader>gi', builtin.lsp_implementations, options) | |||
vim.keymap.set("n", '<leader>gT', builtin.lsp_type_definitions, options) | |||
vim.keymap.set('n', '<leader>m', builtin.marks, options) | |||
vim.keymap.set('n', '<leader>ch', builtin.command_history, options) | |||
vim.keymap.set('n', '<leader>gb', git_branches, options) | |||
vim.keymap.set('n', '<leader>gs', builtin.git_status, options) |
@ -1,13 +0,0 @@ | |||
require("tmux").setup({ | |||
copy_sync = { | |||
enable = true, | |||
}, | |||
navigation = { | |||
-- enables default keybindings (C-hjkl) for normal mode | |||
enable_default_keybindings = true, | |||
}, | |||
resize = { | |||
-- enables default keybindings (A-hjkl) for normal mode | |||
enable_default_keybindings = true, | |||
} | |||
}) |
@ -1,12 +0,0 @@ | |||
require('treesitter-context').setup{ | |||
enable = true, | |||
max_lines = 0, | |||
min_window_height = 0, | |||
line_numbers = true, | |||
multiline_threshold = 20, | |||
trim_scope = 'outer', | |||
mode = 'cursor', | |||
separator = nil, | |||
zindex = 20, | |||
on_attach = nil, | |||
} |
@ -1,24 +0,0 @@ | |||
require('nvim-treesitter.configs').setup { | |||
ensure_installed = { 'go', 'dart', 'php', 'javascript' }, | |||
-- Install parsers synchronously (only applied to `ensure_installed`) | |||
sync_install = false, | |||
-- Automatically install missing parsers when entering buffer | |||
auto_install = true, | |||
indent = { | |||
enable = true, | |||
}, | |||
highlight = { | |||
-- `false` will disable the whole extension | |||
enable = true, | |||
-- Setting this to true will run `:h syntax` and tree-sitter at the same time. | |||
-- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). | |||
-- Using this option may slow down your editor, and you may see some duplicate highlights. | |||
-- Instead of true it can also be a list of languages | |||
additional_vim_regex_highlighting = false, | |||
}, | |||
} |
@ -1 +0,0 @@ | |||
vim.keymap.set('n', '<leader>u', vim.cmd.UndotreeToggle) |
@ -1,19 +0,0 @@ | |||
local tabWidth = 4 | |||
function ToggleTabWidth() | |||
if tabWidth == 2 then | |||
vim.o.tabstop = 4 | |||
vim.o.softtabstop = 4 | |||
vim.o.shiftwidth = 4 | |||
tabWidth = 4 | |||
print('Set tab width to 4') | |||
return | |||
end | |||
vim.o.tabstop = 2 | |||
vim.o.softtabstop = 2 | |||
vim.o.shiftwidth = 2 | |||
tabWidth = 2 | |||
print('Set tab width to 2') | |||
end | |||
vim.keymap.set('n', '<leader>tt', ToggleTabWidth, { noremap = true }) |
@ -1,235 +0,0 @@ | |||
return require('packer').startup(function() | |||
-- Packer can manage itself | |||
use { 'wbthomason/packer.nvim' } | |||
use { | |||
'github/copilot.vim', | |||
config = function() | |||
require('config.copilot') | |||
end | |||
} | |||
use { | |||
'VonHeikemen/lsp-zero.nvim', | |||
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'}, | |||
}, | |||
config = function() | |||
require('config.lsp') | |||
end | |||
} | |||
use { | |||
'tpope/vim-fugitive', | |||
config = function() | |||
require('config.fugitive') | |||
end | |||
} | |||
use { 'shumphrey/fugitive-gitlab.vim' } | |||
use { 'nvim-lua/plenary.nvim' } | |||
use { | |||
'nvim-telescope/telescope.nvim', | |||
config = function() | |||
require('config.telescope') | |||
end | |||
} | |||
use { 'nvim-telescope/telescope-fzy-native.nvim'} | |||
use { 'nvim-treesitter/nvim-treesitter' } | |||
use { | |||
'nvim-treesitter/nvim-treesitter-context', | |||
config = function () | |||
require('config.treesitter-context') | |||
end | |||
} | |||
use { | |||
'theprimeagen/harpoon', | |||
config = function () | |||
require('config.harpoon') | |||
end | |||
} | |||
use { | |||
'mbbill/undotree', | |||
config = function () | |||
require('config.undotree') | |||
end | |||
} | |||
use { | |||
'lewis6991/gitsigns.nvim', | |||
config = function() | |||
require('config.gitsigns') | |||
end | |||
} | |||
use { | |||
'nvim-lualine/lualine.nvim', | |||
requires = { | |||
'kyazdani42/nvim-web-devicons', | |||
'nvim-lua/lsp-status.nvim', | |||
opt = true | |||
}, | |||
config = function() | |||
require('config.lualine') | |||
end | |||
} | |||
use { | |||
'nvim-neo-tree/neo-tree.nvim', | |||
branch = 'v2.x', | |||
requires = { | |||
'nvim-lua/plenary.nvim', | |||
'kyazdani42/nvim-web-devicons', | |||
'MunifTanjim/nui.nvim', | |||
}, | |||
config = function () | |||
require('config.nvim-neo-tree') | |||
end | |||
} | |||
-- use { | |||
-- 'glepnir/dashboard-nvim', | |||
-- event = 'VimEnter', | |||
-- config = function() | |||
-- require('config.dashboard') | |||
-- end, | |||
-- requires = {'nvim-tree/nvim-web-devicons'} | |||
-- } | |||
use { | |||
"eoh-bse/minintro.nvim", | |||
config = function() require("minintro").setup() end | |||
} | |||
use { | |||
'nvim-neotest/neotest', | |||
requires = { | |||
'nvim-lua/plenary.nvim', | |||
'nvim-treesitter/nvim-treesitter', | |||
'antoinemadec/FixCursorHold.nvim', | |||
-- Adapters | |||
'tovijaeschke/neotest-phpunit', | |||
'nvim-neotest/neotest-go', | |||
}, | |||
config = function() | |||
require('config.neotest') | |||
end, | |||
} | |||
use { | |||
'MunifTanjim/prettier.nvim', | |||
requires = { | |||
-- 'jose-elias-alvarez/null-ls.nvim', | |||
'neovim/nvim-lspconfig', | |||
}, | |||
config = function() | |||
-- require('config.null-ls') | |||
require('config.prettier') | |||
end | |||
} | |||
use { | |||
'rcarriga/nvim-notify', | |||
config = function () | |||
require('notify').setup({ | |||
background_color = '#000000', | |||
timeout = 3 | |||
}) | |||
end | |||
} | |||
-- CMD and search at the top | |||
-- use { | |||
-- 'folke/noice.nvim', | |||
-- requires = { | |||
-- 'MunifTanjim/nui.nvim', | |||
-- 'rcarriga/nvim-notify', | |||
-- }, | |||
-- config = function () | |||
-- require('config.noice') | |||
-- end | |||
-- } | |||
-- DB manager | |||
use { | |||
'kristijanhusak/vim-dadbod-ui', | |||
requires = { | |||
'tpope/vim-dadbod', | |||
}, | |||
config = function() | |||
require('config.dadbod') | |||
end | |||
} | |||
-- Copy to clipboard over ssh | |||
use { | |||
'ojroques/nvim-osc52', | |||
config = function() | |||
require('config.osc52') | |||
end | |||
} | |||
use { | |||
'numToStr/Comment.nvim', | |||
config = function() | |||
require('Comment').setup() | |||
end | |||
} | |||
-- Programming language specifics | |||
use { 'dart-lang/dart-vim-plugin' } | |||
use { 'ray-x/guihua.lua' } | |||
-- use { | |||
-- 'ray-x/go.nvim', | |||
-- config = function() | |||
-- require('config.go') | |||
-- end | |||
-- } | |||
-- Colorschemes | |||
use { | |||
'gruvbox-community/gruvbox', | |||
-- config = function () | |||
-- vim.cmd('colorscheme gruvbox') | |||
-- end | |||
} | |||
use { | |||
'folke/tokyonight.nvim', | |||
-- config = function () | |||
-- vim.cmd('colorscheme tokyonight-night') | |||
-- end | |||
} | |||
use { | |||
'catppuccin/nvim', | |||
as = 'catppuccin', | |||
config = function () | |||
vim.cmd('colorscheme catppuccin-mocha') | |||
end | |||
} | |||
end) |
@ -0,0 +1,4 @@ | |||
require('tovi.core.options') | |||
require('tovi.core.remaps') | |||
require('tovi.core.autocmd') | |||
@ -0,0 +1,95 @@ | |||
-- Don't copy "c" changes to primary register | |||
vim.keymap.set("n", "c", '"_c', { desc = "Prevent copying to primary register" }) | |||
-- Easily open splits | |||
vim.keymap.set("n", "<leader>hs", "<cmd>split<cr>", { desc = "Open horizontal spilt" }) | |||
vim.keymap.set("n", "<leader>vs", "<cmd>vsplit<cr>", { desc = "Open vertical spilt" }) | |||
-- Easily navigate splits | |||
vim.keymap.set("n", "<A-h>", "<C-w>h", { desc = "Move focus to split left" }) | |||
vim.keymap.set("n", "<A-j>", "<C-w>j", { desc = "Move focus to split down" }) | |||
vim.keymap.set("n", "<A-k>", "<C-w>k", { desc = "Move focus to split up" }) | |||
vim.keymap.set("n", "<A-l>", "<C-w>l", { desc = "Move focus to split right" }) | |||
-- Copy the entire file | |||
vim.keymap.set("n", "<leader>y", "ggyG<C-o>", { desc = "Copy the entire file to default register" }) | |||
-- Manage sessions | |||
vim.keymap.set("n", "<F5>", function() | |||
vim.cmd("mksession! ~/.cache//nvim/session/manual_session.vim") | |||
end, { desc = "Manually create session" }) | |||
vim.keymap.set("n", "<F6>", function() | |||
vim.cmd("source ~/.cache/nvim/session/manual_session.vim") | |||
end, { desc = "Restore manually created session" }) | |||
vim.keymap.set("n", "<F7>", function() | |||
vim.cmd("source ~/.cache/nvim/session/shutdown_session.vim") | |||
end, { desc = "Restore session automatically created on VimLeave" }) | |||
-- Navigating with guides | |||
vim.keymap.set( | |||
"n", | |||
"<leader><leader>", | |||
'<Esc>/<++><Enter>"_c4l', | |||
{ desc = "Find next <++> in file and enter insert mode" } | |||
) | |||
vim.keymap.set( | |||
"v", | |||
"<leader><leader>", | |||
'<Esc>/<++><Enter>"_c4l', | |||
{ desc = "Find next <++> in file and enter insert mode" } | |||
) | |||
-- Spell-check | |||
vim.keymap.set("n", "<leader>o", "<cmd>setlocal spell! spelllang=en_au<CR>", { desc = "Toggle spell check" }) | |||
-- Map Q to nop | |||
vim.keymap.set("n", "Q", "<nop>", { desc = "Remap Q to <nop> because Q is the worst" }) | |||
-- Keep highlight when indenting | |||
vim.keymap.set("v", "<", "<gv", { desc = "Keep highlight when indenting" }) | |||
vim.keymap.set("v", ">", ">gv", { desc = "Keep highlight when indenting" }) | |||
-- Easily navigate tabs | |||
vim.keymap.set("n", "<A-1>", "1gt", { desc = "Navigate to tab 2" }) | |||
vim.keymap.set("n", "<A-2>", "2gt", { desc = "Navigate to tab 3" }) | |||
vim.keymap.set("n", "<A-3>", "3gt", { desc = "Navigate to tab 4" }) | |||
vim.keymap.set("n", "<A-4>", "4gt", { desc = "Navigate to tab 5" }) | |||
vim.keymap.set("n", "<A-5>", "5gt", { desc = "Navigate to tab 6" }) | |||
vim.keymap.set("n", "<A-6>", "6gt", { desc = "Navigate to tab 7" }) | |||
vim.keymap.set("n", "<A-7>", "7gt", { desc = "Navigate to tab 8" }) | |||
vim.keymap.set("n", "<A-8>", "8gt", { desc = "Navigate to tab 9" }) | |||
vim.keymap.set("n", "<A-9>", "9gt", { desc = "Navigate to tab 10" }) | |||
-- TODO: Move these into fugitive config | |||
-- vim.keymap.set('n', '<leader>gp', '<cmd>Git push<CR>', options) | |||
-- vim.keymap.set('n', '<leader>gP', '<cmd>Git pull<CR>', options) | |||
-- vim.keymap.set('n', '<leader>ga', '<cmd>Git add .<CR>', options) | |||
-- vim.keymap.set('n', '<leader>gA', '<cmd>Git add<CR>', options) | |||
-- vim.keymap.set('n', '<leader>gc', '<cmd>Git commit<CR>', options) | |||
-- vim.keymap.set('n', '<leader>gC', '<cmd>Git commit -a<CR>', options) | |||
vim.keymap.set("x", "<leader>p", '"_dP', { desc = "Delete into black hole register" }) | |||
vim.keymap.set("n", "<leader>d", '"_d', { desc = "Delete into black hole register" }) | |||
vim.keymap.set("v", "<leader>d", '"_d', { desc = "Delete into black hole register" }) | |||
-- Keep page scroll centered | |||
vim.keymap.set("n", "<C-d>", "<C-d>zz", { desc = "Scroll down half page" }) | |||
vim.keymap.set("n", "<C-u>", "<C-u>zz", { desc = "Scroll up half page" }) | |||
-- Keep cursor centered | |||
vim.keymap.set("n", "n", "nzzzv", { desc = "Next search result" }) | |||
vim.keymap.set("n", "N", "Nzzzv", { desc = "Previous search result" }) | |||
-- Keep cursor centered when jumping through quickfix list | |||
vim.keymap.set("n", "<C-k>", "<cmd>cnext<CR>zz", { desc = "Next item in quickfix list" }) | |||
vim.keymap.set("n", "<C-j>", "<cmd>cprev<CR>zz", { desc = "Previous item in quickfix list" }) | |||
vim.keymap.set("n", "<leader>k", "<cmd>lnext<CR>zz", { desc = "Next item in quickfix list" }) | |||
vim.keymap.set("n", "<leader>j", "<cmd>cprev<CR>zz", { desc = "Previous item in quickfix list" }) | |||
-- Easily run global search and replace | |||
vim.keymap.set( | |||
"n", | |||
"<leader>s", | |||
[[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]], | |||
{ desc = "Search and replace for word under cursor" } | |||
) |
@ -0,0 +1,28 @@ | |||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" | |||
if not vim.loop.fs_stat(lazypath) then | |||
vim.fn.system({ | |||
"git", | |||
"clone", | |||
"--filter=blob:none", | |||
"https://github.com/folke/lazy.nvim.git", | |||
"--branch=stable", -- latest stable release | |||
lazypath, | |||
}) | |||
end | |||
vim.opt.rtp:prepend(lazypath) | |||
require("lazy").setup({ | |||
{ import = "tovi.plugins" }, | |||
{ import = "tovi.plugins.lsp" }, | |||
}, { | |||
install = { | |||
colorscheme = { "nightfly" }, | |||
}, | |||
checker = { | |||
enabled = true, | |||
notify = false, | |||
}, | |||
change_detection = { | |||
notify = false, | |||
}, | |||
}) |
@ -0,0 +1,5 @@ | |||
return { | |||
"NvChad/nvim-colorizer.lua", | |||
event = { "BufReadPre", "BufNewFile" }, | |||
config = true, | |||
} |
@ -0,0 +1,9 @@ | |||
return { | |||
"bluz71/vim-nightfly-colors", | |||
name = "nightfly", | |||
lazy = false, | |||
priority = 1000, | |||
config = function () | |||
vim.cmd([[ colorscheme nightfly ]]) | |||
end | |||
} |
@ -0,0 +1,5 @@ | |||
return { | |||
"numToStr/Comment.nvim", | |||
event = { "BufReadPre", "BufNewFile" }, | |||
config = true, | |||
} |
@ -0,0 +1,7 @@ | |||
return { | |||
"github/copilot.vim", | |||
config = function() | |||
vim.api.nvim_set_keymap("i", ",,", 'copilot#Accept("<CR>")', { expr = true, silent = true }) | |||
vim.api.nvim_set_keymap("n", "<leader>cs", "<cmd>Copilot panel<CR>", { noremap = true }) | |||
end, | |||
} |
@ -0,0 +1,4 @@ | |||
return { | |||
"stevearc/dressing.nvim", | |||
event = "VeryLazy", | |||
} |
@ -0,0 +1,13 @@ | |||
return { | |||
"tpope/vim-fugitive", | |||
dependencies = { | |||
"shumphrey/fugitive-gitlab.vim", | |||
}, | |||
config = function() | |||
vim.opt.diffopt = vim.opt.diffopt + "vertical" | |||
vim.opt.display = vim.opt.display + "lastline" | |||
vim.api.nvim_set_keymap("n", "<leader>gl", ":GBrowse<CR>", { noremap = true }) | |||
vim.cmd([[ let g:fugitive_gitlab_domains = {"ssh://code.codium.com.au": "https://code.codium.com.au"} ]]) | |||
end, | |||
} |
@ -0,0 +1,5 @@ | |||
return { | |||
"lewis6991/gitsigns.nvim", | |||
event = { "BufReadPre", "BufNewFile" }, | |||
config = true, | |||
} |
@ -0,0 +1,41 @@ | |||
return { | |||
"ThePrimeagen/harpoon", | |||
dependencies = { | |||
"nvim-lua/plenary.nvim", | |||
}, | |||
config = function() | |||
local mark = require("harpoon.mark") | |||
local ui = require("harpoon.ui") | |||
-- set keymaps | |||
local keymap = vim.keymap -- for conciseness | |||
keymap.set("n", "<leader>a", mark.add_file, { desc = "Mark file with harpoon" }) | |||
keymap.set("n", "<leader>th", mark.toggle_file, { desc = "Toggle file with harpoon" }) | |||
keymap.set("n", "<C-e>", ui.toggle_quick_menu, { desc = "Toggle quick menu for harpoon" }) | |||
keymap.set("n", "<C-,>", function() | |||
ui.nav_prev() | |||
end, { desc = "Go to previous harpoon mark" }) | |||
keymap.set("n", "<C-.>", function() | |||
ui.nav_next() | |||
end, { desc = "Go to next harpoon mark" }) | |||
keymap.set("n", "<C-h>", function() | |||
ui.nav_file(1) | |||
end, { desc = "Go to first harpoon file" }) | |||
keymap.set("n", "<C-j>", function() | |||
ui.nav_file(2) | |||
end, { desc = "Go to second harpoon file" }) | |||
keymap.set("n", "<C-k>", function() | |||
ui.nav_file(3) | |||
end, { desc = "Go to third harpoon file" }) | |||
keymap.set("n", "<C-l>", function() | |||
ui.nav_file(4) | |||
end, { desc = "Go to fourth harpoon file" }) | |||
end, | |||
} |
@ -0,0 +1,8 @@ | |||
return { | |||
"nvim-lua/plenary.nvim", -- lua functions that many plugins use | |||
-- Programming language specific plugins | |||
"ray-x/go.nvim", | |||
"ray-x/guihua.lua", | |||
"dart-lang/dart-vim-plugin", | |||
} |
@ -0,0 +1,167 @@ | |||
return { | |||
"neovim/nvim-lspconfig", | |||
event = { "BufReadPre", "BufNewFile" }, | |||
dependencies = { | |||
"hrsh7th/cmp-nvim-lsp", | |||
{ "antosha417/nvim-lsp-file-operations", config = true }, | |||
}, | |||
config = function() | |||
-- import lspconfig plugin | |||
local lspconfig = require("lspconfig") | |||
-- import cmp-nvim-lsp plugin | |||
local cmp_nvim_lsp = require("cmp_nvim_lsp") | |||
local keymap = vim.keymap -- for conciseness | |||
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 | |||
-- used to enable autocompletion (assign to every lsp server config) | |||
local capabilities = cmp_nvim_lsp.default_capabilities() | |||
-- Change the Diagnostic symbols in the sign column (gutter) | |||
-- (not in youtube nvim video) | |||
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 | |||
-- configure html server | |||
lspconfig["html"].setup({ | |||
capabilities = capabilities, | |||
on_attach = on_attach, | |||
}) | |||
-- configure typescript server with plugin | |||
lspconfig["tsserver"].setup({ | |||
capabilities = capabilities, | |||
on_attach = on_attach, | |||
}) | |||
-- configure css server | |||
lspconfig["cssls"].setup({ | |||
capabilities = capabilities, | |||
on_attach = on_attach, | |||
}) | |||
-- configure tailwindcss server | |||
lspconfig["tailwindcss"].setup({ | |||
capabilities = capabilities, | |||
on_attach = on_attach, | |||
}) | |||
-- configure svelte server | |||
lspconfig["svelte"].setup({ | |||
capabilities = capabilities, | |||
on_attach = function(client, bufnr) | |||
on_attach(client, bufnr) | |||
vim.api.nvim_create_autocmd("BufWritePost", { | |||
pattern = { "*.js", "*.ts" }, | |||
callback = function(ctx) | |||
if client.name == "svelte" then | |||
client.notify("$/onDidChangeTsOrJsFile", { uri = ctx.file }) | |||
end | |||
end, | |||
}) | |||
end, | |||
}) | |||
-- configure prisma orm server | |||
lspconfig["prismals"].setup({ | |||
capabilities = capabilities, | |||
on_attach = on_attach, | |||
}) | |||
-- configure graphql language server | |||
lspconfig["graphql"].setup({ | |||
capabilities = capabilities, | |||
on_attach = on_attach, | |||
filetypes = { "graphql", "gql", "svelte", "typescriptreact", "javascriptreact" }, | |||
}) | |||
-- configure emmet language server | |||
lspconfig["emmet_ls"].setup({ | |||
capabilities = capabilities, | |||
on_attach = on_attach, | |||
filetypes = { "html", "typescriptreact", "javascriptreact", "css", "sass", "scss", "less", "svelte" }, | |||
}) | |||
-- configure php server | |||
lspconfig["intelephense"].setup({ | |||
capabilities = capabilities, | |||
on_attach = on_attach, | |||
}) | |||
-- configure python server | |||
lspconfig["pyright"].setup({ | |||
capabilities = capabilities, | |||
on_attach = on_attach, | |||
}) | |||
-- configure lua server (with special settings) | |||
lspconfig["lua_ls"].setup({ | |||
capabilities = capabilities, | |||
on_attach = on_attach, | |||
settings = { -- custom settings for lua | |||
Lua = { | |||
-- make the language server recognize "vim" global | |||
diagnostics = { | |||
globals = { "vim" }, | |||
}, | |||
workspace = { | |||
-- make language server aware of runtime files | |||
library = { | |||
[vim.fn.expand("$VIMRUNTIME/lua")] = true, | |||
[vim.fn.stdpath("config") .. "/lua"] = true, | |||
}, | |||
}, | |||
}, | |||
}, | |||
}) | |||
end, | |||
} |
@ -0,0 +1,58 @@ | |||
return { | |||
"williamboman/mason.nvim", | |||
dependencies = { | |||
"williamboman/mason-lspconfig.nvim", | |||
"jayp0521/mason-null-ls.nvim", | |||
}, | |||
config = function() | |||
-- import mason | |||
local mason = require("mason") | |||
-- import mason-lspconfig | |||
local mason_lspconfig = require("mason-lspconfig") | |||
-- import mason-null-ls | |||
local mason_null_ls = require("mason-null-ls") | |||
-- enable mason and configure icons | |||
mason.setup({ | |||
ui = { | |||
icons = { | |||
package_installed = "✓", | |||
package_pending = "➜", | |||
package_uninstalled = "✗", | |||
}, | |||
}, | |||
}) | |||
mason_lspconfig.setup({ | |||
-- list of servers for mason to install | |||
ensure_installed = { | |||
"tsserver", | |||
"html", | |||
"cssls", | |||
"tailwindcss", | |||
"svelte", | |||
"lua_ls", | |||
"graphql", | |||
"emmet_ls", | |||
"prismals", | |||
"pyright", | |||
"intelephense", | |||
}, | |||
-- auto-install configured servers (with lspconfig) | |||
automatic_installation = true, -- not the same as ensure_installed | |||
}) | |||
mason_null_ls.setup({ | |||
-- list of formatters & linters for mason to install | |||
ensure_installed = { | |||
"prettier", -- ts/js formatter | |||
"stylua", -- lua formatter | |||
"eslint_d", -- ts/js linter | |||
}, | |||
-- auto-install configured servers (with lspconfig) | |||
automatic_installation = true, | |||
}) | |||
end, | |||
} |
@ -0,0 +1,56 @@ | |||
return { | |||
"jose-elias-alvarez/null-ls.nvim", -- configure formatters & linters | |||
event = { "BufReadPre", "BufNewFile" }, | |||
config = function() | |||
-- import null-ls plugin | |||
local null_ls = require("null-ls") | |||
local null_ls_utils = require("null-ls.utils") | |||
-- for conciseness | |||
local formatting = null_ls.builtins.formatting -- to setup formatters | |||
local diagnostics = null_ls.builtins.diagnostics -- to setup linters | |||
-- to setup format on save | |||
local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) | |||
-- configure null_ls | |||
null_ls.setup({ | |||
-- add package.json as identifier for root (for typescript monorepos) | |||
root_dir = null_ls_utils.root_pattern(".null-ls-root", "Makefile", ".git", "package.json"), | |||
-- setup formatters & linters | |||
sources = { | |||
-- to disable file types use | |||
-- "formatting.prettier.with({disabled_filetypes: {}})" (see null-ls docs) | |||
formatting.prettier.with({ | |||
extra_filetypes = { "svelte" }, | |||
}), -- js/ts formatter | |||
formatting.stylua, -- lua formatter | |||
diagnostics.eslint_d.with({ -- js/ts linter | |||
condition = function(utils) | |||
return utils.root_has_file({ ".eslintrc.js", ".eslintrc.cjs" }) -- only enable if root has .eslintrc.js or .eslintrc.cjs | |||
end, | |||
}), | |||
}, | |||
-- configure format on save | |||
on_attach = function(current_client, bufnr) | |||
if current_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() | |||
vim.lsp.buf.format({ | |||
filter = function(client) | |||
-- only use null-ls for formatting instead of lsp server | |||
return client.name == "null-ls" | |||
end, | |||
bufnr = bufnr, | |||
}) | |||
end, | |||
}) | |||
end | |||
end, | |||
}) | |||
end, | |||
} |
@ -0,0 +1,71 @@ | |||
return { | |||
"nvim-lualine/lualine.nvim", | |||
dependencies = { "nvim-tree/nvim-web-devicons" }, | |||
config = function() | |||
local lualine = require("lualine") | |||
local lazy_status = require("lazy.status") -- to configure lazy pending updates count | |||
local colors = { | |||
blue = "#65D1FF", | |||
green = "#3EFFDC", | |||
violet = "#FF61EF", | |||
yellow = "#FFDA7B", | |||
red = "#FF4A4A", | |||
fg = "#c3ccdc", | |||
bg = "#112638", | |||
inactive_bg = "#2c3043", | |||
} | |||
local my_lualine_theme = { | |||
normal = { | |||
a = { bg = colors.blue, fg = colors.bg, gui = "bold" }, | |||
b = { bg = colors.bg, fg = colors.fg }, | |||
c = { bg = colors.bg, fg = colors.fg }, | |||
}, | |||
insert = { | |||
a = { bg = colors.green, fg = colors.bg, gui = "bold" }, | |||
b = { bg = colors.bg, fg = colors.fg }, | |||
c = { bg = colors.bg, fg = colors.fg }, | |||
}, | |||
visual = { | |||
a = { bg = colors.violet, fg = colors.bg, gui = "bold" }, | |||
b = { bg = colors.bg, fg = colors.fg }, | |||
c = { bg = colors.bg, fg = colors.fg }, | |||
}, | |||
command = { | |||
a = { bg = colors.yellow, fg = colors.bg, gui = "bold" }, | |||
b = { bg = colors.bg, fg = colors.fg }, | |||
c = { bg = colors.bg, fg = colors.fg }, | |||
}, | |||
replace = { | |||
a = { bg = colors.red, fg = colors.bg, gui = "bold" }, | |||
b = { bg = colors.bg, fg = colors.fg }, | |||
c = { bg = colors.bg, fg = colors.fg }, | |||
}, | |||
inactive = { | |||
a = { bg = colors.inactive_bg, fg = colors.semilightgray, gui = "bold" }, | |||
b = { bg = colors.inactive_bg, fg = colors.semilightgray }, | |||
c = { bg = colors.inactive_bg, fg = colors.semilightgray }, | |||
}, | |||
} | |||
-- configure lualine with modified theme | |||
lualine.setup({ | |||
options = { | |||
theme = my_lualine_theme, | |||
}, | |||
sections = { | |||
lualine_x = { | |||
{ | |||
lazy_status.updates, | |||
cond = lazy_status.has_updates, | |||
color = { fg = "#ff9e64" }, | |||
}, | |||
{ "encoding" }, | |||
{ "fileformat" }, | |||
{ "filetype" }, | |||
}, | |||
}, | |||
}) | |||
end, | |||
} |
@ -0,0 +1,4 @@ | |||
return { | |||
"eoh-bse/minintro.nvim", | |||
config = true, | |||
} |
@ -0,0 +1,52 @@ | |||
return { | |||
"nvim-neotest/neotest", | |||
dependencies = { | |||
"nvim-lua/plenary.nvim", | |||
"nvim-treesitter/nvim-treesitter", | |||
"antoinemadec/FixCursorHold.nvim", | |||
-- Adapters | |||
"tovijaeschke/neotest-phpunit", | |||
"nvim-neotest/neotest-go", | |||
}, | |||
config = function() | |||
local neotest = require("neotest") | |||
local keymap = vim.keymap | |||
keymap.set("n", "<leader>tr", function() | |||
neotest.run.run() | |||
end, { desc = "Run neotest on current function" }) | |||
keymap.set("n", "<leader>tR", function() | |||
neotest.run.run_last() | |||
end, { desc = "Run neotest on most recent test" }) | |||
keymap.set("n", "<leader>tS", function() | |||
neotest.run.stop() | |||
end, { desc = "Stop running tests" }) | |||
keymap.set("n", "<leader>ta", function() | |||
neotest.run.attach() | |||
end, { desc = "Attach to the currently running test" }) | |||
keymap.set("n", "<leader>to", function() | |||
neotest.output.open() | |||
end, { desc = "Open the output of the test" }) | |||
keymap.set("n", "<leader>ts", function() | |||
neotest.summary.toggle() | |||
end, { desc = "Toggle neotest summary pane" }) | |||
neotest.setup({ | |||
adapters = { | |||
require("neotest-phpunit")({ | |||
root_files = { "phpunit.xml", "composer.json" }, | |||
phpunit_cmd = { "docker-compose", "exec", "fpm", "./vendor/bin/phpunit" }, | |||
filter_dirs = { "vendor" }, | |||
mapped_docker_dir = "/var/www", | |||
append_to_cwd = "/api", | |||
}), | |||
}, | |||
}) | |||
end, | |||
} |
@ -0,0 +1,90 @@ | |||
return { | |||
"hrsh7th/nvim-cmp", | |||
event = "InsertEnter", | |||
dependencies = { | |||
"hrsh7th/cmp-buffer", -- source for text in buffer | |||
"hrsh7th/cmp-path", -- source for file system paths | |||
"L3MON4D3/LuaSnip", -- snippet engine | |||
"saadparwaiz1/cmp_luasnip", -- for autocompletion | |||
"rafamadriz/friendly-snippets", -- useful snippets | |||
"onsails/lspkind.nvim", -- vs-code like pictograms | |||
}, | |||
config = function() | |||
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() | |||
local has_words_before = function() | |||
local line, col = unpack(vim.api.nvim_win_get_cursor(0)) | |||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match "%s" == nil | |||
end | |||
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 = true }), | |||
["<Tab>"] = cmp.mapping( | |||
function(fallback) | |||
if cmp.visible() then | |||
cmp.select_next_item() | |||
elseif luasnip.expand_or_jumpable() then | |||
luasnip.expand_or_jump() | |||
elseif has_words_before() then | |||
cmp.complete() | |||
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 for autocompletion | |||
sources = cmp.config.sources({ | |||
{ name = "nvim_lsp" }, | |||
{ 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 = "...", | |||
}), | |||
}, | |||
}) | |||
end, | |||
} |
@ -0,0 +1,64 @@ | |||
return { | |||
"nvim-tree/nvim-tree.lua", | |||
dependancies = { | |||
"nvim-tree/nvim-web-devicons" | |||
}, | |||
config = function() | |||
local nvimtree = require("nvim-tree") | |||
-- recommended settings from nvim-tree documentation | |||
vim.g.loaded_netrw = 1 | |||
vim.g.loaded_netrwPlugin = 1 | |||
-- change color for arrows in tree to light blue | |||
vim.cmd([[ highlight NvimTreeIndentMarker guifg=#3FC5FF ]]) | |||
-- configure nvim-tree | |||
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", "<C-q>", "<cmd>NvimTreeToggle<CR>", { desc = "Toggle file explorer" }) -- toggle file explorer | |||
keymap.set("n", "<leader>ee", "<cmd>NvimTreeToggle<CR>", { desc = "Toggle file explorer" }) -- toggle file explorer | |||
keymap.set("n", "<leader>ef", "<cmd>NvimTreeFindFileToggle<CR>", { desc = "Toggle file explorer on current file" }) -- toggle file explorer on current file | |||
keymap.set("n", "<leader>ec", "<cmd>NvimTreeCollapse<CR>", { desc = "Collapse file explorer" }) -- collapse file explorer | |||
keymap.set("n", "<leader>er", "<cmd>NvimTreeRefresh<CR>", { desc = "Refresh file explorer" }) -- refresh file explorer | |||
end, | |||
} |
@ -0,0 +1,53 @@ | |||
return { | |||
{ | |||
"nvim-treesitter/nvim-treesitter", | |||
event = { "BufReadPre", "BufNewFile" }, | |||
build = ":TSUpdate", | |||
dependencies = { | |||
"windwp/nvim-ts-autotag", | |||
}, | |||
config = function() | |||
-- import nvim-treesitter plugin | |||
local treesitter = require("nvim-treesitter.configs") | |||
-- configure treesitter | |||
treesitter.setup({ -- enable syntax highlighting | |||
highlight = { | |||
enable = true, | |||
}, | |||
-- enable indentation | |||
indent = { enable = true }, | |||
-- enable autotagging (w/ nvim-ts-autotag plugin) | |||
autotag = { enable = true }, | |||
-- ensure these language parsers are installed | |||
ensure_installed = { | |||
"json", | |||
"javascript", | |||
"typescript", | |||
"tsx", | |||
"yaml", | |||
"html", | |||
"css", | |||
"prisma", | |||
"markdown", | |||
"markdown_inline", | |||
"svelte", | |||
"graphql", | |||
"bash", | |||
"lua", | |||
"vim", | |||
"dockerfile", | |||
"gitignore", | |||
"php", | |||
}, | |||
-- enable nvim-ts-context-commentstring plugin for commenting tsx and jsx | |||
context_commentstring = { | |||
enable = true, | |||
enable_autocmd = false, | |||
}, | |||
-- auto install above language parsers | |||
auto_install = true, | |||
}) | |||
end, | |||
}, | |||
} |
@ -0,0 +1,118 @@ | |||
return { | |||
"nvim-telescope/telescope.nvim", | |||
branch = "0.1.x", | |||
dependencies = { | |||
"nvim-lua/plenary.nvim", | |||
{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" }, | |||
"nvim-tree/nvim-web-devicons", | |||
}, | |||
config = function() | |||
local telescope = require("telescope") | |||
local actions = require("telescope.actions") | |||
local previewers = require("telescope.previewers") | |||
local previewers_utils = require("telescope.previewers.utils") | |||
local sorters = require("telescope.sorters") | |||
local builtin = require("telescope.builtin") | |||
local max_size = 100000 | |||
local truncate_large_files = function(filepath, bufnr, opts) | |||
opts = opts or {} | |||
filepath = vim.fn.expand(filepath) | |||
vim.loop.fs_stat(filepath, function(_, stat) | |||
if not stat then | |||
return | |||
end | |||
if stat.size > max_size then | |||
local cmd = { "head", "-c", max_size, filepath } | |||
previewers_utils.job_maker(cmd, bufnr, opts) | |||
else | |||
previewers.buffer_previewer_maker(filepath, bufnr, opts) | |||
end | |||
end) | |||
end | |||
telescope.setup({ | |||
defaults = { | |||
file_sorter = sorters.get_fzy_sorter, | |||
prompt_prefix = " >", | |||
color_devicons = true, | |||
buffer_previewer_maker = truncate_large_files, | |||
initial_mode = "insert", | |||
selection_strategy = "reset", | |||
sorting_strategy = "ascending", | |||
layout_strategy = "horizontal", | |||
layout_config = { | |||
horizontal = { | |||
prompt_position = "top", | |||
preview_width = 0.55, | |||
results_width = 0.8, | |||
}, | |||
vertical = { | |||
mirror = false, | |||
}, | |||
width = 0.87, | |||
height = 0.80, | |||
preview_cutoff = 120, | |||
}, | |||
path_display = { "truncate" }, | |||
winblend = 0, | |||
border = {}, | |||
borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" }, | |||
mappings = { | |||
i = { | |||
["<C-k>"] = actions.move_selection_previous, -- move to prev result | |||
["<C-j>"] = actions.move_selection_next, -- move to next result | |||
["<C-q>"] = actions.send_selected_to_qflist + actions.open_qflist, | |||
}, | |||
}, | |||
}, | |||
}) | |||
telescope.load_extension("fzf") | |||
local git_branches = function() | |||
builtin.git_branches({ | |||
attach_mappings = function(_, map) | |||
map("i", "<c-d>", actions.git_delete_branch) | |||
map("n", "<c-d>", actions.git_delete_branch) | |||
return true | |||
end, | |||
}) | |||
end | |||
local find_files = function() | |||
local ran, errorMessage = pcall(function() | |||
builtin.git_files({ show_untracked = true }) | |||
end) | |||
if not ran then | |||
builtin.find_files() | |||
end | |||
end | |||
-- set keymaps | |||
local keymap = vim.keymap -- for conciseness | |||
keymap.set("n", "<C-g>", builtin.live_grep, { desc = "Live grep over project files." }) | |||
keymap.set("n", "<C-p>", find_files, { desc = "Fuzzy find files in cwd" }) | |||
keymap.set("n", "<leader>fb", builtin.buffers, { desc = "Fuzzy find open buffers" }) | |||
keymap.set("n", "<leader>fo", builtin.oldfiles, { desc = "Fuzzy find recently opened files" }) | |||
keymap.set("n", "<leader>m", builtin.marks, { desc = "Fuzzy find marks" }) | |||
keymap.set("n", "<leader>ch", builtin.command_history, { desc = "Fuzzy find recent commands" }) | |||
keymap.set("n", "<leader>gb", git_branches, { desc = "Fuzzy find git branches" }) | |||
keymap.set("n", "<leader>gs", builtin.git_status, { desc = "Fuzzy find current git status" }) | |||
keymap.set("n", "<leader>df", function() | |||
builtin.find_files({ | |||
prompt_title = "< VimRC >", | |||
cwd = vim.fn.expand("~/.config/nvim"), | |||
hidden = true, | |||
}) | |||
end, { desc = "Find neovim config files" }) | |||
end, | |||
} |
@ -0,0 +1,6 @@ | |||
return { | |||
"mbbill/undotree", | |||
config = function() | |||
vim.keymap.set("n", "<leader>u", vim.cmd.UndotreeToggle) | |||
end, | |||
} |
@ -0,0 +1,13 @@ | |||
return { | |||
"folke/which-key.nvim", | |||
event = "VeryLazy", | |||
init = function() | |||
vim.o.timeout = true | |||
vim.o.timeoutlen = 500 | |||
end, | |||
opts = { | |||
-- your configuration comes here | |||
-- or leave it empty to use the default settings | |||
-- refer to the configuration section below | |||
}, | |||
} |
@ -1,37 +0,0 @@ | |||
_G.dump = function(...) | |||
print(vim.inspect(...)) | |||
end | |||
_G.prequire = function(...) | |||
local status, lib = pcall(require, ...) | |||
if status then | |||
return lib | |||
end | |||
return nil | |||
end | |||
local M = {} | |||
function M.t(str) | |||
return vim.api.nvim_replace_termcodes(str, true, true, true) | |||
end | |||
function M.log(msg, hl, name) | |||
name = name or "Neovim" | |||
hl = hl or "Todo" | |||
vim.api.nvim_echo({ { name .. ": ", hl }, { msg } }, true, {}) | |||
end | |||
function M.warn(msg, name) | |||
vim.notify(msg, vim.log.levels.WARN, { title = name }) | |||
end | |||
function M.error(msg, name) | |||
vim.notify(msg, vim.log.levels.ERROR, { title = name }) | |||
end | |||
function M.info(msg, name) | |||
vim.notify(msg, vim.log.levels.INFO, { title = name }) | |||
end | |||
return M |