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 | |||||