From 99209b6963807db6b656466961ba4cb86a778254 Mon Sep 17 00:00:00 2001
From: Xavier Logerais <xavier.logerais-prestataire@ca-gip.fr>
Date: Tue, 1 Apr 2025 16:04:41 +0000
Subject: [PATCH] feat: Personnal configuration

---
 lua/community.lua         | 73 ++++++++++++++++++++++++++++++++++++---
 lua/lazy_setup.lua        | 14 ++++----
 lua/plugins/astrocore.lua | 32 +++++++++++++++--
 lua/plugins/neo-tree.lua  | 29 ++++++++++++++++
 lua/plugins/tpope.lua     |  6 ++++
 lua/polish.lua            | 15 ++++++--
 6 files changed, 152 insertions(+), 17 deletions(-)
 create mode 100644 lua/plugins/neo-tree.lua
 create mode 100644 lua/plugins/tpope.lua

diff --git a/lua/community.lua b/lua/community.lua
index c842899..9b554a0 100644
--- a/lua/community.lua
+++ b/lua/community.lua
@@ -1,12 +1,75 @@
-if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-
 -- AstroCommunity: import any community modules here
 -- We import this file in `lazy_setup.lua` before the `plugins/` folder.
 -- This guarantees that the specs are processed before any user plugins.
 
 ---@type LazySpec
 return {
-  "AstroNvim/astrocommunity",
-  { import = "astrocommunity.pack.lua" },
-  -- import/override with your plugins folder
+	"AstroNvim/astrocommunity",
+	{ import = "astrocommunity.pack.lua" },
+	-- import/override with your plugins folder
+
+	--
+	-- Personal config
+	--
+
+  -- Packs
+	{ import = "astrocommunity.pack.json" },
+	{ import = "astrocommunity.pack.yaml" },
+	{ import = "astrocommunity.pack.toml" },
+	{ import = "astrocommunity.pack.markdown" },
+	{ import = "astrocommunity.pack.bash" },
+  { import = "astrocommunity.pack.python" },
+  -- { import = "astrocommunity.pack.java" },
+  -- { import = "astrocommunity.pack.html-css" },
+  -- { import = "astrocommunity.pack.angular" },
+  { import = "astrocommunity.pack.ansible" },
+  { import = "astrocommunity.pack.docker" },
+  { import = "astrocommunity.pack.helm" },
+  { import = "astrocommunity.pack.terraform" },
+
+	-- Recipes
+	{ import = "astrocommunity.recipes.heirline-mode-text-statusline" },
+	{ import = "astrocommunity.recipes.cache-colorscheme" },
+	{ import = "astrocommunity.recipes.neo-tree-dark" },
+	{ import = "astrocommunity.recipes.disable-tabline" },
+
+	-- Individual plugins (misc)
+	{ import = "astrocommunity.diagnostics.trouble-nvim" },
+	-- { import = "astrocommunity.bars-and-lines.smartcolumn-nvim" },
+	-- { import = "astrocommunity.completion.copilot-lua-cmp" },
+	{ import = "astrocommunity.editing-support.rainbow-delimiters-nvim" },
+	{ import = "astrocommunity.editing-support.nvim-devdocs" },
+	-- { import = "astrocommunity.editing-support.chatgpt-nvim" },
+	{ import = "astrocommunity.indent.indent-rainbowline" },
+	-- { import = "astrocommunity.programming-language-support.rest-nvim" },
+	-- { import = "astrocommunity.project.project-nvim" },
+	{ import = "astrocommunity.file-explorer.telescope-file-browser-nvim" },
+	{ import = "astrocommunity.git.diffview-nvim" },
+
+	-- Individual plugins (colorschemes)
+	{ import = "astrocommunity.colorscheme.vscode-nvim" },
+	{ import = "astrocommunity.colorscheme.github-nvim-theme" },
+	{ import = "astrocommunity.colorscheme.neosolarized-nvim" },
+	{ import = "astrocommunity.colorscheme.nord-nvim" },
+	{ import = "astrocommunity.colorscheme.nordic-nvim" },
+	{ import = "astrocommunity.colorscheme.iceberg-vim" },
+	{ import = "astrocommunity.colorscheme.tokyodark-nvim" },
+	{ import = "astrocommunity.colorscheme.tokyonight-nvim" },
+	{ import = "astrocommunity.colorscheme.onedarkpro-nvim" },
+
+	-- Individual plugins customization
+	-- {
+	--   "nvim-treesitter/nvim-treesitter",
+	--   opts = function(_, opts)
+	--     local utils = require "astronvim.utils"
+	--     if opts.ensure_installed ~= "all" then
+	--       opts.ensure_installed = utils.list_insert_unique(opts.ensure_installed,
+	--         { "lua", "xml", "http", "json", "graphql" })
+	--     end
+	--   end,
+	-- },
+
+	-- Now provided by core
+	-- { import = "astrocommunity.bars-and-lines.vim-illuminate" },
+	-- { import = "astrocommunity.editing-support.todo-comments-nvim" },
 }
diff --git a/lua/lazy_setup.lua b/lua/lazy_setup.lua
index 4d9552f..159a9a2 100644
--- a/lua/lazy_setup.lua
+++ b/lua/lazy_setup.lua
@@ -20,13 +20,13 @@ require("lazy").setup({
   performance = {
     rtp = {
       -- disable some rtp plugins, add more to your liking
-      disabled_plugins = {
-        "gzip",
-        "netrwPlugin",
-        "tarPlugin",
-        "tohtml",
-        "zipPlugin",
-      },
+      -- disabled_plugins = {
+      --   "gzip",
+      --   "netrwPlugin",
+      --   "tarPlugin",
+      --   "tohtml",
+      --   "zipPlugin",
+      -- },
     },
   },
 } --[[@as LazyConfig]])
diff --git a/lua/plugins/astrocore.lua b/lua/plugins/astrocore.lua
index 03d7441..2a7e70f 100644
--- a/lua/plugins/astrocore.lua
+++ b/lua/plugins/astrocore.lua
@@ -1,5 +1,3 @@
-if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-
 -- AstroCore provides a central place to modify mappings, vim options, autocommands, and more!
 -- Configuration documentation can be found with `:h astrocore`
 -- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
@@ -40,9 +38,10 @@ return {
     -- vim options can be configured here
     options = {
       opt = { -- vim.opt.<key>
-        relativenumber = true, -- sets vim.opt.relativenumber
         number = true, -- sets vim.opt.number
+        relativenumber = false, -- sets vim.opt.relativenumber
         spell = false, -- sets vim.opt.spell
+        spelllang = "fr", -- Set spell language to french
         signcolumn = "yes", -- sets vim.opt.signcolumn to yes
         wrap = false, -- sets vim.opt.wrap
       },
@@ -50,6 +49,7 @@ return {
         -- configure global vim variables (vim.g)
         -- NOTE: `mapleader` and `maplocalleader` must be set in the AstroNvim opts or before `lazy.setup`
         -- This can be found in the `lua/lazy_setup.lua` file
+
       },
     },
     -- Mappings can be configured through AstroCore as well.
@@ -79,7 +79,33 @@ return {
 
         -- setting a mapping to false will disable it
         -- ["<C-S>"] = false,
+
+        -- Normal mode : Custom mappings
+        ["<F2>"] = { "<cmd>Neotree toggle<cr>", desc = "File Explorer" }, -- F26 corresponds to <Ctrl+F2> on my keyboard
+        ["<F3>"] = { function() require("astrocore").toggle_term_cmd({cmd="lazygit", direction="float"}) end, desc = "Lazygit terminal" }, -- F27 corresponds to <Ctrl+F3> on my keyboard
+        ["<F4>"] = { function() require("astrocore").toggle_term_cmd({cmd="tig", direction="float"}) end, desc = "Tig terminal" }, -- F28 corresponds to <Ctrl+F4> on my keyboard
       },
+      -- Insert mode : Custom mappings
+      i = {
+        ["<F2>"] = { "<cmd>Neotree toggle<cr>", desc = "File Explorer" }, -- F26 corresponds to <Ctrl+F2> on my keyboard
+        ["<F3>"] = { function() require("astrocore").toggle_term_cmd({cmd="lazygit", direction="float"}) end, desc = "Lazygit terminal" }, -- F27 corresponds to <Ctrl+F3> on my keyboard
+        ["<F4>"] = { function() require("astrocore").toggle_term_cmd({cmd="tig", direction="float"}) end, desc = "Tig terminal" }, -- F28 corresponds to <Ctrl+F4> on my keyboard
+      },
+      -- Terminal mode : Custom mappings
+      t = {
+        -- Switch to normal mode in terminal mode
+        ["<Esc><Esc><Esc>"] = { "<C-\\><C-n>" },
+        -- Clear Ctrl+l so that we can use it to clear the terminal
+        ["<C-l>"] = false,
+        ["<C-h>"] = false,
+        -- Clear Ctrl-J and Ctrl-K so that we can use them to navigate the terminal (for lazygit)
+        ["<C-j>"] = false,
+        ["<C-k>"] = false,
+        -- My terms
+        ["<F3>"] = { function() require("astrocore").toggle_term_cmd({cmd="lazygit", direction="float"}) end, desc = "Lazygit terminal" }, -- F27 corresponds to <Ctrl+F3> on my keyboard
+        ["<F4>"] = { function() require("astrocore").toggle_term_cmd({cmd="tig", direction="float"}) end, desc = "Tig terminal" }, -- F28 corresponds to <Ctrl+F4> on my keyboard
+      },
+
     },
   },
 }
diff --git a/lua/plugins/neo-tree.lua b/lua/plugins/neo-tree.lua
new file mode 100644
index 0000000..12a58bc
--- /dev/null
+++ b/lua/plugins/neo-tree.lua
@@ -0,0 +1,29 @@
+return {
+  {
+    "nvim-neo-tree/neo-tree.nvim",
+    opts = {
+      window = {
+        width = 50,
+        mappings = {
+          ["<space>"] = false, -- disable space until we figure out which-key disabling
+          [">"] = "next_source",
+          ["<"] = "prev_source",
+          ["<tab>"] = "next_source",
+          ["<s-tab>"] = "prev_source",
+        },
+      },
+      event_handlers = {
+        {
+          event = "file_opened",
+          handler = function(file_path)
+            -- auto close
+            -- vimc.cmd("Neotree close")
+            -- OR
+            require("neo-tree.command").execute({ action = "close" })
+          end
+        },
+      },
+      close_if_last_window = true,
+    },
+  }
+}
diff --git a/lua/plugins/tpope.lua b/lua/plugins/tpope.lua
new file mode 100644
index 0000000..4ffb572
--- /dev/null
+++ b/lua/plugins/tpope.lua
@@ -0,0 +1,6 @@
+return {
+  { "tpope/vim-surround",    event = "User AstroFile" },
+  { "tpope/vim-speeddating", event = "User AstroFile" },
+  { "tpope/vim-repeat",      event = "User AstroFile" },
+  -- { "tpope/vim-fugitive",    event = "User AstroFile" },
+}
diff --git a/lua/polish.lua b/lua/polish.lua
index 642719f..1ea0243 100644
--- a/lua/polish.lua
+++ b/lua/polish.lua
@@ -1,5 +1,16 @@
-if true then return end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-
 -- This will run last in the setup process.
 -- This is just pure lua so anything that doesn't
 -- fit in the normal config locations above can go here
+
+-- Custom keymaps
+
+-- use gp to set visual selection on the recently pasted text
+vim.keymap.set('n', 'gp', '`[v`]', { desc = 'Visual selection of pasted text' })
+
+-- Needed for python3 through mise
+-- Locate python3 using PATH
+local python_path = vim.fn.exepath("python3")
+if python_path == nil or python_path == "" then
+else
+  vim.g.python3_host_prog = python_path
+end