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 |