From 3a820d6b4d0191bf1cc2e755c260ee3062d91983 Mon Sep 17 00:00:00 2001 From: Torpenn Date: Wed, 16 Jul 2025 19:22:02 +0200 Subject: [PATCH] Initial commit --- dot_zshrc | 173 --------- .../nvim/after/plugin/autopair.rc.lua | 6 + .../nvim/after/plugin/cmp.rc.lua | 69 ++++ .../nvim/after/plugin/comment.rc.lua | 4 + .../nvim/after/plugin/copilot.rc.lua | 47 +++ .../nvim/after/plugin/formatter.rc.lua | 33 ++ .../nvim/after/plugin/git-conflicts.rc.lua | 20 ++ .../nvim/after/plugin/gitblame.rc.lua | 10 + .../nvim/after/plugin/gitsigns.rc.lua | 4 + .../nvim/after/plugin/lspkind.rc.lua | 47 +++ .../nvim/after/plugin/lualine.rc.lua | 47 +++ .../nvim/after/plugin/luasnip.rc.lua | 3 + .../nvim/after/plugin/mason.rc.lua | 61 ++++ .../nvim/after/plugin/neo-tree.lua | 174 +++++++++ .../nvim/after/plugin/stabilize.rc.lua | 4 + .../nvim/after/plugin/telescope.rc.lua | 48 +++ private_dot_config/nvim/lua/lsp/lspconfig.lua | 171 +++++++++ private_dot_config/nvim/lua/lsp/lspsaga.lua | 10 + private_dot_config/nvim/lua/plugins.lua | 107 ++++++ .../nvim/lua/settings/colors.lua | 5 + .../nvim/lua/settings/filetype.lua | 18 + private_dot_config/nvim/lua/settings/init.lua | 35 ++ .../nvim/lua/settings/keymaps.lua | 20 ++ .../nvim/lua/settings/theme.lua | 22 ++ .../nvim/plugin/packer_compiled.lua | 329 ++++++++++++++++++ private_dot_config/nvim/snippets/html.json | 177 ++++++++++ .../nvim/snippets/javascript.json | 89 +++++ private_dot_config/nvim/snippets/ruby.json | 109 ++++++ private_dot_config/nvim/snippets/rust.json | 142 ++++++++ .../nvim/snippets/typescript.json | 75 ++++ 30 files changed, 1886 insertions(+), 173 deletions(-) delete mode 100644 dot_zshrc create mode 100644 private_dot_config/nvim/after/plugin/autopair.rc.lua create mode 100644 private_dot_config/nvim/after/plugin/cmp.rc.lua create mode 100644 private_dot_config/nvim/after/plugin/comment.rc.lua create mode 100644 private_dot_config/nvim/after/plugin/copilot.rc.lua create mode 100644 private_dot_config/nvim/after/plugin/formatter.rc.lua create mode 100644 private_dot_config/nvim/after/plugin/git-conflicts.rc.lua create mode 100644 private_dot_config/nvim/after/plugin/gitblame.rc.lua create mode 100644 private_dot_config/nvim/after/plugin/gitsigns.rc.lua create mode 100644 private_dot_config/nvim/after/plugin/lspkind.rc.lua create mode 100644 private_dot_config/nvim/after/plugin/lualine.rc.lua create mode 100644 private_dot_config/nvim/after/plugin/luasnip.rc.lua create mode 100644 private_dot_config/nvim/after/plugin/mason.rc.lua create mode 100644 private_dot_config/nvim/after/plugin/neo-tree.lua create mode 100644 private_dot_config/nvim/after/plugin/stabilize.rc.lua create mode 100644 private_dot_config/nvim/after/plugin/telescope.rc.lua create mode 100644 private_dot_config/nvim/lua/lsp/lspconfig.lua create mode 100644 private_dot_config/nvim/lua/lsp/lspsaga.lua create mode 100644 private_dot_config/nvim/lua/plugins.lua create mode 100644 private_dot_config/nvim/lua/settings/colors.lua create mode 100644 private_dot_config/nvim/lua/settings/filetype.lua create mode 100644 private_dot_config/nvim/lua/settings/init.lua create mode 100644 private_dot_config/nvim/lua/settings/keymaps.lua create mode 100644 private_dot_config/nvim/lua/settings/theme.lua create mode 100644 private_dot_config/nvim/plugin/packer_compiled.lua create mode 100644 private_dot_config/nvim/snippets/html.json create mode 100644 private_dot_config/nvim/snippets/javascript.json create mode 100644 private_dot_config/nvim/snippets/ruby.json create mode 100644 private_dot_config/nvim/snippets/rust.json create mode 100644 private_dot_config/nvim/snippets/typescript.json diff --git a/dot_zshrc b/dot_zshrc deleted file mode 100644 index 46c06ec..0000000 --- a/dot_zshrc +++ /dev/null @@ -1,173 +0,0 @@ -export ZSH="/home/torrpenn/.oh-my-zsh" - -ZSH_THEME="robbyrussell" - -plugins=(git history zsh-autosuggestions) - -source $ZSH/oh-my-zsh.sh - -# nvim configuration -export NVM_DIR="$HOME/.nvm" -[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm -[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion - -alias vim="nvim" -alias vi="nvim" -alias ls="lsd -l" - -# tmux config -export TERM="xterm-256color" -alias tmux="tmux -2" - -# This alias runs the Cursor Setup Wizard, simplifying installation and configuration. -# For more details, visit: https://github.com/jorcelinojunior/cursor-setup-wizard -alias cursor-setup="/home/theodugautier/cursor-setup-wizard/cursor_setup.sh" - - -# ============================================================================= -# -# Utility functions for zoxide. -# - -# pwd based on the value of _ZO_RESOLVE_SYMLINKS. -function __zoxide_pwd() { - \builtin pwd -L -} - -# cd + custom logic based on the value of _ZO_ECHO. -function __zoxide_cd() { - # shellcheck disable=SC2164 - \builtin cd -- "$@" -} - -# ============================================================================= -# -# Hook configuration for zoxide. -# - -# Hook to add new entries to the database. -function __zoxide_hook() { - # shellcheck disable=SC2312 - \command zoxide add -- "$(__zoxide_pwd)" -} - -# Initialize hook. -\builtin typeset -ga precmd_functions -\builtin typeset -ga chpwd_functions -# shellcheck disable=SC2034,SC2296 -precmd_functions=("${(@)precmd_functions:#__zoxide_hook}") -# shellcheck disable=SC2034,SC2296 -chpwd_functions=("${(@)chpwd_functions:#__zoxide_hook}") -chpwd_functions+=(__zoxide_hook) - -# Report common issues. -function __zoxide_doctor() { - [[ ${_ZO_DOCTOR:-1} -ne 0 ]] || return 0 - [[ ${chpwd_functions[(Ie)__zoxide_hook]:-} -eq 0 ]] || return 0 - - _ZO_DOCTOR=0 - \builtin printf '%s\n' \ - 'zoxide: detected a possible configuration issue.' \ - 'Please ensure that zoxide is initialized right at the end of your shell configuration file (usually ~/.zshrc).' \ - '' \ - 'If the issue persists, consider filing an issue at:' \ - 'https://github.com/ajeetdsouza/zoxide/issues' \ - '' \ - 'Disable this message by setting _ZO_DOCTOR=0.' \ - '' >&2 -} - -# ============================================================================= -# -# When using zoxide with --no-cmd, alias these internal functions as desired. -# - -# Jump to a directory using only keywords. -function __zoxide_z() { - __zoxide_doctor - if [[ "$#" -eq 0 ]]; then - __zoxide_cd ~ - elif [[ "$#" -eq 1 ]] && { [[ -d "$1" ]] || [[ "$1" = '-' ]] || [[ "$1" =~ ^[-+][0-9]$ ]]; }; then - __zoxide_cd "$1" - elif [[ "$#" -eq 2 ]] && [[ "$1" = "--" ]]; then - __zoxide_cd "$2" - else - \builtin local result - # shellcheck disable=SC2312 - result="$(\command zoxide query --exclude "$(__zoxide_pwd)" -- "$@")" && __zoxide_cd "${result}" - fi -} - -# Jump to a directory using interactive search. -function __zoxide_zi() { - __zoxide_doctor - \builtin local result - result="$(\command zoxide query --interactive -- "$@")" && __zoxide_cd "${result}" -} - -# ============================================================================= -# -# Commands for zoxide. Disable these using --no-cmd. -# - -function z() { - __zoxide_z "$@" -} - -function zi() { - __zoxide_zi "$@" -} - -# Completions. -if [[ -o zle ]]; then - __zoxide_result='' - - function __zoxide_z_complete() { - # Only show completions when the cursor is at the end of the line. - # shellcheck disable=SC2154 - [[ "${#words[@]}" -eq "${CURRENT}" ]] || return 0 - - if [[ "${#words[@]}" -eq 2 ]]; then - # Show completions for local directories. - _cd -/ - - elif [[ "${words[-1]}" == '' ]]; then - # Show completions for Space-Tab. - # shellcheck disable=SC2086 - __zoxide_result="$(\command zoxide query --exclude "$(__zoxide_pwd || \builtin true)" --interactive -- ${words[2,-1]})" || __zoxide_result='' - - # Set a result to ensure completion doesn't re-run - compadd -Q "" - - # Bind '\e[0n' to helper function. - \builtin bindkey '\e[0n' '__zoxide_z_complete_helper' - # Sends query device status code, which results in a '\e[0n' being sent to console input. - \builtin printf '\e[5n' - - # Report that the completion was successful, so that we don't fall back - # to another completion function. - return 0 - fi - } - - function __zoxide_z_complete_helper() { - if [[ -n "${__zoxide_result}" ]]; then - # shellcheck disable=SC2034,SC2296 - BUFFER="z ${(q-)__zoxide_result}" - __zoxide_result='' - \builtin zle reset-prompt - \builtin zle accept-line - else - \builtin zle reset-prompt - fi - } - \builtin zle -N __zoxide_z_complete_helper - - [[ "${+functions[compdef]}" -ne 0 ]] && \compdef __zoxide_z_complete z -fi - -# ============================================================================= -# -# To initialize zoxide, add this to your shell configuration file (usually ~/.zshrc): -# -# eval "$(zoxide init zsh)" diff --git a/private_dot_config/nvim/after/plugin/autopair.rc.lua b/private_dot_config/nvim/after/plugin/autopair.rc.lua new file mode 100644 index 0000000..ec0a6e9 --- /dev/null +++ b/private_dot_config/nvim/after/plugin/autopair.rc.lua @@ -0,0 +1,6 @@ +local ok, autopairs = pcall(require, "nvim-autopairs") +if (not ok) then return end + +autopairs.setup({ + disable_filetype = { "TelescopePrompt" , "vim" }, +}) diff --git a/private_dot_config/nvim/after/plugin/cmp.rc.lua b/private_dot_config/nvim/after/plugin/cmp.rc.lua new file mode 100644 index 0000000..9e7ba51 --- /dev/null +++ b/private_dot_config/nvim/after/plugin/cmp.rc.lua @@ -0,0 +1,69 @@ +local ok, cmp = pcall(require, "cmp") +if (not ok) then return end + +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 +]] diff --git a/private_dot_config/nvim/after/plugin/comment.rc.lua b/private_dot_config/nvim/after/plugin/comment.rc.lua new file mode 100644 index 0000000..6fd4b25 --- /dev/null +++ b/private_dot_config/nvim/after/plugin/comment.rc.lua @@ -0,0 +1,4 @@ +local ok, comment = pcall(require, "Comment") +if (not ok) then return end + +comment.setup() diff --git a/private_dot_config/nvim/after/plugin/copilot.rc.lua b/private_dot_config/nvim/after/plugin/copilot.rc.lua new file mode 100644 index 0000000..f0bd412 --- /dev/null +++ b/private_dot_config/nvim/after/plugin/copilot.rc.lua @@ -0,0 +1,47 @@ +local ok, copilot = pcall(require, 'copilot') +if (not ok) then return end + +copilot.setup({ + panel = { + enabled = true, -- 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 = true, -- 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 = {}, +}) diff --git a/private_dot_config/nvim/after/plugin/formatter.rc.lua b/private_dot_config/nvim/after/plugin/formatter.rc.lua new file mode 100644 index 0000000..fa712a7 --- /dev/null +++ b/private_dot_config/nvim/after/plugin/formatter.rc.lua @@ -0,0 +1,33 @@ +local ok, _ = pcall(require, 'formatter') +if (not ok) then return end + +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 + } + } +} + diff --git a/private_dot_config/nvim/after/plugin/git-conflicts.rc.lua b/private_dot_config/nvim/after/plugin/git-conflicts.rc.lua new file mode 100644 index 0000000..53ce7b8 --- /dev/null +++ b/private_dot_config/nvim/after/plugin/git-conflicts.rc.lua @@ -0,0 +1,20 @@ +local ok, _ = pcall(require, 'git-conflict') +if (not ok) then return end + +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', + }, +} diff --git a/private_dot_config/nvim/after/plugin/gitblame.rc.lua b/private_dot_config/nvim/after/plugin/gitblame.rc.lua new file mode 100644 index 0000000..5726ced --- /dev/null +++ b/private_dot_config/nvim/after/plugin/gitblame.rc.lua @@ -0,0 +1,10 @@ +local ok, _ = pcall(require, "gitblame") +if (not ok) then return end + +require('gitblame').setup { + --Note how the `gitblame_` prefix is omitted in `setup` + enabled = false, + display_virtual_text = false, + message_template = '', + date_format = '%r' +} diff --git a/private_dot_config/nvim/after/plugin/gitsigns.rc.lua b/private_dot_config/nvim/after/plugin/gitsigns.rc.lua new file mode 100644 index 0000000..f31765f --- /dev/null +++ b/private_dot_config/nvim/after/plugin/gitsigns.rc.lua @@ -0,0 +1,4 @@ +local ok, gitsigns = pcall(require, "gitsigns") +if (not ok) then return end + +gitsigns.setup {} diff --git a/private_dot_config/nvim/after/plugin/lspkind.rc.lua b/private_dot_config/nvim/after/plugin/lspkind.rc.lua new file mode 100644 index 0000000..d177700 --- /dev/null +++ b/private_dot_config/nvim/after/plugin/lspkind.rc.lua @@ -0,0 +1,47 @@ +local ok, lspkind = pcall(require, "lspkind") +if (not ok) then return end + +lspkind.init({ + -- enables text annotations + -- + -- default: true + mode = 'symbol', + + -- default symbol map + -- can be either 'default' (requires nerd-fonts font) or + -- 'codicons' for codicon preset (requires vscode-codicons font) + -- + -- default: 'default' + 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 = "" + }, +}) diff --git a/private_dot_config/nvim/after/plugin/lualine.rc.lua b/private_dot_config/nvim/after/plugin/lualine.rc.lua new file mode 100644 index 0000000..7317343 --- /dev/null +++ b/private_dot_config/nvim/after/plugin/lualine.rc.lua @@ -0,0 +1,47 @@ +local ok, lualine = pcall(require, "lualine") +local git_blame = require('gitblame') +if (not ok) then return end + +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 = {} + } diff --git a/private_dot_config/nvim/after/plugin/luasnip.rc.lua b/private_dot_config/nvim/after/plugin/luasnip.rc.lua new file mode 100644 index 0000000..073e25e --- /dev/null +++ b/private_dot_config/nvim/after/plugin/luasnip.rc.lua @@ -0,0 +1,3 @@ +require('luasnip.loaders.from_snipmate').lazy_load() + +require('luasnip.loaders.from_vscode').lazy_load() diff --git a/private_dot_config/nvim/after/plugin/mason.rc.lua b/private_dot_config/nvim/after/plugin/mason.rc.lua new file mode 100644 index 0000000..0197f9d --- /dev/null +++ b/private_dot_config/nvim/after/plugin/mason.rc.lua @@ -0,0 +1,61 @@ +local ok, mason = pcall(require, "mason") +if (not ok) then return end + +mason.setup() + +local ok, mason_lspconfig = pcall(require, "mason-lspconfig") +if (not ok) then return end + +mason_lspconfig.setup() + +-- Fonction on_attach avec les raccourcis +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 +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, +}) diff --git a/private_dot_config/nvim/after/plugin/neo-tree.lua b/private_dot_config/nvim/after/plugin/neo-tree.lua new file mode 100644 index 0000000..3a87459 --- /dev/null +++ b/private_dot_config/nvim/after/plugin/neo-tree.lua @@ -0,0 +1,174 @@ +local status, neotree = pcall(require, "neo-tree") +if not status then + return +end + +neotree.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 }) \ No newline at end of file diff --git a/private_dot_config/nvim/after/plugin/stabilize.rc.lua b/private_dot_config/nvim/after/plugin/stabilize.rc.lua new file mode 100644 index 0000000..4a52f24 --- /dev/null +++ b/private_dot_config/nvim/after/plugin/stabilize.rc.lua @@ -0,0 +1,4 @@ +local ok, stabilize = pcall(require, 'stabilize') +if (not ok) then return end + +stabilize.setup() diff --git a/private_dot_config/nvim/after/plugin/telescope.rc.lua b/private_dot_config/nvim/after/plugin/telescope.rc.lua new file mode 100644 index 0000000..da855b2 --- /dev/null +++ b/private_dot_config/nvim/after/plugin/telescope.rc.lua @@ -0,0 +1,48 @@ +local ok, telescope = pcall(require, 'telescope') +if (not ok) then return end + +local actions = require('telescope.actions') +local builtin = require('telescope.builtin') + +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) + +telescope.load_extension("ag") diff --git a/private_dot_config/nvim/lua/lsp/lspconfig.lua b/private_dot_config/nvim/lua/lsp/lspconfig.lua new file mode 100644 index 0000000..b2b7136 --- /dev/null +++ b/private_dot_config/nvim/lua/lsp/lspconfig.lua @@ -0,0 +1,171 @@ +--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, +}) diff --git a/private_dot_config/nvim/lua/lsp/lspsaga.lua b/private_dot_config/nvim/lua/lsp/lspsaga.lua new file mode 100644 index 0000000..e652299 --- /dev/null +++ b/private_dot_config/nvim/lua/lsp/lspsaga.lua @@ -0,0 +1,10 @@ +local status, saga = pcall(require, "lspsaga") +if (not status) then return end + +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) diff --git a/private_dot_config/nvim/lua/plugins.lua b/private_dot_config/nvim/lua/plugins.lua new file mode 100644 index 0000000..50a5bc1 --- /dev/null +++ b/private_dot_config/nvim/lua/plugins.lua @@ -0,0 +1,107 @@ +local ensure_packer = function() + local fn = vim.fn + local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim' + if fn.empty(fn.glob(install_path)) > 0 then + fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path}) + vim.cmd [[packadd packer.nvim]] + + return true + end + + return false +end + +local packer_bootstrap = ensure_packer() + +local status, packer = pcall(require, "packer") + +if (not status) then + print("Packer is not installed") + return +end + +return packer.startup(function(use) + use 'wbthomason/packer.nvim' + + -- appearances + use 'projekt0n/github-nvim-theme' + use 'nvim-lualine/lualine.nvim' -- Statusline + + -- LSP and completion + use 'nvim-lua/plenary.nvim' -- Common utilities + use 'neovim/nvim-lspconfig' -- LSP + use 'onsails/lspkind-nvim' -- vscode-like pictograms + use 'hrsh7th/cmp-buffer' -- nvim-cmp source for buffer words + use 'hrsh7th/cmp-path' -- completion pathname + use 'hrsh7th/cmp-nvim-lsp' -- nvim-cmp source for neovim's built-in LSP + use 'hrsh7th/nvim-cmp' -- Completion + use 'jose-elias-alvarez/null-ls.nvim' -- inject LSP diagnostics, code actions + use 'glepnir/lspsaga.nvim' -- LSP UIs + use 'mason-org/mason.nvim' -- manage lsp + use "mason-org/mason-lspconfig.nvim" -- bridge mason with lspconfig + + -- Snippets + use 'L3MON4D3/LuaSnip' + use 'honza/vim-snippets' + + -- code fasters + use 'Raimondi/delimitMate' -- auto close colon + use 'mattn/emmet-vim' -- emmet for vim + use 'tpope/vim-surround' -- just tpope the GOD OF VIM + use 'ap/vim-css-color' -- colors display + use 'numToStr/Comment.nvim' -- comments tools + use 'mhartington/formatter.nvim' -- format code + use 'AndrewRadev/splitjoin.vim' -- refactor plugin + use 'RRethy/vim-illuminate' -- highlight other uses of the word under the cursor + use 'folke/trouble.nvim' -- better diagnostics + + -- Ruby development + use 'vim-ruby/vim-ruby' + use 'tpope/vim-rails' + use 'tpope/vim-endwise' -- autoclose function + + -- javacript development + use 'peitalin/vim-jsx-typescript' + use 'pangloss/vim-javascript' + use 'leafgarland/typescript-vim' + + -- GraphQl + use 'jparise/vim-graphql' + + -- Rust development + use 'rust-lang/rust.vim' + use { 'saecki/crates.nvim', requires = { 'nvim-lua/plenary.nvim' } } + + -- IA + use { "zbirenbaum/copilot.lua" } + + -- Testing + use { 'vim-test/vim-test' } + + -- others utilities + use 'nvim-telescope/telescope.nvim' -- equivalent ctrl-p, fzf + use({ "kelly-lin/telescope-ag", requires = { { "nvim-telescope/telescope.nvim" } } }) -- silver search with telescope + use 'windwp/nvim-autopairs' -- auto brackets pairing + use 'lewis6991/gitsigns.nvim' -- git graphic helpers + use 'bronson/vim-trailing-whitespace' -- detect trailing-whitespace + use 'nvim-tree/nvim-web-devicons' -- use devicons + -- File explorer moderne + use { + 'nvim-neo-tree/neo-tree.nvim', + branch = 'v3.x', + requires = { + 'nvim-lua/plenary.nvim', + 'nvim-tree/nvim-web-devicons', + 'MunifTanjim/nui.nvim', + } + } + use "luukvbaal/stabilize.nvim" -- to fix my fucking headache when openclosed panes + use 'f-person/git-blame.nvim' + use {'akinsho/git-conflict.nvim', tag = "*", config = function() -- conflict management + require('git-conflict').setup() + end} + + if packer_bootstrap then + require('packer').sync() + end +end) diff --git a/private_dot_config/nvim/lua/settings/colors.lua b/private_dot_config/nvim/lua/settings/colors.lua new file mode 100644 index 0000000..ab02b08 --- /dev/null +++ b/private_dot_config/nvim/lua/settings/colors.lua @@ -0,0 +1,5 @@ +if vim.fn.has("termguicolors") == 1 then + vim.opt.termguicolors = true +end + +vim.opt.background = 'dark' diff --git a/private_dot_config/nvim/lua/settings/filetype.lua b/private_dot_config/nvim/lua/settings/filetype.lua new file mode 100644 index 0000000..c9659f7 --- /dev/null +++ b/private_dot_config/nvim/lua/settings/filetype.lua @@ -0,0 +1,18 @@ +vim.cmd('filetype plugin indent on') + +vim.api.nvim_exec([[ + autocmd BufNewFile,BufRead /tmp/mutt-* set filetype=mail + autocmd BufNewFile,BufRead /*.rasi setf css + autocmd BufNewFile,BufRead *.tsx,*.jsx set filetype=typescriptreact + augroup ruby_subtypes + autocmd! + autocmd BufNewFile,BufRead *.pdf.erb let b:eruby_subtype='html' + autocmd BufNewFile,BufRead *.pdf.erb set filetype=eruby + augroup END + au BufNewFile,BufRead *.arb set filetype=ruby + au BufRead,BufNewFile *.ejs setfiletype html + au FileType TelescopePrompt setlocal nocursorline + au BufRead,BufNewFile *.ex,*.exs set filetype=elixir + au BufRead,BufNewFile *.eex,*.heex,*.leex,*.sface,*.lexs set filetype=eelixir + au BufRead,BufNewFile mix.lock set filetype=elixir +]], true) diff --git a/private_dot_config/nvim/lua/settings/init.lua b/private_dot_config/nvim/lua/settings/init.lua new file mode 100644 index 0000000..3d0c433 --- /dev/null +++ b/private_dot_config/nvim/lua/settings/init.lua @@ -0,0 +1,35 @@ +vim.cmd("autocmd!") + +vim.scriptencoding = 'utf-8' +vim.opt.encoding = 'utf-8' +vim.opt.fileencoding = 'utf-8' +vim.opt.clipboard:append { 'unnamedplus' } + +vim.opt.autoread = true +vim.opt.showmatch = true -- show matching +vim.opt.ignorecase = true -- case insensitive +vim.opt.mouse = 'v' -- middle-click paste with +vim.opt.hlsearch = true -- highlight search +vim.opt.incsearch = true -- incremental search +vim.opt.tabstop = 4 -- number of columns occupied by a tab +vim.opt.softtabstop = 4 -- see multiple spaces as tabstops so does the right thing +vim.opt.expandtab = true -- converts tabs to white space +vim.opt.shiftwidth = 2 -- width for autoindents +vim.opt.autoindent = true -- indent a new line the same amount as the line just typed +vim.wo.number = true -- add line numbers +vim.opt.relativenumber = true +vim.opt.wildmode = 'longest,list' -- get bash-like tab completions +vim.opt.cc = '80' -- set an 80 column border for good coding style +vim.opt.clipboard = 'unnamedplus' -- using system clipboard +vim.opt.cursorline = true -- highlight current cursorline +vim.opt.ttyfast = true -- Speed up scrolling in Vim +vim.opt.wildignore:append { '*/node_modules/*' } + +vim.cmd('syntax on') + +vim.opt.formatoptions:append { 'r' } -- Add asterisks in block comments + +vim.opt.cursorline = true +vim.opt.winblend = 0 +vim.opt.wildoptions = 'pum' +vim.opt.pumblend = 5 diff --git a/private_dot_config/nvim/lua/settings/keymaps.lua b/private_dot_config/nvim/lua/settings/keymaps.lua new file mode 100644 index 0000000..4b8d9a8 --- /dev/null +++ b/private_dot_config/nvim/lua/settings/keymaps.lua @@ -0,0 +1,20 @@ +local keymap = vim.keymap + +vim.g.mapleader = ',' + +keymap.set('n', 'x', '"_x') + +-- no arrow keys +keymap.set('i', '', '') +keymap.set('i', '', '') +keymap.set('i', '', '') +keymap.set('i', '', '') +keymap.set('', '', '') +keymap.set('', '', '') +keymap.set('', '', '') +keymap.set('', '', '') + +keymap.set('n', '', '-') + +-- Indent all files +keymap.set('n', 'i', 'mmgg=G`m') diff --git a/private_dot_config/nvim/lua/settings/theme.lua b/private_dot_config/nvim/lua/settings/theme.lua new file mode 100644 index 0000000..1f8b3f7 --- /dev/null +++ b/private_dot_config/nvim/lua/settings/theme.lua @@ -0,0 +1,22 @@ +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]] \ No newline at end of file diff --git a/private_dot_config/nvim/plugin/packer_compiled.lua b/private_dot_config/nvim/plugin/packer_compiled.lua new file mode 100644 index 0000000..15cbfc1 --- /dev/null +++ b/private_dot_config/nvim/plugin/packer_compiled.lua @@ -0,0 +1,329 @@ +-- Automatically generated packer.nvim plugin loader code + +if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then + vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"') + return +end + +vim.api.nvim_command('packadd packer.nvim') + +local no_errors, error_msg = pcall(function() + +_G._packer = _G._packer or {} +_G._packer.inside_compile = true + +local time +local profile_info +local should_profile = false +if should_profile then + local hrtime = vim.loop.hrtime + profile_info = {} + time = function(chunk, start) + if start then + profile_info[chunk] = hrtime() + else + profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6 + end + end +else + time = function(chunk, start) end +end + +local function save_profiles(threshold) + local sorted_times = {} + for chunk_name, time_taken in pairs(profile_info) do + sorted_times[#sorted_times + 1] = {chunk_name, time_taken} + end + table.sort(sorted_times, function(a, b) return a[2] > b[2] end) + local results = {} + for i, elem in ipairs(sorted_times) do + if not threshold or threshold and elem[2] > threshold then + results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms' + end + end + if threshold then + table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)') + end + + _G._packer.profile_output = results +end + +time([[Luarocks path setup]], true) +local package_path_str = "/Users/torpenn/.cache/nvim/packer_hererocks/2.1.1744318430/share/lua/5.1/?.lua;/Users/torpenn/.cache/nvim/packer_hererocks/2.1.1744318430/share/lua/5.1/?/init.lua;/Users/torpenn/.cache/nvim/packer_hererocks/2.1.1744318430/lib/luarocks/rocks-5.1/?.lua;/Users/torpenn/.cache/nvim/packer_hererocks/2.1.1744318430/lib/luarocks/rocks-5.1/?/init.lua" +local install_cpath_pattern = "/Users/torpenn/.cache/nvim/packer_hererocks/2.1.1744318430/lib/lua/5.1/?.so" +if not string.find(package.path, package_path_str, 1, true) then + package.path = package.path .. ';' .. package_path_str +end + +if not string.find(package.cpath, install_cpath_pattern, 1, true) then + package.cpath = package.cpath .. ';' .. install_cpath_pattern +end + +time([[Luarocks path setup]], false) +time([[try_loadstring definition]], true) +local function try_loadstring(s, component, name) + local success, result = pcall(loadstring(s), name, _G.packer_plugins[name]) + if not success then + vim.schedule(function() + vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {}) + end) + end + return result +end + +time([[try_loadstring definition]], false) +time([[Defining packer_plugins]], true) +_G.packer_plugins = { + LuaSnip = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/LuaSnip", + url = "https://github.com/L3MON4D3/LuaSnip" + }, + ["cmp-buffer"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/cmp-buffer", + url = "https://github.com/hrsh7th/cmp-buffer" + }, + ["cmp-nvim-lsp"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp", + url = "https://github.com/hrsh7th/cmp-nvim-lsp" + }, + ["cmp-path"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/cmp-path", + url = "https://github.com/hrsh7th/cmp-path" + }, + ["copilot.lua"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/copilot.lua", + url = "https://github.com/zbirenbaum/copilot.lua" + }, + ["crates.nvim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/crates.nvim", + url = "https://github.com/saecki/crates.nvim" + }, + delimitMate = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/delimitMate", + url = "https://github.com/Raimondi/delimitMate" + }, + ["emmet-vim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/emmet-vim", + url = "https://github.com/mattn/emmet-vim" + }, + ["formatter.nvim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/formatter.nvim", + url = "https://github.com/mhartington/formatter.nvim" + }, + ["git-blame.nvim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/git-blame.nvim", + url = "https://github.com/f-person/git-blame.nvim" + }, + ["git-conflict.nvim"] = { + config = { "\27LJ\2\n:\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\17git-conflict\frequire\0" }, + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/git-conflict.nvim", + url = "https://github.com/akinsho/git-conflict.nvim" + }, + ["github-nvim-theme"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/github-nvim-theme", + url = "https://github.com/projekt0n/github-nvim-theme" + }, + ["gitsigns.nvim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/gitsigns.nvim", + url = "https://github.com/lewis6991/gitsigns.nvim" + }, + ["lspkind-nvim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/lspkind-nvim", + url = "https://github.com/onsails/lspkind-nvim" + }, + ["lspsaga.nvim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/lspsaga.nvim", + url = "https://github.com/glepnir/lspsaga.nvim" + }, + ["lualine.nvim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/lualine.nvim", + url = "https://github.com/nvim-lualine/lualine.nvim" + }, + ["mason-lspconfig.nvim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/mason-lspconfig.nvim", + url = "https://github.com/mason-org/mason-lspconfig.nvim" + }, + ["mason.nvim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/mason.nvim", + url = "https://github.com/mason-org/mason.nvim" + }, + ["null-ls.nvim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/null-ls.nvim", + url = "https://github.com/jose-elias-alvarez/null-ls.nvim" + }, + ["nvim-autopairs"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/nvim-autopairs", + url = "https://github.com/windwp/nvim-autopairs" + }, + ["nvim-cmp"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/nvim-cmp", + url = "https://github.com/hrsh7th/nvim-cmp" + }, + ["nvim-comment"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/nvim-comment", + url = "https://github.com/terrortylor/nvim-comment" + }, + ["nvim-lspconfig"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/nvim-lspconfig", + url = "https://github.com/neovim/nvim-lspconfig" + }, + ["nvim-tree.lua"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/nvim-tree.lua", + url = "https://github.com/nvim-tree/nvim-tree.lua" + }, + ["nvim-web-devicons"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/nvim-web-devicons", + url = "https://github.com/nvim-tree/nvim-web-devicons" + }, + ["packer.nvim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/packer.nvim", + url = "https://github.com/wbthomason/packer.nvim" + }, + ["plenary.nvim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/plenary.nvim", + url = "https://github.com/nvim-lua/plenary.nvim" + }, + ["rust.vim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/rust.vim", + url = "https://github.com/rust-lang/rust.vim" + }, + ["splitjoin.vim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/splitjoin.vim", + url = "https://github.com/AndrewRadev/splitjoin.vim" + }, + ["stabilize.nvim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/stabilize.nvim", + url = "https://github.com/luukvbaal/stabilize.nvim" + }, + ["telescope-ag"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/telescope-ag", + url = "https://github.com/kelly-lin/telescope-ag" + }, + ["telescope.nvim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/telescope.nvim", + url = "https://github.com/nvim-telescope/telescope.nvim" + }, + ["trouble.nvim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/trouble.nvim", + url = "https://github.com/folke/trouble.nvim" + }, + ["typescript-vim"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/typescript-vim", + url = "https://github.com/leafgarland/typescript-vim" + }, + ["vim-css-color"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/vim-css-color", + url = "https://github.com/ap/vim-css-color" + }, + ["vim-endwise"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/vim-endwise", + url = "https://github.com/tpope/vim-endwise" + }, + ["vim-graphql"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/vim-graphql", + url = "https://github.com/jparise/vim-graphql" + }, + ["vim-illuminate"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/vim-illuminate", + url = "https://github.com/RRethy/vim-illuminate" + }, + ["vim-javascript"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/vim-javascript", + url = "https://github.com/pangloss/vim-javascript" + }, + ["vim-jsx-typescript"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/vim-jsx-typescript", + url = "https://github.com/peitalin/vim-jsx-typescript" + }, + ["vim-rails"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/vim-rails", + url = "https://github.com/tpope/vim-rails" + }, + ["vim-ruby"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/vim-ruby", + url = "https://github.com/vim-ruby/vim-ruby" + }, + ["vim-snippets"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/vim-snippets", + url = "https://github.com/honza/vim-snippets" + }, + ["vim-surround"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/vim-surround", + url = "https://github.com/tpope/vim-surround" + }, + ["vim-test"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/vim-test", + url = "https://github.com/vim-test/vim-test" + }, + ["vim-trailing-whitespace"] = { + loaded = true, + path = "/Users/torpenn/.local/share/nvim/site/pack/packer/start/vim-trailing-whitespace", + url = "https://github.com/bronson/vim-trailing-whitespace" + } +} + +time([[Defining packer_plugins]], false) +-- Config for: git-conflict.nvim +time([[Config for git-conflict.nvim]], true) +try_loadstring("\27LJ\2\n:\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\17git-conflict\frequire\0", "config", "git-conflict.nvim") +time([[Config for git-conflict.nvim]], false) + +_G._packer.inside_compile = false +if _G._packer.needs_bufread == true then + vim.cmd("doautocmd BufRead") +end +_G._packer.needs_bufread = false + +if should_profile then save_profiles() end + +end) + +if not no_errors then + error_msg = error_msg:gsub('"', '\\"') + vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None') +end diff --git a/private_dot_config/nvim/snippets/html.json b/private_dot_config/nvim/snippets/html.json new file mode 100644 index 0000000..5e2381b --- /dev/null +++ b/private_dot_config/nvim/snippets/html.json @@ -0,0 +1,177 @@ +{ + "HTML5 boilerplate": { + "prefix": "html5", + "body": [ + "", + "", + "", + " ", + " ", + " $2", + "", + "", + " $3", + "", + "" + ], + "description": "HTML5 boilerplate" + }, + "Div with class": { + "prefix": "div", + "body": [ + "
", + " $2", + "
" + ], + "description": "Div with class" + }, + "Div with id": { + "prefix": "divid", + "body": [ + "
", + " $2", + "
" + ], + "description": "Div with id" + }, + "Link": { + "prefix": "a", + "body": ["$2"], + "description": "Link" + }, + "Image": { + "prefix": "img", + "body": ["\"$2\""], + "description": "Image" + }, + "Button": { + "prefix": "btn", + "body": [""], + "description": "Button" + }, + "Input": { + "prefix": "input", + "body": [""], + "description": "Input" + }, + "Form": { + "prefix": "form", + "body": [ + "
", + " $3", + "
" + ], + "description": "Form" + }, + "Unordered list": { + "prefix": "ul", + "body": [ + "
    ", + "
  • $1
  • ", + "
" + ], + "description": "Unordered list" + }, + "Ordered list": { + "prefix": "ol", + "body": [ + "
    ", + "
  1. $1
  2. ", + "
" + ], + "description": "Ordered list" + }, + "List item": { + "prefix": "li", + "body": ["
  • $1
  • "], + "description": "List item" + }, + "Table": { + "prefix": "table", + "body": [ + "", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + "
    $1
    $2
    " + ], + "description": "Table" + }, + "Paragraph": { + "prefix": "p", + "body": ["

    $1

    "], + "description": "Paragraph" + }, + "Heading 1": { + "prefix": "h1", + "body": ["

    $1

    "], + "description": "Heading 1" + }, + "Heading 2": { + "prefix": "h2", + "body": ["

    $1

    "], + "description": "Heading 2" + }, + "Heading 3": { + "prefix": "h3", + "body": ["

    $1

    "], + "description": "Heading 3" + }, + "Span": { + "prefix": "span", + "body": ["$2"], + "description": "Span" + }, + "Section": { + "prefix": "section", + "body": [ + "
    ", + " $1", + "
    " + ], + "description": "Section" + }, + "Article": { + "prefix": "article", + "body": [ + "
    ", + " $1", + "
    " + ], + "description": "Article" + }, + "Header": { + "prefix": "header", + "body": [ + "
    ", + " $1", + "
    " + ], + "description": "Header" + }, + "Footer": { + "prefix": "footer", + "body": [ + "
    ", + " $1", + "
    " + ], + "description": "Footer" + }, + "Nav": { + "prefix": "nav", + "body": [ + "" + ], + "description": "Navigation" + } +} \ No newline at end of file diff --git a/private_dot_config/nvim/snippets/javascript.json b/private_dot_config/nvim/snippets/javascript.json new file mode 100644 index 0000000..a42c919 --- /dev/null +++ b/private_dot_config/nvim/snippets/javascript.json @@ -0,0 +1,89 @@ +{ + "Console log": { + "prefix": "cl", + "body": ["console.log($1)"], + "description": "Console log" + }, + "Function": { + "prefix": "fn", + "body": [ + "function $1($2) {", + " $3", + "}" + ], + "description": "Function" + }, + "Arrow function": { + "prefix": "af", + "body": ["const $1 = ($2) => {", " $3", "}"], + "description": "Arrow function" + }, + "Arrow function inline": { + "prefix": "afi", + "body": ["const $1 = ($2) => $3"], + "description": "Arrow function inline" + }, + "Import": { + "prefix": "imp", + "body": ["import $1 from '$2'"], + "description": "Import statement" + }, + "Import destructured": { + "prefix": "impd", + "body": ["import { $1 } from '$2'"], + "description": "Import destructured" + }, + "Export": { + "prefix": "exp", + "body": ["export const $1 = $2"], + "description": "Export statement" + }, + "Export default": { + "prefix": "expd", + "body": ["export default $1"], + "description": "Export default" + }, + "Try catch": { + "prefix": "try", + "body": [ + "try {", + " $1", + "} catch (error) {", + " $2", + "}" + ], + "description": "Try catch block" + }, + "For loop": { + "prefix": "for", + "body": [ + "for (let $1 = 0; $1 < $2; $1++) {", + " $3", + "}" + ], + "description": "For loop" + }, + "For of loop": { + "prefix": "forof", + "body": [ + "for (const $1 of $2) {", + " $3", + "}" + ], + "description": "For of loop" + }, + "Async function": { + "prefix": "async", + "body": [ + "async function $1($2) {", + " $3", + "}" + ], + "description": "Async function" + }, + "Async arrow function": { + "prefix": "asyncaf", + "body": ["const $1 = async ($2) => {", " $3", "}"], + "description": "Async arrow function" + } +} \ No newline at end of file diff --git a/private_dot_config/nvim/snippets/ruby.json b/private_dot_config/nvim/snippets/ruby.json new file mode 100644 index 0000000..a80342e --- /dev/null +++ b/private_dot_config/nvim/snippets/ruby.json @@ -0,0 +1,109 @@ +{ + "Method": { + "prefix": "def", + "body": [ + "def $1($2)", + " $3", + "end" + ], + "description": "Ruby method" + }, + "Class": { + "prefix": "class", + "body": [ + "class $1", + " def initialize($2)", + " $3", + " end", + "", + " $4", + "end" + ], + "description": "Ruby class" + }, + "Each loop": { + "prefix": "each", + "body": [ + "$1.each do |$2|", + " $3", + "end" + ], + "description": "Ruby each loop" + }, + "Each with index": { + "prefix": "eachi", + "body": [ + "$1.each_with_index do |$2, $3|", + " $4", + "end" + ], + "description": "Ruby each with index" + }, + "Map": { + "prefix": "map", + "body": [ + "$1.map do |$2|", + " $3", + "end" + ], + "description": "Ruby map" + }, + "Select": { + "prefix": "select", + "body": [ + "$1.select do |$2|", + " $3", + "end" + ], + "description": "Ruby select" + }, + "If statement": { + "prefix": "if", + "body": [ + "if $1", + " $2", + "end" + ], + "description": "Ruby if statement" + }, + "Unless": { + "prefix": "unless", + "body": [ + "unless $1", + " $2", + "end" + ], + "description": "Ruby unless statement" + }, + "Case when": { + "prefix": "case", + "body": [ + "case $1", + "when $2", + " $3", + "else", + " $4", + "end" + ], + "description": "Ruby case when" + }, + "Module": { + "prefix": "module", + "body": [ + "module $1", + " $2", + "end" + ], + "description": "Ruby module" + }, + "Puts": { + "prefix": "puts", + "body": ["puts $1"], + "description": "Ruby puts" + }, + "Print": { + "prefix": "p", + "body": ["p $1"], + "description": "Ruby print" + } +} \ No newline at end of file diff --git a/private_dot_config/nvim/snippets/rust.json b/private_dot_config/nvim/snippets/rust.json new file mode 100644 index 0000000..b55761a --- /dev/null +++ b/private_dot_config/nvim/snippets/rust.json @@ -0,0 +1,142 @@ +{ + "Function": { + "prefix": "fn", + "body": [ + "fn $1($2) -> $3 {", + " $4", + "}" + ], + "description": "Rust function" + }, + "Public function": { + "prefix": "pubfn", + "body": [ + "pub fn $1($2) -> $3 {", + " $4", + "}" + ], + "description": "Rust public function" + }, + "Main function": { + "prefix": "main", + "body": [ + "fn main() {", + " $1", + "}" + ], + "description": "Rust main function" + }, + "Struct": { + "prefix": "struct", + "body": [ + "struct $1 {", + " $2", + "}" + ], + "description": "Rust struct" + }, + "Public struct": { + "prefix": "pubstruct", + "body": [ + "pub struct $1 {", + " $2", + "}" + ], + "description": "Rust public struct" + }, + "Enum": { + "prefix": "enum", + "body": [ + "enum $1 {", + " $2,", + "}" + ], + "description": "Rust enum" + }, + "Impl block": { + "prefix": "impl", + "body": [ + "impl $1 {", + " $2", + "}" + ], + "description": "Rust impl block" + }, + "Match statement": { + "prefix": "match", + "body": [ + "match $1 {", + " $2 => $3,", + " _ => $4,", + "}" + ], + "description": "Rust match statement" + }, + "If let": { + "prefix": "iflet", + "body": [ + "if let $1 = $2 {", + " $3", + "}" + ], + "description": "Rust if let" + }, + "While let": { + "prefix": "whilelet", + "body": [ + "while let $1 = $2 {", + " $3", + "}" + ], + "description": "Rust while let" + }, + "For loop": { + "prefix": "for", + "body": [ + "for $1 in $2 {", + " $3", + "}" + ], + "description": "Rust for loop" + }, + "Test function": { + "prefix": "test", + "body": [ + "#[test]", + "fn $1() {", + " $2", + "}" + ], + "description": "Rust test function" + }, + "Derive": { + "prefix": "derive", + "body": ["#[derive($1)]"], + "description": "Rust derive attribute" + }, + "Println": { + "prefix": "println", + "body": ["println!(\"$1\");"], + "description": "Rust println macro" + }, + "Print": { + "prefix": "print", + "body": ["print!(\"$1\");"], + "description": "Rust print macro" + }, + "Vec": { + "prefix": "vec", + "body": ["let $1: Vec<$2> = vec![$3];"], + "description": "Rust vector" + }, + "Result": { + "prefix": "result", + "body": ["Result<$1, $2>"], + "description": "Rust Result type" + }, + "Option": { + "prefix": "option", + "body": ["Option<$1>"], + "description": "Rust Option type" + } +} diff --git a/private_dot_config/nvim/snippets/typescript.json b/private_dot_config/nvim/snippets/typescript.json new file mode 100644 index 0000000..5a392f0 --- /dev/null +++ b/private_dot_config/nvim/snippets/typescript.json @@ -0,0 +1,75 @@ +{ + "Interface": { + "prefix": "int", + "body": [ + "interface $1 {", + " $2", + "}" + ], + "description": "TypeScript interface" + }, + "Type": { + "prefix": "type", + "body": ["type $1 = $2"], + "description": "TypeScript type" + }, + "Function with types": { + "prefix": "fn", + "body": [ + "function $1($2): $3 {", + " $4", + "}" + ], + "description": "Function with types" + }, + "Arrow function with types": { + "prefix": "af", + "body": ["const $1 = ($2): $3 => {", " $4", "}"], + "description": "Arrow function with types" + }, + "Async function with types": { + "prefix": "async", + "body": [ + "async function $1($2): Promise<$3> {", + " $4", + "}" + ], + "description": "Async function with types" + }, + "Enum": { + "prefix": "enum", + "body": [ + "enum $1 {", + " $2", + "}" + ], + "description": "TypeScript enum" + }, + "Class": { + "prefix": "class", + "body": [ + "class $1 {", + " constructor($2) {", + " $3", + " }", + "", + " $4", + "}" + ], + "description": "TypeScript class" + }, + "Generic function": { + "prefix": "genfn", + "body": [ + "function $1<$2>($3): $4 {", + " $5", + "}" + ], + "description": "Generic function" + }, + "Import type": { + "prefix": "impt", + "body": ["import type { $1 } from '$2'"], + "description": "Import type" + } +} \ No newline at end of file