diff --git a/private_dot_config/nvim/lua/plugins/cmp.lua b/private_dot_config/nvim/lua/plugins/cmp.lua new file mode 100644 index 0000000..03c08cb --- /dev/null +++ b/private_dot_config/nvim/lua/plugins/cmp.lua @@ -0,0 +1,77 @@ +return { + 'hrsh7th/cmp-buffer', -- nvim-cmp source for buffer words + 'hrsh7th/cmp-path', -- completion pathname + 'hrsh7th/cmp-nvim-lsp', -- nvim-cmp source for neovim's built-in LSP + { + 'hrsh7th/nvim-cmp', -- Completion + config = function() + local cmp = require 'cmp' + local lspkind = require 'lspkind' + local luasnip = require 'luasnip' + + local has_words_before = function() + if vim.api.nvim_buf_get_option(0, "buftype") == "prompt" then return false end + + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 and vim.api.nvim_buf_get_text(0, line-1, 0, line-1, col, {})[1]:match("^%s*$") == nil + end + + cmp.setup({ + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert({ + [""] = vim.schedule_wrap(function(fallback) + if cmp.visible() and has_words_before() then + cmp.select_next_item({ behavior = cmp.SelectBehavior.Select }) + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end), + [""] = 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" }), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.close(), + [''] = cmp.mapping.confirm({ + behavior = cmp.ConfirmBehavior.Replace, + select = true + }), + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { + name = 'buffer', + option = { + get_bufnrs = function () + return vim.api.nvim_list_bufs() + end + } + }, + { name = 'path' }, + { name = 'luasnip' } + }), + formatting = { + format = lspkind.cmp_format({ with_text = false, maxwidth = 50 }) + } + }) + + vim.cmd [[ + set completeopt=menuone,noinsert,noselect + highlight! default link CmpItemKind CmpItemMenuDefault + ]] + end, + }, +} diff --git a/private_dot_config/nvim/lua/plugins/coding.lua b/private_dot_config/nvim/lua/plugins/coding.lua new file mode 100644 index 0000000..82a1288 --- /dev/null +++ b/private_dot_config/nvim/lua/plugins/coding.lua @@ -0,0 +1,73 @@ +return { + { + "numToStr/Comment.nvim", + config = function() + require('Comment').setup() + end, + }, + { + "mhartington/formatter.nvim", + config = function() + local util = require "formatter.util" + -- Provides the Format, FormatWrite, FormatLock, and FormatWriteLock commands + require("formatter").setup { + -- Enable or disable logging + logging = true, + -- Set the log level + log_level = vim.log.levels.WARN, + -- All formatter configurations are opt-in + filetype = { + ruby = { + function() + return { + exe = 'bundle exec rubocop', + args = { + '--fix-layout', + '--stdin', + util.escape_path(util.get_current_buffer_file_name()), + '--format', + 'files', + '|', + "awk 'f; /^====================$/{f=1}'", + }, + stdin = true, + } + end + } + } + } + end, + }, + { + "AndrewRadev/splitjoin.vim" + }, + { + "RRethy/vim-illuminate" + }, + { + "ap/vim-css-color" + }, + { + "windwp/nvim-autopairs", + config = function() + require('nvim-autopairs').setup({ + disable_filetype = { "TelescopePrompt" , "vim" }, + }) + end + }, + { + "bronson/vim-trailing-whitespace", + }, + { + "vim-test/vim-test", + }, + { + "tpope/vim-surround", + }, + { + "Raimondi/delimitMate", + }, + { + "nvim-lua/plenary.nvim", + }, +} diff --git a/private_dot_config/nvim/lua/plugins/git.lua b/private_dot_config/nvim/lua/plugins/git.lua new file mode 100644 index 0000000..ff28e22 --- /dev/null +++ b/private_dot_config/nvim/lua/plugins/git.lua @@ -0,0 +1,41 @@ +return { + { + 'f-person/git-blame.nvim', + config = function() + require('gitblame').setup { + enabled = true, + display_virtual_text = false, + message_template = '', + date_format = '%r' + } + end, + }, + { + 'lewis6991/gitsigns.nvim', -- git graphic helpers + config = function() + require('gitsigns').setup() + end, + }, + { + 'akinsho/git-conflict.nvim', + config = function() + require('git-conflict').setup { + default_commands = true, -- disable commands created by this plugin + disable_diagnostics = false, -- This will disable the diagnostics in a buffer whilst it is conflicted + list_opener = 'copen', -- command or function to open the conflicts list + highlights = { -- They must have background color, otherwise the default color will be used + incoming = 'DiffAdd', + current = 'DiffText', + }, + default_mappings = { + ours = 'o', + theirs = 't', + none = '0', + both = 'b', + next = 'n', + prev = 'p', + }, + } + end, + }, +} diff --git a/private_dot_config/nvim/lua/plugins/graphql.lua b/private_dot_config/nvim/lua/plugins/graphql.lua new file mode 100644 index 0000000..a3cf938 --- /dev/null +++ b/private_dot_config/nvim/lua/plugins/graphql.lua @@ -0,0 +1,3 @@ +return { + 'jparise/vim-graphql', +} \ No newline at end of file diff --git a/private_dot_config/nvim/lua/plugins/html.lua b/private_dot_config/nvim/lua/plugins/html.lua new file mode 100644 index 0000000..cf87615 --- /dev/null +++ b/private_dot_config/nvim/lua/plugins/html.lua @@ -0,0 +1,3 @@ +return { + 'mattn/emmet-vim', -- emmet for vim +} \ No newline at end of file diff --git a/private_dot_config/nvim/lua/plugins/ia.lua b/private_dot_config/nvim/lua/plugins/ia.lua new file mode 100644 index 0000000..94bedc5 --- /dev/null +++ b/private_dot_config/nvim/lua/plugins/ia.lua @@ -0,0 +1,54 @@ +-- NOTES: disabled copilot it sucks ! FUCK AI +if true then return {} end + +return { + { + "zbirenbaum/copilot.lua", + config = function() + require("config.lazy").setup({ + panel = { + enabled = false, -- false for copilot-cmp + auto_refresh = false, + keymap = { + jump_prev = "[[", + jump_next = "]]", + accept = "", + refresh = "gr", + open = "" + }, + layout = { + position = "bottom", -- | top | left | right + ratio = 0.4 + }, + }, + suggestion = { + enabled = false, -- false for copilot-cmp + auto_trigger = true, + hide_during_completion = true, + debounce = 75, + keymap = { + accept = "", + accept_word = false, + accept_line = false, + next = "", + prev = "", + dismiss = "", + }, + }, + filetypes = { + yaml = true, + markdown = false, + help = false, + gitcommit = false, + gitrebase = false, + hgcommit = false, + svn = false, + cvs = false, + ["."] = false, + }, + copilot_node_command = 'node', -- Node.js version must be > 18.x + server_opts_overrides = {}, + }) + end, + }, +} diff --git a/private_dot_config/nvim/lua/plugins/lsp.lua b/private_dot_config/nvim/lua/plugins/lsp.lua new file mode 100644 index 0000000..cffa3a7 --- /dev/null +++ b/private_dot_config/nvim/lua/plugins/lsp.lua @@ -0,0 +1,231 @@ +return { + { + 'neovim/nvim-lspconfig', -- LSP + config = function() + --vim.lsp.set_log_level("debug") + + local status, nvim_lsp = pcall(require, "lspconfig") + if (not status) then return end + + local protocol = require('vim.lsp.protocol') + + -- Use an on_attach function to only map the following keys + -- after the language server attaches to the current buffer + local on_attach = function(client, bufnr) + local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end + + local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end + + --Enable completion triggered by + buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + + -- Mappings. + local opts = { noremap = true, silent = true } + + -- See `:help vim.lsp.*` for documentation on any of the below functions + buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) + buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) + buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) + --buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) + end + + protocol.CompletionItemKind = { + '', -- Text + '', -- Method + '', -- Function + '', -- Constructor + '', -- Field + '', -- Variable + '', -- Class + 'ﰮ', -- Interface + '', -- Module + '', -- Property + '', -- Unit + '', -- Value + '', -- Enum + '', -- Keyword + '﬌', -- Snippet + '', -- Color + '', -- File + '', -- Reference + '', -- Folder + '', -- EnumMember + '', -- Constant + '', -- Struct + '', -- Event + 'ﬦ', -- Operator + '', -- TypeParameter + } + + -- Set up completion using nvim_cmp with LSP source + local capabilities = require('cmp_nvim_lsp').default_capabilities( + vim.lsp.protocol.make_client_capabilities() + ) + + nvim_lsp.flow.setup { + on_attach = on_attach, + capabilities = capabilities + } + + -- nvim_lsp.solargraph.setup {} + + nvim_lsp.ts_ls.setup { + on_attach = on_attach, + filetypes = { "typescript", "typescriptreact", "typescript.tsx", "javascript", "vue" }, + cmd = { "typescript-language-server", "--stdio" }, + capabilities = capabilities + } + + nvim_lsp.sourcekit.setup { + on_attach = on_attach, + } + + nvim_lsp.lua_ls.setup { + on_attach = on_attach, + settings = { + Lua = { + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = { 'vim' }, + }, + + workspace = { + -- Make the server aware of Neovim runtime files + library = vim.api.nvim_get_runtime_file("", true), + checkThirdParty = false + }, + }, + }, + } + + vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( + vim.lsp.diagnostic.on_publish_diagnostics, { + underline = true, + update_in_insert = false, + virtual_text = { spacing = 4, prefix = "●" }, + severity_sort = true, + } + ) + + -- Diagnostic symbols in the sign column (gutter) + 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 + + vim.diagnostic.config({ + virtual_text = { + prefix = '●' + }, + update_in_insert = true, + float = { + source = "always", -- Or "if_many" + }, + }) + + _timers = {} + local function setup_diagnostics(client, buffer) + if require("vim.lsp.diagnostic")._enable then + return + end + + local diagnostic_handler = function() + local params = vim.lsp.util.make_text_document_params(buffer) + client.request("textDocument/diagnostic", { textDocument = params }, function(err, result) + if err then + local err_msg = string.format("diagnostics error - %s", vim.inspect(err)) + vim.lsp.log.error(err_msg) + end + local diagnostic_items = {} + if result then + diagnostic_items = result.items + end + vim.lsp.diagnostic.on_publish_diagnostics( + nil, + vim.tbl_extend("keep", params, { diagnostics = diagnostic_items }), + { client_id = client.id } + ) + end) + end + + diagnostic_handler() -- to request diagnostics on buffer when first attaching + + vim.api.nvim_buf_attach(buffer, false, { + on_lines = function() + if _timers[buffer] then + vim.fn.timer_stop(_timers[buffer]) + end + _timers[buffer] = vim.fn.timer_start(200, diagnostic_handler) + end, + on_detach = function() + if _timers[buffer] then + vim.fn.timer_stop(_timers[buffer]) + end + end, + }) + end + + require("lspconfig").ruby_lsp.setup({ + on_attach = function(client, buffer) + setup_diagnostics(client, buffer) + end, + }) + end + }, + { + 'onsails/lspkind-nvim', -- vscode-like pictograms + config = function() + require('lspkind').init({ + mode = 'symbol', + preset = 'codicons', + -- override preset symbols + -- + -- default: {} + symbol_map = { + Text = "", + Method = "", + Function = "", + Constructor = "", + Field = "ﰠ", + Variable = "", + Class = "ﴯ", + Interface = "", + Module = "", + Property = "ﰠ", + Unit = "塞", + Value = "", + Enum = "", + Keyword = "", + Snippet = "", + Color = "", + File = "", + Reference = "", + Folder = "", + EnumMember = "", + Constant = "", + Struct = "פּ", + Event = "", + Operator = "", + TypeParameter = "" + }, + }) + end + }, + 'jose-elias-alvarez/null-ls.nvim', -- inject LSP diagnostics, code actions + { + 'glepnir/lspsaga.nvim', -- LSP UIs + config = function() + local opts = { noremap = true, silent = true } + vim.keymap.set('n', '', 'Lspsaga diagnostic_jump_next', opts) + vim.keymap.set('n', 'K', 'Lspsaga hover_doc', opts) + -- vim.keymap.set('n', 'gd', 'Lspsaga lsp_finder', opts) + vim.keymap.set('i', '', 'Lspsaga signature_help', opts) + vim.keymap.set('n', 'gp', 'Lspsaga preview_definition', opts) + vim.keymap.set('n', 'gr', 'Lspsaga rename', opts) + end + }, + 'folke/trouble.nvim', -- better diagnostics +} diff --git a/private_dot_config/nvim/lua/plugins/lualine.lua b/private_dot_config/nvim/lua/plugins/lualine.lua new file mode 100644 index 0000000..a01ea90 --- /dev/null +++ b/private_dot_config/nvim/lua/plugins/lualine.lua @@ -0,0 +1,52 @@ +return { + { + 'nvim-lualine/lualine.nvim', -- Statusline + config = function() + local git_blame = require('gitblame') + + require('lualine').setup { + options = { + icons_enabled = true, + theme = 'auto', + 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', 'filename'}, + -- add git blame text + lualine_c = { + { git_blame.get_current_blame_text, cond = git_blame.is_blame_text_available } + }, + 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 = {} + } + end + }, +} diff --git a/private_dot_config/nvim/lua/plugins/mason.lua b/private_dot_config/nvim/lua/plugins/mason.lua new file mode 100644 index 0000000..f1640cb --- /dev/null +++ b/private_dot_config/nvim/lua/plugins/mason.lua @@ -0,0 +1,63 @@ +return { + { + 'mason-org/mason.nvim', -- manage lsp + config = function() + require('mason').setup() + end, + }, + { + 'mason-org/mason-lspconfig.nvim', -- bridge mason with lspconfig + config = function() + local on_attach = function(client, bufnr) + local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end + local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end + + buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + + local opts = { noremap = true, silent = true } + + -- Raccourcis LSP + buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) + buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) + buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) + buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) + buf_set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) + end + + -- Configuration automatique pour TOUS les serveurs installés + require('mason-lspconfig').setup({ + handlers = { + -- Handler par défaut pour tous les serveurs + function(server_name) + require("lspconfig")[server_name].setup({ + on_attach = on_attach, + capabilities = require('cmp_nvim_lsp').default_capabilities(), + }) + end, + } + }) + + -- Configuration globale des raccourcis LSP (au cas où on_attach ne fonctionne pas) + vim.api.nvim_create_autocmd("LspAttach", { + callback = function(args) + local client = vim.lsp.get_client_by_id(args.data.client_id) + local bufnr = args.buf + + print("LspAttach autocmd triggered for: " .. client.name) -- Debug + + local opts = { noremap = true, silent = true, buffer = bufnr } + + vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) + vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) + vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) + vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) + vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) + vim.keymap.set('n', 'rn', vim.lsp.buf.rename, opts) + vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, opts) + end, + }) + end + } +} diff --git a/private_dot_config/nvim/lua/plugins/neo_tree.lua b/private_dot_config/nvim/lua/plugins/neo_tree.lua new file mode 100644 index 0000000..5440ec2 --- /dev/null +++ b/private_dot_config/nvim/lua/plugins/neo_tree.lua @@ -0,0 +1,181 @@ +return { + { + 'nvim-neo-tree/neo-tree.nvim', + dependencies = { + 'nvim-lua/plenary.nvim', + 'nvim-tree/nvim-web-devicons', + 'MunifTanjim/nui.nvim', + }, + config = function() + require('neo-tree').setup({ + close_if_last_window = false, + popup_border_style = "rounded", + enable_git_status = true, + enable_diagnostics = true, + default_component_configs = { + container = { + enable_character_fade = true + }, + indent = { + indent_size = 2, + padding = 1, + with_markers = true, + indent_marker = "│", + last_indent_marker = "└", + highlight = "NeoTreeIndentMarker", + with_expanders = nil, + expander_collapsed = "", + expander_expanded = "", + expander_highlight = "NeoTreeExpander", + }, + icon = { + folder_closed = "", + folder_open = "", + folder_empty = "", + default = "", + highlight = "NeoTreeFileIcon" + }, + modified = { + symbol = "[+]", + highlight = "NeoTreeModified", + }, + name = { + trailing_slash = false, + use_git_status_colors = true, + highlight = "NeoTreeFileName", + }, + git_status = { + symbols = { + added = "✚", + modified = "", + deleted = "✖", + renamed = "󰁕", + untracked = "", + ignored = "", + unstaged = "󰄱", + staged = "", + conflict = "", + } + }, + }, + window = { + position = "left", + width = 30, + mapping_options = { + noremap = true, + nowait = true, + }, + mappings = { + [""] = { + "toggle_node", + nowait = false, + }, + ["<2-LeftMouse>"] = "open", + [""] = "open", + ["o"] = "open", + ["S"] = "open_split", + ["s"] = "open_vsplit", + ["t"] = "open_tabnew", + ["w"] = "open_with_window_picker", + ["C"] = "close_node", + ["z"] = "close_all_nodes", + ["a"] = { + "add", + config = { + show_path = "none" + } + }, + ["A"] = "add_directory", + ["d"] = "delete", + ["r"] = "rename", + ["y"] = "copy_to_clipboard", + ["x"] = "cut_to_clipboard", + ["p"] = "paste_from_clipboard", + ["c"] = "copy", + ["m"] = "move", + ["q"] = "close_window", + ["R"] = "refresh", + ["?"] = "show_help", + ["<"] = "prev_source", + [">"] = "next_source", + } + }, + filesystem = { + filtered_items = { + visible = false, + hide_dotfiles = false, + hide_gitignored = false, + hide_hidden = true, + hide_by_name = { + "node_modules" + }, + hide_by_pattern = { + "*.meta", + "*/src/*/tsconfig.json", + }, + always_show = { + ".gitignore" + }, + never_show = { + ".DS_Store", + "thumbs.db" + }, + }, + follow_current_file = { + enabled = true, + leave_dirs_open = false, + }, + group_empty_dirs = false, + hijack_netrw_behavior = "open_default", + use_libuv_file_watcher = false, + window = { + mappings = { + [""] = "navigate_up", + ["."] = "set_root", + ["H"] = "toggle_hidden", + ["/"] = "fuzzy_finder", + ["D"] = "fuzzy_finder_directory", + ["f"] = "filter_on_submit", + [""] = "clear_filter", + ["[g"] = "prev_git_modified", + ["]g"] = "next_git_modified", + } + } + }, + buffers = { + follow_current_file = { + enabled = true, + leave_dirs_open = false, + }, + group_empty_dirs = true, + show_unloaded = true, + window = { + mappings = { + ["bd"] = "buffer_delete", + [""] = "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", + } + } + } + }) + + -- Raccourcis clavier + vim.keymap.set('n', '', ':Neotree toggle', { noremap = true, silent = true }) + vim.keymap.set('n', '', ':Neotree focus', { noremap = true, silent = true }) + end + }, +} diff --git a/private_dot_config/nvim/lua/plugins/others.lua b/private_dot_config/nvim/lua/plugins/others.lua new file mode 100644 index 0000000..3042934 --- /dev/null +++ b/private_dot_config/nvim/lua/plugins/others.lua @@ -0,0 +1,9 @@ +return { + 'nvim-tree/nvim-web-devicons', -- use devicons + { + 'luukvbaal/stabilize.nvim', -- to fix my fucking headache when openclosed panes + config = function() + require('stabilize').setup() + end, + }, +} diff --git a/private_dot_config/nvim/lua/plugins/ruby.lua b/private_dot_config/nvim/lua/plugins/ruby.lua new file mode 100644 index 0000000..b238a6d --- /dev/null +++ b/private_dot_config/nvim/lua/plugins/ruby.lua @@ -0,0 +1,5 @@ +return { + 'vim-ruby/vim-ruby', + 'tpope/vim-rails', -- helpers Econtroller Emodel, Eview and other rails tools + 'tpope/vim-endwise', -- autoclose function +} diff --git a/private_dot_config/nvim/lua/plugins/rust.lua b/private_dot_config/nvim/lua/plugins/rust.lua new file mode 100644 index 0000000..5818d77 --- /dev/null +++ b/private_dot_config/nvim/lua/plugins/rust.lua @@ -0,0 +1,7 @@ +return { + 'rust-lang/rust.vim', + { + 'saecki/crates.nvim', + requires = { 'nvim-lua/plenary.nvim' }, + }, +} diff --git a/private_dot_config/nvim/lua/plugins/snippets.lua b/private_dot_config/nvim/lua/plugins/snippets.lua new file mode 100644 index 0000000..027d9ac --- /dev/null +++ b/private_dot_config/nvim/lua/plugins/snippets.lua @@ -0,0 +1,15 @@ +return { + { + 'L3MON4D3/LuaSnip', + config = function() + require('luasnip.loaders.from_snipmate').lazy_load() + require('luasnip.loaders.from_vscode').lazy_load() + end, + }, + { + 'honza/vim-snippets', + requires = { + 'L3MON4D3/LuaSnip', + }, + }, +} diff --git a/private_dot_config/nvim/lua/plugins/telescope.lua b/private_dot_config/nvim/lua/plugins/telescope.lua new file mode 100644 index 0000000..b2a9dac --- /dev/null +++ b/private_dot_config/nvim/lua/plugins/telescope.lua @@ -0,0 +1,62 @@ +return { + { + 'nvim-telescope/telescope.nvim', -- equivalent ctrl-p, fzf + dependencies = { + 'nvim-lua/plenary.nvim', + }, + config = function() + local actions = require('telescope.actions') + local builtin = require('telescope.builtin') + + require('telescope').setup { + defaults = { + mappings = { + n = { + ["q"] = actions.close + }, + }, + }, + pickers = { + git_files = { + theme = 'dropdown', + } + }, + } + + vim.keymap.set('n', '', function() + builtin.find_files({ + hidden = true + }) + end) + + vim.keymap.set('n', ';r', function() + builtin.live_grep() + end) + + vim.keymap.set('n', '\\\\', function() + builtin.buffers() + end) + + vim.keymap.set('n', ';g', function() + builtin.git_status() + end) + + vim.keymap.set('n', ';;', function() + builtin.resume() + end) + + vim.keymap.set('n', ';e', function() + builtin.diagnostics() + end) + end, + }, + { + "kelly-lin/telescope-ag", -- silver search with telescope + dependencies = { + "nvim-telescope/telescope.nvim" + }, + config = function() + require('telescope').load_extension('ag') + end, + } +} diff --git a/private_dot_config/nvim/lua/plugins/theming.lua b/private_dot_config/nvim/lua/plugins/theming.lua new file mode 100644 index 0000000..a9ab421 --- /dev/null +++ b/private_dot_config/nvim/lua/plugins/theming.lua @@ -0,0 +1,29 @@ +return { + { + 'projekt0n/github-nvim-theme', + config = function() + require('github-theme').setup({ + options = { + styles = { + functions = "NONE" + }, + darken = { -- Darken floating windows and sidebar-like windows + floats = false, + sidebars = { + enable = true, + list = {"qf", "vista_kind", "terminal", "packer"}, -- Apply dark background to specific windows + }, + }, + }, + palettes = { + all = { + hint = "orange", + error = "#ff0000" + }, + }, + }) + + vim.cmd[[colorscheme github_dark_high_contrast]] + end, + }, +} diff --git a/private_dot_config/nvim/lua/plugins/typescript.lua b/private_dot_config/nvim/lua/plugins/typescript.lua new file mode 100644 index 0000000..e04dd84 --- /dev/null +++ b/private_dot_config/nvim/lua/plugins/typescript.lua @@ -0,0 +1,5 @@ +return { + 'peitalin/vim-jsx-typescript', + 'pangloss/vim-javascript', + 'leafgarland/typescript-vim', +}